DISP: MOV R0 , #30H ;顯示緩沖區的首地址值賦給R0
MOV R2 , #20H ;位選碼指向P0.5
DISP1: MOV A , @R0 ;取出要顯示的數
MOV DPTR , #SEG ;指向換碼表首址
MOV A , A+DPTR ;取出顯示碼
MOV DPTR , #0FD01H
MOV @DPTR , A ;輸出顯示碼到8155A口
MOV A , R2 ;位邊碼賦給 A
INC DPTR ;求8155B口寄存器地址
MOVX @DPTR , A ;從8155 B口輸出位選碼
ACALL DIM ;延時 1ms
MOV A , R2
JNB ACC.0 , DISP2 ;6位全顯示完了嗎?若末完則繼續顯示
RET
DISP2: INC R0 ;求下一位要顯示的數的地址
MOV A , R2 ;求下一個位選碼
RR A
MOV R2 , A
AJMP DISP1
DIM: MOV R3 , #7DH
DL1: NOP
NOP
DJNZ R3 , DL1
RET
SEG: DB 3FH ;對應于字符是0
DB 06H ;對應于字符是1
DB 5BH ;對應于字符是2
DB 4FH ;對應于字符是3
DB 6BH ;對應于字符是4
DB 6DH ;對應于字符是5
DB 7DH ;對應于字符是6
DB 07H ;對應于字符是7
DB 7FH ;對應于字符是8
DB 67H ;對應于字符是9
DB 77H ;對應于字符是A
DB 7CH ;對應于字符是b
DB 39H ;對應于字符是c
DB 5EH ;對應于字符是d
DB 79H ;對應于字符是E
DB 71H ;對應于字符是F
在這種掃描電路中,由于每個LED數碼管的發光縮短到原來的1/N,所以每個管子的發光亮度必須為單獨工作時的N倍,其通過的電流也要增加N倍,因此,必須使用驅動器。