0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于51单片机的花样流水灯设计

王子变青蛙_35400519 来源:王子变青蛙_35400519 作者:王子变青蛙_35400 2022-06-28 10:29 次阅读

一、前言

二、模块介绍及原理说明

三、硬件连接

四、程序说明

五、效果演示

六、代码链接


一、前言

花样流水灯就是让LED灯按照一定规律进行各种变化,流水灯在生活中也随处可见,例如在建筑物的棱角上装上流水灯,可以起到变换闪烁达到美不胜收的效果。此设计使用16个LED灯,有四种花样,循环往复显示,每隔15S左右的时间进行一次花样变换。也可手动切换花样。单片机系统装有按键复位电路可直接复位电路。

二、模块介绍及原理说明

单片机最小系统:

单片机最小系统完成系统运行的最基本电路,单片机最小系统可配合其他模块或自行搭建电路完成各种实验功能,单片机最小系统接口设计灵活,电路简洁,可完成基本的驱动任务。单片机最小系统包括晶振电路、复位电路。复位电路我使用按键复位,方便系统的重启。

三、硬件连接

本设计使用P0、P2控制LED灯由于LED灯所需电量少,所以不需要加驱动就可以完成显示。P3^0为按键控制端口,用于控制花样灯的切换。

仿真连接

实物连接

四、程序说明

主程序,用以调用不同的函数。

main()
{
  Timer0Init();  //定时器0初始化
  P2=0x00;//端口初始化
  P0=0x00;
 while(1)
      {
         key();	
				
		 	  if(num==0)
			   {
				   P2=0x00;
                   P0=0x00;
				 }
	       else if(num==1)
		           	num1();//花样一
		     else if(num==2)         
		           	num2();	//花样二            
		     else if(num==3)
		           	num3();
		     else if(num==4) 
		         	  num4();     
      }
}

定时器函数,用来控制不同花样切换的时间,更加准确,此设计控制每种花样的显示时间为15S,可根据喜好自己调节。

void Timer0() interrupt 1
{
	TH0=(65536-6000)/256;	//给定时器赋初值,定时10ms
	TL0=(65536-6000)%256;
	ssec++;
	if(ssec>=100)       	  //毫秒	  时钟
	  {
		ssec=0;
		sec++; 
		if(sec>=15)			  //秒
		{
			sec=0;
			num++;
		}
		if(num==5)
			num=1;
	  } 
}	

花样表格函数,将各种花样流水灯分开放入表格中,在主函数中进行调用。通过查表的方式显示各种花样,实用性更强,在花样较多时也方便进行管理。花样相对简单,可自己进行编写。

unsigned char code seg1[]={
	            0x7f,0xbf,0xdf,0xef,
						  0xf7,0xfb,0xfd,0xfe,
						  0xff,0xff,0x00,0x00,
						  0x55,0x55,0xaa,0xaa
						  };   //第一种

unsigned char code seg2[]={0x01,0x03,0x07,0x0f,
						  0x1f,0x3f,0x7f,0xff,
						  0xff,0xff,0xff,0xff,
						  0xff,0xff,0xff,0xff
						  };
unsigned char code seg3[]={0x00,0x00,0x00,0x00,
						  0x00,0x00,0x00,0x00,
						  0x80,0xc0,0xe0,0xf0,
						  0xf8,0xfc,0xfe,0xff,
						  };	//第二种


unsigned char code seg4[]={0x01,0x03,0x07,0x0f,
						  0x1f,0x3f,0x7f,0xff,
						  0xff,0x7f,0x3f,0x1f,
						  0x0f,0x07,0x03,0x01
						  };
unsigned char code seg5[]={
	            0x01,0x03,0x07,0x0f,
						  0x1f,0x3f,0x7f,0xff,
						  0xff,0x7f,0x3f,0x1f,
						  0x0f,0x07,0x03,0x01
						  }; //第三种
unsigned char code seg6[]={
        0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
        0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,
				0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
				0x81,0x82,0x84,0x88,0x90,0xa0,0xc0,
				0xc1,0xc2,0xc4,0xc8,0xd0,0xe0,
				0xe1,0xe2,0xe4,0xe8,0xf0,
				0xf1,0xf2,0xf4,0xf8,
				0xf9,0xfa,0xfc,
				0xfd,0xfe,
				0xff

						  };
unsigned char code seg7[]={
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,
				0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0x41,0x21,0x11,0x09,0x05,0x03,
				0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x83,0x43,0x23,0x13,0x0b,0x07,
				0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x87,0x47,0x27,0x17,0x0f,
				0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x8f,0x4f,0x2f,0x1f,
				0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x9f,0x5f,0x3f,
				0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xbf,0x7f,
				0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0x7f,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,0xff,
				0xff,0xff,0xff,
				0xff,0xff,
				0xff,
						  }; //第四种

