找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 5273|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單個(gè)按鍵和矩陣鍵盤(pán)掃描學(xué)習(xí)總結(jié)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
       首先要注意的是當(dāng)鍵盤(pán)閉合和斷開(kāi)的時(shí)候會(huì)產(chǎn)生抖動(dòng)這個(gè)抖動(dòng)會(huì)使你輸入的數(shù)據(jù)顯示的時(shí)候產(chǎn)生不穩(wěn)定的輸出,一般鍵盤(pán)默認(rèn)為電平1,當(dāng)按鍵閉合則輸出0電平,抖動(dòng)會(huì)使得電平亂跳,這時(shí)候就要在讀取按鍵電平后多加入一段延時(shí)再重新檢測(cè)一次電平如果電平還是0時(shí)候這時(shí)候才輸出,延時(shí)則可跳過(guò)抖動(dòng)部分,這樣就形成了消抖,同理在按鍵斷開(kāi)的時(shí)候也要多加入一個(gè)松手語(yǔ)句,即多加入一個(gè)延時(shí)語(yǔ)句再重新進(jìn)行一次松手判定來(lái)確定你按鍵是否斷開(kāi)了,這樣就保證了按鍵和松鍵程序輸出的值是穩(wěn)定的。

   

消除了抖動(dòng)后再看看矩陣鍵盤(pán),矩陣鍵盤(pán)也是一個(gè)按鍵一個(gè)按鍵的掃描輸入是否為0電平,為電平的按鍵就輸出所對(duì)應(yīng)的值,例如先掃描第一行則給予 P3.0端口0值其他為1,3.0到3.3方法一致,然后3.4到3.7掃描按鍵的電平,按鍵為0例如點(diǎn)一個(gè)按鍵為0,則值為0111,全部連起來(lái)則為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)行比較如果一樣則無(wú)輸入,如果不一樣則檢測(cè)到按鍵的輸入,在進(jìn)行讀取操作。
在進(jìn)行鍵盤(pán)掃描編程的時(shí)候要主要寫(xiě)好消抖,再進(jìn)行掃描。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表