矩陣式鍵盤 兩種掃瞄

2021-10-01 16:02:17 字數 1385 閱讀 4726

矩陣式結構的鍵盤識別要複雜一些,列線通過電阻接正電源,並將行線所接的微控制器的i/o口作為輸出端,而列線所接的i/o口則作為輸入。這樣,當按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。 在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過乙個按鍵加以連線。這樣,乙個埠(如p1口)就可以構成4*4=16個按鍵,比之直接將埠線用於鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用埠線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,採用矩陣法來做鍵盤是合理的。
<1>確定矩陣式鍵盤上何鍵被按下介紹一種「行掃瞄法」。   

行掃瞄法 行掃瞄法又稱為逐行(或列)掃瞄查詢法,是一種最常用的按鍵識別方法,如上圖所示鍵盤,介紹過程如下。   

1、判斷鍵盤中有無鍵按下 將全部行線y0-y3置低電平,然後檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位於低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。   

2、判斷閉合鍵所在的位置 在確認有鍵按下後,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平後,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。

<2>確定矩陣式鍵盤上何鍵被按下介紹一種「高低電平翻轉法」。   

首先讓p1口高四位為1,低四位為0,。若有按鍵按下,則高四位中會有乙個1翻轉為0,低四位不會變,此時即可確定被按下的鍵的行位置。   

然後讓p1口高四位為0,低四位為1,。若有按鍵按下,則低四位中會有乙個1翻轉為0,高四位不會變,此時即可確定被按下的鍵的列位置。   

最後將上述兩者進行或運算即可確定被按下的鍵的位置。

/*矩陣4*3按鍵*/ #include#include#define uint unsigned int #define uchar unsigned char uchar code dutable=;//段選0~9+l+a uchar num,temp,flag;//flag標記在沒有按鍵之前不顯示任何數字 void delay(uint z); void display(uchar num); uchar keyscan(); void main() } void delay(uint z) } } void display(uchar num) else } uchar keyscan() if(temp!=0xf0) } } } p1=0xfb; temp=p1; temp=temp&0xf0; if(temp!=0xf0)//有按鍵 if(temp!=0xf0) if(temp!=0xf0) } } } return num; }

矩陣式鍵盤

矩陣式鍵盤碼值首先,我們要準備的器械有 arduino uno 代替c51 4 4矩陣式鍵盤 為了方便理解我將行列分別進行了編號 左邊四個介面為行數,右邊四個為列數,分別對應第1,2,3,4行。接下來讓我們看看那些碼值 哦,是不是一點頭緒都沒有,不急實驗繼續。注意,這裡是keypad而不是keybo...

4 4 矩陣式鍵盤電路的改進

本文向大家推薦乙個精簡io介面的4 4鍵盤電路,該鍵盤電路僅僅使用4條io介面引線,即可完成一般需要8位介面才能完成的功能。在51微控制器系統中,經常使用4 4鍵盤,一般情況下,都是使用乙個8位的介面,外接16個按鍵。下圖就是乙個常規的4 4鍵盤電路圖。這種常規的矩陣鍵盤電路,相信大家都司空見慣了,...

4 4矩陣式鍵盤(非中斷)源程式

include define uchar unsigned char define uint unsigned int uchar code table uchar temp uchar key uchar k uchar code h 延時函式 void mdelay uchar delay vo...