天天看點

【轉】 矩陣鍵盤的工作原理

在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常将按鍵排列成矩陣形式,在矩陣鍵盤中每條水準線和垂直線在交叉處不直接相連,而是通過一個按鍵相連接配接,這樣在由N條水準線和M條垂直線最多可以有N

*M 個按鍵,大大的減少了對于晶片I/O的占用。

鍵盤矩陣的按鍵識别方法

圖1   矩陣鍵盤的結構

方法一 行掃描法

1、判斷鍵盤中有無鍵按下

将全部行線P1.4-P1.7置低電平,當然P1.0-P1.3為高電平(或許晶片内部已經将這些引腳它上拉),然後檢測列線的狀态。隻要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。

2、判斷閉合鍵所在的位置

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

方法二 

先從P1口的高四位輸出低電平,低四位輸出高電平,從P1口的低四位讀取鍵盤狀态。再從P1口的低四位輸出低電平,高四位輸出高電平,從P1口的高四位讀取鍵盤狀态。将兩次讀取結果組合起來就可以得到目前按鍵的特征編碼。

在I.MX27中keypad子產品的實作

Keypad port 相關引腳說明:

在keypad子產品中 總共有16個引腳  (8個行引腳  8個列引腳)

KP_COL[7:0]        其中[5:0]

作為鍵盤子產品的列引腳  如果未使用 也可以做為通常的GPIO口使用

[7:6]兩引腳複用  可以作為鍵盤子產品的列引腳   7腳還可以用做序列槽2的UART2_CTS

引腳  

6腳還可以當做序列槽2 的UART2_TXD腳使用  6腳有時還做為晶片内部的測試引腳

KP_ROW[5:0]        其中[5:0]

作為鍵盤子產品的行引腳  如果未使用 也可以做為通常的GPIO口使用

[7:6]兩引腳複用  可以作為鍵盤子產品的行引腳   7腳還可以用做序列槽2的UART2_RTS

6腳還可以當做序列槽2 的UART2_RXD腳使用

keypad port 相關的寄存器

         KPCR 鍵盤控制寄存器

          當列引腳作為輸出時 

有涼宮輸出方式

           1)Open-Drain

Output   (漏極開路輸出)

           2)

Totem-Pole-Output(圖騰柱式輸出)

       KPSR 鍵盤狀态寄存器

作用  用于控制鍵盤的狀态 設定鍵盤的中斷方式等

       kDDR 鍵盤資料流向寄存器

作用 用于控制鍵盤引腳作為輸出功能還是作為輸入功能使用   當相應位被置為0代表輸入  當相應位被置為1時

代表輸出  

       kPDR 鍵盤資料寄存器  

作用  用于輸出或者讀出相應行列引腳上的資料,當相應引腳被置為輸入/輸出模式  該寄存器的響應為代表輸入/輸出的值

Keypad功能能子產品的具體實作

鍵盤矩陣的實作

本文來自:

繼續閱讀