完整基于C51单片机和PWM调光的LED台灯设计文档格式.docx
《完整基于C51单片机和PWM调光的LED台灯设计文档格式.docx》由会员分享,可在线阅读,更多相关《完整基于C51单片机和PWM调光的LED台灯设计文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
软件设计·
9
总结·
12
附录1:
作品照片·
13
附录2:
程序·
15
前言
LED照明又称固态照明,作为继白炽灯、荧光灯后的第三代照明技术,具有节能、环保、安全可靠的特点,固态光源是被业界看好的未来十年替换传统照明器具极具潜力的新型光源,代表照明技术的未来。
发展新固态照明,不仅是照明领域的革命,而且符合当前政府提出的“建设资源节约型和环境友好型社会”的要求。
LED台灯就是以LED(LightEmittingDiode)即发光二极管为光源的台灯,LED是一种固态的半导体器件,它可以直接把电转化为光.LED台灯是典型的绿色照明光源产品,作为国家绿色照明推广使用的产品,具有广阔的应用前景。
在实际的应用中,发现LED灯在周边亮度大时依然以同一功率发光,存在电能浪费。
另外一方面,因为LED的发热量和电流存在正相关的关系,发热影响了LED的寿命,所以在不必要的亮度下也减少了LED的寿命.然而,当LED在周边亮度小时,LED灯不能提供足够和恰当的光度,这样又影响了阅读,造成视觉疲劳。
PWM方法的基本思想就是利用单片机具有的PWM端口,在不改变PWM方波周期的前提下,通过软件的方法调整单片机的PWM控制寄存器来调整PWM的占空比,从而控制充电电流.本方法所要求的单片机必须具有ADC端口和PWM端口这两个必须条件,另外ADC的位数尽量高,单片机的工作速度尽量快。
在调整充电电流前,单片机先快速读取充电电流的大小,然后把设定的充电电流与实际读取到的充电电流进行比较,若实际电流偏小则向增加充电电流的方向调整PWM的占空比;
若实际电流偏大则向减小充电电流的方向调整PWM的占空比。
本文介绍了以STC89C51为控制核心,通过光敏电阻感应光度,并利用PWM调光技术对LED进行光度的自动调节。
同时设置手动控制.该LED台灯电路简单,很大程度上节省电能,延长LED灯寿命,适宜阅读。
一、总体方案设计
基于C51单片机和PWM调光的LED台灯以STC89C51作为主控芯片,设置了手动控制和自动控制。
在手动控制时,分为三档,输出不同的PWM占空比对LED的电流进行控制,从而实现了对光度的手动调节。
在自动控制时,通过ADC0809模拟-数字转换芯片不断检验光敏电阻的电压来间接测量感应光度,将电压和预设的阈值进行对比,调整PWM的占空比对LED的电流进行控制,从而实现了对光度的自动调节.总体框图如下(图1。
1):
图1.1
二、硬件设计
硬件设计总体框图如下:
图2.0
1、主控电路:
主控电路采用STC89C51作为主MCU。
STC89C51是一款八位,片内有ROM/EPROM的单片机,其硬件结构具有功能部件种类全,功能强等特点。
这种芯片构成的最小系统简单、实用﹑可靠.用STC89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如下图(图2.1)所示。
本设计所选用的晶振为12MHZ,晶振电容为30PF。
图2.1
2、LED驱动
LED的亮度受电流控制,通过控制电流调节LED灯的亮度.利用公式
可知,利用调整PWM不同的占空比
就可以控制电流的大小。
电流通断的变化用NMOS管K2717实现,三极管9014提供驱动K2717的电流,PWM由P2.0输出,低电平有效。
如下图(图2.2)所示:
图2.2
2、手动控制
KEY4变化控制的方式,KEY4为自锁按键,按下为手动控制,弹起为自动控制。
手动控制时可以分为三档,对应与KEY1~3三个按键。
如下图(图2.3)所示:
图2.3
3、自动控制
〈1〉光敏电阻反馈部分
光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;
入射光强,电阻减小,入射光弱,电阻增大。
光敏电阻器一般用于光的测量、光的控制和光电转换。
因此,不断采集光敏电阻对地的电压便可以获知台灯周边光强的变化.如下图(图2。
4)所示:
图2。
〈2>
ADC0809模数转换部分
ADC0808和ADC0809除精度略有差别外(前者精度为8位、后者精度为7位),其余各方面完全相同。
它们都是CMOS器件,不仅包括一个8位的逐次逼近型的ADC部分,而且还提供一个8通道的模拟多路开关和通道寻址逻辑,因而有理由把它作为简单的“数据采集系统”.利用它可直接输入8个单端的模拟信号分时进行A/D转换,在多点巡回检测和过程控制、运动控制中应用十分广泛。
如下图(图2。
4)所示,ADC0809的参考电压设置成5V,时钟信号通过单片机P3.3口利用定时器中断输出.光敏电阻的对地电压从IN3口输入,ADC0809将其转换成数字量后通过OUT1—7输出,以便单片机进一步处理.
三、软件设计
1、总体框图
图3。
1
2、主要程序
<
1〉按键扫描
不断扫描按键判断是手动控制和自动控制。
程序代码:
voidkeyscan()
{
ad();
if(key==1)//key4松开,a恒为0,通过读c的值确定b的值
{
if(c〈0。
40)
last=0;
elseif((c〉=0。
40)&
&(c〈2.0))
last=2;
elseif((c〉=2.0)&&
(c〈3.0))
last=5;
elseif((c>
=3.0)&
&
(c〈4。
0))
last=7;
else
last=10;
}
if(key==0)//key4按下,手动控制
{
if(key1==0)
{delayms(10);
//去抖
if(key1==0)
last=1;
}
if(key2==0)
if(key2==0)
last=6;
}
if(key3==0)
{delayms(10);
if(key3==0)
last=10;
}
}
}
AD转换
定时器1产生CLK信号,定时时间为2us,亦即CLK周期为0。
4us。
程地址为011,即IN3口输入。
利用公式getdata*1.0/255*VREV+对数字量进行变化。
程序代码如下:
voidad()
{
ST=0;
//关闭转换
OE=0;
//关闭输出
ST=1;
//开启转换
ST=0;
P34=1;
//选择通道0
P35=1;
P36=0;
while(EOC==0);
//判断是否转换结束:
是则执行以下语句,否则等待
OE=1;
//开启数据输出允许
getdata=P0;
//将数据取走,存放在变量getdata中
OE=0;
c=getdata*1.0/255*4。
85;
//电压值转换,5V作为参考电压,分成256
〈3〉PWM调节
定时器0控制PWM周期和占空比。
voidinto(void)interrupt1
{
TH0=(65536—500)/256;
TL0=(65536-500)%256;
count++;
if(count>
CIRCLE)
{
count=1;
}
if(count〈=last)
pwm=0;
//占空比,使用反相器应为1
else
pwm=1;
四、总结
在手动控制时,分为三档,输出不同的PWM占空比实现了对光度的手动调节。
在自动控制时,通过ADC0809模拟-数字转换芯片不断检验光敏电阻的电压来间接测量感应光度,将电压和预设的阈值进行对比,调整PWM的占空比实现了对光度的自动调节。
该LED台灯电路简单,很大程度上节省电能,延长LED灯寿命,适宜阅读。
同时,在本次课程设计中,主要有以下体会:
1、对LED的驱动有进一步的了解,明白了如何对LED进行规定电流驱动,并通过输出不同的占空比来调节LED的亮度,从而对LED的耗电进行相应的管理;
2、进一步掌握了AD转换原理以及相关芯片的应用,通过ADC0809对外界的模拟量进行转换.
3、培养了自己的团队意识,能够比较好的和队员就项目进行及时的沟通,在分工和整合方面做的不错。
作品照片