600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于51单片机的51单片机的LED彩灯霓虹灯控制器(心形流水灯)设计

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

时间:2019-09-22 23:17:46

相关推荐

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

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

必看!!视频讲解

基于51单片机的LED彩灯霓虹灯心形流水灯设计

这里写目录标题

1 开发环境2 功能说明介绍3 仿真图4 程序5 原理图7 设计报告7.1 设计背景与意义7.2 设计目的7.3 本文结构安排 8 资料清单下载链接

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 资料清单下载链接

见文章视频

本资料下载链接

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。