资讯详情

51单片机IO口直接驱动LED数码管方法

1.实验任务

如图13所示,使用AT89S51单片机的P0端口的P0.0-P0.77连接到共阴数码管a-h在笔段上,数字管的公共端接地。0-9数字在数字管上循环显示,时间间隔为0.2秒。

2.电路原理图

82daf085d6b4727e1f9036f1c1547ca9.png

图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();

}

}

}

标签: 二三极管r1g

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台