新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 基于VHDL的矩陣鍵盤及顯示電路設計

        基于VHDL的矩陣鍵盤及顯示電路設計

        作者: 時間:2010-10-15 來源:網絡 收藏


        如圖1所示,全部代碼由7個進程(process)組成。其中,進程P1和P2用于對列掃描輸入信號kbrow進行讀取,并通過或非運算產生行掃描使能控制信號en對行掃描輸出信號kbcol進行控制,并生成一個與kbcol對應的狀態信號state。若沒有按鍵被按下(即kbrow=0000),則en= '1',行掃描輸出信號kbcol不斷循環掃描各行;若有按鍵被按下,en=‘O’,則行掃描停止,并鎖存當前kbcol的值。進程P1和P2的代碼如下:


        進程P3使用“case…when”語句,根據狀態信號state的值(即kbcol的值)和列掃描輸入信號kbrow的值進行按鍵值譯碼,生成一個4位二進制按鍵數值信號dat,用以記錄當前按鍵值。例如,當kbcol=“0010”,kbrow=“0001”時,“B”鍵按下,dat=“1011”。進程P3的代碼在此不再贅述。
        進程P4和P5用于按鍵的防抖和按鍵值的移位寄存。通過將行掃描使能控制信號en不斷賦給一個8位二進制變量reg8,再將reg8賦給8位二進制信號key,實現對按鍵狀態的記錄,然后通過對key的各位數值進行與運算,生成防抖控制信號fnq。一旦有按鍵按下,en=‘O’,則即便是按鍵在抖動,key中至少也有1位數值為‘0’,從而使fnq=‘O’。只有當按鍵再次彈起,并且在連續8個時鐘周期內不再有新的按鍵按下,key的數值全為‘1’,則fnq=‘1’,fnq產生一個上升沿,從而觸發按鍵數值信號dat進入數值寄存信號temp(32位二進制數)的第0~3位,并將temp原來的第0~27位左移到第4~31位,實現1次按鍵按下的數值存儲。進程P4和P5的代碼如下:

        進程P6用于將數值寄存信號temp的32位二進制數分配給8個數碼管,從而生成數碼管地址掃描輸出scan,以及數碼管數值信號data(4位2進制數)。進程P6代碼如下:



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 赫章县| 凤冈县| 交口县| 敦煌市| 郁南县| 闻喜县| 收藏| 庆阳市| 普宁市| 城口县| 巨野县| 介休市| 延长县| 广丰县| 台东县| 汝州市| 天津市| 桂林市| 鄂托克前旗| 咸阳市| 利津县| 北碚区| 中西区| 舒兰市| 南昌市| 娄底市| 弥渡县| 彰化县| 克东县| 赤壁市| 昌宁县| 卓尼县| 曲周县| 张北县| 耿马| 定边县| 开阳县| 梅州市| 广水市| 天长市| 泽州县|