單片機(jī)矩陣按鍵是一種常用的輸入設(shè)備,它可以讓用戶通過(guò)按下不同的按鍵來(lái)控制單片機(jī)的功能。矩陣按鍵的原理是利用了電路的開(kāi)關(guān)特性,將多個(gè)按鍵排列成一個(gè)矩陣,每個(gè)按鍵都連接了一行和一列的電路。當(dāng)用戶按下某個(gè)按鍵時(shí),就會(huì)使得對(duì)應(yīng)的行和列的電路導(dǎo)通,從而產(chǎn)生一個(gè)唯一的信號(hào),這個(gè)信號(hào)可以被單片機(jī)識(shí)別并執(zhí)行相應(yīng)的操作。
矩陣按鍵的組成主要有兩部分:按鍵和掃描電路。
按鍵是用來(lái)輸入信號(hào)的部分,它可以是機(jī)械式的或者觸摸式的,不同的按鍵可以有不同的標(biāo)識(shí),例如數(shù)字、字母或者符號(hào)。
掃描電路是用來(lái)檢測(cè)信號(hào)的部分,它可以是硬件實(shí)現(xiàn)的或者軟件實(shí)現(xiàn)的,它的作用是定時(shí)地給矩陣按鍵的每一行和每一列施加一個(gè)電壓,并檢測(cè)是否有電流流過(guò),如果有,則說(shuō)明有按鍵被按下,并根據(jù)行列號(hào)確定是哪個(gè)按鍵。
具體方法說(shuō)明:
方法一:逐行掃描:我們可以通過(guò)低四位輪流輸出低電平來(lái)對(duì)矩陣鍵盤(pán)進(jìn)行逐行掃描,當(dāng)高四位援收到的數(shù)據(jù)不全為1的時(shí)候,說(shuō)明有按鍵按下,然后通過(guò)接收到的數(shù)據(jù)是哪一位為0來(lái)判斷是哪一個(gè)按鍵被按下。
方法二:
行列掃描:我們可以通過(guò)高四位全部輸出低電平,低四位輸出高電平,當(dāng)接收到數(shù)據(jù)時(shí),低四位不全為高電平時(shí),說(shuō)明有按鍵按下,然后通過(guò)接收的數(shù)據(jù)值,判斷是哪一列有按鍵按下,然后再反過(guò)來(lái),高四位輸出高電平,低四位輸出低電平,然后根據(jù)接收到的高四位的值判斷是那一行有按鍵按下。這樣就能夠確定是哪一個(gè)按鍵按下了
矩陣按鍵如何變成獨(dú)立按鍵?
留心發(fā)現(xiàn),矩陣按鍵想要獨(dú)立按鍵的話,只需要將高四位或者低四位永遠(yuǎn)拉低,那么就能把一行或者一列看作一個(gè)按鈕,這樣就變成了一個(gè)獨(dú)立按鍵了。
程序展示:
#include< reg52.h >
typedef unsigned char u8;
typedef unsigned int u16;
u8 value;
unsigned char code sunduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void delay(u16 t)
{
while(t--);
}
void key()
{
u8 a;
P3=0xF0;
if(P3!=0xF0)
{
delay(1000);
if(P3!=0xF0)
{
P3=0xF0;
switch(P3)
{
case 0xE0:value=0;break;
case 0xD0:value=1;break;
case 0xB0:value=2;break;
case 0x70:value=3;break;
}
P3=0x0F;
switch(P3)
{
case 0x0E:value=value;break;
case 0x0D:value=value+4;break;
case 0x0B:value=value+8;break;
case 0x07:value=value+12;break;
}
while((a< 50)&&(P3!=0x0F)) //按鍵超時(shí)松開(kāi)判斷
{
delay(1000);
a++;
}
}
}
}
void main()
{
while(1)
{
key();
P2=sunduan[value];
}
}
效果展示:
我們?cè)诔绦蛑性O(shè)置了十六個(gè)按鍵分別對(duì)應(yīng)的0~F這十六個(gè)數(shù)值,當(dāng)我們按下第一個(gè)按鍵時(shí),在數(shù)碼管上顯示的是0,當(dāng)我們按下第二個(gè)按鍵時(shí),顯示的是數(shù)值1…
使用矩陣按鍵需要注意以下幾點(diǎn):
- 矩陣按鍵需要與單片機(jī)相連接,通常使用多根導(dǎo)線或者排針來(lái)實(shí)現(xiàn)。
- 矩陣按鍵需要配置好掃描電路,通常使用單片機(jī)的輸入輸出端口來(lái)實(shí)現(xiàn)。
- 矩陣按鍵需要編寫(xiě)好掃描程序,通常使用單片機(jī)的定時(shí)器中斷來(lái)實(shí)現(xiàn)。
- 矩陣按鍵需要處理好信號(hào)干擾,通常使用去抖動(dòng)技術(shù)來(lái)實(shí)現(xiàn)。
矩陣按鍵的作用主要有以下幾種:
- 矩陣按鍵可以作為單片機(jī)的人機(jī)交互界面,讓用戶可以輸入數(shù)據(jù)或者選擇功能。
- 矩陣按鍵可以作為單片機(jī)的控制器,讓用戶可以控制單片機(jī)的運(yùn)行狀態(tài)或者輸出結(jié)果。
- 矩陣按鍵可以作為單片機(jī)的擴(kuò)展器,讓用戶可以增加單片機(jī)的輸入端口或者功能模塊。
-
單片機(jī)
+關(guān)注
關(guān)注
6023文章
44376瀏覽量
628294 -
數(shù)碼管
+關(guān)注
關(guān)注
31文章
1869瀏覽量
90518 -
掃描電路
+關(guān)注
關(guān)注
0文章
8瀏覽量
8024 -
矩陣按鍵
+關(guān)注
關(guān)注
0文章
28瀏覽量
8348
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論