|
鍵盤(pán)電路是單片機(jī)應(yīng)用系統(tǒng)最常用的人機(jī)接口,往往要占用較多的I/O端口, 現(xiàn)在有些很節(jié)約I/O資源的鍵盤(pán)電路,如本站轉(zhuǎn)載的這篇文章 http://www.fxdzw.com/dpj/jyio.htm ,但它在鍵盤(pán)上使用的二極管較多,或有些使用的編碼芯片。利用本文介紹的電路,可以最大限度地減少鍵盤(pán)電路對(duì)I/O端口的點(diǎn)用 和器件。本電路特別適合一些直接搭焊、或需要導(dǎo)線延長(zhǎng)鍵盤(pán)(如密碼鎖) 其節(jié)省寶貴的延長(zhǎng)線數(shù)量。 2 硬件原理 這里以4根I/O線為例,普通接法只能接4個(gè)鍵,本文介紹的電路是在組合接法的基礎(chǔ)上增加了4個(gè)二極管。其軟件處理使用了端口掃描檢測(cè)方法,從而使按鍵數(shù)可達(dá)到12個(gè),同時(shí)由于采用了組合邏輯來(lái)直接對(duì)端口進(jìn)行讀取,因此極大地簡(jiǎn)經(jīng)了程序的處理過(guò)程。下圖是該電路的電路原理圖。 也可以根據(jù)此原理圖類(lèi)是做3線、5線等的鍵盤(pán)。
3 軟件過(guò)程和程序 檢測(cè)過(guò)程:先將口1執(zhí)低電平,然后讀取口2、3、4,如有低電平則端口對(duì)應(yīng)的按鍵被按下;如都是高電平,則將口2執(zhí)低,然后讀取口1、3、4,以此類(lèi)推。 程序如下: ;端口定義 K1 BIT P1.0 K2 BIT P1.1 K3 BIT P1.2 K4 BIT P1.3 ;****************************************** ; 鍵盤(pán)掃描 ;****************************************** KEY: SETB K2 ;一行 SETB K3 SETB K4 CLR K1 JB K2,KEY1 LCALL T1MS JB K2,KEY1 MOV KEYZ,#01H KT1: JNB K2,KT1 LJMP KEYOUT KEY1: JB K3,KEY2 LCALL T1MS JB K3,KEY2 MOV KEYZ,#02H KT2: JNB K3,KT2 LJMP KEYOUT KEY2: JB K4,KEY3 LCALL T1MS JB K4,KEY3 MOV KEYZ,#03H KT3: JNB K4,KT3 LJMP KEYOUT KEY3: SETB K1 ;二行 CLR K2 JB K1,KEY4 LCALL T1MS JB K1,KEY4 MOV KEYZ,#04H KT4: JNB K1,KT4 LJMP KEYOUT KEY4: JB K3,KEY5 LCALL T1MS JB K3,KEY5 MOV KEYZ,#05H KT5: JNB K3,KT5 LJMP KEYOUT KEY5: JB K4,KEY6 LCALL T1MS JB K4,KEY6 MOV KEYZ,#06H KT6: JNB K4,KT6 LJMP KEYOUT KEY6: SETB K2 ;三行 CLR K3 JB K1,KEY7 LCALL T1MS JB K1,KEY7 MOV KEYZ,#07H KT7: JNB K1,KT7 LJMP KEYOUT KEY7: JB K2,KEY8 LCALL T1MS JB K2,KEY8 MOV KEYZ,#08H KT8: JNB K2,KT8 LJMP KEYOUT KEY8: JB K4,KEY9 LCALL T1MS JB K4,KEY9 MOV KEYZ,#09H KT9: JNB K4,KT9 LJMP KEYOUT KEY9: SETB K3 ;四行 CLR K4 JB K1,KEY10 LCALL T1MS JB K1,KEY10 MOV KEYZ,#0AH KT10: JNB K1,KT10 LJMP KEYOUT KEY10: JB K2,KEY11 LCALL T1MS JB K2,KEY11 MOV KEYZ,#0BH KT11: JNB K2,KT11 LJMP KEYOUT KEY11: JB K3,KEY LCALL T1MS JB K3,KEY MOV KEYZ,#0CH KT12: JNB K3,KT12 KEYOUT: RET
;******************************************** ; 延時(shí) ;******************************************** T1MS: MOV R4,#0FEH ;1ms延時(shí) T1MS0: NOP NOP DJNZ R4,T1MS0 RET |