FPGA/CPLD在數(shù)字系統(tǒng)設(shè)計(jì)中的廣泛應(yīng)用,影響到了生產(chǎn)生活的各個(gè)方面。在FPGA/CPLD的設(shè)計(jì)開(kāi)發(fā)中,VHDL語(yǔ)言作為一種主流的硬件描述語(yǔ)言,具有設(shè)計(jì)效率高,可靠性好,易讀易懂等諸多優(yōu)點(diǎn)。作為一種功能強(qiáng)大的FPGA/CPLD數(shù)字系統(tǒng)開(kāi)發(fā)環(huán)境,Altera公司推出的Quar-tUSⅡ,為設(shè)計(jì)者提供了一種與結(jié)構(gòu)無(wú)關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程,為使用VHDL語(yǔ)言進(jìn)行FPGA/-CPLD設(shè)計(jì)提供了極大的便利。矩陣鍵盤作為一種常用的數(shù)據(jù)輸入設(shè)備,在各種電子設(shè)備上有著廣泛的應(yīng)用,通過(guò)7段數(shù)碼管將按鍵數(shù)值進(jìn)行顯示也是一種常用的數(shù)據(jù)顯示方式。在設(shè)計(jì)機(jī)械式矩陣鍵盤控制電路時(shí),按鍵防抖和按鍵數(shù)據(jù)的譯碼顯示是兩個(gè)重要方面。本文在QuartusⅡ開(kāi)發(fā)環(huán)境下,采用VHDL語(yǔ)言設(shè)計(jì)了一種按鍵防抖并能連續(xù)記錄并顯示8次按鍵數(shù)值的矩陣鍵盤及顯示電路。
1 矩陣鍵盤及顯示電路設(shè)計(jì)思路
矩陣鍵盤及顯示電路能夠?qū)C(jī)械式4×4矩陣鍵盤的按鍵值依次顯示到8個(gè)7段數(shù)碼管上,每次新的按鍵值顯示在最右端的第O號(hào)數(shù)碼管上,原有第0~6號(hào)數(shù)碼管顯示的數(shù)值整體左移到第1~7號(hào)數(shù)碼管上顯示,見(jiàn)圖1。總體而言,矩陣鍵盤及顯示電路的設(shè)計(jì)可分為4個(gè)部分:
(1)矩陣鍵盤的行及列的掃描控制和譯碼。該設(shè)計(jì)所使用的鍵盤是通過(guò)將列掃描信號(hào)作為輸入信號(hào),控制行掃描信號(hào)輸出,然后根據(jù)行及列的掃描結(jié)果進(jìn)行譯碼。
(2)機(jī)械式按鍵的防抖設(shè)計(jì)。由于機(jī)械式按鍵在按下和彈起的過(guò)程中均有5~10 ms的信號(hào)抖動(dòng)時(shí)間,在信號(hào)抖動(dòng)時(shí)間內(nèi)無(wú)法有效判斷按鍵值,因此按鍵的防抖設(shè)計(jì)是非常關(guān)鍵的,也是該設(shè)計(jì)的一個(gè)重點(diǎn)。
(3)按鍵數(shù)值的移位寄存。由于該設(shè)計(jì)需要在8個(gè)數(shù)碼管上依次顯示前后共8次按鍵的數(shù)值,因此對(duì)已有數(shù)據(jù)的存儲(chǔ)和調(diào)用也是該設(shè)計(jì)的重點(diǎn)所在。
(4)數(shù)碼管的掃描和譯碼顯示。由于該設(shè)計(jì)使用了8個(gè)數(shù)碼管,因此需要對(duì)每個(gè)數(shù)碼管進(jìn)行掃描控制,并根據(jù)按鍵值對(duì)每個(gè)數(shù)碼管進(jìn)行7段數(shù)碼管的譯碼顯示。
2 矩陣鍵盤及顯示電路的實(shí)現(xiàn)
本文所設(shè)計(jì)的矩陣鍵盤及顯示電路的電路符號(hào)如圖2所示。其中,clk為時(shí)鐘信號(hào)輸入端(頻率可為1 024~32 768Hz);start為清零控制端;kbrow為列掃描信號(hào)輸入端;kbeol為行掃描信號(hào)輸出端;scan為數(shù)碼管地址掃描信號(hào)輸出端;seg7為數(shù)碼管顯示信號(hào)輸出端。
值得注意的是,本文設(shè)計(jì)的矩陣鍵盤及顯示電路在按鍵防抖和數(shù)據(jù)寄存部分設(shè)計(jì)得更加簡(jiǎn)潔可靠,實(shí)現(xiàn)的功能更加強(qiáng)大,其具有如下特點(diǎn):
(1)為了實(shí)現(xiàn)按鍵防抖,本文采用對(duì)按鍵狀態(tài)連續(xù)記錄的方式,即在按鍵彈起后連續(xù)8個(gè)時(shí)鐘周期均無(wú)按鍵信號(hào)才確認(rèn)1次按鍵有效,從而避免了按鍵按下和彈起過(guò)程中的數(shù)據(jù)抖動(dòng),相比于使用計(jì)數(shù)器從按鍵按下開(kāi)始計(jì)數(shù),直到5~10 ms后才讓按鍵有效的防抖方式,這里設(shè)計(jì)的按鍵防抖更加可靠,且可有效避免長(zhǎng)時(shí)間按下按鍵產(chǎn)生的重復(fù)數(shù)據(jù)輸出,使每次按鍵無(wú)論時(shí)間長(zhǎng)短均可且只會(huì)產(chǎn)生1次數(shù)據(jù)輸出。另外,當(dāng)電路采用32 768 Hz以上的時(shí)鐘作為系統(tǒng)時(shí)鐘時(shí),可以通過(guò)增加按鍵狀態(tài)連續(xù)記錄的時(shí)鐘周期數(shù),實(shí)現(xiàn)可靠的防抖。
(2)該設(shè)計(jì)采用一個(gè)32位一維數(shù)組temp作為數(shù)據(jù)寄存器,使用移位寄存方式,實(shí)現(xiàn)了對(duì)連續(xù)8次按鍵數(shù)據(jù)的存儲(chǔ)和調(diào)用,從而可以在8個(gè)數(shù)碼管上連續(xù)顯示數(shù)據(jù)。
3 仿真結(jié)果分析
本文設(shè)計(jì)的矩陣鍵盤及顯示電路在QliartusⅡ開(kāi)發(fā)環(huán)境下進(jìn)行了仿真驗(yàn)證。其中,按鍵防抖功能的仿真波形如圖3所示。仿真結(jié)果分析如下:
(1)clk為時(shí)鐘輸入信號(hào),作為系統(tǒng)時(shí)鐘;
(2)start為清零控制端,當(dāng)其為高電平時(shí),按鍵有效;
(3)kbrow為列掃輸入信號(hào),kbcol為行掃輸出信號(hào),圖3中對(duì)kbrow[1]的輸入波形進(jìn)行設(shè)置,模擬了“A”鍵按下和彈起的過(guò)程;
(4)fnq為防抖控制信號(hào),scan為數(shù)碼管地址掃描輸出,seg7為數(shù)碼管顯示輸出。由圖3可知,只有在按鍵彈起后,才有數(shù)據(jù)輸出,從而實(shí)現(xiàn)防抖功能。
該設(shè)計(jì)的其他功能也可以通過(guò)仿真驗(yàn)證,不再贅述。
4 結(jié)語(yǔ)
本文設(shè)計(jì)矩陣鍵盤及顯示電路在QuartusⅡ開(kāi)發(fā)環(huán)境下進(jìn)行仿真驗(yàn)證后,下載到湖北眾友科技實(shí)業(yè)股份有限公司的ZYllEDAl3BE實(shí)驗(yàn)箱中進(jìn)行了硬件驗(yàn)證。該實(shí)驗(yàn)箱使用ACEXlK系列EPlK30QC208芯片作為核心芯片。實(shí)驗(yàn)證明,當(dāng)電路的系統(tǒng)時(shí)鐘頻率在1 024~32 768 Hz范圍內(nèi)時(shí),電路均可穩(wěn)定運(yùn)行,按鍵防抖可靠、功能完整。當(dāng)系統(tǒng)時(shí)鐘頻率低于1 024 Hz時(shí),需要減少防抖記錄時(shí)鐘周期的個(gè)數(shù),否則容易錯(cuò)過(guò)短時(shí)按鍵動(dòng)作;當(dāng)系統(tǒng)時(shí)鐘頻率高于32 768 Hz時(shí),需要增加防抖記錄時(shí)鐘周期的個(gè)數(shù),以確保可靠的按鍵防抖。
價(jià)格面議
[查看詳情]
關(guān)于我們 | 聯(lián)系我們 | 友情鏈接 | 誠(chéng)聘英才 | 意見(jiàn)反饋 | 版權(quán)聲明 | 網(wǎng)站地圖 | 廣告服務(wù) | 歡迎投稿 | 免費(fèi)注冊(cè)
版權(quán)所有 中國(guó)數(shù)字視聽(tīng)網(wǎng) Copyright © 2006-2011. All Rights Reserved 京ICP備06048189號(hào) 北京市公安局朝陽(yáng)分局網(wǎng)監(jiān)中心備案編號(hào):1101051445
QQ群服務(wù):廠商群(146100746) 經(jīng)銷商群(160287492) 投影機(jī)群(154576638) 專業(yè)音響群(160287677)
服務(wù)熱線:010-62536866/82627795 傳真:010-82627795