在單片機與按鍵接口程序中,往往先進行按下消抖,而對按鍵狀態的 判斷就是指按鍵處理了。這里的按鍵處理不是執行相應的動作,而是 區分按鍵此刻處于何種狀態,并改變相應狀態變量的值,以便程序其 它地方通過檢測相應的按鍵狀態變量去執行相應的動作。比如,我們 可以把按下并抬起的短按點亮 LED,改成長按一段時間點亮 LED。總 的來講,單片機識別按鍵就分為三個階段:按鍵消抖---按鍵處理--- 按鍵執行。這個思路適用于所有形式的按鍵。至于為什么要消抖?是 因為我們在操作按鍵時,不可能立即按下或抬起,機械式按鍵接觸面 不是立刻就接觸或斷開的,而單片機的檢測速度特別快,這樣往往會 發生誤判,因此,我們要等待電平穩定了,再去處理按鍵。消抖的方 式很簡單,就是利用延時,等待一個穩定電平的到來。
H:表示行;L:表示列;
| L0 P13 | L1 P12 | L2 P11 | L3 P10 |
|
H0 P17 | 0 | 1 | 2 | 3 |
|
H1 P16 | 4 | 5 | 6 | 7 |
|
H2 P15 | 8 | 9 | 10 | 11 |
|
H3 P14 | 12 | 13 | 14 | 15 |
|
|
|
|
|
|
|
我們先測試列,測試列時,把行控 IO 設置為 0,列空 IO 設置為 1
即:P1 = 0X0F;此時若有按鍵被按下,我們可以得到 4 組編碼:
0X07,0X0B,0X0D,0X0E;每一組又對應列的四個按鍵。 然后我們再測試行:P1 = 0XF0;又可以得出四個按鍵編碼,這樣就可以判斷是哪個鍵被按下了。這里依然是抬起有效。
六、 單片機程序設計思想之一
動態掃描