艺术彩灯的设计 毕业设计 毕业论文及文献综述.docx
《艺术彩灯的设计 毕业设计 毕业论文及文献综述.docx》由会员分享,可在线阅读,更多相关《艺术彩灯的设计 毕业设计 毕业论文及文献综述.docx(30页珍藏版)》请在冰豆网上搜索。
艺术彩灯的设计毕业设计毕业论文及文献综述
东华理工大学长江学院
毕业设计(论文)
题目艺术彩灯的设计
英文题目TheDesignofArtisticIllumination
学生姓名万绍华
学号04314117
指导教师高浪琴职称教授
专业电子信息工程
二零08年6月8日
摘要
此次课题在彩灯设计方面采用的是基本的三基色原理,来调试出7种不同的颜色.在控制时间方面采用的是PWM调制技术,通过CNT1和CNT2的相互比较来控制彩灯的颜色变化以及变化的时间长短.单片机EM78P153也对此次设计起来很关键的作用,通过了解它的引脚及其功能,才能连接硬件电路,才能实现软件方面的运行.此次研究工作的目的是为拉更好的掌握单片机方面的知识以及汇编程序方面的应用。
此次设计能实现3只普通LED灯泡调配出7种颜色按照所规定的时间发生变化。
主要应用的材料为:
导线若干,二极管,三极管若干,符合型号的电阻几个.几个电源,EM78P153单片机一个
关键字:
EM78P153,PWM调制技术,中断程序,CNT1,CNT2,三基色原理
ABSTRACT
Thistaskhasadoptedtheprincipleofthreebasiccolorsintermsofthedesignconcoctingsevendifferentcolors,whileintheregardofcontrolingithasmadeuseofthePWMconcoctingtechnique,thatis,throughthecomparisonbetweenCNT1andCNT2,itwillcontrolthevariationofcolorandthelengthofthetime.Besides,themonolithicdevice
EM78P153alsohasplayedacrucialroleduringthistaskwhichisthecenterofdesigningthehardwareandsoftware.
Themajormaterialsarethatseveralwires,diodes,transistors,batteriesandresistanceswhichisaccordoncewithrequirements,andamondithicdeviceEM78P153aswell.
Keywords:
EM78P154,PWMconcoctingtechnologl.CuttingofProgramme,thepricipleofthreebasiccolors
总结..............................................................................................25
致谢…………………………………………………………………26
参考文献……………………………………………………………27
绪论
彩灯文化是中华民族百花园中的一朵绚丽奇葩,观灯、赏灯已是民间百姓雅俗共赏,休闲娱乐的重要的传统习俗和文化活动。
中国彩灯,饮誉古今,久负盛名。
荟萃了中国灯文化的风采,将美轮美奂的彩灯工艺贡献给了人类。
自唐朝以来便有了新年燃烛的习俗,延至清代既有“狮灯灯市”、“灯杆节”,到二十世纪初,又形成了具有节日题材的灯会,更有放天灯、舞龙灯、|戏狮灯、闹花灯等活动。
新中国成立以后,彩灯文化得到了很大的发展,在继承传统制灯工艺的审美情趣的基础上,引进了光电技术,吸取了其他艺术门类的营养。
集声、光、色、动、形为一体;融观赏性、趣味性、知识性于一炉,并走出了一条以文促贸、文贸结合的路子,得到了党中央和国家领导人的关怀、支持和肯定。
新时代的灯会以文化品位高、灯彩精品多、艺术特色鲜明、灯会场面宏阔著称。
每晚华灯齐放,满目灯海流光、珠楼琼阁、火树银花、更有龙游凤舞,鸟转莺啼,礼花怒放,长虹卧波;达到灯景交融,辉丽迷离,观者如潮,游人如织的效应
彩灯的艺术魅力在于它对中华民族传统文化精髓的继承、发展与符合时代要求的统一,这也是彩灯艺术发展的基本要素。
据史籍记载,早在汉武帝时期,为了祭祀天神,民间就开始有在正月十五元宵夜燃灯的习俗,以后逐渐演变发展成为元宵灯节、灯会,成为不少地方春节期间主要的民俗活动和盛会。
随着生活质量的逐步提高,人们开始追求更高层次的美感与精神享受,彩灯艺术为人们提供了符合时代要求的精神产品。
现代材料、科技手段与传统的彩灯艺术的结合,融声、光、色、形、动于一体,形成地上、水上、山上、空中的立体特色,使彩灯摆脱了原先单一、静止的模式。
现代彩灯集知识性、趣味性、娱乐性和参与性为一体,形成综合性的艺术表现形式,焕发出时代的气息,是传统工艺与现代科学技术完美结合的产物。
这也是我们设计艺术彩灯的目的,设计好的艺灯彩灯不仅能给我们带来美的享受,而且还能让我们对于所学的知识有一个更好的掌握。
彩灯可以通过定时或随用户要求来变换不同的色彩。
传统的彩灯一般只有3种颜色,分别对应3种颜色的灯泡,当需要其中某种颜色的时候,点亮该颜色的灯泡,熄灭其他颜色的灯泡;先进的彩灯利用三基色原理做简单的混合,其控制系统只是几个开关或按钮。
本次设计采用三基色原理,利用3个独立的单色LED灯泡进行组合搭配,使单个彩灯拥有7种不同的颜色。
1彩灯原理与设计方案
系统根据三基色原理,以红,绿,蓝3种基本颜色组成一个可变单元,将红绿蓝3种基色LED灯泡放在玻璃灯罩内,3种基色混合后,对外可以呈现7种颜色。
系统还利用单片机I/O口的PWM调制来调节LED亮度。
1.1彩灯实现的原理
三基色原理的基本公式[1]:
红色+绿色+蓝色=白色
红色+蓝色=紫色
蓝色+绿色=青色
绿色+红色=黄色
另外还可以根据3个LED灯泡发光颜色的强弱来呈现紫红,蓝紫,蓝绿,绿蓝,黄绿,橙色。
但,只要求7种颜色的变化,所以强弱关系的颜色,只当参考。
1.2色彩转换的分析[2]
系统利用单片机控制连接红,绿,蓝3个LED的I/O口,使其产生不同的波形,即可以等到7种颜色。
通过接口电路在单片机I/O口连接好基色LED,I/O口输出PWM波形控制LED灯光的亮度,其波形如图:
图1-1颜色变化原理图
1.3系统框架设计
本设计采用单片机来定时控制和彩灯色彩变换控制。
由于单片机是弱电系统,它只能给出控制使能信号,而后动作则由具体电路来实现。
本次实验采用EM78P153单片机来实现,其具体功能描述如下[3]:
(1):
系统利用单片机内部的计数/计时器来实现计时,完成灯泡色彩的变换。
(2):
利用单片机来产生PWM波形,实现交流控制。
(3):
响应并保存用户的自行设置。
图1-2系统电路框架图
1.4.PWM技术的应用及实现
PWM调制是实现系统功能的关键之一,采用2个计数器通过比较它们的状态来调节基色LED的亮度。
记为:
CNT1和CNT2。
CNT1快速地向上计数,记到256后又从0开始计数;CNT2则每10ms向上计数一次。
如果CNT1的值小于CNT2,则输出高电平,点亮基色LED;如果CNT1的值大于CNT2,则输出低电平,基色LED熄灭。
系统的中断转换[4]:
系统要求产生7种彩色灯光,当彩灯的色彩发生变换时,一定会进入某个中断子程序,并且由此中断的中断点开始按顺序进入下一个中断子程序;否则,系统中断将不会发生转变,彩灯固定在一种色彩的灯光下,实现转换的程序代码如
系统状态转换图:
图1-3系统电路实现原理图
2艺术彩灯的硬件电路设计
彩灯的设计包括4个部分[5]:
1。
单片机系统,2.电源电路.3.LED控制电路。
4,交流检测电路
下面对4个部分进行分别描述:
2.1单片机系统:
EM78P153型单片机,可以用来检测交流信号,产生色彩变化的PWM信号输出,内部也集成拉可编程的RC振荡器和复位电路。
图2-1单片机引脚图
其特征参数如下[6]:
1:
工作电压范围:
2.3-5.5
2:
功耗5V/4MHZ时低于1.5MA:
5V/32KHZ时为15UA
3:
1024*13位片内ROM
4:
4个内建校准震荡器
5:
32*8位片内寄存器组
6:
双向I/O端口
7:
8位计时/计数器,其信号源,触发边缘可编程产生中断
8:
3种中断模式TCC中断,输入变化中断和外部中断
9:
7个可编程上拉和开路I/O管脚
10:
6个可编程下拉管脚
单片机的外部接线和端口接线:
其中P51接红色LED,P52接绿色LED,P53接蓝色LED.此外,系统还预留拉用户端口P61~P67,它们连接拉一个拨码装置,用来设置系统状态值.
2.2电源电路:
系统直接利用220V市电,电源部分采用电容降压,交流市电经过5V稳压管可得到单片机所需的5V直流电压。
在电容降压回路上,串联一个300欧姆的电阻,主要防止上电时大电流的冲击[7]。
2.3LED控制电路
蓝色和绿色LED由两个三极管控制,当与单片机I/O口连接的NPN截止时,控制LED的PNP三极管也截止,LED导通点亮。
相反,如果单片机I/O口输出高电平,PNP三极管的基极电位为,PNP的CE极间导通,接在PNP间的LED被短路,熄灭[15]。
2.4交流检测电路
交流检测电路利用一个1M的电阻直接与单片机的I/O口连接,检测交流过零[8].这样连接的目的是当很多灯泡同时变化时,可以起到同步的作用.系统完全依靠单片机内部的RC振荡器[9],由于它会受到温度的影响,一致性不好,长时间运行会使彩灯色彩变化不一致,所以通过检测同一交流电,能保证所有同时上电的彩灯同步变化[10],交流检测电路连接拉一个0.01UF的电容,它能很好的起到干扰的作用[11].
图2-2交流检测图
把上面4个部分根据电路的原理进行组合,规划。
根据单片机系统引脚的结构来连线,参考多处的文献与资料,画出下面的系统电路图
2.5系统总电路图:
图2-3系统硬件电路图
3艺术彩灯的软件设计
软件程序的设计是关系到彩灯是否与我们所要求的一样变化的关键.为此,在这里先列出总的框图.系统总流程图:
主要是控制彩灯应该怎么样变化,哪个先变化,哪个后变化,提供一个总体的思路及大纲.彩灯的循环控制,由一个状态进入另一个状态都是由它完成的.可以根据此框图编写大体的程序.
3.1系统主流程的描述如下:
1:
单片机上电后,初始化寄存器
2:
完成初始化后,系统读取外部状态,初始变化周期并散转至个状态分支程序[12]。
3:
根据外部状态值,进入相应状态的分支程序并执行[14]
状态1:
红色LED渐渐亮
进入状态1之前,红色LED为熄灭状态,绿色和蓝色LED可为任意状态,进入状态1之后,系统将点亮红色LED灯泡,最终红色LED达到最大值,彩灯为红色
状态2;绿色LED灯泡渐渐亮
进入状态2之前,绿色LED为熄灭状态,红色LED灯泡亮度达到最大值。
进入状态2之后,系统将点亮绿色LED,红色LED灯泡保持亮度,最终绿色LED亮度达到最大值。
彩灯颜色变化红色——橙——黄色
状态3:
红色LED灯泡渐渐暗
此时,系统将逐渐熄灭红色LED灯泡,而绿色LED保持亮度,最终红色LED灯泡熄灭。
彩灯颜色变为黄色——黄绿色——绿色。
状态4:
蓝色LED灯泡渐渐亮
系统将点亮蓝色LED灯泡,绿色LED灯泡保持亮度,而红色LED灯泡保持熄灭状态。
彩灯颜色变化绿色——绿蓝色——青色。
状态5:
绿色LED灯泡渐渐暗
系统将逐渐熄灭绿色LED灯泡,蓝色LED保持亮度,而红色LED灯泡保持熄灭状态。
状态6:
红色LED灯泡渐渐亮
系统将点亮红色LED灯泡,蓝色LED灯泡保持亮度,而绿色LED灯泡保持熄灭状态。
彩灯颜色变化为蓝色——蓝紫色——紫色
状态7:
蓝色LED灯泡渐暗
系统将逐渐熄灭蓝色LED灯泡,红色LED灯泡保持亮度,而绿色LED灯泡保持熄灭状态,最终蓝色LED灯泡熄灭。
彩灯颜色变化为紫色——紫红色——红色
状态8:
红色LED灯泡渐暗
系统将逐渐熄灭红色LED灯泡,绿色和蓝色LED灯泡保持熄灭状态,最终红色LED灯泡熄灭。
然后同时发光,成为白光。
系统流程图:
图3-1系统主流程图
3.2状态内部程序流程
状态内部流程是本次设计的重点和难点.利用PWM调制技术的片内计数器CNT1和CNT2的相互比较来控制彩灯的亮灭,是彩灯颜色变化不可或缺的一部分.通过相互的比较,来判断是进入下一个流程还是重新执行本轮循环,根据自己设计的时间要求来设置彩灯变化的快慢靠的就是PWM调制技术中的CNT1和CNT2的相互比较.
状态内部流程描述如下:
1:
进入状态内部流程后,用于PWM调治的片内计数器CNT1计数值开始增加。
计数器CNT1的计数操作是利用CALL指令调用独立的计数字程序模块来完成的。
2:
计数器CNT1完成计数后,进行交流检测[16],并在检测中利用CNT2计数检测的周期数。
通过交流检测技术,可调节各基色LED灯泡的工作电压,改变他们的亮度,实现色彩的柔和变化[17]
3:
比较CNT1和CNT2的计数值[18],如果CNT1大于CNT2,该状态的目标LED灯泡将被点亮:
如果CNT1小于CNT2,目标LED灯泡将熄灭[19]。
4:
检查状态的执行时间是否超时,若未超时,系统将重新执行一次上述流程[20]:
否则系统将推出当前状态,并进入下一个状态。
图3-2状态内部流程图
3.3系统编程
主程序调用初始化模块代码
START:
CALLINIT;初始化
MOVA,@0X99;状态跳转
MOVT_PARA,A;输入变化周期
初始化模块程序代码
INIT:
MOVA,@0;寄存器初始值为0
CONTW
I/OWPORT;端口5设为输出
MOVPORT5,A;端口5初始化
MOVFLAG,A;标志初始化
MOVA,@00
I/OWI/OCF;禁止中断
MOVA,@0X80
I/OWI/OCE;关WDTE,P60为中断
MOVA,@0XOFF
I/OWPORT6;设为输入,中断进入
MOVA,@0X01;P60用外部上拉,其他内部上拉
I/OWI/OCD
MOVA,@TIME_PARA1;系统按用户输入初始化
MOVDELAY_C1,A;延时,周期值
CLRA
MOVPWM_C1,A;PWM计数器1初始化
MOVPWM_C2,A;PWM计数器2初始化
艺术彩灯需要靠程序来实现7种颜色的变化,程序代码如下:
1.三基色灯都亮,发白光的状态:
LOOP_TOO:
MOVA,@0B00000000;红绿,蓝LED状态为0
MOVPORT5,A;s输出,LED动作
LOOP_T0:
WDTC
CALLDELAY;PWM计数器1开始计数
CALLDETECT_AC;交流检测
JBSFLAG,DIRECT_F
JMPLOOP_T0;回到本状态
BCFLAG,DIRECT_F;如果系统仍然没有进入状态1到状态8的循环,T0状态维持
LOOP_T10:
MOVA,@0B00000000
MOVPORT5,A
2.状态1,红灯渐亮,蓝色和绿色LED始终熄灭。
LOOP_T1:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT1;比较输出,有效!
点亮红灯
BSPORT5,3;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T1
BCFLAG,DIRECT_F
JMPLOOP_T20;进入T2,红灯亮
LT1:
BCPORT5,3;输出,红灯亮
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T1;维持T1
BCFLAG,DIRECT_F;再次判断跳转
3.红灯亮,绿灯渐亮,彩灯颜色由红到橙再到黄
LOOP_T20:
MOVA,@0B00001000;红灯为最亮
MOVPORT5,A;输出
LOOP_T2:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT2;比较输出,有效!
点亮红灯
BSPORT5,1;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T2
BCFLAG,DIRECT_F
JMPLOOP_T30;进入T3,红绿灯亮,为黄色
LT2:
BCPORT5,3;输出,绿灯亮
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T2;维持T2
BCFLAG,DIRECT_F;再次判断跳转
4.绿灯亮,红灯渐暗,彩灯由黄到黄绿在到绿
LOOP_T30:
MOVA,@0B00001010;保持彩灯为黄色
MOVPORT5,A;输出
LOOP_T2:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT3;比较输出,有效!
红灯暗
BSPORT5,3;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T3
BCFLAG,DIRECT_F
JMPLOOP_T40;进入T4,红灯灭,绿灯最亮
LT3:
BCPORT5,3;输出,红灯熄灭
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T3;维持T3
BCFLAG,DIRECT_F;再次判断跳转
5.绿灯亮,蓝灯渐亮,彩灯由绿到绿蓝再到青
LOOP_T40:
MOVA,@0B0000010;只有绿灯亮
MOVPORT5,A;输出
LOOP_T2:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT4;比较输出,有效!
点亮蓝灯
BSPORT5,2;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T4
BCFLAG,DIRECT_F
JMPLOOP_T50;进入T5,蓝绿灯最亮,为青色
LT2:
BCPORT5,2;输出,蓝灯点亮
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T4;维持T4
BCFLAG,DIRECT_F;再次判断跳转
6.蓝灯亮,绿灯渐暗。
彩灯颜色由青变为蓝绿再到蓝。
LOOP_T50:
MOVA,@0B00000110;彩灯为青色
MOVPORT5,A;输出
LOOP_T5:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT5;比较输出,有效!
绿灯熄灭
BSPORT5,1;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T5
BCFLAG,DIRECT_F
JMPLOOP_T60;进入T6,红绿灯亮,为黄色
LT5:
BCPORT5,1;输出,绿灯亮
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T5;维持T5
BCFLAG,DIRECT_F;再次判断跳转
7.蓝灯亮,红灯渐亮,彩灯由蓝到蓝紫再到紫色
LOOP_T60:
MOVA,@0B00000100;彩灯为蓝色
MOVPORT5,A;输出
LOOP_T2:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT6;比较输出,有效!
点亮红灯
BSPORT5,3;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T6
BCFLAG,DIRECT_F
JMPLOOP_T70;进入T7,红蓝灯最亮,为紫色
LT6:
BCPORT5,3;输出,红灯点亮
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T6;维持T6
BCFLAG,DIRECT_F;再次判断跳转
8.红灯亮,蓝灯渐暗,彩灯由紫到紫红再到红色
LOOP_T70:
MOVA,@0B00001100;彩灯为紫色
MOVPORT5,A;输出
LOOP_T2:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT7;比较输出,有效!
蓝灯熄灭
BSPORT5,2;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T7
BCFLAG,DIRECT_F
JMPLOOP_T80;进入T8,红绿灯亮,为黄色
LT7:
BCPORT5,2;输出,绿灯亮
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T7;维持T7
BCFLAG,DIRECT_F;再次判断
JMPLOOP_T80;完成一次状态循环
9.红色灯最亮,蓝灯渐暗,绿灯始终熄灭,彩灯由紫到紫红再到红色
LOOP_T80:
MOVA,@0B00001000;红灯为最亮
MOVPORT5,A;输出
LOOP_T2:
WDTC
CALLDELAY;PWM计数器开始计数
CALLDELECT_AC;交流检测
MOVA,PWM_C1;完成CNT1与CNT2的比较
SUBA,PWM_C2
JBS0X03,0
JMPLT8;比较输出,有效!
红灯熄灭
BSPORT5,3;输出
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T8;维持T8
BCFLAG,DIRECT_F;再次判断
JMPLOOP_T00;开始新的一轮循环,进入T0
LT8:
BCPORT5,3;输出,红灯熄灭
JBSFLAG,DIRECT_F;状态是否跳转
JMPLOOP_T8;维持T8
BCFL