基于单片机的节日彩灯控制器.docx
《基于单片机的节日彩灯控制器.docx》由会员分享,可在线阅读,更多相关《基于单片机的节日彩灯控制器.docx(16页珍藏版)》请在冰豆网上搜索。
基于单片机的节日彩灯控制器
文理学院理工学院
课程单片机课程设计
题目节日彩灯控制器设计
专业通信工程
学号
学号
学号
2015.6
一、任务
以单片机为核心,设计一个节日彩灯控制器。
二、设计要求
以单片机为核心,设计一个节日彩灯控制器,要求有四个控制按键:
●K1—开始,按此键则灯开始流动(两翼展开)。
●K2—停止,按此键则停止流动,所有灯为暗。
●K3—上,按此键则灯由上向下流动。
●K4—下,按此键则灯由下向上流动。
第1章绪论
彩灯是我国普遍流行的传统的民间的综合性的工艺品。
彩灯艺术也就是灯的综合性的装饰艺术。
新中国成立后,彩灯艺术得到了更大的发展,特别是随着我国科学技术的发展,彩灯艺术更是花样翻新,奇招频出。
而随着人们生活环境的不断改善和美化,在许多节日的气氛里可以看到彩色霓虹灯,这种LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用。
其将电子、建筑、机械、遥控、声学、光导纤维等新技术、新工艺用于彩灯的设计制作,把形、色、光、声、动相结合,思想性、知识性、趣味性、艺术性相统一。
在当今的社会里,彩灯已经成为我们生活的一部分,能给我们带来视觉上的享受还能美化我们的生活。
1LED彩灯控制器概述
新型LED彩灯系统包括两大部分,即LED彩灯控制器(89C51主控模块)和LED彩灯管(管LED板模块)。
彩灯控制器是主控模块,具有按键、显示等功能,并利用89C51的P口输出控制信号;彩灯管是受控模块,上面焊有三色LED彩灯和信号驱动芯片,模块置于LED的透明管。
该LED彩灯控制器是一种基于STC89C51单片机的彩灯控制器,实现对LED彩灯的控制。
其以STC89C51单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。
如果稍微改动控制电路,就可以改变电路的不同工作状态,控制彩灯变幻出不同的闪烁效果。
2LED彩灯控制技术状况
彩灯控制电路是由单元模块电路组合而成的,主要以STC89C51单片机为控制中心,并与按键控制电路、时钟电路、复位电路在直流稳压电路的相互作用下进而控制彩灯亮灭的顺序,从而实现多控制、多闪烁方式的LED彩灯循环。
3本设计任务
运用STC89C51单片机、发光二极管、电阻、电容、按键等元件组成LED节日彩灯控制电路中的按键控制电路、彩灯显示电路以及单片机最小系统等模块。
并用Proteus等软件仿真,做出其电路仿真图。
第2章总体方案设计与论证
通过查阅大量相关技术资料,并结合自己的实际知识,我主要提出了两种技术方案来实现系统功能。
下面我将首先对这两种方案的组成框图和实现原理分别进行说明,并分析比较它们的特点,然后阐述我最终选择方案的原因。
1方案比较
彩灯控制器大致可分为两种方案实现。
一种是利用数字逻辑电路装置控制,另一种是采用单片机控制。
1.1方案一
根据设计任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡电路、计数/时序分配电路、移位位寄存器和彩灯显示五部分组成。
其框图如图2-1所示。
图2-1方案一的原理框图
1.2方案二
本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求。
其硬件构成框图如图2-2所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和5V直流电源组成。
图2-2方案二的原理框图
方案二:
此设计方案中单片机的P1口接4路按键控制电路,实现彩灯花型的切换功能;单片机上的P2口接8路LED发光二极管组成彩灯电路,显示彩灯循环情况。
2方案论证
如果采用方案一,利用数字逻辑电路装置控制,其电路不是很复杂,制作相对较容易点,成本也相对较低,但可调性差,亮灯模式少而且样式单调,达不到设计任务要求或实现困难。
而采用方案二,以单片机控制其优点是电路集成度高,工作原理简单,清晰明了,自定义编程,控制的图案花样多,移植性好等。
3方案选择
综上,显然方案二各方面优越于方案一,以及为了体现专业优势,本次设计采用第二种方案。
第3章系统硬件设计
为使该LED节日彩灯控制系统具有更加好的方便性和灵活性,我们对系统的硬件做了精心设计。
硬件电路包括直流电源电路、单片机最小系统、LED彩灯显示电路、按键控制电路等四大模块。
STC89C51单片机的工作电压围:
4.0V—5.5V,所以通常给单片机外接5V直流电源。
由于时间关系,此处用3节1.5V的干电池供电。
1单片机最小系统设计
要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成。
单片机最小系统如图3-2所示。
时钟电路:
本系统采用单片机部方式产生时钟信号,用于外接一个12MHz石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入部的时钟电路。
复位电路:
确定单片机工作的起始状态,完成单片机的启动过程。
单片机系统的复位方式有上电自动复位和手动按键复位。
本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。
电路如图3-2所示。
图3-2单片机最小系统
2LED彩灯显示电路设计
LED彩灯显示电路实际上是由8个发光二极管和8个电阻构成的电路。
发光二极管与电阻对应串联,然后接在与之相对应的P2口上。
通过软件编程对P2口输出高低电平来实现不同的闪烁花型。
由于发光二极管的导通电压一般为1.7V以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择围100欧姆~3千欧姆在此我们这里选用330欧姆的电阻。
如图3-3所示。
图3-3LED彩灯显示电路
3按键控制电路设计
按键控制电路是由4个按键开关构成的。
他们分别接在单片机AT89C51的P1接口Key1—Key4接在P1.6—P1.4,为了一对一的控制LED灯的闪烁方式。
当按下开关Key1时,LED彩灯系统闪烁第一种彩灯花型。
当按下开关Key2时,LED灯系统闪烁第二种闪烁方式,以此类推。
如图3-4所示。
图3-4键盘控制电路
第4章系统的软件设计
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的LED彩灯系统循环点亮的现象,我们还需要告诉单片机怎么样进行控制,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的明灭。
软件编程是多控制、多闪烁方式的LED彩灯系统中的一个重要的组成部分,是本设计的重点和难点。
下面,我将阐述多控制、多闪烁方式的LED彩灯系统是如何实现8个LED彩灯的循环点亮,来介绍实现流水彩灯控制的软件编程方法。
1主程序设计
程序启动时跳转到键盘判断模块程序中,此程序里面包含Key1-Key4的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应按键的彩灯显示的花型模块,
图4主程序流程图
第5章系统调试与测试结果分析
5.1使用的调试工具及调试环境
1调试工具
本设计调试工具采用电脑、单片机仿真以及5V直流稳压电源。
2调试环境
地点:
寝室
室温:
30℃
2系统调试
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试,最后将各模块组合后进行整体测试。
1硬件调试
对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。
通过kill软件烧录下载到硬件中验证功能。
2软件调试
软件调试采用单片机仿真器及微机,将编好的程序进行调试,主要是检查语法错误。
3硬件软件联调
将调试好的硬件和软件进行联调,主要调试系统的实现功能。
3测试结果及状态分析
此次系统设计结果较好,经Proteus软件仿真系统的调试,可检测出仿真电路正常;对应按键按下,彩灯出现不同花型,实现了多控制、多闪烁的LED彩灯循环;经以上仿真测试证实,本设计能实现设计系统要求的预期功能。
结论
本次课程设计以STC89C51单片机作为主控核心,按键控制电路、彩灯显示电路以及单片机最小系统等模块组成的核心主控制电路,利用软件编程烧录程序到单片机来实现对LED节日彩灯的控制。
通过软硬件的仿真调试,对彩灯控制器的运行成果感觉比较满意,它实现了我们要求达到的目标,实现了多控制、多闪烁方式的LED节日彩灯循环,并且用快慢两种节拍实现花型交换。
本系统亮灯模式多,可根据操作提示随意变换想要的闪烁方式。
同时本设计具有电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,具有一定的实用和参考价值。
但是在设计中也出现了一些问题:
Proteus仿真软件不是很稳定,造成仿真页面奔溃,另外硬件调试程序时出现了延时问题等。
这种都是以后的工作当中需要注意并解决的问题。
参考文献
[1]宏.电子工艺实习,华南理工大学,2011.
[2]邓奕.电子线路CAD实用教程,华中科技大学,2013
[3]康华光.电子技术基础.高等教育,2006.
[4]手把手教你学51单片机C语言版,宋雪松,清华大学。
2010
[5]C语言程序设计,谭浩强,清华大学,2010
附录1程序
#include
#defineuncharunsignedchar
#defineunitunsignedint
#defineledP2
sbitbutton1=P1^4;
sbitbutton2=P1^5;
sbitbutton3=P1^6;
sbitbutton4=P1^7;
voiddelaytime()
{
unsignedinti=7000,j=7000;
while(i--);
while(j--);
}
voidmain()
{
unchari,j;
uncharled1,led2;
led=0x00;
while
(1)
{
if(button1==0){while(button1==0);j=1;}
if(button2==0){while(button2==0);j=2;}
if(button3==0){while(button3==0);j=3;}
if(button4==0){while(button4==0);j=4;}
switch(j)
{
case0x01:
led=0x01;
for(i=0;i<8;i++)
{
delaytime();
led=led<<1;
}
break;
case0x02:
led=0x80;
for(i=0;i<8;i++)
{
delaytime();
led=led>>1;
}
break;
case0x03:
delaytime();led=0xff;break;
case0x04:
led=0x19;
led1=led&0x11;
led2=led&0x12;
for(i=0;i<4;i++)
{
delaytime();
led1=led1>>1;
led2=led2<<1;
led=led1|led2;
}
break;
}
}
}
附录2硬件电路板
附录3功能实现图
附录4系统仿真电路图