本程序是用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
