当前位置:文档之家› LED点阵式电子广告牌控制

LED点阵式电子广告牌控制

任务7 LED点阵式电子广告牌控制
班级电信111 成绩
姓名同组者
时间2小时指导教师解书凯
1.任务目的
利用单片机控制一块最简单的8x8 LED点阵式电子广告牌,将一些特定的文字或图形以特定的方式显示出来。

2.任务要求
用单片机控制一块8x8 LED点阵式电子广告牌,循环显示的数字为0~9。

3.电路及元器件
用单片机控制一块8x8LED点阵式电子广告牌的硬件电路如图12.1所示。

每一块8x8 LED点阵式电子广告牌有8行8列共l6个引脚,采用单片机的Pl口控制8条行线,P0口控制8条列线。

LED点阵式电子广告牌电路元器件清单
元件名称参数数量元件名称参数数量
Ic插座IC插座单片机晶体振荡器瓷片电容弹性按键
DIP40
DIP20
89S5l
12MHz
30pF
1
1
1
1
2
l
电阻
电阻
电解电容
驱动器
8x8LED
300Q
lOkQ
22 uF
74LS245
8
l
1
1
l
4任务分析
5.程序设计
在8x8 LED点阵上稳定显示一个字符的程序设计思路如下:首先选中8x8 LED的第l行,然后将该行要点亮状态所对应的字型码,送到列控制端口,延时约l ms后,选中下一行,再传送该行对应的显示状态字型码,延时后再选中第3行,重复上述过程,直至8行均显示一遍,时间约为8 ms,即完成一遍扫描显示。

然后再从第1行开始循环扫描显示,利用视觉驻留现象,人们看到的是一个稳定的图形。

多个字符的显示程序则在一个字符显示程序的基础上再外嵌套一个循环即可。

/程序:ex5_3.c
//功能:在8×8LED点阵上循环显示数字0~9
#include "REG51.H"
void delay1ms(); //延时约1ms函数声明
void main()
{
unsigned char code led[]={0x18,0x24,0x24,0x24,0x24,0x24,0x24,0x18, //0
0x00,0x18,0x1c,0x18,0x18,0x18,0x18,0x18, //1
0x00,0x1e,0x30,0x30,0x1c,0x06,0x06,0x3e, //2
0x00,0x1e,0x30,0x30,0x1c,0x30,0x30,0x1e, //3
0x00,0x30,0x38,0x34,0x32,0x3e,0x30,0x30, //4
0x00,0x1e,0x02,0x1e,0x30,0x30,0x30,0x1e, //5
0x00,0x1c,0x06,0x1e,0x36,0x36,0x36,0x1c, //6
0x00,0x3f,0x30,0x18,0x18,0x0c,0x0c,0x0c, //7
0x00,0x1c,0x36,0x36,0x1c,0x36,0x36,0x1c, //8
0x00,0x1c,0x36,0x36,0x36,0x3c,0x30,0x1c};
//9
unsigned char w;
unsigned int i,j,k,m;
while(1) {
for(k=0;k<10;k++) //字符个数控制变量
{
for(m=0;m<400;m++) //每个字符扫描显示400次,控制每个字符显示时间
{
w=0x01;//行变量w指向第一行
j=k*8; //指向数组led的第k个字符第一个显示码下标
for(i=0;i<8;i++)
{
P1=w; //行数据送P1口
P0=led[j]; //列数据送P0口
delay1ms();
w<<=1; //行变量左移指向下一行
j++; //指向数组中下一个显示码
}
}
}
}
}
//函数名:delay1ms
//函数功能:采用软件实现延时约1ms
//形式参数:无
//返回值:无
void delay()
{
unsigned char i;
for(i=0;i<0x10;i++);
}
6.程序运行测试
编译、链接程序,将二进制文档下载到单片机的程序存储器中。

接通电路板电源,即可观察到LED点阵广告牌按照0~9的顺序显示。

7.任务小结
本任务介绍了LED点阵广告牌动态显示的基本原理和应用,训练了单片机并行I/O口和数组应用能力,加深了对动态显示工作原理的理解。

相关主题