mcu讀取按鍵是否按下,往往需要進行消抖,而消抖措施有很多種, 可以利用電容電路,可以用數電裡學的觸發器電路, 這些可以說都是在硬體層面來消抖的。但是有更簡單便宜的軟體消抖措施。
軟體消抖也分為延時重取樣和持續取樣兩種方式。
延時重取樣就是在取樣到按鍵被按下訊號後,延時約10ms後,再次取樣,如果扔檢測到是按下,則就會判定為按鍵確實被按下「一次」。
持續取樣就是當取樣到按鍵被按下訊號後,在一段時間內連續檢測,如果一直沒變,則判定為被按下一次。
乙個4*4的矩陣鍵盤的原理就是,四行串聯在四位io口,四列串聯在四位io口
以上**釋,先將pd = 1111 1110 ,即將第一列置低,然後取pd的高四位,若檢測到高四位不是1111,比如是1101,說明第三行雖然一開始是置高的,但是被強制拉低了,所以說明s13鍵被按下了。
然後將pd迴圈左移,將第二列置低,以此類推。
這其中還要加上延時重取樣消抖,就可以進行矩陣鍵盤的檢測了。
舉個栗子
1 #include 2 #include 3**實現功能是檢測4*4鍵盤,每個按鍵代表乙個數字,顯示在螢幕上。4#define uint unsigned int
5#define uchar unsigned char
67 uchar key = 0
;8 uchar table=;
1415
void
init()
1620
21void delayms(uint
xms)
2227
28void
keys()
2948
while(temp != 0xf0)52
}53}54
}55}56
57void
display(uchar key)
5861
62void
main()
6369 }
矩陣鍵盤驅動原理
矩陣鍵盤驅動原理 矩陣鍵盤由行訊號和列訊號組成矩陣。每個按鍵連線到行訊號和列訊號的交叉點。通過矩陣鍵盤控制器行訊號線順序逐行輸出掃瞄脈衝,列訊號線作為輸入訊號線。如果沒有按鍵按下,列訊號線不會產生中斷,沒有對按鍵的處理。如果有按鍵按下去,對應的行輸出掃瞄脈衝就會在對應的列訊號線產生變化,就會觸發鍵盤...
矩陣鍵盤掃瞄原理
當乙個按鍵兩端分別接乙個io口,乙個io口置高電平另乙個置低電平,當按下按鍵時高電平io口電平被拉低,另一端還是為低電平,這時檢測io口值就是兩個低電平。把上述方法應用到矩陣鍵盤上,如果把4個行引腳接p2前4位io口 p2.0 p2.3 都置低電平,把4個列引腳接p2後4位io口 p2.4 p2.7...
矩陣鍵盤及其基本原理
一.原理 矩陣鍵盤的原理就是分行和列掃瞄,來獲知按下按鍵的行數和列數,然後得到按下按鍵的鍵值。矩陣鍵盤的原理圖及接線圖如下 因為四腳的微動按鍵的同一排引腳是相連的,相當於是乙個同乙個引腳,所以利用這個有點會大大簡化我們的電路,不用做太多的飛線。矩陣鍵盤的掃瞄原理為,先讓三個橫行或者三個豎列輸出高電平...