數碼管顯示4x4鍵盤的鍵號仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (110.11 KB, 下載次數: 66)
下載附件
2017-10-21 01:46 上傳
目錄..................................................................................................................................................1
數碼管顯示4x4矩陣鍵盤的鍵號 2
摘要 2
關鍵詞 2
第一章 硬件 2
AT89C51 2
4*4鍵盤 6
第二章 軟件 9
KEIL4 9
匯編程序 10
Proteus 15
仿真電路圖 17
第三章 實物 17
材料 17
實物展示 18
第四章 課程設計心得 19
參考文獻 20
0.png (369.4 KB, 下載次數: 60)
下載附件
2017-10-21 01:46 上傳
0.png (28.42 KB, 下載次數: 80)
下載附件
2017-10-21 01:47 上傳
單片機源程序(匯編語言)如下:
- scan_code EQU 30H
- ORG 0000H
- JMP start
- ORG 0030H
- start:
- MOV P0,#0FFH ;初始化p0口,使輸出無顯示
- loop: ; 循環調用read—key獲取鍵盤信息,若鍵盤按下,
- CALL read_key ; 則用R7返回鍵值信息
- CJNE R7,#0FFH,next ; 若R7返回值不為0xff,則調用顯示函數
- JMP loop
- next: ;顯示程序
- MOV A,R7
- MOV DPTR,#disp_code
- MOVC A,@A+DPTR
- MOV P0,A
- JMP loop
- read_key:
- MOV scan_code,#7FH
- MOV P1,#0FH
- MOV A,P1
- MOV R7,#0FFH
- CJNE A,#0FH,wait_key ;鍵盤按下則p1的值會改變
- JMP end_key
- wait_key:
- CALL delay_10ms ;延時10ms,若p1口仍右鍵按下,則跳到scan—key
- MOV A,P1
- MOV R7,#0FFH
- MOV R6,#4
- CJNE A,#0FH,scan_key
- JMP end_key
- scan_key:
- MOV P1,scan_code ;將0x7f循環右移并賦給P1
- MOV A,P1
- CJNE A,scan_code,get_key;p1的值改變則確定出其行數
- RR A
- MOV scan_code,A
- DJNZ R6,scan_key
- JMP end_key
- get_key:
- ; MOV P1,#0FH
- ; MOV R1,P1
- ; CJNE R1,#0FH,$
- MOV R7,#4
- get_key0:
- JNB ACC.0,add_r6;移位循環判斷最低位,為0則確定其列數
- RR A
- DJNZ R7,get_key0
- MOV R7,#0FFH
- JMP end_key
- add_r6:
- DEC R6 ;從第0個鍵盤數起,數滿(R6-1)*4個鍵盤,再加上第R6行
- MOV A,R6 ;的列數R7-1,便得第幾個鍵盤按下
- MOV B,#4
- MUL AB
- DEC R7
- ADD A,R7
- MOV R7,A
- end_key:
- RET
- delay_10ms:
- MOV R7,#10
- delay0:
- MOV R6,#0FAH
- delay1:
- NOP ; 1us
- NOP ; 1us
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png (55.74 KB, 下載次數: 82)
下載附件
2017-10-21 01:47 上傳
所有資料51hei提供下載:
數碼管顯示4x4矩陣鍵盤的鍵號.zip
(354.64 KB, 下載次數: 32)
2017-10-21 01:37 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|