说明:P1.0-P1.4分别对应5行,P2.0-P2.6分别对应7列,采用共阳接线
ORG 00H
START:NOP
MOV DPTR #0200H //显示码存放区的起始地址
MOV R2,#05H //因为有5行要轮流扫描
MOV R0,#01H //R0用来确定扫描哪一行,01H使第一行被选通
MOV R1,#00H //作为DPTR的偏移地址
LOOP:MOV A,R0
MOV P1,A
MOV A,R1
MOVC A,@DPTR+A
MOV P2,A
ACALL DELAY //调用延时子程序,以便使亮度稳定
INC R1 //将偏移地址加1
MOV A,R0
RL A //行选通位变化(依次选通)
MOV R0,A
MOV P2,#00H //此句很重要,如果不执行此指令,则将会使显示屏有重叠数据显示的现象,因此每当显示完一行
//再显示下一行数据的时候,先把前一行的LED关掉,否则某些不该亮的LED会有微亮的错误动作现象
DJNZ R2,LOOP //R2作为扫描次数,R2==0,则向下执行,表明5行已经全扫描完了,再重头来
//R2!=0,则跳转,表明第一轮5行还未扫描完
AJMP START
DELAY:MOV R7,#0FFH
DEL1:DJNZ R7,DEL1
RET
ORG 200H
DB 3EH,41H,41H,41H,3EH
END