二、矩陣鍵盤
define key_state_0 0
//判斷按鍵是否按下
#define key_state_1 1
//判斷按鍵是否抖動
#define key_state_2 2
//判斷按鍵是否彈起
#define key_input p3
#define key_mask 0x0f
void
key_read()
else key_state = key_state_0;
break
;case key_state_2:
if(key_press ==
0x0f
) key_state = key_state_0;
break;}
return key_return;
}int
main()
if(key_value ==2)
delay(10
);//延時10ms需自定義
}}
/*
1. 沒有按鍵按下 readdate=0 trg=0x00&(0x00^0x00)=0 cont=0
2. 按一次 key_input=0xfe readdate=0x01 trg=0x01&(0x01^0x00)=0x01 cont=0x01
3. 持續按下 trg=0x01&(0x01^0x00)=0x01 cont=0x01 下乙個掃瞄週期時
trg=0x01&(0x01^0x01)=0 cont=0x01
*/#define key_input p3
unsigned
char trg;
//判斷按鍵是否按下
unsigned
char cont;
//判斷按鍵是否持續按下
intkey_read()
intmain()
if(trg&
0x04)if
(trg&
0x02)if
(trg&
0x01
)delay(10
);//延時10ms需自定義
}}
define key_state_0 0
//判斷按鍵是否按下
#define key_state_1 1
//判斷按鍵是否抖動
#define key_state_2 2
//判斷按鍵是否彈起
#define key_input p3
#define key_mask 0x0f
intkey_read()
else
key_state =0;
break
;case key_state_2:
if(key_press ==
0xff
) key_state = key_state_0;
break;}
return key_return;
}int
main()
if(key_value ==2)
delay(10
);//延時10ms需自定義
}}
8 6 微控制器按鍵消抖
通常按鍵所用的開關都是機械彈性開關,當機械觸點斷開 閉合時,由於機械觸點的彈性作用,乙個按鍵開關在閉合時不會馬上就穩定的接通,在斷開時也不會一下子徹底斷開,而是在閉合和斷開的瞬間伴隨了一連串的抖動,如圖 8 10 所示。圖 8 10 按鍵抖動狀態圖 按鍵穩定閉合時間長短是由操作人員決定的,通常都會在...
微控制器之按鍵消抖
我們前面在電子中的學習中就接觸過按鍵,但是我們只清楚其電路圖代表的含義,卻不明白真正操作起來會遇到的一系列問題,由於機械觸點的彈性,乙個按鍵開關在閉合後不會馬上穩定接通,斷開時也不會馬上斷開,如果不處理的話,會導致按鍵識別為多下,故我們就來研究一下按鍵消抖 針對的是k1 k2 k3 實驗原理 這個電...
微控制器學習筆記 按鍵消抖
按鍵是我們學習微控制器時乙個重要的器件,我們在按下按鍵時,難免會一位手抖動或者接觸不穩定,但如果不消抖,按鍵按下的瞬間將會產生成百上千次按鍵有效的結果,最終的現象不可預料,所以有必要進行消抖。一 消抖原理 原理 使用定時器計時產生中斷,只要在一定次數的中斷內,按鍵按下有效的次數達到一定次數,就可以認...