1.实验任务
如图13所示,使用AT89S51单片机的P0端口的P0.0-P0.77连接到共阴数码管a-h在笔段上,数字管的公共端接地。0-9数字在数字管上循环显示,时间间隔为0.2秒。
2.电路原理图
图4.7.1
3.系统板上的硬件连接
单片机系统区域P0.0/AD0-P0.7/AD7端口用8芯线连接到四路静态数字显示模块区域的任何数字管a-h端口;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。
4.程序设计内容
(1).LED数字显示原理
七段LED显示器由七条发光二极管和一个小圆点发光二极管组成。根据每根管道的接线形式,可分为共阴极和共阳极。 LED数码管的g~a七个发光二极管因加正电压而发光,因加零电压而不发光。不同的明暗组合可以形成不同的字形。这种组合称为字形码。以下是阴极的字形码见表2
(2).由于显示的数字0-9的字形码没有规则可循,我们只能通过检查表满足我们的要求。这样,我们就可以按照0-9的顺序排列每个数字的笔段代码!建立的表格如下:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
5.程序框图
图4.7.2
6.汇编源程序
ORG 0
START: MOV R1,#00H
NEXT: MOV A,R1
MOV DPTR,#TABLE
MOVC A,@A DPTR
MOV P0,A
LCALL DELAY
INC R1
CJNE R1,#10,NEXT
LJMP START
DELAY: MOV R5,#20
D2: MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
DJNZ R5,D2
RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
7.C语言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char dispcount;
void delay02s(void)
{
unsigned char i,j,k;
for(i=20;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
void main(void)
{
while(1)
{
for(dispcount=0;dispcount<10;dispcount )
{
P0=table[dispcount];
delay02s();
}
}
}