国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載71:矩陣按鍵掃描檢測

發(fā)布時間:2018-5-14 15:38    發(fā)布者:rousong1989
勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載71:矩陣按鍵掃描檢測
特權(quán)同學(xué),版權(quán)所有
配套例程和更多資料下載鏈接:
http://pan.baidu.com/s/1i5LMUUD
         鍵盤分編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識別由專用的硬件編碼器實(shí)現(xiàn),并產(chǎn)生鍵編碼號或鍵值的稱為編碼鍵盤,如計算機(jī)鍵盤。而靠軟件編程來識別的稱為非編碼鍵盤。
在一般嵌入式應(yīng)用中,用的最多的是非編碼鍵盤,也有用到編碼鍵盤的。非編碼鍵盤又分為獨(dú)立鍵盤和行列式(又稱為矩陣式)鍵盤。所謂獨(dú)立式鍵盤,即嵌入式CPU(或稱MCU)的一個GPIO口對應(yīng)一個按鍵輸入,這個輸入值的高低狀態(tài)就是鍵值。矩陣鍵盤用于采集鍵值的GPIO是復(fù)用的,一般分為行和列采集,例如4*4矩陣鍵盤就只需要行列各4個按鍵就可以了,矩陣鍵盤的控制較獨(dú)立鍵盤要復(fù)雜得多,本實(shí)驗(yàn)未涉及,所以對其原理不做詳細(xì)介紹。
         獨(dú)立按鍵一般有2組管腳,雖然市面上我們常常看到有4個管腳的按鍵,但它們一般是兩兩導(dǎo)通的,這2組管腳在按鍵未被按下時是斷開的,在按鍵被按下時則是導(dǎo)通的。基于此原理,我們一般會把按鍵的一個管腳接地,另一個管腳上拉到VCC,并且也連接到GPIO。這樣,在按鍵未被按下時,GPIO的連接狀態(tài)為上拉到VCC,則鍵值為1;按鍵被按下時,GPIO雖然還是上拉到VCC,但同時被導(dǎo)通的另一個管腳拉到地了,所以它的鍵值實(shí)際上是0。
我們的SF-CY4開發(fā)板上有一組4*4矩陣鍵盤。通過P12的PIN1-2短接時,其實(shí)S1/S2/S3/S4可以作為獨(dú)立按鍵使用,它的一端接地,另一端在上拉的同時連接到FPGA的I/O口。當(dāng)I/O口的電平為高(1)時,說明按鍵沒有被按下,當(dāng)I/O口的電平為低(0)時,說明按鍵被按下了。這是8.4節(jié)中我們的使用方法。在本實(shí)例中,我們不再只局限于獨(dú)立按鍵這么low的應(yīng)用了,這里我們將要把所有16個按鍵都使用起來,實(shí)現(xiàn)我們真正的矩陣按鍵功能。要做矩陣按鍵,那么大家首先要確認(rèn)把自己的SF-CY4開發(fā)板上插座P12的PIN2-3用跳線帽短接。矩陣按鍵的原理圖如圖8.85所示。
圖8.85 矩陣按鍵原理圖
         接續(xù)上面的原理圖,我們來看看矩陣按鍵的鍵值如何獲得。
         通常,我們將這個矩陣按鍵分為兩組信號,即列信號(包括BUT0/BUT1/BUT2/BUT3)和行信號(BUT4/BUT5/BUT6/BUT7)。列信號作為FPGA的輸入信號,行信號作為FPGA的輸出信號。
         若FPGA輸出的行信號為高電平時,無論是否有按鍵被按下,列信號輸入到FPGA的電平始終為高電平,這是無法實(shí)現(xiàn)任何的矩陣按鍵值采集的;若FPGA輸出的行信號為低電平時,沒有按鍵按下,那么列信號會保持高電平(因?yàn)橛猩侠墟I按下時,則由于按鍵將行、列信號短接,那么列信號的電平會由于行信號而被拉低,通過這種方式,我們就可以達(dá)到鍵值的檢測。
         但是,可能大家還有疑惑,4個行信號若同時拉低,那么任意一個4X4按鍵被按下,所有的列信號也都會拉低啊,這只能判斷是否有按鍵被按下,具體哪一個按鍵被按下就不得而知了。確實(shí)如此,解決辦法也很簡單,我們在同一時刻只能拉低4個行信號中的一個,那么它就將按鍵狀態(tài)定位到具體的行,這樣就如同獨(dú)立按鍵一樣可以直接定位到這一行按鍵中的哪個按鍵被按下了。在實(shí)現(xiàn)上,我們會讓4個行信號循環(huán)的拉低,同一時刻有且只有一個行信號輸出為低電平,這就是我們所說的“鍵盤掃描”原理。
         本實(shí)例實(shí)現(xiàn)矩陣按鍵值的采集(即判斷16個按鍵的哪個被按下了),然后通過數(shù)碼管顯示按鍵值(顯示值為16進(jìn)制的0-F),數(shù)碼管最低位顯示最后一次的鍵值,高3位顯示之前的值,即每按下一次按鍵,數(shù)碼管的鍵值右移一位。
         如圖8.86所示,用8個信號檢測16個按鍵值,有點(diǎn)難度,不過原理上一節(jié)我們已經(jīng)講過。從功能上,我們首先對4個作為輸入的列信號進(jìn)行按鍵消抖處理,然后依次輸出不同的行信號值,以此找到有鍵按下時的特殊列信號值,這樣便能采集鍵值,送往數(shù)碼管顯示。
圖8.86 矩陣按鍵掃描實(shí)例功能框圖
         工程結(jié)構(gòu)如圖8.87所示,cy4.v為頂層模塊,不做邏輯,只做信號接口定義和連接。anykeyscan.v模塊實(shí)現(xiàn)行信號輸出;sigkeyscan.v實(shí)現(xiàn)列信號的按鍵消抖和鍵值采集;seg7.v為數(shù)碼管驅(qū)動模塊。
圖8.87 矩陣按鍵掃描實(shí)例模塊層次

本文地址:http://www.4huy16.com/thread-525753-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 常見深度學(xué)習(xí)模型介紹及應(yīng)用培訓(xùn)教程
  • 電動兩輪車設(shè)計生態(tài)系統(tǒng)
  • 技術(shù)熱潮席卷三城,2025 Microchip中國技術(shù)精英年會圓滿收官!
  • Microchip第22屆中國技術(shù)精英年會上海首站開幕
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表