关于数码管的基础问题,求助!

2019-07-15 19:44发布

              最近在学习数码管的动态显示,可以用一个口控制段码,一个口控制位选端。
类似程序
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

但是这样的显示效果是数字不能变,如何实现在使用动态显示的前提下,让数字动起来?谢谢各位大神!!!

Sun Apr 13 16-33-46.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
a422061641
2019-07-16 07:23
依然落叶飘零 发表于 2014-5-14 17:00
程序我就写了,说下思路,首先要定义保存显示字符的变量。例如定义Num1~Num8.八个要显示的数,
然后用动态 ...

按照您的提示,我准备做一个两位数的计时器,个位从0到9,再进位到十位,程序如下
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
    ACALL LOOP1
AJMP MAIN
LOOP1:   
    MOV DPTR,#TAB
    MOV R0,#00H
MOV R1,#00H
LOOP2:
    MOV R4,#01H
    MOV P1,R4     ;P1显示位址
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A     ;P0显示段码
ACALL DELAY     ;短延迟
MOV P0,#00H
LOOP3:
INC R4
MOV P1,R4
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
ACALL DELAY
MOV P0,#00H
ACALL DEL     ;长延迟
INC R0
CJNE R0,#0AH,LOOP2
INC R1
CJNE R1,#0AH,LOOP1      
RET
DELAY:  
MOV R6,#5
DD1:
MOV R7,#10
DD2:   
  DJNZ R7,DD2
  DJNZ R6,DD1
  RET
DEL:
MOV R7,#100
D1:
MOV R6,#100
D2:
MOV R5,#100
D3:
DJNZ R5,D3
DJNZ R6,D2
DJNZ R7,D1
RET
TAB: DB 03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
  END
可以勉强实现动态显示,但是显示亮度低,还有闪烁的效果,十位一直是零,请问是什么问题?谢谢!

一周热门 更多>