在鍵盤中按鍵數量較多時,為了減少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功能能子產品的具體實作
鍵盤矩陣的實作
本文來自: