基于单片机控制LED灯亮度调节邓宇锋修改.docx
《基于单片机控制LED灯亮度调节邓宇锋修改.docx》由会员分享,可在线阅读,更多相关《基于单片机控制LED灯亮度调节邓宇锋修改.docx(17页珍藏版)》请在冰豆网上搜索。
基于单片机控制LED灯亮度调节邓宇锋修改
基于单片机控制LED灯智能亮度调节
系部:
机电工程系
学生姓名:
邓宇锋
专业班级:
电气11C3班
学号:
111041306
指导教师:
茅阳
2014年3月10日
声明
本人所呈交的基于单片机控制LED灯亮度调节,是我在指导教师的指导和查阅相关著作下独立进行分析研究所取得的成果。
除文中已经注明引用的内容外,本论文不包含其他个人已经发表或撰写过的研究成果。
对本文的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
2014年3月10日
摘要
本文介绍LED灯智能亮度调节驱动电路设计,智能照明控制系统在确保灯具能够正常工作的条件下,给灯具输出一个最佳的照明功率,既可减少由于过压所造成的照明眩光,使灯光所发出的光线更加柔和,照明分布更加均匀,又可大幅度节省电能,智能照明控制系统节电率可达20%-40%。
智能照明控制系统它可在照明及混合电路中使用,适应性强,能在各种恶劣的电网环境和复杂的负载情况下连续稳定地工作,同时还将有效地延长灯具寿命和减少维护成本。
【关键词】:
智能控制;LED;智能光补
目录
引言1
一、智能的概述2
(一)智能的定义2
(二)智能的分类2
二、LED发光二极管的认识2
(一)LED的构造2
(二)LED的发光原理3
(三)LED的优势3
三、LED亮度控制系统3
(一)脉冲宽度调制3
(二)调制LED的驱动电流3
(三)线性调光法3
四、单片机及程序设计3
(一)概述4
(二)单片机STC89C51芯片简介4
(三)程序7
此套控制分主程序与子程序,截取主程序代码在附件中。
7
五、控制系统电路设计7
(一)LED驱动电路7
(二)光电传感器的选择8
(三)电气原理图9
六、实物调试9
总结11
参考文献12
谢辞13
附件14
引言
智能一词最早出现在手机上,早在2001年,世界著名手机制造商诺基亚就发布了搭载塞班系统的智能手机。
当时掀起一股智能热,人们纷纷感叹道科技的力量,能将之前的“大哥大”,做的如此小,并且功能也更加丰富。
2007年苹果公司发布iPhone手机更是将智能科技推向潮流。
到现在2014年,科学家们将智能科技带入人们生活的步伐从来没有停止过。
我却在使用智能手机的过程中发现,智能手机的屏幕会随着外界环境亮度改变而改变,已达到节能的作用。
我想利用把这一技术用在灯光只能控制下,让灯光能随着外界的变化而变化,始终给人们一个舒适的光照,来达到护眼的目的。
一、智能的概述
(一)智能的定义
智能及智能的本质是古今中外许多哲学家、脑科学家一直在努力探索和研究的问题,但至今仍然没有完全了解,以致智能的发生与物质的本质、宇宙的起源、生命的本质一起被列为自然界四大奥秘。
近些年来,随着脑科学、神经心理学等研究的进展,人们对人脑的结构和功能有了初步认识,但对整个神经系统的内部结构和作用机制,特别是脑的功能原理还没有认识清楚,有待进一步的探索。
因此,很难对智能给出确切的定义。
而在仿生和模拟、超级计算机方面也有其特定含义。
(二)智能的分类
根据霍华德·加德纳的多元智能理论,人类的智能可以分成七个范畴:
1.语言(Verbal/Linguistic)2.逻辑(Logical/Mathematical)3.空间(Visual/Spatial)4.肢体运作(Bodily/Kinesthetic)5.音乐(Musical/Rhythmic)6.人际(Inter-personal/Social)7.内省(Intra-personal/Introspective)
二、LED发光二极管的认识
(一)LED的构造
发光二极管简称为LED。
如图2-1,由镓(Ga)与砷(As)、磷(P)、氮(N)、铟(In)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。
在电路及仪器中作为指示灯,或者组成文字或数字显示。
磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,铟镓氮二极管发蓝光。
图2-1
(2)LED的发光原理
LED是一种能发光的半导体电子元件,可以把电能转化为光能。
发光二极管是由一个PN结组成,也具有单向导电性。
当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近与N区的电子与P区的空穴复合,产生自发辐射的荧光。
(三)LED的优势
由于LED只能往一个方向导通,当电流流过时发光,这叫做电致发光效应。
具有寿命长、不易破损、能耗低和体积小等优点,所以我将LED作为教室光源的主要材料。
三、LED亮度控制系统
控制LED灯管亮度是我此次毕业设计的核心内容,目前为止,控制LED灯管亮度的方法有以下几种
(一)脉冲宽度调制
经过调节使驱动电流呈方波状,其脉冲宽度可变,经过对脉冲宽度的调制转变为调制LED灯管连续点亮的时间,也同时转变了输入功率,从而到达节能、调光的目标。
频率跟平常一样大概在200Hz~10KHz。
因为人的眼睛视觉的滞后性,不会感觉得到光源在调光过程中产生的闪耀现象。
能改善LED的散热性能,缺陷是驱动电流的过冲对LED芯片的寿命肯定有一定的影响。
该方法很有效,但是,相对一个被测物需进行两次耐压测试,增加了接触时间。
(二)调制LED的驱动电流
由于LED芯片的亮度与LED驱动电流成一定的比例关系,我们调节LED驱动电流就可以控制LED灯管的明暗。
(三)线性调光法
当驱动电流线性增长或减小时,减小了驱动电流过冲过程中对LED芯片寿命的影响,而且调光电路的抗滋扰性较强。
以上介绍了三种方法,我最能够理解的是第二种通过调制LED的驱动电流来调节,但后来我查阅了一些资料,发现通过调节LED驱动电流来达到调节LED亮度会造成能耗过大且这不是一种常用的方法,而通过调节脉冲宽度则是一种比较好的选择。
四、单片机及程序设计
单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
(一)概述
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机由运算器、控制器、存储器、输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,单片机由仅有CPU的专用处理器芯片发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。
其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列单片机系统。
因为简单可靠而性能不错获得了很大的好评。
尽管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到现在,基于8051的单片机还在广泛的使用。
在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。
事实上单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。
汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作!
单片机的数量远远超过PC机和其他计算机的总和。
(二)单片机STC89C51芯片简介
STC89C51节省功率。
在一个单一的芯片,8位CPU和在系统可编程闪存,STC89C51的解决方案非常灵活,为很多嵌入式控制应用的超高效的。
例如,对几种功能:
16K字节的闪存,1024字节的RAM,64个数字I/O线,看门狗定时器,EEPROM,MAX810的复位电路,3个16位定时器/计数器,16个2向量中断结构,全双工串行端口。
如图4-1
图4-1
这是一个新的美国微控制器。
它包含闪存,SRAM,UART,SPI,PWM模块。
1.STC89C51参数如下:
1)机器T:
为6时钟,普通型:
为12时钟;
2)工作频率范围:
0~40.1MHZ,相当于普通8051的0~80.2MHZ;
3)STC89C51RC对应Flash空间:
4KB;
4)RAM:
512B;
5)定时器\计数器:
3个16位;
6)UART:
1个;
7)中断源:
8个;
8)有ISP\IAP:
无需专用编程器\仿真器;
9)通用I\O口:
32\36个;
10)工作电压:
3.8~5.5V;
2.STC89C51单片机的引脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
是一个8位双向I/O口,吸收8TTL门电流。
当销是第一个写一个P1端口被认为是一个高阻抗输入。
P1口:
写一个P1,然后拉高,P1口作为输入,下拉,输出。
P2口:
P2口是8位双向I/O端口,端口时写的P2为1,该引脚被拉高内阻,作为一个输入。
P3口:
P3是8双向I/O,四个TTL门接收输出电流。
RST:
用作外部数据存储器时,会有一个脉冲跳过去的,这时至零就可以吧他禁止了,这时用作外部存储。
/PSEN:
外部程序存储器选。
从外部程序存储器中读取有效期/PSEN过两次机器周期。
/EA/VPP:
当/EA仍然较低,在这一时期0000h-ffffh,在FLASH编程期间,此引脚12V加。
XTAL1:
反着输入就是本身的震荡,其实是运算了放大输入。
XTAL2:
反向振荡器的输出。
3.STC89C51单片机最小系统:
最小系统是由单片机及电源、时钟、复位等部件,才能使单片机一直保持正常的运行状态。
单片机运行、时钟等电路,应用程序的核心部分,可能是系统的最小的一部分,它的内存可扩展,A/D扩展,使单片机可以完成更复杂的功能。
STC89C51单片机包含ROM/EPROM芯片,所以这是最小的系统是简单的﹑最可靠。
当使用它时,就会变成单片机最小的系统,只要它连接电路时,如图4-2所示,由于一体化的限制,而这只能用于一些小的控制单元。
图4-2
1)时钟电路
STC89C51单片机时钟信号通常是两个方面:
第一,内部时钟模式,第二,外部时钟模式。
在单片机STC89C51内部振荡电路,只要单片机XTAL1和XTAL2引脚的外部晶体,构成自激振荡器,产生内部时钟信号单片机。
内部时钟方式如图4-3所示。
图4-3
2)复位电路
当采用STC89C51单片机RST引脚保持高和两个机器周期,执行控制器内部复位操作(如继续保持高水平,单片机是周期复位状态)。
两种方法通常是复位电路复位和复位按钮自动电源。
复位电路最简单的自动断电自动复位电力电容器的充电和放电的外部复位电路。
只要VCC小于2ms的上升时间,它会自动电源关闭。
本设计是手动复位的关键。
4.STC89C51中断技术概述
中断技术主要用于实时监测和单片机控制的要求进行中断的服务请求及时响应请求的源,并迅速作出反应并及时处理。
这是由中断系统芯片实现引起的。
当中断请求源发送中断请求,单片机程序中止了,去中断服务请求中断服务处理。
图4-4为整个中断响应和处理过程。
图4-4
如果不中断系统的微控制器,微控制器可能会浪费很多时间去检查是否有一个服务请求时在一个常规的查询。
采用中断技术,就能除去了单片机等现象在查询的模式上,很好的提高了的效率。
(3)程序
此套控制分主程序与子程序,截取主程序代码在附件中。
五、控制系统电路设计
要实现LED灯亮度的智能自动控制,就需要在前期给他输入一个适合人类的亮度的数值,以及一个外界光照传感器来对这个控制系统进行一个时时的反馈。
微处理器通过对传感器穿来数值的分析和计算,计算出LED灯应该提供多少亮度的光照补偿,进行补偿后,再由传感器将数据传回,再分析,再计算……如此循环反复,已达到一个时时监控和将亮度维持的效果。
流程图如图5-1所示
图5-1
因为限制的因素较多,我无法完全模拟出,实际的智能亮度自动控制。
所以,我只能把模拟的现象缩小,模拟出一个灯光随外部环境自动调节的过程。
(一)LED驱动电路
LED的驱动电路我选择的是PT4115。
PT4115采用SOT89-5封装和ESOP8封装。
PT4115是一款连续电感电流导通模式的降压恒流源,用于驱动一颗或多颗串联LED。
PT4115输出电流可调,最大可达1.2安培。
根据不同的输入电压和外部器件,PT4115可以驱动高达数十瓦的LED。
PT4115内置功率开关,采用高端电流采样设置LED平均电流,并通过DIM引脚可以接受模拟调光和很宽范围的PWM调光。
当DIM的电压低于0.3伏时,功率开关关断,PT4115进入极低工作电流的待机状态。
PT4115特点:
1:
电感越大,工作频率越低,恒流效果越好。
2:
输出电流越大,需要电感值越小。
电感选择方便。
3:
输出电压越高,效率越高,3颗1W串联比1颗3W效率高。
4:
内部含有过温保护功能,外部可设计过温保护电路,对LED有双重保护。
驱动电路如图5-2
图5-2
(2)光电传感器的选择
由于处理的光电转换的过程及数据很复杂,所以一般的光敏电阻已经无法满足要求,所以我用了数字光强度检测模块GY-30。
如图5-3
图5-3
(三)电气原理图
由于LED的单向导通性,把它直接接在民用的220V交流电上就会出现频闪现象,这样就和现在传统的照明灯具一样了,失去了一个护眼的作用。
因此,在LED的驱动电路中需要加入桥式整流。
LED驱动电路除了要满足安全要求外,另外的基本功能应有两个方面,一是尽可能保持恒流特性,尤其在电源电压发生±15%的变动时,仍应能保持输出电流在±10%的范围内变动。
二是驱动电路应保持较低的自身功耗,这样才能使LED的系统效率保持在较高水平。
整个LED灯智能亮度调节系统如图5-5
图5-5
六、实物调试
实物调试下来无问题,基本满足要求。
光强能够智能调节,且整个系统稳定。
总结
现在中国学生的学习压力越来越大,用眼压力也很大,看书学习成为了他们每天必不可少的一项生活习惯。
但不合理的光照使得用眼压力更加重,所以这套LED灯智能亮度调节系统能时时给人眼最舒适的光照,从而缓解用眼压力。
通过这次毕业设计使我深刻的明白了一个道理,书到用时方恨少。
想不到我这一小小的控制系统也涉及了许多方面的内容。
为了做这套系统,我翻阅了不少的书籍,在网上也差了不少的资料,后来在我指导老师的帮助下完成了这套设计。
通过这次设计也使我开始喜欢上了单片机和编程,能通过简单的编程给冷冰冰的机器带来生命。
以后我会继续学习单片机与编程。
参考文献
[1]何立民.单片机初级教程-单片机基础[M].北京:
北京航空航天大学出版社,2006
[4]李朝青.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2005
[5]康华光.电子技术基础[M].北京:
高等教育出版社,2000
[6]康华光.电子技术基础(模拟部分)[M].北京:
高等教育出版社,1999
[7]丁元杰.单片微机原理及应用[M].北京:
机械工业出版社,1996
[8]何立民.单片机应用技术选编[M].北京:
北京:
航空航天大学出版社,1996
[9]张培仁等.MCS-51单片机原理与应用[M].北京.清华大学出版社,2003
[10]肖金球单片机原理与接口技术[M].北京:
清华大学出版社,2004
谢辞
毕业论文终于完成了,在此之际,我思绪万千,心情久久不能平静。
回顾三年学习期间的日日夜夜,自己为课题的研究,兢兢业业。
欣慰之余,心里感动一丝沉重:
我即将离开我的老师和同学们。
非常感谢学校的领导,感谢茅阳老师。
她为我做毕业论文提供了条件。
在做论文的过程中,我遇到了许多的苦难,但是在茅老师的帮助下,我的课题的设计任务得以顺利完成。
她严谨的治学态度和踏实的工作作风给我留下了深刻的印象,是我学习的榜样。
在此,向老师致以最诚挚的谢意。
同时还要感谢教育和指导过我的所有老师,你们给予我的不仅仅是知识,还有你们对知识孜孜不倦的追求精神和对生活的积极向上态度,使我终身受益。
我将在以后的工作中继续努力,不断学习,努力提高自己。
路漫漫其修远兮,吾将上下而求索。
我愿在未来的学习和研究过程中,以更加丰厚的成果来答谢曾经关心、帮助和支持过我的所有领导、老师、同学、同事和朋友,一并表示感谢!
在次,再次向他们表示我最诚挚的谢意,我将以最大的热情投入到工作中,以报答所以帮助我过的老师和同学。
最后,还要谢谢培养了我三年的母校——苏州工业职业技术学院,以及机电工程系的各位老师,以及关心过我,帮助过我的同学,在此,说声谢谢!
附件
程序用C语言设计,主程序如下:
#include
#include
#include"LCD1602.h"
#include"BH1750.h"
#include"keys.h"
/*DeclareSFRassociatedwiththePCA*/
sfrCCON=0xD8;//PCAcontrolregister
sbitCCF0=CCON^0;//PCAmodule-0interruptflag
sbitCCF1=CCON^1;//PCAmodule-1interruptflag
sbitCR=CCON^6;//PCAtimerruncontrolbit
sbitCF=CCON^7;//PCAtimeroverflowflag
sfrCMOD=0xD9;//PCAmoderegister
sfrCL=0xE9;//PCAbasetimerLOW
sfrCH=0xF9;//PCAbasetimerHIGH
sfrCCAPM0=0xDA;//PCAmodule-0moderegister
sfrCCAP0L=0xEA;//PCAmodule-0captureregisterLOW
sfrCCAP0H=0xFA;//PCAmodule-0captureregisterHIGH
sfrCCAPM1=0xDB;//PCAmodule-1moderegister
sfrCCAP1L=0xEB;//PCAmodule-1captureregisterLOW
sfrCCAP1H=0xFB;//PCAmodule-1captureregisterHIGH
sfrPCAPWM0=0xf2;
sfrPCAPWM1=0xf3;
ucharBH1750_Con=0;
ucharBH1750_Change=0;
ucharView_Change=0;
voidInitTimer0(void)
{
TMOD=0x01;
TH0=0xD8;
TL0=0xF0;
EA=1;
ET0=1;
TR0=1;
}
voidPWM_Init()
{
CCON=0;//InitialPCAcontrolregister
CL=0;//ResetPCAbasetimer
CH=0;
CMOD=0x02;//SetPCAtimerclocksourceasFosc/2
CCAP0H=CCAP0L=128;//PWM0portoutput50%dutycyclesquarewave
CCAPM0=0x42;//PCAmodule-0workin8-bitPWMmodeandnoPCAinterrupt
CR=1;//PCAtimerstartrun//PCAtimerstartrun
}
uintLight_Set=2000;
ucharSet_Value_View[7];
uintBijiao_Num_Collect=0;
uintBijiao_Num_Set=0;
voidmain()
{
PWM_Init();//PWM初始化
InitLcd();//液晶初始化
Init_BH1750();//数字光强传感器初始化
InitTimer0();//定时器初始化
Lcd_1602_word(0x80,6,"Light:
");
Lcd_1602_word(0xc0,16,"L_Set:
2000XL");
while
(1)
{
if(Key_Change)//响应按键程序
{
Key_Change=0;
if(Key_Value==1)//设定值+
{
if(Light_Set<60000)
Light_Set=Light_Set+100;
}
else
{
if(Light_Set>1000)//设定值-
Light_Set=Light_Set-100;
}
Set_Value_View[0]=Light_Set/10000+0x30;
Set_Value_View[1]=Light_Set%10000/1000+0x30;
Set_Value_View[2]=Light_Set%1000/100+0x30;
Set_Value_View[3]=Light_Set%100/10+0x30;
Set_Value_View[4]=Light_Set%10+0x30;
Set_Value_View[5]='X';
Set_Value_View[6]='L';
if(Set_Value_View[0]==0x30)
{
Set_Value_View[0]='';
if(Set_Value_View[1]==0x30)
{
Set_Value_View[1]='';
if(Set_Value_View[2]==0x30)
{
Set_Value_View[2]='';
if(Set_Value_View[3]==0x30)
{
Set_Value_View[3]='';
if(Set_Value_View[4]