基于单片机的LED调光器的设计.docx
- 文档编号:29967818
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:39
- 大小:213.51KB
基于单片机的LED调光器的设计.docx
《基于单片机的LED调光器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的LED调光器的设计.docx(39页珍藏版)》请在冰豆网上搜索。
基于单片机的LED调光器的设计
重庆科技学院
《智能仪器》课程设计报告
学院:
_电气与信息工程学院_专业班级:
测控0902班
学生姓名:
学号:
设计地点(单位)________I512__________________
设计题目:
___________LED调光器设计_____________________
完成日期:
年月日
指导教师评语:
_______________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
指导教师(签字):
________________
摘要
LED作为一种固态冷光源,是继白炽灯、荧光灯、高强度放电灯(如高压钠灯和金卤灯)之后的第四代新光源。
基于白光LED的固态照明,是一种典型的绿色照明方式,与传统光源相比,具有节能、环保、寿命长、体积小、安全可靠等特点。
但在实际中发现LED灯功能单一,不能实现灯的亮度手动和自动控制,且不能随着环境光的变化而变化,造成能源的浪费。
本文介绍了以高性能的STC12C5A60S2单片机为控制核心,利用单片机的PWM口产生的占空比LED进行光度的手动和自动调节。
通过光敏电阻对环境光度进行AD采集,达到LED灯亮度随环境自动变化。
关键词:
LEDSTC12C5A60S2单片机PWM占空比AD采集
摘要1
1绪论2
1.1研究LED调光的目的及意义2
1.2本课题设计内容及要求2
2LED调光系统总体设计3
2.1总体方案设计3
3系统硬件设计4
3.1单片机最小系统4
3.2LED驱动电路7
3.3按键电路8
4系统软件设计9
4.1软件总体设计9
4.2手动调光程序设计10
4.3自动调光程序设计11
4.4AD采集程序11
4.5按键程序设计12
5总结14
参考文献15
致谢16
附录1系统电路图17
附录2程序清单18
1绪论
1.1研究LED调光的目的及意义
随着全球能源危机和气候变暖问题的日益严重,绿色节能已经成为全球普遍关注的话题,人们正通过各种途径寻找新的节能方式。
照明是人类消耗能源的重要方面,在电能消耗中,发达国家照明用电占发电总量的比例是19%,我国也达到12%.随着经济发展,我国的照明用电将有大比例的提高,因此绿色节能照明的研究越来越受到重视。
LED作为一种固态冷光源,是继白炽灯、荧光灯、高强度放电灯(如高压钠灯和金卤灯)之后的第四代新光源。
基于白光LED的固态照明,是一种典型的绿色照明方式,与传统光源相比,具有节能、环保、寿命长、体积小、安全可靠等特点,代表着照明技术的未来,并符合当前政府提出的"建设资源节约型和环境友好型社会"的要求。
可以预见不久的将来。
目前,市场上采用白炽灯、卤素灯、荧光灯为光源的台灯普遍存在着低效率、高能耗、不易调光等缺点;至于寿命结束的含汞灯,一旦处理不当,将对环境造成严重危害;且实际的应用中,发现LED灯在周边亮度大时依然以同一功率发光,存在电能浪费。
另外一方面,因为LED的发热量和电流存在正相关的关系,发热影响了LED的寿命,所以在不必要的亮度下也减少了LED的寿命。
然而,当LED在周边亮度小时,LED灯不能提供足够和恰当的光度,这样又影响了阅读,造成视觉疲劳。
而且部分LED灯功能单一,缺少亮度调节、手动控制、自动控制,通过环境变化改变自身亮度等功能。
为解决当前问题,研究一个好的LED调光系统意义重大。
1.2本课题设计内容及要求
本次课题设计的目标是,在了解当前LED现有功能的基础上,利用单片机设计一个LED调光系统,该系统能够调节LED灯的亮度,且满足一定的精度要求。
因此,本课题研究设计内容概括如下:
1.基本功能
1)采用脉宽调制(PWM)对LED进行调光;
2)按给定时间-输出功率曲线自动调整LED亮度;
3)按键选择手动/自动调光方式;
4)4位数码管显示LED光源的相对亮度(0.0~100.0%);
5)具有电源开关、电源指示灯、复位等功能。
2.扩展功能
1)实现光敏自动调光,根据室内的光照变化,自动改变LED光源的亮度;
2)对采集的光照数据进行处理,利用3σ准则剔除粗大误差,设计算术平均数字滤波器;
3)手动遥控调光功能。
2LED调光系统总体设计
2.1总体方案设计
LED调光系统应主要包括称光敏采集、AD转换、单片机数据处理及控制、PWM控制、按键操作等部分。
其系统组成如图2.1所示。
在系统中,设置了手动调光和自动调光。
在手动调光时,分为十档,每一档对应一个占空比对LED的电流进行控制,从而对LED的亮度进行调节。
自动调光时,在一个子函数里调用控制LED亮度函数,再通过循环和延时实现一个简易的LED亮度的变化。
光敏电阻采集的信号换成电信号送到线性放大器放大,经过A/D转换送入单片机,再经数据处理后,反馈给LED灯改变其亮度,数码管则显示当前与光敏电阻串联10K电阻的电压值。
该调光系统是由硬件和软件两部分组成。
硬件主要包括单片机最小系统、LED驱动电路、按键电路、数码管显示电路、LED显示电路等部分;软件部分主要包括系统初始化子程序、手动控制子程序、自动控制子程序、AD采集及处理子程序、定时及中断子程序等,其软件采用模块化设计思想,可使程序设计思路清晰,便于调试。
图2.1系统组成框图
3系统硬件设计
3.1单片机最小系统
本系统采用新一代的8051单片机——STC12C5A60S2,由国内宏晶科技生产,其指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,其工作电压范围是3.5V~5.5V。
STC12C5A60S2有60KB的用户应用程序空间,256B的RAM和1024B的XRAM。
能满足程序代码的需求和缓冲区定义的需求。
另外与程序存储空间独立的一片闪存区域,可在应用编程中作EEPROM使用。
STC12C5A60S2有双UART以及ISP串口,串口资源足够系统使用。
另外通过宏晶科技提供的软件,使用UART可很容易地实现程序下载。
STC12C5A60S2有36个通用I/O口,大部分可位控,并且有强推挽输出的能力,足够系统使用。
还拥有4个16bit定时器和一个独立的波特率发生器,另外还有两个PCA模块,能获得丰富的定时器资源。
STC12C5A60S2有PDIP-40封装的芯片,易于快速进入实验。
封装引脚图如图3.1所示。
图3.1STC12C5A60S2芯片PDIP封装引脚图
STC12C5A60S2主要性能:
1.增强型8051CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051。
2.STC12C5A60S2系列工作电压:
3.3V-5.5V;STC12LE5A60S2系列工作电压:
3.6V-2.2V。
3.工作频率范围:
0-35MHz,相当于普通8051的0-420MHz。
4.用户应用程序空间8K/16K/20K/32K/40K/48K/52K/60K/62K字节等。
5.片上集成1280字节RAM。
6.通用I/O口(36/40/44个),复位后为:
准双向口/弱上拉(普通8051传统I/O口)。
可设置成四种模式:
准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏。
每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55mA。
7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片。
8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)。
9.看门狗。
10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地)。
11.外部掉电检测电路:
在P4.6口有一个低压门槛比较器。
5V单片机为1.32V,误差为±5%;3.3V单片机为1.30V,误差为±3%。
12.时钟源:
外部高精度晶体/时钟,内部R/C振荡器(温漂为±5%到±10%以内)用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟。
常温下内部R/C振荡器频率为:
5.0V单片机为:
11MHz~15.5MHz;3.3V单片机为:
8MHz~12MHz
。
精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准。
13.共4个16位定时器,两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器。
做串行通讯的波特率发生器,再加上2路PCA模块可再实现2个16位定时器。
14.2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟。
15.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,PowerDown模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2),CCP1/P1.4(也可通过寄存器设置到P4.3)。
16.PWM(2路)/PCA(可编程计数器阵列,2路),也可用来当2路D/A使用,也可用来再实现2个定时器,也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持)。
17.A/D转换,10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)。
18.通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口。
19.STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3)。
20.工作温度范围:
-40-+85℃(工业级)/0-75℃(商业级)。
21.封装:
PDIP-40,LQFP-44,LQFP-48,I/O口不够时,可用2到3根普通I/O口线外接,74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。
STC12C5A60S2单片机最小系统由STC12C5A60S2单片机及其时钟和复位电路组成,是整个自动称重系统控制部分的核心。
该单片机是宏晶科技生产的单时钟/机器周期的单片机,指令代码完全兼容传统8051,但速度快8-12倍,提供Flash程序存储器60kByte,1kByte的EEPROM,片上集成1280ByteRAM。
工作电压3.5-5.5V,内部集成MAX810专用复位电路,拥有4个定时器,2个串口,2路PWM,8路高速10位A/D转换,ISP/IAP,内置看门狗电路,外部掉电检测电路等。
STC12C5A60S2的最小系统包括复位电路和时钟电路,复位电路有上电复位、按键复位、看门狗等复位方式,本设计采用按键复位方式。
在单片机的X1、X2引脚之间加上11.0592MHZ的晶振,并通过20pF左右的电容接地为单片机提供工作时钟。
其最小系统如图3.2所示。
图3.2单片机最小系统电路图
3.2LED驱动电路
本次设计LED光源共由1只5mm高亮度小功率LED灯珠组成;灯珠的压降约3.1V,工作电流约20mA。
由白光LED的正向伏安特性可知,当LED端电压超过其正向导通电压后,较小的电压波动都会导致工作电流的的剧烈变化,从而影响LED的正常使用,固LED宜采用恒流驱动方式。
采用PWM调光,其基本原理是保持LED正向导通电流恒定,而通过控制电流导通和关断的时间比例,即改变输入脉冲信号的占空比,使LED产生亮暗变化;并利用人眼的视觉残留效应,当LED亮暗变化频率大于120Hz时,人眼就不会感觉到闪烁,而看到是LED的平均亮度。
PWM调光的优势是LED正向导通的电流是恒定的,LED的色度就不会像模拟调光时产生变化。
输出的电流值计算公式为:
(1.1)
单片机的频率是20KHz,时钟周期为T为50μS。
LED驱动电路如图3.3
图3.3LED驱动电路图
L1为镇流电感,选取100μH,用于稳定通过LED的电流。
D1是续流二极管,当芯片内部MOS管截止状态时为储存在电感L1中的电流提供放电回路。
PWM脉冲信号则由单片机P1.4口产生,其高低电平决定LED的通断状态。
将定时器T0溢出中断定为1/2500秒(即400μS),每10次脉冲作为一个周期,即频率为250HZ。
这样,在每1/250秒的方波周期中,通过改变方波的输出占空比,从而实现LED灯的10级亮度调节,即LED亮度等级由每个周期内的高电平脉冲数目决定。
当高电平脉冲个数为1时,占空比为1/10,亮度最低,其调光原理如图3.4所示;当高电平脉冲为10时,占空比为1,LED亮度最大。
图3.4PWM调光原理图
3.3按键电路
该系统有3个选择模式,模式的切换需要按键完成,根据所需功能和要求,该系统采用的是4个独立式按键,分别为MODE键、UP键、DN键和ENT键。
MODE键功能为模式切换,ENT键为数字清零及部分画面切换功能,UP键起数字加作用,DN起数字减功能。
MODE键与单片机P20口相接,UP键与单片机P21口相接,DN键与单片机P22口相接,ENT键与单片机P32口相接,最终完成模式切换和数码管显示电压功能。
电路如图3.5所示。
图4.3按键电路图
4系统软件设计
4.1软件总体设计
对于该LED调光系统,软件部分主要包括系统初始化子程序、手动控制子程序、自动控制子程序、AD采集子程序、模式选择子程序等。
总体设计思路为:
首先进行系统初始化,主要是设置定时器的工作方式、赋初值及等。
在while循环中调用各个子程序,实现LED调光系统的各个功能。
LED调光系统主函数流程图设计为如图4.1所示。
图5.1系统主函数流程图
4.2手动调光程序设计
手动调光时,分为十档,分别输出不同的占空比对LED的电流进行控制,从而对LED的亮度进行调节。
其流程图如图4.2所示。
图4.2手动调光程序流程图
4.3自动调光程序设计
自动调光时,在一个子函数里调用控制LED亮度函数,再通过循环和延时实现一个LED亮度的变化(呼吸灯)。
其流程图如图4.3所示。
图4.3手动调光程序流程图
4.4AD采集程序
本次设计AD采集所用的位数为10位(便于计算,且比8位更精确),光敏电阻采集的信号经过放大器放大反馈给P10口,经过单片机的处理数码管显示其采样值,再送给LED灯,从而达到控制灯亮度的变化。
其流程图如图4.4所示。
图4.4AD采样程序流程图
4.5按键程序设计
4个按键操作主要在定时器0中断中完成。
进入按键扫描程序,如果有键按下就先延时去抖动确定有键按下,再判断是哪个键按下。
每个按键具体作用如下:
在模式1中,MODE键功能默认工作方式为手动控制;UP键为灯亮度的加控制;DOWN为灯亮度的减控制,长按MODE键则跳出手动控制。
在模式2中,按下MODE键则进入自动控制(呼吸灯),每100ms对应一个亮度变化,长按MODE键则跳出自动控制
在模式3中,按下MODE键进入AD采集模式,灯的亮度变化与环境光和光敏电阻反馈的信号有关。
长按MODE键则跳出AD采集模式。
按键程序流程图如图4.5所示。
图4.5按键程序流程图
5总结
此次设计LED调光系统,历时4周,克服了经验不足等诸多问题,最终得以完成。
在整个设计中,实现了手动调光,自动调光,基于环境变化调光等,基本功能全部实现。
拓展功能做得不是很好,只实现光敏自动调光,而对采集的光照数据进行处理,利用3σ准则剔除粗大误差,设计算术平均数字滤波器和手动遥控调光功能没能实现,主要因素是在这方面能力欠缺和时间不足。
调试过程中也遇到不少的问题:
先是拓展板的光敏电阻位置焊错,在拆卸的时候废了不少的劲。
软件调试过程中:
先是未加“STC12C5A60S2.H”头文件,导致出现大量的错误。
之后在按键模块各个分程序没有很好的衔接,导致数码管显示乱码,LED灯亮度没有变化,最后在老师和同学的帮助下最终很好地解决了上诉问题。
参考文献
[1]谭浩强.C程序设计[M].北京:
清华大学出版社,1991
[2]高海生,杨文焕.单片机应用技术大全[M].西南交通大学出版社,1999-06.
[3]徐爱钧,彭秀华.单片机高级C51应用程序设计[M].中国计量出版社,2001.
[4]马盅梅.单片机的C语言应用程序设计[M].北京航
[5]胡文金.单片机应用技术实训教程[M].重庆:
重庆大学出版社,2005.
致谢
通过4周的努力,终于完成了LED调光的设计及调试工作。
由于设计经验的不足在设计及调试中遇到了很多困难,但得到了老师和同学们的帮助,在此对他们表示感谢。
在软件编写与调试中也得到了老师们的指导,在此由衷地感谢他们。
由于本人的硬件设计和调试全在I509实验室完成,实验室的负责老师给我提供了设计地方和全部所需器材,非常感谢老师的帮助。
在整个课程设计过程中,我的指导老师杨波老师一直都是耐心的指导,至始至终都没有停止过对我的辅导,让我学到了许多知识,使我受益非浅。
最后,感谢学校、学院给予这样的一次机会,经历了整个设计过程,我的收获是丰富的,也对整个大学的知识进行了梳理,对所学专业有了更深刻的认识。
附录1系统电路图
附录2程序清单
//头文件
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineTHCO0xEE
#defineTLCO0x3F
#defineAD_CHANNEL0
unsignedintvx=10;
unsignedcharcodeDuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x76};//段选码
unsignedcharData_Buffer[6]={0,0,0,0};
unsignedcharHour=7,Min=0,Sec=20;//时钟时间
unsignedintflag=0;//1分时间到标志
bitAD_flag=0;
bitSOS_flag=0;
chartp=0;
unsignedintv;
unsignedinttemp1=600;
unsignedcharMode=0;
unsignedcharK=1;
bitflag1=0;
//vx=5在用于12864LCD的LED背光调整时上电为半亮度状态,可根据自己的用途及要求任意设定
sbitKEY_H=P2^2;
sbitKEY_L=P2^1;
sbitMODE=P2^0;
sbitP34=P3^4;
sbitP35=P3^5;
sbitP36=P3^6;
sbitP37=P3^7;
sbitP14=P1^4;
sbitP24=P2^4;
sbitP25=P2^5;
sbitP26=P2^6;
sbitP27=P2^7;
sbitP32=P3^2;
/*******************************************************************************/
voidPWM_init(void)
{//PWM初始化函数
CMOD=0x02;//设置PCA定时器系统时钟SYclk/2
CL=0x00;
CH=0x00;
CCAPM1=0x42;//PWM1设置PCA工作方式为PWM方式(01000010)8位pwm输出无中断
CCAP1L=0xff;//设置PWM1初始值与CCAP0H相同
CCAP1H=0xff;//PWM1初始时为0
//启动PCA定时器
}
/******************************************************************************/
voidPWM1_set(unsignedinta)
{//PWM1占空比设置函数
CCAP1L=a;//设置值直接写入CCAP1L
CCAP1H=a;//设置值直接写入CCAP1H
}
/*****************************************************************************/
voidDelayM(unsignedinta){//延时函数1mS/次(用于1T单片机)
unsignedcharn,i,j;
while(--a!
=0){
for(n=1;n>0;n--)
for(j=222;j>0;j--)
for(i=12;i>0;i--);
}}
/****************************************************************************/
/******************************************************************************/
voidmanual_control()//手动控制
{PWM1_set(vx*25);
//--------减调整---------//
if(KEY_L==0){
DelayM(20);//延时20毫秒消抖动
if(KEY_L==0){//如果20SM后KEY_L还是0状态则确认下调键是按下的
vx--;
if(vx<1){vx=10;}
//如果设定vx=10,将语句改为if(vx<1){vx=10;}则为单按键循环控制,则可去除加调整控制部分
}
while(KEY_L==0);//等待键松开
}
//--------加调整---------//
if(KEY_H==0){
DelayM(20);
if(KEY_H==0)
{
vx++;
if(vx>=11){vx=1;}
}
while(KEY_H==0);
}
}
/******************************************************************************/
voiddispaly1()
{flag=0;
Data_Buf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 LED 调光器 设计