獨(dú)立鍵盤與矩陣鍵盤檢測(cè)
NEWS
獨(dú)立鍵盤與矩陣鍵盤介紹
獨(dú)立鍵盤,是指每一個(gè)鍵位單獨(dú)由一個(gè)IO口控制的按鍵。
矩陣鍵盤,主要是指像矩陣一樣分布,由兩個(gè)IO口(行IO與列IO)才能夠識(shí)別的按鍵。
與按鍵所連接的IO口既可以輸出也可以輸入,檢測(cè)按鍵主要通過檢測(cè)IO口接受的電平信號(hào)來實(shí)現(xiàn)。
如圖所示,所有鍵盤的IO口由P3控制,P3IO口由高到低的排列是P3.7~P3.0。
PART
01 獨(dú)立鍵盤的檢測(cè)
在對(duì)獨(dú)立鍵盤進(jìn)行檢測(cè)之前,應(yīng)當(dāng)先確保其對(duì)應(yīng)的IO口都處于高電平的狀態(tài),當(dāng)按鍵被按下時(shí),IO口與接地會(huì)接通,會(huì)接收到低電平信號(hào)。檢測(cè)時(shí)只需依次對(duì)按鍵對(duì)應(yīng)的IO口檢測(cè)其是否有接收到低電平信號(hào)即可。
由于點(diǎn)平的變化并非完美的波形,其在按下與松開時(shí)會(huì)有短暫的不穩(wěn)定的高低電平,因此要通過延時(shí)二次檢測(cè)來進(jìn)行防抖。
在本示例程序中對(duì)S2按鍵進(jìn)行了檢測(cè),其中先對(duì)P3IO口進(jìn)行設(shè)置都為高電平,key _S2已經(jīng)提前配定義為了P3.4IO口,然后用判斷語句來判斷電平是否有變化,delay延時(shí)后在此進(jìn)行檢測(cè),如果確實(shí)收到了低電平則開始執(zhí)行對(duì)應(yīng)程序。程序執(zhí)行完畢后,用while函數(shù)來決定是否繼續(xù)往下執(zhí)行,只有徹底松開后才能夠繼續(xù)向下執(zhí)行程序。
PART
02 矩陣鍵盤的檢測(cè)
矩陣鍵盤不同于獨(dú)立鍵盤,它需要對(duì)行和列都進(jìn)行檢測(cè),檢測(cè)原理與獨(dú)立鍵盤一樣,只是獨(dú)立鍵盤的接地變成了為低電平的IO口。
在進(jìn)行檢測(cè)時(shí),行和列必須有一個(gè)為高電平,有一個(gè)為低電平。我們?cè)诖艘獙⒅鹨粚⒘蠭O賦為低電平,行IO都為高電平然后去檢測(cè)行IO是否接收到低電平。示例程序如下
//ju zhen an jian cheng xu
void matrix_key()
{
P3=0Xef;/ 將P3.4賦為低電平對(duì)S6所在列進(jìn)行檢測(cè) /
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;
}
//檢測(cè)按鍵是否斷開,后四位是否恢復(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)行檢測(cè)的程序。
PART
03 自我測(cè)驗(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)注
6050文章
44707瀏覽量
641333 -
矩陣鍵盤
+關(guān)注
關(guān)注
7文章
207瀏覽量
31638 -
IO口
+關(guān)注
關(guān)注
3文章
170瀏覽量
24418 -
鍵盤檢測(cè)
+關(guān)注
關(guān)注
0文章
4瀏覽量
5809 -
獨(dú)立鍵盤
+關(guān)注
關(guān)注
0文章
5瀏覽量
4611
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
51單片機(jī)矩陣鍵盤和獨(dú)立鍵盤沖突
獨(dú)立鍵盤檢測(cè)與矩陣鍵盤檢測(cè)
矩陣鍵盤檢測(cè)獨(dú)立按鍵與單片機(jī)連接
AVR單片機(jī)十日通:介紹獨(dú)立鍵盤和矩陣鍵盤的原理及應(yīng)用
單片機(jī)--矩陣鍵盤實(shí)驗(yàn)

51單片機(jī)按鍵檢測(cè)--獨(dú)立按鍵與矩陣鍵盤

51單片機(jī)鍵盤接口-獨(dú)立按鍵和矩陣按鍵

學(xué)習(xí)筆記之51單片機(jī)鍵盤篇(非編碼鍵盤與編碼鍵盤、非編碼鍵盤的掃描方式、獨(dú)立鍵盤、矩陣鍵盤)

評(píng)論