甲機按鍵控制乙機數碼管,乙機按鍵控制甲機LED燈
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
QQ圖片20190607152256.png (58.64 KB, 下載次數: 135)
下載附件
2019-6-7 15:23 上傳
0.png (4.04 KB, 下載次數: 142)
下載附件
2019-6-7 19:42 上傳
單片機源程序如下:
- ORG 00H
- SJMP INIT
- ORG 0023H
- LJMP LOOP
- ORG 0030H
- INIT: MOV SP,#5FH
- MOV SCON,#50H ;串行口工作方式1,允許接收
- MOV TMOD,#20H ;定時器1工作方式2
- MOV PCON,#0H ;波特率不加倍
- MOV TH1,#0FDH ;波特率9.6kbit/s
- MOV TL1,#0FDH
- SETB TR1 ;啟動定時器1
- SETB EA
- SETB ES
- CLR TI
- CLR RI
- KEYS: MOV P0,#0FFH
- MOV R1,#0EFH ;初始化各寄存器
- MOV R2,#4
- MOV R3,#0FFH
- MOV 20H,#11101111B
- MOV 21H,#11111110B
- KEYREAD: MOV A,R1
- MOV P0,A ;送掃描碼至P0口
- MOV A,P0 ;讀P0口按鍵狀態
- MOV R3,A ;將此狀態保存在寄存器R3中
- ORL A,#0F0H ;屏蔽P0口高四位
- CJNE A,#0FFH,KEYDOWN ;若P0口低四位不全為1,有按鍵落下
- MOV A,R1
- RL A ;若低四位全為1,掃描下一行
- MOV R1,A
- DJNZ R2,KEYREAD
- LJMP KEYS
- KEYDOWN: MOV A,P0
- ORL A,#0F0H
- CJNE A,#0FFH,KEYTURN1 ;若按鍵確實落下,將按鍵轉換為按鍵碼
- LJMP KEYS
- KEYTURN1: MOV R2,#4 ;設循環次數
- MOV B,#0 ;按鍵碼初始值設為0
- LOOP1: MOV A,P0
- ORL A,#0F0H
- CJNE A,21H,S1 ;判斷落下按鍵是否位于該列
- SJMP KEYTURN2 ;是,跳轉判斷行
- S1: INC B ;否,按鍵碼加1,(21H)左移,判斷是否位于下一列
- MOV A,21H
- RL A
- MOV 21H,A
- DJNZ R2,LOOP1
- SJMP KEYREAD
- KEYTURN2: MOV R2,#4
- LOOP2: MOV A,P0
- ORL A,#0FH
- CJNE A,20H,S2 ;判斷落下按鍵是否位于該行
- SJMP S3
- S2: INC B ;否,按鍵碼加4,(20H)左移,判斷是否位于下一行
- INC B
- INC B
- INC B
- MOV A,20H
- RL A
- MOV 20H,A
- DJNZ R2,LOOP2
- SJMP KEYREAD
- S3: MOV A,B ;將按鍵碼送給A
- SEND: MOV SBUF,A ;發送數據
- JNB TI,$
- CLR TI
- LJMP INIT
- LOOP: MOV A,SBUF ;接收乙機數據
- JNB RI,$
- CLR RI ;清接收中斷標志
- MOV P1,#0FFH
- LCALL LED8 ;將乙機按鍵數據送P1口,點亮LED燈
- RETI
- LED8: JNB ACC.0,LIGHT1
- JNB ACC.1,LIGHT2
- JNB ACC.2,LIGHT3
- RETURN: RET
- LIGHT1: MOV A,#0FEH
- MOV R2,#8
- L1: MOV P1,A
- RL A
- ACALL DELAY
- DJNZ R2,L1
- SJMP RETURN
- LIGHT2: MOV A,#07FH
- MOV R2,#8
- L2: MOV P1,A
- RR A
- ACALL DELAY
- DJNZ R2,L2
- SJMP RETURN
- LIGHT3: MOV A,#0E7H
- MOV P1,A
- ACALL DELAY
- SETB C
- L31: MOV R0,A
- ORL A,#0FH
- RLC A
- MOV R1,A
- MOV A,R0
- ORL A,#0F0H
- RRC A
- MOV R2,A
- ANL A,#0FH
- MOV R0,A
- MOV A,R1
- ANL A,#0F0H
- ADD A,R0
- MOV P1,A
- ACALL DELAY
- JB P1.7,L31
- L32: SETB C
- MOV R0,A
- ORL A,#0FH
- RRC A
- MOV R1,A
- MOV A,R0
- ORL A,#0F0H
- RLC A
- MOV R2,A
- ANL A,#0FH
- MOV R0,A
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
程序代碼.rar
(2.64 KB, 下載次數: 156)
2019-6-7 15:20 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|