獨(dú)立鍵盤與矩陣鍵盤檢測
NEWS
獨(dú)立鍵盤與矩陣鍵盤介紹
獨(dú)立鍵盤,是指每一個(gè)鍵位單獨(dú)由一個(gè)IO口控制的按鍵。
矩陣鍵盤,主要是指像矩陣一樣分布,由兩個(gè)IO口(行IO與列IO)才能夠識(shí)別的按鍵。
與按鍵所連接的IO口既可以輸出也可以輸入,檢測按鍵主要通過檢測IO口接受的電平信號(hào)來實(shí)現(xiàn)。
如圖所示,所有鍵盤的IO口由P3控制,P3IO口由高到低的排列是P3.7~P3.0。
PART
01 獨(dú)立鍵盤的檢測
在對(duì)獨(dú)立鍵盤進(jìn)行檢測之前,應(yīng)當(dāng)先確保其對(duì)應(yīng)的IO口都處于高電平的狀態(tài),當(dāng)按鍵被按下時(shí),IO口與接地會(huì)接通,會(huì)接收到低電平信號(hào)。檢測時(shí)只需依次對(duì)按鍵對(duì)應(yīng)的IO口檢測其是否有接收到低電平信號(hào)即可。
由于點(diǎn)平的變化并非完美的波形,其在按下與松開時(shí)會(huì)有短暫的不穩(wěn)定的高低電平,因此要通過延時(shí)二次檢測來進(jìn)行防抖。
在本示例程序中對(duì)S2按鍵進(jìn)行了檢測,其中先對(duì)P3IO口進(jìn)行設(shè)置都為高電平,key _S2已經(jīng)提前配定義為了P3.4IO口,然后用判斷語句來判斷電平是否有變化,delay延時(shí)后在此進(jìn)行檢測,如果確實(shí)收到了低電平則開始執(zhí)行對(duì)應(yīng)程序。程序執(zhí)行完畢后,用while函數(shù)來決定是否繼續(xù)往下執(zhí)行,只有徹底松開后才能夠繼續(xù)向下執(zhí)行程序。
PART
02 矩陣鍵盤的檢測
矩陣鍵盤不同于獨(dú)立鍵盤,它需要對(duì)行和列都進(jìn)行檢測,檢測原理與獨(dú)立鍵盤一樣,只是獨(dú)立鍵盤的接地變成了為低電平的IO口。
在進(jìn)行檢測時(shí),行和列必須有一個(gè)為高電平,有一個(gè)為低電平。我們?cè)诖艘獙⒅鹨粚⒘蠭O賦為低電平,行IO都為高電平然后去檢測行IO是否接收到低電平。示例程序如下
//ju zhen an jian cheng xu
void matrix_key()
{
P3=0Xef;/ 將P3.4賦為低電平對(duì)S6所在列進(jìn)行檢測 /
matrix_demo=P3;//讀取P3
matrix_demo=matrix_demo&0x0f;
//對(duì)P3低四位進(jìn)行比較
if(matrix_demo!=0x0f)
{
delay(10);
matrix_demo=P3;
matrix_demo=matrix_demo&0x0f;
if(matrix_demo!=0x0f)
{
matrix_demo=P3;
switch(matrix_demo)
{
case 0xee://KEY_S6(1110 1110)
dis_num=7;
shiwan=dis_num/10;
wan=dis_num%10;
_shiwan=num_table[shiwan];
_wan=num_table[wan];
break;
case 0xed://KEY_S10(1110 1101)
dis_num=4;
shiwan=dis_num/10;
wan=dis_num%10;
_shiwan=num_table[shiwan];
_wan=num_table[wan];
break;
case 0xeb://KEY_S14(1110 1011)
dis_num=1;
shiwan=dis_num/10;
wan=dis_num%10;
_shiwan=num_table[shiwan]
;_wan=num_table[wan];
break;
case 0xe7://KEY_S18(1110 0111)
shiwan=15;wan=15;
_shiwan=num_table[shiwan];
_wan=num_table[wan];
break;
}
//檢測按鍵是否斷開,后四位是否恢復(fù)為高電平
while(matrix_demo!=0x0f)
{
matrix_demo=P3;
matrix_demo=matrix_demo&0x0f;
}
delay(10);
while(matrix_demo!=0x0f)
{
matrix_demo=P3;
matrix_demo=matrix_demo&0x0f;
}
}
}
上附程序?yàn)閷?duì)S6所在列進(jìn)行檢測的程序。
PART
03 自我測驗(yàn)
自己編寫程序使鍵盤達(dá)到以下效果。
1、開啟單片機(jī)時(shí),數(shù)碼管前兩位顯示00;
2、按下S2按鍵數(shù)碼管加1,到六十自動(dòng)歸 零
3、按下S3數(shù)碼管減1,如果數(shù)碼管為00,則 0-1變?yōu)?0
4、按下S4歸零
5、按下S5開/暫停計(jì)時(shí),滿六十歸零
6、矩陣鍵盤十六個(gè)按鍵按下分別使數(shù)碼管顯 示0-F
本次講解及示例使用的為郭天祥TX-1C的開發(fā)板。
-
單片機(jī)
+關(guān)注
關(guān)注
6035文章
44554瀏覽量
634615 -
矩陣鍵盤
+關(guān)注
關(guān)注
7文章
206瀏覽量
31454 -
IO口
+關(guān)注
關(guān)注
3文章
170瀏覽量
24023 -
鍵盤檢測
+關(guān)注
關(guān)注
0文章
4瀏覽量
5792 -
獨(dú)立鍵盤
+關(guān)注
關(guān)注
0文章
5瀏覽量
4573
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論