数码管的动态扫描是基于人眼的视觉暂留现象来工作的,在这种显示方式中,每一位数码管是分时选通的,在任何一个时间里,只显示一个数码管。用单片机控制时,只需要一组数据总线和一组扫描信号,所有的数码管都共用一组数据总线,扫描信号用来控制数码管的选通,这样可以有效地节约单片机I/O口资源。
下面是以动态扫描的方式让数码管显示love you的实例:单片机使用89S52,数码管使用了自制多功能数码管显示实验板一文中自制的实验板(共阳组),让单片机的P0口作为数据输出,P2口作为扫描信号输出,所以P0口与实验板中的J1相连,P2口与实验板中的J2相连。

实现显示love you的源程序如下:
/************************************************************/
/*名称:数码管的动态扫描显示实验
/*功能:8位数码管显示loveyou,P0口输出字形码、P2口输出扫描信号
/*编写:JiangX.net
/*时间:2008年6月19日
/************************************************************/
ORG 0000H
START: MOV P2,#0 ;清空P2口
MOV P0,#0C7H ;让P0口输出字形L的编码
MOV A,#0FEH
MOV P2,A ;选通第一位数码管
ACALL DELAY1 /*显示L*/
MOV P2,#0
MOV P0,#0C0H
MOV A,#0FDH
MOV P2,A
ACALL DELAY1 /*显示O*/
MOV P2,#0
MOV P0,#0C1H
MOV A,#0FBH
MOV P2,A
ACALL DELAY1 /*显示V*/
MOV P2,#0
MOV P0,#086H
MOV A,#0F7H
MOV P2,A
ACALL DELAY1 /*显示E*/
MOV P2,#0
MOV P0,#091H
MOV A,#0DFH
MOV P2,A
ACALL DELAY1 /*显示Y*/
MOV P2,#0
MOV P0,#0C0H
MOV A,#0BFH
MOV P2,A
ACALL DELAY1 /*显示O*/
MOV P2,#0
MOV P0,#0C1H
MOV A,#07FH
MOV P2,A
ACALL DELAY1 /*显示U*/
LJMP START ;跳回START处执行,死循环
DELAY1: ;延时子程序
MOV R7,#5
D1: MOV R6,#200
DJNZ R6,$
DJNZ R7,D1
RET
END
原创文章如转载,请注明:转载自萬用電路板 [ http://www.jiangx.net/ ]