张玲玲
摘 要 流水灯也叫跑马灯,它在很多场合都有应用,本文以AT89S51为控制芯片,用C51的库函数进行移位操作,实现LED灯以流水方式点亮。文章先介绍硬件电路设计,接着介绍了C51库函数,以及采用库函数方式实现流水灯的程序设计,经试验验证, 该设计是正确的、合理的。
关键词 AT89S51;流水灯;电路设计;库函数;程序设计
引言
流水灯,它在很多场合都有用到, 如滚动字幕、广告灯箱、信号指示、工业现场等形式多样。本项目以单片机为控制芯片,采用C51的库函数进行移位操作,实现LED灯以流水方式点亮。
1设计要求
利用单片机控制8个LED发光二极管亮点左流动(所谓亮点左流动是指8个LED只有一个亮,其它7个都不亮,并且8个LED从右向左轮流亮,循环不断)
2电路设计
电路如图所示,包括有:时钟电路、复位电路、跑马灯电路,下面我们具体来介绍下这些电路。
简易秒表电路的设计
2.1 单片机及输出端口的选择
单片机芯片选择AT89S51,采用P2口作为输出端口,控制8只发光二极管。P2口有8个引脚,每个引脚控制一个发光二极管,当引脚为低电平点亮发光二极管,当引脚为高电平,熄灭对应发光二极管。
2.2 时钟电路的设计
单片机是按照时序信号,一步一步完成相关工作。单片机系统正常工作,必须给单片机系统提供稳定的时序脉冲信号,本设计中采用2个30UF的瓷片电容C1、C2和一个12MHZ的晶振,组成系统的时钟电路向AT89S51提供时钟脉冲。
2.3 复位电路的设计
图中电解电容C3与电阻R8构成了单片机的复位电路。这是一个上电复位电路,当系统上电复位电路会给单片机的RST引脚輸入2个机器周期以上的高电平,单片机内部就执行复位操作, 复位电路很重要,如果复位电路出现故障,CPU也将无法工作[1]。
3采用库函数实现流水灯的程序设计
3.1 库函数
C51语言程序设计中,将经常用到的一些计算或操作编成通用的函数,可以随时调用。函数有库函数和自定义函数两类。C51的库函数由C51的编译器提供,每个库函数的原型放在头文件中。Keil C51编译器提供了100多个标准库函数。本设计中采用C51提供的循环左移函数:_crol_(P2,1),该函数的作用是将P2的值循环左移1位,将P2口的高位移出去的部分补到低位去。
因为_crol_()函数在intrins.h这个头文件当中,所有使用该库函数时,必须在源程序的开始,使用预处理命令#include intrins.h将该头文件包含进去。
3.2 程序清单
#include
#include
void delay(unsigned int i)
{
while(i--);
}
void main()
{
P2=0xfe;
while(1)
{
P2=_crol_(P2,1);
//调用内部函数_crol_,将P2的二进制数值左移一位
delay(20000);
}
}
4结束语
文中介绍了一款以AT89S51单片机为控制芯片,采用C51的库函数进行移位操作的跑马灯的设计,文章对系统的电路设计、库函数、软件设计做了详细介绍。经试验验证, 该设计具有硬件结构简单、扩展性强、驱动能力强等特点,具有较高的应用价值。
参考文献
[1] 陆璐.基于单片机的LED跑马灯设计[J].电子制作,2018,(9):83-84,63.