單片機矩陣按鍵是一種常用的輸入設備,它可以讓用戶通過按下不同的按鍵來控制單片機的功能。矩陣按鍵的原理是利用了電路的開關特性,將多個按鍵排列成一個矩陣,每個按鍵都連接了一行和一列的電路。當用戶按下某個按鍵時,就會使得對應的行和列的電路導通,從而產生一個唯一的信號,這個信號可以被單片機識別并執行相應的操作。
矩陣按鍵的組成主要有兩部分:按鍵和掃描電路。
按鍵是用來輸入信號的部分,它可以是機械式的或者觸摸式的,不同的按鍵可以有不同的標識,例如數字、字母或者符號。
掃描電路是用來檢測信號的部分,它可以是硬件實現的或者軟件實現的,它的作用是定時地給矩陣按鍵的每一行和每一列施加一個電壓,并檢測是否有電流流過,如果有,則說明有按鍵被按下,并根據行列號確定是哪個按鍵。
具體方法說明:
方法一:逐行掃描:我們可以通過低四位輪流輸出低電平來對矩陣鍵盤進行逐行掃描,當高四位援收到的數據不全為1的時候,說明有按鍵按下,然后通過接收到的數據是哪一位為0來判斷是哪一個按鍵被按下。
方法二:
行列掃描:我們可以通過高四位全部輸出低電平,低四位輸出高電平,當接收到數據時,低四位不全為高電平時,說明有按鍵按下,然后通過接收的數據值,判斷是哪一列有按鍵按下,然后再反過來,高四位輸出高電平,低四位輸出低電平,然后根據接收到的高四位的值判斷是那一行有按鍵按下。這樣就能夠確定是哪一個按鍵按下了
矩陣按鍵如何變成獨立按鍵?
留心發現,矩陣按鍵想要獨立按鍵的話,只需要將高四位或者低四位永遠拉低,那么就能把一行或者一列看作一個按鈕,這樣就變成了一個獨立按鍵了。
程序展示:
#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)) //按鍵超時松開判斷
{
delay(1000);
a++;
}
}
}
}
void main()
{
while(1)
{
key();
P2=sunduan[value];
}
}
效果展示:
我們在程序中設置了十六個按鍵分別對應的0~F這十六個數值,當我們按下第一個按鍵時,在數碼管上顯示的是0,當我們按下第二個按鍵時,顯示的是數值1…
使用矩陣按鍵需要注意以下幾點:
- 矩陣按鍵需要與單片機相連接,通常使用多根導線或者排針來實現。
- 矩陣按鍵需要配置好掃描電路,通常使用單片機的輸入輸出端口來實現。
- 矩陣按鍵需要編寫好掃描程序,通常使用單片機的定時器中斷來實現。
- 矩陣按鍵需要處理好信號干擾,通常使用去抖動技術來實現。
矩陣按鍵的作用主要有以下幾種:
- 矩陣按鍵可以作為單片機的人機交互界面,讓用戶可以輸入數據或者選擇功能。
- 矩陣按鍵可以作為單片機的控制器,讓用戶可以控制單片機的運行狀態或者輸出結果。
- 矩陣按鍵可以作為單片機的擴展器,讓用戶可以增加單片機的輸入端口或者功能模塊。
-
單片機
+關注
關注
6035文章
44554瀏覽量
634653 -
數碼管
+關注
關注
32文章
1882瀏覽量
91064 -
掃描電路
+關注
關注
0文章
8瀏覽量
8034 -
矩陣按鍵
+關注
關注
0文章
28瀏覽量
8362
發布評論請先 登錄
相關推薦
評論