当前位置:文档之家› 基于单片机的节日彩灯设计(六种状态)

基于单片机的节日彩灯设计(六种状态)

《吉林农业大学工程技术学院单片机课程设计(论文)设计(论文)题目基于单片机的节日彩灯设计】姓名:学号:学院:专业:年级:指导教师:$2014年12月20日目录摘要 (1)一、绪论 (2)LED彩灯控制器概述 (2)LED彩灯控制技术状况 (2)本设计任务 (3)二、系统硬件设计 (3)单片机最小系统设计 (3)LED彩灯显示电路设计 (4)按键控制电路设计 (5)整体电路 (6)三、系统的软件设计 (7)按键扫描子程序设计 (8)主程序设计 (8)四、系统调试与测试结果分析 (8)系统调试 (8)测试结果及状态分析 (9)结论 (10)参考文献 (11)附录1 程序 (12)附录2 系统仿真电路图 (16)本设计用单片机89C52结合LED制作一个节日彩灯,它由一块89C52组成,通过逐次扫描其中一块的~口,从而依次实现彩灯轮流顺序点亮、倒序点亮的功能。

关键词LED灯 AT-89C52单片机ABSTRACTThe design with AT-89C52 combined with LEDs to make a holiday lantern, it consists of an AT-89C52. Through successive scan one piece ~ port, which in turn lantern rotation order light, reverse light function.KEY WORDSLED lights AT-89C52彩灯是我国普遍流行的传统的民间的综合性的工艺品。

彩灯艺术也就是灯的综合性的装饰艺术。

新中国成立后,彩灯艺术得到了更大的发展,特别是随着我国科学技术的发展,彩灯艺术更是花样翻新,奇招频出。

而随着人们生活环境的不断改善和美化,在许多节日的气氛里可以看到彩色霓虹灯,这种LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用。

其将电子、建筑、机械、遥控、声学、光导纤维等新技术、新工艺用于彩灯的设计制作,把形、色、光、声、动相结合,思想性、知识性、趣味性、艺术性相统一。

在当今的社会里,彩灯已经成为我们生活的一部分,能给我们带来视觉上的享受还能美化我们的生活。

LED彩灯控制器概述新型LED彩灯系统包括两大部分,即LED彩灯控制器(89C51主控模块)和LED彩灯管(管内LED板模块)。

彩灯控制器是主控模块,具有按键、显示等功能,并利用89C51的P口输出控制信号;彩灯管是受控模块,上面焊有三色LED彩灯和信号驱动芯片,模块置于LED 的透明管内。

该LED彩灯控制器是一种基于AT89C51单片机的彩灯控制器,实现对LED彩灯的控制。

其以AT89C51单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。

如果稍微改动控制电路,就可以改变电路的不同工作状态,控制彩灯变幻出不同的闪烁效果。

LED彩灯控制技术状况彩灯控制电路是由单元模块电路组合而成的,主要以AT89C52单片机为控制中心,并与按键控制电路、时钟电路、复位电路在直流稳压电路的相互作用下进而控制彩灯亮灭的顺序,从而实现多控制、多闪烁方式的LED彩灯循环。

本设计任务运用AT89C52单片机等元件组成LED节日彩灯控制电路:按键控制电路、彩灯显示电路、以及单片机最小系统等模块。

并用Proteus 等软件仿真,做出其电路仿真图。

二、系统硬件设计为使该LED节日彩灯控制系统具有更加好的方便性和灵活性,我们对系统的硬件做了精心设计。

硬件电路包括单片机最小系统、LED 彩灯显示电路、按键控制电路四大模块。

单片机最小系统设计要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成。

单片机最小系统如图1-1所示。

时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。

复位电路:确定单片机工作的起始状态,完成单片机的启动过程。

单片机系统的复位方式有上电自动复位和手动按键复位。

本设计采用手动按键复位,该复位方式同样具有上电自动复位功能。

电路如图1-1所示。

图1-1 单片机最小系统LED彩灯显示电路设计LED彩灯显示电路实际上是由8个发光二极管和8个电阻构成的电路。

发光二极管与电阻对应串联,然后接在与之相对应的P0口上。

通过软件编程对P2口输出高低电平来实现不同的闪烁花型。

由于发光二极管的导通电压一般为以上,另外,他的工作电流根据型号不同一般为1mA到30mA,电阻选择范围100欧姆~3千欧姆在此我们这里选用560欧姆的电阻。

如图1-2所示。

图1-2 LED彩灯显示电路按键控制电路设计按键控制电路是由6个按键开关构成的。

他们分别接在单片机AT89C52的P1接口,—开始,按此键则灯开始流动(由上而下)。

—停止,按此键则停止流动,所有灯为暗。

—上,按此键则灯由上向下流动(一个灯)。

—下,按此键则灯由上向下流动(两个灯)。

—下,按此键则灯由下向上流动(两个灯)。

—下,按此键则灯由下向上流动(一个灯)如图1-3所示。

