查表法直接驱动七段LED数码管 (汇编语言)

实验目的:以查表法循环显示“8051”“2008 ” “ 0218 ”
硬件电路及源程序:见附件压缩档 (proteus仿真)
现存问题点: 显示不正常
恳请大神们指点!谢谢!

另外,大神,你是怎么将proteus仿真时的图片,存为.Gif可以动态显示的图片的啊?望赐教!

COUNTS EQU 50H
SCAN EQU 01110111B
ORG 0000H

START: MOV DPTR,#DISP1
CALL DISPLAY4
MOV DPTR,#DISP2
CALL DISPLAY4
MOV DPTR,#DISP3
CALL DISPLAY4
JMP START

DISPLAY4: MOV R4,#COUNTS
LOOP1: MOV R3,#SCAN
MOV R2,#4
MOV R1,#0
LOOP2: MOV A,R1
MOVC A,@A+DPTR
INC R1
CALL DISPLAY1
DJNZ R2,LOOP2
DJNZ R4,LOOP1
RET

DISPLAY1: PUSH DPL
PUSH DPH
MOV DPTR,#SEG_CODE
MOVC A,@A+DPTR
MOV P2,A
MOV A,R3
MOV P1,A
CALL DELAY
MOV P1,#00H
RR A
MOV R3,A
CALL DELAY
POP DPH
POP DPL
RET

DELAY: MOV R7,#10
D1: MOV R6,#100
DJNZ R6,$
DJNZ R7,D1
RET

DISP1: DB 8,0,5,1
DISP2: DB 2,0,0,8
DISP3: DB 0,2,1,8

SEG_CODE:
DB 00000011B
DB 10011111B
DB 00100101B
DB 00001101B
DB 10011001B
DB 01001001B
DB 01000001B
DB 00011111B
DB 00000001B
DB 00001001B
END

DISPLAY1: PUSH DPL
PUSH DPH
MOV DPTR,#SEG_CODE
MOVC A,@A+DPTR
CPL A ;加一个取反试试。

MOV P2,A
MOV A,R3
MOV P1,A
CALL DELAY
MOV P1,#00H
RR A
MOV R3,A
CALL DELAY
POP DPH
POP DPL
RET
温馨提示:答案为网友推荐,仅供参考