ComputerScienceandApplication计算机科学与应用,2016,6(2),85-93PublishedOnlineFebruary2016inHans.://dx.doi.org/10.12677/csa.2016.62011文章引用:张景扩,彭龑,陈冬君,许理.基于51单片机的智能LED台灯设计[J].计算机科学与应用,2016,6(2):85-93.:Feb.1st,2016;accepted:Feb.23rd,2016;published:Feb.26th,2016Copyright©2016byauthorsandHansPublishersInc.ThisworkislicensedundertheCreativeCommonsAttributionInternationalLicense(CCBY).(Single-ChipMicrocomputer),LED,PWMControl基于51单片机的智能LED台灯设计张景扩1,彭龑2,陈冬君1,许理11四川理工学院自动化与电子信息学院,四川自贡2四川理工学院计算机学院,四川自贡收稿日期:2016年2月1日;录用日期:2016年2月23日;发布日期:2016年2月26日张景扩等86摘要为了使电力得到高效利用,本文提出一种基于单片机的智能LED台灯设计。该台灯具有手动、自动两种调节方式。硬件设计部分分为单片机控制模块、按键模块、照明模块、光敏模块、LED指示模块等多个部分。单片机主控制芯片选用STC89C51RC,通过按键模块来调整工作模式和LED的亮度,照明模块选用12草帽型白光LED,光敏模块选用ADC0832芯片实现对光敏信号的采集,并利用PWM控制技术对LED进行光度的自动调节。通过单片机C语言编程进行软件设计将程序下载到单片机内。关键词STC89C51RC单片机,LED,PWM控制1.引言随着能源的短缺,节能环保越来越被大家所重视。目前有许多台灯设计不合理,以至于能源被大大浪费。为了使电力得到高效利用,本文提出一种基于单片机的智能LED台灯设计,该台灯具有手动、自动两种调节方式,能够在保证正常实用的状况下又能使电力得到充分利用[1]。2.系统方案设计智能LED台灯是以STC89C51RC单片机为控制芯片。STC89C51RC为40引脚双列直插式芯片,增强型8051单片机,工作电压3.3V~5.5V,片内集成4K字节ROM和256字节RAM,具有EEPROM功能,两个定时/计数器,具有看门狗功能,工作频率范围为0~40MHz,实际工作频率可达48MHz,有32个通用I/O口,具有价格低廉、兼容性强、超强抗干扰能力、超低功耗等优点[2]。将硬件设计分为LED驱动电路、按键控制电路、光敏电路、ADC0832模数转换电路。系统整体结构如图1。软件设计采用模块化结构,并用C语言进行编写将各模块设计完成后进行总调[3]。将程序下载到单片机内,保证设计的智能LED台灯能按照当初所设计的自动手动模式正确运行。3.硬件电路设计3.1.时钟电路设计STC89C51单片机的时钟信号通常有两种方式产生:一是内部时钟方式,二是外部时钟方式。内部时钟方式如图2。在STC89C51单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号。图中电容C1和C2的作用是稳定频率和快速起振,电容值在5~30pF,典型值为30pF。晶振CYS的振荡频率范围在1.2~12MHz间选择,典型值为12MHz和6MHz。3.2.复位电路当在STC89C51单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作(若该引脚持续保持高电平,单片机就处于循环复位状态)。复位电路通常采用上电自动复位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充放电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。除了上电复位外,有时还需要按键手动复位。本设计用按键手动复位。按键手动复位有电平方式和脉冲方式两种[3]。其中电平复位是通过RST(9)端与张景扩等87Figure1.Theoveralldiagramofsystemstructure图1.系统整体结构框图Figure2.Clockcircuit图2.时钟电路Figure3.Resetcircuit图3.复位电路电源Vcc接通而实现的。按键手动复位电路见图3。时钟频率用11.0592MHZ时C取10uF,R取10kΩ。3.3.LED驱动电路三极管在实际的放大电路中使用时,还需要加合适的偏置电路。首先是由于三极管BE结的非线性(相当于一个二极管),基极电流必须在输入电压大到一定程度后才能产生(对于硅管,常取0.7V)。当基极与发射极之间的电压小于0.7V时,基极电流就可以认为是0。但实际中要放大的信号往往远比0.7V要小,如果不加偏置的话,这么小的信号就不足以引起基极电流的改变(因为小于0.7V时,基极电流都是0)。如果我们事先在三极管的基极上加上一个合适的电流(叫做偏置电流,上图中那个电阻Rb就是用来张景扩等88提供这个电流的,所以它被叫做基极偏置电阻),那么当一个小信号跟这个偏置电流叠加在一起时,小信号就会导致基极电流的变化,而基极电流的变化,就会被放大并在集电极上输出[4]。LED的亮度受电流控制,通过控制电流调节LED灯亮度。利用公式ONLtIIT=可知,利用调整PWM不同的占空比ONtT就可以控制电流的大小。电流通断的变化用PNP型三极管实现,PWM由P1.4输出,低电平有效,如图4。3.4.按键控制电路单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。本设计选用了独立式键盘接法。独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平[5]。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O口的值,这一次的值如果为1表示低电平的时间不到10~200毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。3.5.光敏电路光敏电阻又称光导管,常用的制作材料为硫化镉,另外还有硒、硫化铝、硫化铅和硫化铋等材料。这些制作材料具有在特定波长的光照射下,其阻值迅速减小的特性。这是由于光照产生的载流子都参与导电,在外加电的作用下作漂移运动,电子奔向电源的正极,空穴奔向电源的负极,从而使光敏电阻器的阻值迅速下降。光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射光弱,电阻减小,入射光强,电阻增大。Figure4.DriveLEDcircuitoftriode图4.三极管驱动LED电路张景扩等89光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化[6]。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化,如图5。3.6.ADC0832模数转换ADC0832是CMOS器件,不仅包括一个8位的逐次逼近型的ADC部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑。利用它可直接输入8个单端的模拟信号分时进行A/D转换。ADC0832的参考电压设置成5V,时钟信号通过单片机P3.3口利用定时器中断输出[7]。光敏电阻的对地电压从IN0口输入,ADC0832将其转换成数字量后通过OUT1-7输出,以便单片机进一步处理,如图6。4.软件设计软件任务设计要和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件定下来后,软件的设计就要配合硬件来进行[8]。本设计是基于51系列单片机加上各个系统模块制作的,当对整个系统上电之后,系统先达到初始化的状态,然后读取外界光线的模拟量,由模数转换芯片将模拟信号转换成数字信号并将信号输出至主控芯片上。系统主控芯片自动判断当前