图1-3 键盘控制电路整体电路图1-4 整体电路三、系统的软件设计单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的LED彩灯系统循环点亮的现象,我们还需要告诉单片机怎么样进行控制,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的明灭。

软件编程是多控制、多闪烁方式的LED彩灯系统中的一个重要的组成部分,是本设计的重点和难点。

下面,我将阐述多控制、多闪烁方式的LED彩灯系统是如何实现8个LED彩灯的循环点亮,来介绍实现流水彩灯控制的软件编程方法。

按键扫描子程序设计本设计是以单片机AT89C52为核心控制8个发光二极管2种闪烁方式的变换。

程序启动时跳转到键盘判断模块程序中,循环检测直到有按键按下的时候,程序转去相对应按键的彩灯显示的花型模块。

主程序设计程序启动时跳转到键盘判断模块程序中,此程序里面包含Key1-Key4的按键情况判断,循环检测直到有按键按下的时候,程序转去相对应按键的彩灯显示的花型模块。

四、系统调试与测试结果分析系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。

由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试,最后将各模块组合后进行整体测试。

硬件调试对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。

软件调试软件调试采用单片机仿真器及微机,将编好的程序进行调试,主要是检查语法错误。

硬件软件联调将调试好的硬件和软件进行联调,主要调试系统的实现功能。

测试结果及状态分析此次系统设计结果较好,经Proteus软件仿真系统的调试,可检测出仿真电路正常;对应按键按下,彩灯出现不同花型,实现了多控制、多闪烁的LED彩灯循环。

经以上仿真测试证实,本设计能实现设计系统要求的预期功能.结论本次课程设计以AT89C52单片机作为主控核心,按键控制电路、彩灯显示电路以及单片机最小系统等模块组成的核心主控制电路,利用软件编程烧录程序到单片机来实现对LED节日彩灯的控制。

通过软硬件的仿真调试,对彩灯控制器的运行成果感觉比较满意,它实现了要求达到的目标,实现了多控制、多闪烁方式的LED节日彩灯循环。

本系统可根据操作提示随意变换想要的闪烁方式和控制彩灯的闪烁频率。

让身处其中的群众有一种酣畅淋漓的感觉。

同时本设计具有电路结构简单、易操作、硬件少、体积小、成本低、低能耗等优点,具有一定的实用和参考价值。

参考文献[1] 马秀娟.电工电子实践教程[M].哈尔滨:哈尔滨工业大学出版社,.[2] 褚南峰.电工技术试验及课程设计[M].北京:中国电力出版社,.[3] 康华光.电子技术基础[M].第五版.北京:高等教育出版社,.[4] 曹立军.单片机原理与应用[M].西安:西安电子科技大学出版社,附录1 程序#include <>#include <>#define uint unsigned int#define uchar unsigned charsbit key1=P1^0; //开始sbit key2=P1^1; //停止sbit key3=P1^2; //由上向下sbit key4=P1^3; //由下向上void delay_ms();void Init();uchar scan();void shang();void xia();bit timerFLAG; //定时器标志uchar n; //定时器计数变量uchar status; //运行状态标志uchar LED=0x7F; //灯的显示缓存/***************************************************/ // 主函数/***************************************************/ void main(){uchar anjian;Init();while(1){anjian=scan();if(anjian==1){status=1;P0=LED;TR0=1; //启动定时器0}else if(anjian==2){status=0;P0=0xFF;TR0=0; //关闭定时器0LED=0x7F;}else if(anjian==3&&status==2)status=1;else if(anjian==4&&status==1)status=2;anjian=0;P2=status;}}/***************************************************/ // 定时器/***************************************************/ void time0() interrupt 1{TH0=(65536-10000)/256;TL0=(65536-10000)%256;if(n++==20){timerFLAG=1;n=0;}if(timerFLAG){if(status==1){xia();}if(status==2){shang();}}}/***************************************************/ // 延时函数/***************************************************/ void delay(uchar i){uchar j;while(i){for(j=0;j<250;j++);}}/***************************************************/ // 初始化/***************************************************/ void Init(void){TMOD=0x11;//设置定时器0为工作方式1TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1; //开总中断ET0=1; //开定时器0中断P0=0xFF;}/***************************************************/ // 按键扫描/***************************************************/ uchar scan(void){uchar ans;// if(P1!=0xF0)// {// delay(4);if(!key1){ans=1;while(!key1);}if(!key2){ans=2;while(!key2);}if(!key3){ans=3;while(!key3);}if(!key4){ans=4;while(!key4);}// }return(ans);}/***************************************************/ // 由下到上闪/***************************************************/ void shang(void){if(timerFLAG){LED=_cror_(LED,1);P0=LED;timerFLAG=0;}}/***************************************************/ // 由上到下闪/***************************************************/ void xia(void){if(timerFLAG){LED=_crol_(LED,1);P0=LED;timerFLAG=0;}}附录2 系统仿真电路图"。

相关主题