×
单片机 > 单片机程序设计 > 详情

51单片机STC89C52 矩阵键盘数码管显示

发布时间:2020-05-28 发布时间:
|

WELA BIT P2.7  

DULA BIT P2.6  

DIOLA BIT P2.5  

FM BIT P2.3  

  

ORG 0000H  

SETB DIOLA  

MOV SP,#0E0H  

LOOP0:  

LCALL key_Scan  

JZ LOOP0  

LCALL DELAY20MS  

LCALL key_Scan  

JZ LOOP0  

MOV P1,A  

LCALL Smg  

HERE0:  

LCALL key_Scan ;等待按键释放  

JZ LOOP0  

LCALL DELAY20MS  

SJMP HERE0  

  

key_Scan:  

SETB RS1  

MOV P3,#0FH  

ORL P3,#0FH  

MOV A,P3  ;取低4位 行  

MOV P3,#0F0H  

ORL P3,#0F0H  

MOV R0,P3 ;取高4位 列  

ANL A,#0FH  

MOV R1,A  

MOV A,R0  

ANL A,#0F0H  

ORL A,R1  

CPL A  

JZ EXIT ;为0说明无键,退出  

MOV R0,A ; 暂存完整键状态  

ANL A,#0FH  

CJNE A,#01H,NEXT0  

MOV R1,#1  

SJMP NEXT4  

NEXT0:  

CJNE A,#02H,NEXT1  

MOV R1,#2  

SJMP NEXT4  

NEXT1:  

CJNE A,#04H,NEXT2  

MOV R1,#3  

SJMP NEXT4  

NEXT2:  

CJNE A,#08H,NEXT3  

MOV R1,#4  

SJMP NEXT4  

NEXT3:  

MOV R1,#0 ;R1保存行号 无键为0,有键1-4  

CLR A ;退出前,清零累加器  

SJMP EXIT  

NEXT4:  

MOV A,R0  ;开始算列  

ANL A,#0F0H  

CJNE A,#10H,NEXT00   

MOV R2,#1  

SJMP NEXT40  

NEXT00:  

CJNE A,#20H,NEXT10  

MOV R2,#2  

SJMP NEXT40  

NEXT10:  

CJNE A,#40H,NEXT20  

MOV R2,#3  

SJMP NEXT40  

NEXT20:  

CJNE A,#80H,NEXT30  

MOV R2,#4  

SJMP NEXT40  

NEXT30:  

MOV R2,#0 ;R2保存列号,无键为0,有键1-4  

CLR A ;无键退出,并清零累加器  

SJMP EXIT  

NEXT40:  

MOV A,R1  

SUBB A,#1  

RL A  

RL A  

ADD A,R2 ;键值 0-15  

EXIT:  

CLR RS1  

RET  

  

DELAY20MS:    ;延时   

SETB RS0  

MOV R1,#20  

DELAY1:  

MOV R0,#0FAH  

DELAY0:  

NOP  

NOP   

DJNZ R0,DELAY0  

DJNZ R1,DELAY1  

CLR RS0  

RET  

  

DELAY4S:    ;延时   

SETB RS1  

MOV R3,#02H  

DELAY30:  

MOV R2,#04H  

DELAY20:  

MOV R1,#250  

DELAY10:  

MOV R0,#250  

DELAY00:  

NOP  

NOP   

DJNZ R0,DELAY00  

DJNZ R1,DELAY10  

DJNZ R2,DELAY20  

DJNZ R3,DELAY30  

CLR RS1  

RET  

  

Smg:  

SETB RS1  

PUSH ACC  

PUSH B  

PUSH PSW  

CLR DULA  

CLR WELA  

MOV P0,#00H  

SETB DULA  

CLR DULA  

SETB WELA  

CLR WELA  

MOV DPTR,#TABLEK  

DEC A  

MOVC A,@A+DPTR  

MOV P0,A  

SETB DULA  

CLR DULA  

POP PSW  

POP B  

POP ACC  

CLR RS1  

RET  

TABLEK:    ;共阴数码管  

DB  3FH,06H,5BH,4FH  

DB  66H,6DH,7DH,07H  

DB  7FH,6FH,77H,7CH  

DB  39H,5EH,79H,71H  

  

END 


关键字:51单片机  STC89C52  矩阵键盘  数码管显示 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
AVR熔丝位操作时的要点和需要注意的相关事项