0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >LED应用 > 基于51单片机实现LED流水灯控制设计方案

基于51单片机实现LED流水灯控制设计方案

来源: toutiao
2021-12-16
类别:LED应用
eye 189
文章创建人 拍明

原标题:基于51单片机实现LED流水灯控制设计方案

  说明:本文是扫盲教程的进阶,是上一篇点亮LED灯闪烁的升级版,LED流水灯也就是让LED像水流一样流动起来,也是单片机非常重要的一个实验,是前两种控制方式的结合,本文重在夯实基础,如果是大神,请自觉飘过。

  好了,我们继续说回正题,单片机控制LED流水灯,这个其实比上一个点亮LED的实验复杂一点点,硬件上就是多几个LED, 其实他的控制原理并不复杂只要弄明白其中的原理,有好多问题就会融会贯通,下面我们从硬件和软件两个维度来深入剖析一下。希望你看完能有所收获。

  

1.jpg


  硬件方面

  发光二极管:我前面几篇文章都写得很细,这里同样不多赘述了,其实流水灯就是LED按照一定规律和间隔时间来闪烁。

  单片机:单片机的点亮和工作原理,这里同样省略,如果不明白请移步扫盲教程:51单片机控制单个LED灯闪烁 适合新手 下面我要重点和大家说一下控制部分,例如我要用流水方式点亮0到7八个LED灯,方式为从左往右每隔0.5S依次点亮,控制代码的思路如下:首先单片机P0口输出高电平,其他输出低电平,然后计数器开始计时,计时到0.5S后,P1口输出高电平,其他输出低电平(即第二个灯点亮), 依次类推,当第八个灯灭后,又从第一个灯开始亮,周而复始循环下去,这就是流水灯的代码思路,好了了解完以后,下面我们就要实战了。

  电路仿真原理图如下

  

进阶教程:51单片机控制LED流水灯项目 适合新手


  注:本实验为降低难度,没有用计数器而是用延时函数实现。

  下面附上软件参考代码及详细注释

  #include //51系列单片机定义文件

  #define uchar unsigned char //定义无符号字符

  #define uint unsigned int //定义无符号整数

  void delay(uint); //声明延时函数

  void main(void) //主函数

  {uint i;

  uchar temp; //定义两个变量, I,temp

  while(1) //循环语句

  {temp=0x01; //给变量赋出值 ,如果这段看不懂,请自行充电C语言内容

  for(i=0;i<8;i++) //8个流水灯逐个闪动 FOR循环语句

  {P1=~temp;

  delay(100); //调用延时函数,也可以用计数器实现 ,改变此函数的值可以改变流水灯点亮间隔

  temp<<=1; //左移 }

  temp=0x80; //赋值

  for(i=0;i<8;i++) //8个流水灯反向逐个闪动

  { P1=~temp; //给P1赋值

  delay(100); //调用延时函数

  temp>>=1; }

  temp=0xFE; //给TEMP赋值FE

  for(i=0;i<8;i++) //8个流水灯依次全部点亮

  {P1=temp;

  delay(100); //调用延时函数,改变此函数的值可以改变流水灯点亮间隔

  temp<<=1; }

  temp=0x7F; //下面开始反向点亮程序

  for(i=0;i<8;i++) //8个流水灯依次反向全部点亮

  { P1=temp;

  delay(100); //调用延时函数,改变此函数的值可以改变流水灯点亮间隔

  temp>>=1; }

  void delay(uint t) //定义延时函数

  {register uint bt;

  for(;t;t--)

  for(bt=0;bt<255;bt++); }

  下面是我拷入代码后的实验结果,实验成果!为降低难度我去掉了反向点亮的部分代码。

  

进阶教程:51单片机控制LED流水灯项目 适合新手


  好了,看完了以上的文章,我想你应该明白这个实验的软硬件控制原理了吧,其实没有多难,只要理解了原理,然后多动动手就行了 很轻松就会掌握,其实这个实验效果最少有三种方法可以实现,如果你也感兴趣自己动动手用其他代码方式试一下吧!


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