譚成豪,許建明
邵陽學院信息工程系,湖南邵陽 422000
試述51系列單片機矩陣鍵盤編程
譚成豪,許建明
邵陽學院信息工程系,湖南邵陽 422000
在單片機系統中,常常使用鍵盤向單片機輸入信息。鍵盤由一組常開的按鍵組成,當按鍵閉合時就會向單片機系統輸入一個電平信息。每個按鍵都被賦予了一個鍵碼,單片機根據此代碼執行任務。在單片機系統按鍵數量較多時,為了減少I/O口的使用通常使用矩陣鍵盤。
單片機;鍵盤;矩陣鍵盤;I/O口
矩陣鍵盤的按鍵排成矩陣,一般是4×4矩陣,即4行4列,行和列的交叉點接一個常開的獨立按鍵,按鍵被閉合時就接通行線和列線。8個I/O口產生16個交叉點16個按鍵,按鍵數量比獨立按鍵多了一倍,9個I/O口產生20個按鍵, I/O口越多產生的按鍵數量越多,效果越明顯。可以在鍵盤掃描程序中對每個按鍵進行編號,如第一行按鍵從左到右對應0、1、2、3,第二行按鍵從左到右對應4、5、6、7,第三行按鍵從左到右對應8、9、A、B,第四行按鍵左到右對應C、D、E、F,每按一次鍵讓數碼管顯示該按鍵所代表的編號。

矩陣鍵盤結構比獨立鍵盤復雜,識別難度也比獨立按鍵大很多。矩陣鍵盤的工作方式有程序掃描方式、定時掃描方式、中斷掃描方式3種。本文只討論程序掃描方式。程序掃描方式是CPU主動調用掃描子函數,響應鍵盤的輸入要求。在子函數里有以下步驟:
1)判斷鍵盤中有無按鍵閉合;
2)延時去抖消除干擾;
3)檢測是否確實有按鍵閉合,確定閉合鍵的編號;
4)等待閉合鍵的釋放。
整個步驟中確定閉合鍵的編號是關鍵所在,常用的判斷方法有逐行掃描法和反轉掃描法。

4×4矩陣鍵盤無需外接電源,電位變化完全由編程來決定。通過軟件延時來消抖動,去干擾。4×4矩陣鍵盤4行4列交叉,每個按鍵位于交叉點上對應的行列號唯一,共16個按鍵。4×4矩陣鍵盤8個I/O口接P1口,7SEG-MPX2-AN-GREEN7段共陽極數碼管通過上拉電阻接P0口。鍵盤中每閉合一個按鍵讓數碼管顯示對應的編號。如上圖所示。
矩陣鍵盤編程要實現按鍵的正確判斷、鍵值的確定和消除抖動去干擾三個目標,閉合鍵釋放后才顯示對應按鍵編號,目標程序要簡潔易行。
4.1 逐行掃描法
此方法中,單片機每次掃描其中的一行,循環掃描四行。首先掃描第一行,給P1口賦值0xef,即第一行為低電平,其他行和所有列為高電平,當有第一行有按鍵閉合時,對應的列線電平會被拉低,軟件延時消去抖動干擾后再讀取P1口的值,如第一行第一列閉合了就會得到0xee,第一行第一列閉合了就會得到0xed,第一行第三列閉合了就會得到0xeb,第一行第四列閉合了就會得到0xe7;同理,檢測第二行時,賦值0xdf給P1口,若各列有按鍵閉合則會分別得到0xde、0xdd、0xdb、0xd7,類推,檢測第三行時賦值0xbf,若各列有按鍵閉合則會分別得到0xbe、0xbd、0xbb、0xb7,檢測第四行時賦值0x7f,若各列有按鍵閉合則會分別得到0x7e、0x7d、0x7b、0x77然后單片機對應此值處理相應的任務。
4.2 反轉掃描法
在這種方法中對單片機P1口賦值兩次,第一次給P1口賦值0xf0,即高四位高低平,第四位低電平,若有按鍵閉合則高四位中對應的某一位會被線拉低,讀取P1口的值,賦給一個中間變量這就確定了按鍵的行;第二次給P1口賦值0x0f,即高四位低低平,第四位高電平,若有鍵閉合則低四位中對應的某一位會被線拉低,讀取P1口的值,賦給另一個中間變量,這樣按鍵的行和列都確定了,然后再對兩個變量進行“按位與”運算得到一個最終值,根據次值判斷具體按鍵。從0~F依次是0xee、0xed、0xeb、0xe7、0xde、0xdd、0xdb、0xd7、0xbe、0xbd、0xbb、0xb7、0x7e、0x7d、0x7b、077。然后單片機對應此值處理相應的任務。
使用鍵盤可以實現計算機的人機對話,可以更好的實現工業控制,在單片機I/O口資源緊張的情況下矩陣鍵盤大大緩解了I/O口資源的緊張,使單片機可以控制更多模塊,實現更為強大的功能。
[1]張俊謨.單片機中級教程[M].北京航空航天大學出版社,2006,10.
[2]張洪潤,蘭清華.單片機應用技術教程[M].北京:清華大學出版社,1997,11.
TP368
A
1674-6708(2011)39-0197-01
譚成豪,學生,所在院校:邵陽學院電子科學與技術專業
指導老師:許建明,碩士研究生,工作單位:邵陽學院信息工程系,職務:教師