下面以51單片機綜合學習系統為硬件平臺,介紹矩陣式鍵盤的編程方法。具體功能為:按下其鍵后,在一位數碼管上顯示出鍵值。0到16個鍵分別對應顯示0到F。
1、硬件原理
本實驗可以直接在配套開發板上完成,電路圖如下圖所示。
根據電路原理圖,鍵盤掃描方法是:行線P1O~P13為輸出線,列線P14~P17為輸入線。一開始單片機將行線(P1O-P13)全部輸出低電平,此時讀入列線數據,若列線全為高電平說明沒有鍵接下,若有列線為低電平則調用延時程序來去除按鍵抖動。延時后再讀入列線看是否有低電平,如果列線數據還是有低電平,說明確實有鍵接下,接下來便是確定鍵值。下面以第二行的S5鍵為例,看接下S5后我們應該怎么得到這個鍵值。當判定確實有鍵接下之后,將行線輪流置為低電平,根據讀入列線的數據可以確定鍵值。首先,單片機將P1O置為低電平,P11~P13置為高電平,此時讀出的列線數據全為高電平,說明第一行沒有鍵接下;接著單片機將P11輸出低電平,P1O、P12、P13置為高電平,再讀列線數據,此時的列線數值為1011(OxOB),即P11與P15交叉點上的按鍵S5被接下,而OxOB就代表S5的鍵值了。轉到S5鍵功能處理子程序就可以達到目的。
2.程序流程
軟件流程圖如下圖所示。51單片機綜合學習系統資源豐富,板內有:8位LED數碼管、32路LED、4x4矩陣鍵盤、4個直控按鍵盤、蜂鳴器喇叭、繼電器試驗、I2C總線接口、SPI總線接口、l60x液晶、l28x64液晶、紅外接收頭接口、支持PS/2接口的104鍵標準鍵盤、步進電機驅動接口、ADCO832模/數轉換接口、PC817光電耦合器、串行時鐘芯片DSl302、溫度傳感器DSl8B2O按口、RS232串口通訊、外擴展接口等,可以方便地接更多的實驗資源。
3. 軟件代碼
相關的軟件代碼如下:
/* 矩陣鍵盤測試程序*/