本程序是用51单片机实现4位共阳数码管动态扫描显示程序,采用74HC573做驱动,定时器T0定时16ms,用来刷新数码管显示屏,软件延时1ms实现数码管亮灭延时,相当稳定,没有一点闪烁的感觉,很不错!如果要调整亮度可适当调整数码管亮的时间。现把程序上传,与大家一起共享!!!哈哈哈!!!
由于电路图很简单我就不画了大家从程序中都可看出来p2.0-2.3 是接4个位选 由于是共阳所以是接的数码管的正极,p2.5是74hc573的锁存端,段的数据口是p0.我是从51hei单片机开发板上的电路图仿制过来的 只是用4个io口做位选 节约了一片573芯片.
D0 BIT P2.0
D1 BIT P2.1
D2 BIT P2.2
D3 BIT P2.3
SUBF0 EQU 30H
SUBF1 EQU 31H
SUBF2 EQU 32H
SUBF3 EQU 33H
COUT EQU 34H
ORG 0000H
SJMP MIAN
ORG 000BH
LJMP INTER0
ORG 0040H
MIAN:MOV SP,#60H
MOV IE,#00H
MOV SUBF0,#80H
MOV SUBF1,#80H
MOV SUBF2,#80H
MOV SUBF3,#80H
MOV TH0,#0C1H
MOV TL0,#80H
MOV TMOD,#01H
MOV R2,#00H
MOV R1,#SUBF0
MOV COUT,#04H
LCALL DISPLAY
LCALL SHUT
SETB EA
SETB ET0
MOV DPTR,#TABLE
LOOP:MOV A,R2
MOVC A,@A+DPTR
LOOP0:MOV @R1,A
INC R1
INC R2
DJNZ COUT,LOOP
SETB TR0
SJMP $
INTER0:CLR ET0
CLR TR0
PUSH ACC
PUSH PSW
MOV TH0,#0C1H
MOV TL0,#80H
LCALL DISPLAY
SETB ET0
SETB TR0
POP PSW
POP ACC
RETI
DISPLAY:SETB D1
SETB D2
SETB D3
CLR D0
CLR P2.5
MOV P0,SUBF0
SETB P2.5
LCALL DELAY
SETB D0
SETB D2
SETB D3
CLR D1
CLR P2.5
MOV P0,SUBF1
SETB P2.5
LCALL DELAY
SETB D0
SETB D1
SETB D3
CLR D2
CLR P2.5
MOV P0,SUBF2
SETB P2.5
LCALL DELAY
SETB D0
SETB D1
SETB D2
CLR D3
CLR P2.5
MOV P0,SUBF3
SETB P2.5
LCALL DELAY
LCALL SHUT
RET
SHUT:SETB D0
SETB D1
SETB D2
SETB D3
RET
DELAY:MOV R7,#02H
DL:MOV R6,#0FFH
DL1:DJNZ R6,DL1
DJNZ R7,DL
RET
TABLE:DB 99H,92H,82H,0F8H
END
