矩陣鍵盤結構
矩陣式結構的鍵盤識別要復雜一些,列線通過電阻接正電源,并將行線所接的單片機的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,高四位不會變,此時即可確定被按下的鍵的列位置。
最后將上述兩者進行或運算即可確定被按下的鍵的位置。

矩陣鍵盤的工作原理
按鍵設置在行、列線交點上,行、列線分別連接到按鍵開關的兩端。行線通過上拉電阻接到+5V電源上。無按鍵按下時,行線處于高電平的狀態,而當有按鍵按下時,行線電平與此行線相連的列線電平決定。
行列掃描法原理
第一步,使行線為編程的輸入線,列線是輸出線,拉低所有的列線,判斷行線的變化,如果有按鍵按下,按鍵按下的對應行線被拉低,否則所有的行線都為高電平。
第二步,在第一步判斷有鍵按下后,延時10ms消除機械抖動,再次讀取行值,如果此行線還處于低電平狀態則進入下一步,否則返回第一步重新判斷。
第三步,開始掃描按鍵位置,采用逐行掃描,每間隔1ms的時間,分別拉低第一列,第二列,第三列,第四列,無論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置,分別把行值和列值儲存在寄存器里。
第四步,從寄存器中找到行值和列值并把其合并,得到按鍵值,對此按鍵值進行編碼,按照從第一行第一個一直到第四行第四個逐行進行編碼,編碼值從“0000”至“1111”,再進行譯碼,最后顯示按鍵號碼。 |