设为首页
加入收藏
联系站长
首页 | 文章中心 | 下载中心 | 本站商品 | 学习资料 | 
您现在的位置: 电子爱好者 >> 文章中心 >> 单片机实战 >> 正文 用户登录 新用户注册
[组图]I/O并行口直接驱动LED显示        【字体:
I/O并行口直接驱动LED显示
作者:未知    文章来源:转贴    点击数:    更新时间:2005-3-27

1. 实验任务

如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的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

“0”

3FH

 

“8”

7FH

 

“1”

06H

 

“9”

6FH

 

“2”

5BH

 

“A”

77H

 

“3”

4FH

 

“b”

7CH

 

“4”

66H

 

“C”

39H

 

“5”

6DH

 

“d”

5EH

 

“6”

7DH

 

“E”

79H

 

“7”

07H

 

“F”

71H

 

(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 <AT89X51.H>
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();
}
}
}

文章录入:admin    责任编辑:admin 
  • 上一篇文章: 单片机发声报警产生器

  • 下一篇文章: 单片机按键识别方法之一
  • 发表评论】【告诉好友】【打印此文】【关闭窗口
       最新热点    最新推荐    相关文章
  • DS18B20数字温度计使用

  • 带有存储器功能的数字温度计…

  • 4×4键盘及8位数码管显示构成…

  • 单片机用于电子密码锁设计

  • 动手制作6位数显频率计数器

  • 高精度四位数数字温度计

  • 如何实现两点间温度控制

  • 用单片机制作一个数字电压表

  • ADC0809A-D转换器的应用

  • 点阵式LED简单图形显示驱动

  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)  
    {$PopAnnouceWindow(400,440)}