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