基于VHDL 的矩陣鍵盤(pán)及顯示電路設計
進(jìn)程P7 用于將數碼管數值信號data 譯碼成為7 段數碼管顯示輸出seg7 ,進(jìn)程P7 的代碼在此不再贅述。值得注意的是,本文設計的矩陣鍵盤(pán)及顯示電路在按鍵防抖和數據寄存部分設計得更加簡(jiǎn)潔可靠,實(shí)現的功能更加強大,其具有如下特點(diǎn):
(1) 為了實(shí)現按鍵防抖,本文采用對按鍵狀態(tài)連續記錄的方式,即在按鍵彈起后連續8 個(gè)時(shí)鐘周期均無(wú)按鍵信號才確認1 次按鍵有效,從而避免了按鍵按下和彈起過(guò)程中的數據抖動(dòng),相比于使用計數器從按鍵按下開(kāi)始計數, 直到5 ~ 10 ms 后才讓按鍵有效的防抖方式 ,這里設計的按鍵防抖更加可靠,且可有效避免長(cháng)時(shí)間按下按鍵產(chǎn)生的重復數據輸出,使每次按鍵無(wú)論時(shí)間長(cháng)短均可且只會(huì )產(chǎn)生1 次數據輸出。另外,當電路采用32 768 Hz 以上的時(shí)鐘作為系統時(shí)鐘時(shí),可以通過(guò)增加按鍵狀態(tài)連續記錄的時(shí)鐘周期數,實(shí)現可靠的防抖。
(2) 該設計采用一個(gè)32 位一維數組temp 作為數據寄存器,使用移位寄存方式,實(shí)現了對連續8 次按鍵數據的存儲和調用,從而可以在8 個(gè)數碼管上連續顯示數據。
3 仿真結果分析
本文設計的矩陣鍵盤(pán)及顯示電路在Quartus Ⅱ開(kāi)發(fā)環(huán)境下進(jìn)行了仿真驗證。其中,按鍵防抖功能的仿真波形如圖3 所示。仿真結果分析如下:
(1) clk 為時(shí)鐘輸入信號,作為系統時(shí)鐘;
(2) start 為清零控制端,當其為高電平時(shí),按鍵有效;
(3) kbrow 為列掃輸入信號,kbcol 為行掃輸出信號,圖3 中對kbrow[ 1 ]的輸入波形進(jìn)行設置,模擬了“A”鍵按下和彈起的過(guò)程;
(4) f nq 為防抖控制信號, scan 為數碼管地址掃描輸出,seg7 為數碼管顯示輸出。由圖3 可知,只有在按鍵彈起后,才有數據輸出,從而實(shí)現防抖功能。
圖3 矩陣鍵盤(pán)及顯示電路按鍵防抖仿真波形
該設計的其他功能也可以通過(guò)仿真驗證, 不再贅述。
4 結 語(yǔ)
本文設計矩陣鍵盤(pán)及顯示電路在Quartus Ⅱ開(kāi)發(fā)環(huán)境下進(jìn)行仿真驗證后,下載到湖北眾友科技實(shí)業(yè)股份有限公司的ZY11EDA13BE 實(shí)驗箱中進(jìn)行了硬件驗證。該實(shí)驗箱使用ACEX1K系列EP1K30QC208 芯片作為核心芯片。實(shí)驗證明,當電路的系統時(shí)鐘頻率在1 024~32 768 Hz范圍內時(shí),電路均可穩定運行,按鍵防抖可靠、功能完整。當系統時(shí)鐘頻率低于1 024 Hz 時(shí),需要減少防抖記錄時(shí)鐘周期的個(gè)數,否則容易錯過(guò)短時(shí)按鍵動(dòng)作;當系統時(shí)鐘頻率高于32 768 Hz 時(shí),需要增加防抖記錄時(shí)鐘周期的個(gè)數,以確??煽康陌存I防抖。
DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY
評論