最近在学习数码管的动态显示,可以用一个口控制段码,一个口控制位选端。
类似程序
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
ACALL LOOP1
AJMP MAIN
LOOP1:
MOV DPTR,#TAB
MOV R0,#00H
MOV R1,#00H
LOOP2:
MOV P1,R0 ;P0显示位址
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A ;P1显示段码
ACALL DELAY
MOV P0,#00H
INC R0
INC R1
CJNE R0,#08,LOOP2
RET
DELAY: MOV R6,#5
DD1: MOV R7,#10
DD2: DJNZ R7,DD2
DJNZ R6,DD1
RET
TAB: DB 03FH,06H,5BH,4FH,66H,6DH,7DH,07H
END
但是这样的显示效果是数字不能变,如何实现在使用动态显示的前提下,让数字动起来?谢谢各位大神!!!
-
显示亮度低,闪烁是因为你程序里面延时太多了,数码管扫描速度不够快。十位一直是0是因为你CJNE R1,#0AH,LOOP1 这条命令错了,跳错地方了了。跳到LOOP1,个位十位都被清零了。
一周热门 更多>