“Design of a Heart-shaped LED Neon Light Controller using 51 MCU”
基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计
必看!!视频讲解
基于51单片机的LED彩灯霓虹灯心形流水灯设计
这里写目录标题
1 开发环境
仿真图:proteus8.9以上
程序代码:KEIL4/KEIL5
原理图:AD
设计编号:A0005
2 功能说明介绍
结合实际情况,基于51单片机设计一个LED彩灯控制器设计。该系统应满足的功能要求为:
具体功能:
(1)至少10个发光管4种花样自动变换,循环往复;
(2)彩灯花样变换的快慢节拍可以手动和自动方式控制,手动控制按钮按一次转换一次;
(3)自动控制方式每15秒变换一次,1分钟循环一遍;
(4)系统复位清零开关;操作简单、功能完善、精确度高。
随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。霓虹灯是城市的美容师,每当夜幕降临时,华灯初上,五颜六色的霓虹灯就把城市装扮得格外美丽。LED数码灯带采用全新的结构和专有技术,主体由高亮度发光二极管(简称LED)通过特殊的专利结构进行连接,运用特有的光学技术与专有的包覆层设计而形成。主要特性是节能、环保、防震、防水,其最大的特点就是发光均匀,360度通体发光,在工作状态下从外看不到LED的发光点,与传统霓虹灯的发光效果完全相同。但目前市场上的彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。此外,从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。
3 仿真图
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS16位单片机,片内含4k bytes的可反复擦写的只读程序存储器和128 bytes的随机存取数据存储器,期间采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用16位中央处理器和Flash存储单元,功能强大的AT89C51单片机可灵活应用于各种控制领域。
AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个1 6位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
本系统中央控制器采用的单片机AT89C51,复位电路采用上电复位电路。外接的晶振为12MHz晶振。
4 程序
工程文件使用Keil4/keil5打开
代码
部分代码
#include <reg52.h> //包含头文件
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define SPEED 10 //流水灯的速度
sbit key0 = P2^0; //定义手动控制按键
sbit key1 = P2^1; //定义自动控制按键
uint js = 0,flag_auto=0;//定义计数15秒,自动变花样标志位
uchar Run_mode=0;
/****延时****/
void delay(uint i)
{
uint j=1000;
while(i--)
{
j=1000;
while(j--);
}
}
void delayms(uint z) //毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar LED_WATER1()
{
static uchar temp1=0x01,temp2=0x80;
P1=~temp1;
temp1=_crol_(temp1,1);
P3=~temp2;
temp2=_cror_(temp2,1);
delay(SPEED);
if(temp1==0x01)//循环了一圈
{return 1;}
else
return 0;
}
uchar LED_WATER2()
{
static uchar temp1=0x01,temp2=0x01;
P1=~temp1;
temp1=_crol_(temp1,1);
P3=~temp2;
temp2=_crol_(temp2,1);
delay(SPEED);
if(temp1==0x01)
{return 1;}
else
return 0;
}
uchar LED_WATER3()
{
static uchar temp1=0x07,temp2=0x07;
P1=~temp1;
temp1=_crol_(temp1,1);
P3=~temp2;
temp2=_crol_(temp2,1);
delay(SPEED);
if(temp1==0x07)
{return 1;}
else
return 0;
}
uchar LED_WATER4()
{
static uchar temp1=0x07,temp2=0xe0;
P1=~temp1;
temp1=_crol_(temp1,1);
P3=~temp2;
temp2=_cror_(temp2,1);
delay(SPEED);
if(temp1==0x07)//循环了一圈
{return 1;}
else
return 0;
}
void timer0() interrupt 1 using 1 //定时器0中断服务函数
{
TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872
TL0=(65536-45872)%256;
js++; //叠加20次 是一秒
if(js==300)
{
js=0; //清空
flag_auto=flag_auto+1; //产生15s的倒计时
if(flag_auto>3) flag_auto=1; //限幅,最多4个花样
}
}
//主函数
void main()
{
uchar num=0;
Timer0_init(); //定时器初始化
LED_WATER1();
Run_mode=0;
while(1)
{
if(key1==0) //自动控制按键
{
delayms(3); //去除按键抖动
if(key1==0)
{
while(!key1); //以上表示按下开始按键
flag_auto=0; //清零
TR0=1; //开启定时器
while(1)
{
if(key0==0) //调节到手动模式
{
TR0=0; //关闭定时器
js=0; flag_auto=0;//计数、自动换花样变量清零
break; //跳出
}
switch(flag_auto)//花样自动变化
{
case 0: LED_WATER1(); break;
case 1: LED_WATER2(); break;
case 2: LED_WATER3(); break;
case 3: LED_WATER4(); break;
}
}
}
}
if(key0==0) //手动控制按键
{
delayms(3); //去除按键抖动
if(key0==0)
{
while(1)
{
if(key1==0) //调节到自动模式
{
TR0=0; //关闭定时器
js=0; flag_auto=0;//计数、自动换花样变量清零
break; //跳出
}
if(key0==0) ++flag_auto;//换花样
if(flag_auto>3) flag_auto=1; //限幅,最多4个花样
switch(flag_auto) //花样手动变化
{
case 0: LED_WATER1(); break;
case 1: LED_WATER2(); break;
case 2: LED_WATER3(); break;
case 3: LED_WATER4(); break;
}
}
}
}
}
}
。主程序流程图如下图所示。
在整个报警系统工作中,烟雾浓度信息经ADC0832转换处理后,由单片机进行分析处理,判断系统是否启动报警。主程序还包括LED八段式数码管浓度字符显示功能、手动报警功能、报警浓度设定功能,中断子程序等,使报警器功能更加完善,更加方便。
预热后,程序就开始执行初始化子程序,初始化实现的功能是I/O口输入、输出状态设定, 寄存器初始化,中断功能等。首先,设定定时初值为50ms,利用IAP 写入EEPROM,作为取值间隔。然后,设置定时器0,选择方式1。方式1状态下,定时器的工作寄存器TH1、TL1,是全16位参与操作。接下来,定时器0中断的允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警限初值。
5 原理图
原理图由AD绘制,原理图和仿真图有出入,原理图需要电源,电源开关模块。此设计资料详细,硬件手册资料图片详细,不对硬件调试负责,做实物需要一定的基本功。主控芯片可以换为STC89C51/STC89C52
如图3.1是本系统的硬件设计方案,具体地,硬件电路由以下模块构成:
(1)单片机最小系统。用于驱动和控制其他模块,以实现整体功能,其以STC89C51单片机为核心芯片,并辅以复位电路和晶振电路。
(2)按键模块。用于实现自动模式与手动模式。
(4)LED排灯模块。心形排列,用以实现多种花样电路;
![]() |
(5)电源模块。用于整个系统的供电。
7 设计报告
7.1 设计背景与意义
霓虹灯是城市的美容师,每当夜幕降临时,华灯初上,五颜六色的霓虹灯就把城市装扮得格外美丽。LED数码灯带采用全新的结构和专有技术,主体由高亮度发光二极管(简称LED)通过特殊的专利结构进行连接,运用特有的光学技术与专有的包覆层设计而形成。主要特性是节能、环保、防震、防水,其最大的特点就是发光均匀,360度通体发光,在工作状态下从外看不到LED的发光点,与传统霓虹灯的发光效果完全相同。因此,利用LED发光二极管设计彩色霓虹灯是一个不错的选择。
本设计采用STC89C51单片机的彩灯控制系统,实现对LED彩灯的控制。根据用户需要可以编写若干种亮灯方式,并实现了手动控制及自动控制,各种亮灯时间的不同,在不同时刻输出灯亮或灯灭的控制信号,驱动各种颜色的灯亮或灭。亮灯方式多,用户可以根据不同场合和时间来调节亮灯频率和亮灯时间。彩灯控制系统得到了广泛应用。
7.2 设计目的
(1)巩固和加深对单片机原理和接口技术知识的理解;
(2)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;
(3)学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;
(4)掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;
(5) 能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图、仿真图和流程图。
7.3 本文结构安排
本文围绕着基于51单片机的LED彩灯控制器展开设计,以LED花样灯需求为出发点,首先明确了研究背景与意义,介绍了设计目的,并论述了设计要求及设计内容,接下来的几章将具体展开相关设计与研究:
第二章介绍系统总体方案及相关理论知识,重点阐述了系统功能需求和系统方案论证,接着简要介绍了系统硬件及软件基本知识。
第三章重点展开硬件系统设计,首先明确硬件电路设计的思路及框架。接着依次介绍了:单片机最小系统、按键电路、LED灯电路、电源电路等。通过对以上重点电路的介绍,强化了硬件电路设计的细节和重点。
第四章展开软件系统设计,通过对软件设计进行需求分析,明确软件设计的目的与需求,进一步通过程序流程图展示设计思路及框架。
第五章介绍仿真实现步骤,特别是仿真电路实现的流程和仿真测试,完美实现了设计需求及目标。
第六章总结全文,总结本文所做的工作及贡献,并根据存在的问题展望此课题今后的研究方向。
8 资料清单下载链接
见文章视频