標(biāo)題:
單個(gè)按鍵和矩陣鍵盤掃描學(xué)習(xí)總結(jié)
[打印本頁(yè)]
作者:
h222
時(shí)間:
2013-6-2 15:28
標(biāo)題:
單個(gè)按鍵和矩陣鍵盤掃描學(xué)習(xí)總結(jié)
首先要注意的是當(dāng)鍵盤閉合和斷開的時(shí)候會(huì)產(chǎn)生抖動(dòng)這個(gè)抖動(dòng)會(huì)使你輸入的數(shù)據(jù)顯示的時(shí)候產(chǎn)生不穩(wěn)定的輸出,一般鍵盤默認(rèn)為電平1,當(dāng)按鍵閉合則輸出0電平,抖動(dòng)會(huì)使得電平亂跳,這時(shí)候就要在讀取按鍵電平后多加入一段延時(shí)再重新檢測(cè)一次電平如果電平還是0時(shí)候這時(shí)候才輸出,延時(shí)則可跳過抖動(dòng)部分,這樣就形成了消抖,同理在按鍵斷開的時(shí)候也要多加入一個(gè)松手語(yǔ)句,即多加入一個(gè)延時(shí)語(yǔ)句再重新進(jìn)行一次松手判定來確定你按鍵是否斷開了,這樣就保證了按鍵和松鍵程序輸出的值是穩(wěn)定的。
ws011.jpg
(26.65 KB, 下載次數(shù): 98)
下載附件
2013-6-2 15:37 上傳
消除了抖動(dòng)后再看看矩陣鍵盤,矩陣鍵盤也是一個(gè)按鍵一個(gè)按鍵的掃描輸入是否為0電平,為電平的按鍵就輸出所對(duì)應(yīng)的值,例如先掃描第一行則給予 P3.0端口0值其他為1,3.0到3.3方法一致,然后3.4到3.7掃描按鍵的電平,按鍵為0例如點(diǎn)一個(gè)按鍵為0,則值為0111,全部連起來則為11101110的二進(jìn)制數(shù),在判斷的時(shí)候?qū)⑦@樣的值與十六進(jìn)制的0XF0進(jìn)行與操作,因?yàn)?XF0轉(zhuǎn)換成二進(jìn)制為11110000這樣得到的結(jié)果后四位都是0高4位如果有0就能利馬檢測(cè)到,語(yǔ)句中進(jìn)行與操作后得到的結(jié)果與0XF0進(jìn)行比較如果一樣則無輸入,如果不一樣則檢測(cè)到按鍵的輸入,在進(jìn)行讀取操作。
在進(jìn)行鍵盤掃描編程的時(shí)候要主要寫好消抖,再進(jìn)行掃描。
ws022.jpg
(35.17 KB, 下載次數(shù): 119)
下載附件
2013-6-2 15:37 上傳
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1