按键函数,可以通过按键进行LED灯花样的切换,按键函数中需要加入消抖函数,以防止按键误触。

void key()
{
	    if(key1==0)  //按键控制
	       {
	 	         delay(10);
		         if(key1==0)
		         {
		            num++;
		            if(num==5) num=0;
		         }
			       while(!key1);	 //检测按键是否松开
	       }
    	
}

五、效果演示

仿真演示https://live.csdn.net/v/219964

实物演示https://live.csdn.net/v/219965

六、代码链接

欢迎留言评论分享自己的看法,如有错误欢迎指正。关注公众号:“小小创客”回复“花样流水灯“获得源码及仿真。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22416

    浏览量

    645762
  • 单片机
    +关注

    关注

    5997

    文章

    43947

    浏览量

    620523
  • 51单片机
    +关注

    关注

    269

    文章

    5648

    浏览量

    120636
  • 流水灯
    +关注

    关注

    21

    文章

    432

    浏览量

    59086
收藏 人收藏

    评论

    相关推荐

    51单片机流水灯制作

    流水灯是学习51单片机的一个基本项目,是我们对单片机IO口输出认识的基本项目。当然学会了花样流水灯
    的头像 发表于 02-26 10:06 413次阅读
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>流水灯</b>制作

    分享花样流水灯源程序

    电子发烧友网站提供《分享花样流水灯源程序.doc》资料免费下载
    发表于 11-18 09:59 3次下载
    分享<b class='flag-5'>花样</b><b class='flag-5'>流水灯</b>源程序

    基于单片机流水灯电路设计

    前面一课掌握了嵌入式程序源代码级调试,为复杂单片机实验程序的调试做好了准备工作。本次实验完成流水灯电路模型设计和编程,在实验过程中,学习流水灯电路设计、编写延迟函数、循环移位宏定义。
    的头像 发表于 10-31 14:56 1416次阅读
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>流水灯</b>电路设计

    求分享c语言的51单片机流水灯循环流水程序

    [i][i][i][i] c语言 的51单片机流水灯循环流水程序
    发表于 10-18 06:57

    如何使用51单片机制作一个心形流水灯

    使用 51 单片机制作一个心形流水灯 心形流水灯,顾名思义,成品肯定是一个心形。随着程序的改变,通过单片机控制单个灯的亮灭达到不同的流动图案
    的头像 发表于 09-11 10:27 2411次阅读
    如何使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b>制作一个心形<b class='flag-5'>流水灯</b>

    利用51单片机流水灯和LCD1602实现表白功能

    利用51单片机流水灯和LCD1602实现表白功能。
    的头像 发表于 08-17 09:45 821次阅读

    51单片机的8位按键流水灯设计

    本资源内容概要: 这是基于51单片机的8位按键流水灯设计包含了C语言程序源代码(keil软件打开)。 本资源适合人群: 单片机爱好者、电子类专业学生、电子diy爱好者。 本资源能学到什
    发表于 07-24 14:36 0次下载

    流水灯单片机解决方案,多种灯光效果可变

    的灯光效果是在控制系统的控制按照设定的顺序和时间来发亮和熄灭。通过单片机引脚输出低电平,LED灯导通发亮,单片机引脚输出高电平,LED灯截止熄灭。 流水灯方案工作原理: 流水灯控制原理
    的头像 发表于 07-20 17:45 502次阅读

    基于51单片机设计的花样流水灯设计

    花样流水灯是一种常见的LED灯效果,被广泛应用于舞台表演、节日庆典、晚会演出等场合。
    的头像 发表于 06-11 10:00 2494次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b>设计的<b class='flag-5'>花样</b><b class='flag-5'>流水灯</b>设计

    基于51单片机的查表法实现流水灯例程源代码

    基于51单片机的查表法实现流水灯例程源代码
    发表于 05-17 15:04 4次下载

    基于89C51单片机的24c02存储花样流水灯源程序

    基于89C51单片机的24c02存储花样流水灯源程序
    发表于 05-16 10:43 1次下载

    基于ATmega8单片机流水灯设计Proteus仿真源程序

    基于ATmega8单片机流水灯设计Proteus仿真源程序
    发表于 05-05 09:29 1次下载

    基于AT89C51单片机TIMER0控制流水灯仿真及代码

    基于AT89C51单片机TIMER0控制流水灯仿真及代码
    发表于 05-04 14:31 1次下载

    基于51单片机流水灯设计资料源程序文件

    基于51单片机流水灯设计资料源程序文件
    发表于 04-26 15:23 4次下载

    51单片机LED流水灯多种驱动方式

    展示了51单片机的6种实现流水灯的不同方式,来展现编程的魅力。
    的头像 发表于 04-24 15:29 29.8w次阅读
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>LED<b class='flag-5'>流水灯</b>多种驱动方式