基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计

基于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晶振。

img

4 程序

工程文件使用Keil4/keil5打开

代码

img

部分代码


#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;}elsereturn 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;}elsereturn 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;}elsereturn 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;}elsereturn 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;}}}}}

}

。主程序流程图如下图所示。

img

在整个报警系统工作中,烟雾浓度信息经ADC0832转换处理后,由单片机进行分析处理,判断系统是否启动报警。主程序还包括LED八段式数码管浓度字符显示功能、手动报警功能、报警浓度设定功能,中断子程序等,使报警器功能更加完善,更加方便。

预热后,程序就开始执行初始化子程序,初始化实现的功能是I/O口输入、输出状态设定, 寄存器初始化,中断功能等。首先,设定定时初值为50ms,利用IAP 写入EEPROM,作为取值间隔。然后,设置定时器0,选择方式1。方式1状态下,定时器的工作寄存器TH1、TL1,是全16位参与操作。接下来,定时器0中断的允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警限初值。

5 原理图

原理图由AD绘制,原理图和仿真图有出入,原理图需要电源,电源开关模块。此设计资料详细,硬件手册资料图片详细,不对硬件调试负责,做实物需要一定的基本功。主控芯片可以换为STC89C51/STC89C52

img

如图3.1是本系统的硬件设计方案,具体地,硬件电路由以下模块构成:

(1)单片机最小系统。用于驱动和控制其他模块,以实现整体功能,其以STC89C51单片机为核心芯片,并辅以复位电路和晶振电路。

(2)按键模块。用于实现自动模式与手动模式。

(4)LED排灯模块。心形排列,用以实现多种花样电路;

img

(5)电源模块。用于整个系统的供电。

7 设计报告

7.1 设计背景与意义

霓虹灯是城市的美容师,每当夜幕降临时,华灯初上,五颜六色的霓虹灯就把城市装扮得格外美丽。LED数码灯带采用全新的结构和专有技术,主体由高亮度发光二极管(简称LED)通过特殊的专利结构进行连接,运用特有的光学技术与专有的包覆层设计而形成。主要特性是节能、环保、防震、防水,其最大的特点就是发光均匀,360度通体发光,在工作状态下从外看不到LED的发光点,与传统霓虹灯的发光效果完全相同。因此,利用LED发光二极管设计彩色霓虹灯是一个不错的选择。

本设计采用STC89C51单片机的彩灯控制系统,实现对LED彩灯的控制。根据用户需要可以编写若干种亮灯方式,并实现了手动控制及自动控制,各种亮灯时间的不同,在不同时刻输出灯亮或灯灭的控制信号,驱动各种颜色的灯亮或灭。亮灯方式多,用户可以根据不同场合和时间来调节亮灯频率和亮灯时间。彩灯控制系统得到了广泛应用。

7.2 设计目的

(1)巩固和加深对单片机原理和接口技术知识的理解;

(2)培养根据课题需要选学参考书籍、查阅手册和文献资料的能力;

(3)学会方案论证的比较方法,拓宽知识,初步掌握工程设计的基本方法;

(4)掌握常用仪器、仪表的正确使用方法,学会软、硬件的设计和调试方法;

(5) 能按课程设计的要求编写课程设计报告,能正确反映设计和实验成果,能用计算机绘制电路图、仿真图和流程图。

7.3 本文结构安排

本文围绕着基于51单片机的LED彩灯控制器展开设计,以LED花样灯需求为出发点,首先明确了研究背景与意义,介绍了设计目的,并论述了设计要求及设计内容,接下来的几章将具体展开相关设计与研究:

第二章介绍系统总体方案及相关理论知识,重点阐述了系统功能需求和系统方案论证,接着简要介绍了系统硬件及软件基本知识。

第三章重点展开硬件系统设计,首先明确硬件电路设计的思路及框架。接着依次介绍了:单片机最小系统、按键电路、LED灯电路、电源电路等。通过对以上重点电路的介绍,强化了硬件电路设计的细节和重点。

第四章展开软件系统设计,通过对软件设计进行需求分析,明确软件设计的目的与需求,进一步通过程序流程图展示设计思路及框架。

第五章介绍仿真实现步骤,特别是仿真电路实现的流程和仿真测试,完美实现了设计需求及目标。

第六章总结全文,总结本文所做的工作及贡献,并根据存在的问题展望此课题今后的研究方向。

img

8 资料清单下载链接

见文章视频

img

本资料下载链接

猜你喜欢

转载自blog.csdn.net/Jack_0220/article/details/128586639