A. 如何進行單片機鍵盤電路的設計
其實比較好寫的..
行是,P3.0-P3.3,例是,P3.4-P3.7,最後得到的鍵值存在,KEYS中數為,0-15,
有什麼問題可以再問...
START:
MOV P1,#00H
MOV P2,#0FH
CLR KEYCARD
LOOP:
ACALL KEY_CHECK
JNB KEYCARD,LOOP ;為0從重新掃描
ACALL KEY_MARK ;為1有按鍵,調用KEY_MARK
AJMP LOOP
KEY_CHECK: ;鍵盤掃描
MOV P3,#0FH
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_C1
CLR KEYCARD
RET
KEY_C1:
ACALL DELAY ;有鍵接下,消抖
SETB KEYCARD
RET
KEY_MARK:
MOV A,#0EFH ;第一例,行掃描,
KEY_M1: ;鍵值掃描
MOV P3,A
MOV KEYS,A
MOV A,P3
ANL A,#0FH ;取與
CJNE A,#0FH,KEY_M2 ;在第一例則跳,KEY_M2
MOV A,KEYS ;並非在第一例剛移位
SETB C
RLC A
JC KEY_M1 ;C=1,重新掃描..
CLR KEYCARD ;掃完一圈後,完成..
RET
KEY_M2: ;鍵值計算
MOV R0,#KEYS ;將KEYS的地址裝入R0
XCH A,@R0 ;交換KEYS,A
XCHD A,@R0 ;交換低4位..
MOV KEYS,A
MOV R0,#0
LCALL KEY_ZHI
KEY_MX: ;等待按鍵釋放
MOV A,P3
ANL A,#0FH
CJNE A,#0FH,KEY_MX
CLR KEYCARD
RET
KEY_ZHI:
MOV A,R0
INC R0
MOV DPTR,#KEY_VALUE
MOVC A,@A+DPTR
CJNE A,KEYS,KEY_ZHI ;查找鍵值.
DEC R0
MOV KEYS,R0
MOV P1,KEYS ;KEYS中的數為:0-15
RET
DELAY:
MOV R7,#20 ;延時大約2ms
D1: MOV R6,#50
DJNZ R6,$
DJNZ R7,D1
RET
KEY_VALUE: DB 0EEH,0DEH,0BEH,07EH,0EDH,0DDH,0BDH,07DH,0EBH,0DBH,0BBH,07BH,07EH,07DH,077H
END
B. 單片機鍵盤顯示電路設計的程序要求輸入64個按鍵,8個LED顯示
一種是採用8行8列組成的按鍵就可以了,實際上是16個開關,但可以實現64個按鍵。具體的看看網上的4*4鍵盤是什麼原理。基礎要自己想。
第二種是採用8255或8155擴展,具體的要自己去看去學。