基于单片机多功能台灯.docx

上传人:b****7 文档编号:10442754 上传时间:2023-02-11 格式:DOCX 页数:16 大小:176.75KB
下载 相关 举报
基于单片机多功能台灯.docx_第1页
第1页 / 共16页
基于单片机多功能台灯.docx_第2页
第2页 / 共16页
基于单片机多功能台灯.docx_第3页
第3页 / 共16页
基于单片机多功能台灯.docx_第4页
第4页 / 共16页
基于单片机多功能台灯.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

基于单片机多功能台灯.docx

《基于单片机多功能台灯.docx》由会员分享,可在线阅读,更多相关《基于单片机多功能台灯.docx(16页珍藏版)》请在冰豆网上搜索。

基于单片机多功能台灯.docx

基于单片机多功能台灯

 

电子设计大赛

基于单片机技术

调光台灯说明书

设计课题:

多功能台灯

专业(系)电气工程系

班级工控091

学生姓名刘元龙

指导老师陈勇宏

完成日期2011.06.05

目录

0引言2

1系统硬件电路设计3

1.1单片机主控系统3

1.2三级管驱动系统3

1.3时钟系统4

1.4蜂鸣系统4

1.5按键系统4

1.6电源系统5

1.7硬件电路图5

2系统软件设计6

2.1系统主程序7

2.2按键检测和处理程序7

2.3定时器中断程序7

2.4主要程序7

3实验结果12

4结论12

[参考文献]13

0引言

随着全球能源危机和气候变暖问题的日益严重,绿色节能已经成为全球普遍关注的话题,人们正通过各种途径寻找新的节能方式。

照明是人类消耗能源的重要方面,在电能消耗中,发达国家照明用电占发电总量的比例是19%,我国也达到12%。

随着经济发展,我国的照明用电将有大比例的提高,因此绿色节能照明的研究越来越受到重视[1]。

LED作为一种固态冷光源,是继白炽灯、荧光灯、高强度放电灯(如高压钠灯和金卤灯)之后的第四代新光源。

基于白光LED的固态照明,是一种典型的绿色照明方式,与传统光源相比,具有节能、环保、寿命长、体积小、安全可靠等特点,代表着照明技术的未来,并符合当前政府提出的“建设资源节约型和环境友好型社会”的要求。

可以预见不久的将来,LED必然会进入普通照明领域取代现有的照明光源[2]。

  目前,市场上采用白炽灯、卤素灯、荧光灯为光源的台灯普遍存在着低效率、高能耗、不易调光等缺点;至于寿命结束的含汞灯,一旦处理不当,将对环境造成严重危害;而且部分台灯产品功能单一,缺少亮度调节、时钟日历、温度显示等功能,无法适应现代家庭生活的实际需求。

为解决当前问题,本文设计了以AT89S51单片机为核心的多功能白光LED台灯系统,采用PT4115大功率LED恒流驱动方案,可实现对LED台灯的PWM调光控制;同时兼有时钟日历、声光闹钟、温度检测、液晶显示等多项功能。

在实现高效节能的同时,为家庭使用提供了极大的便捷。

1系统硬件电路设计

该多功能LED台灯系统采用20只5mm高亮白光LED灯珠为光源,以AT89S51单片机为主控芯片,由LED恒流驱动系统、时钟系统、蜂鸣系统、按键系统组成。

  该系统可具体实现LED台灯的10级PWM调光控制;数码管实时显示时钟;用户可通过按键系统实现对时钟、LED亮度的调节

1.1单片机主控系统

  本设计主控系统采用ATMEL公司的高性能AT89S51芯片实现,其P0口外接10K的上拉电阻,P0.0~P0.7同时作为数码管的段选P2.0~P2.7分别连接数码管的位选。

P1.0作为蜂鸣器控制端。

P3.3、P3.4、P3.6与P3.7作为S1~S4按键系统。

P1.2作为PWM信号的输出端并连接三极管9014上,用于PWM调光控制。

系统晶振电路由12MHZ晶振与两个30PF电容组成;复位电路则由S5按键、10K电阻与10uF电解电容构成。

  

1.2三级管驱动系统

本设计LED光源采用相互并联方式,共由20只5mm高亮度小功率LED灯珠组成;每只LED灯珠的压降约3.1V,工作电流约20mA。

由白光LED的正向伏安特性可知,当LED端电压超过其正向导通电压后,较小的电压波动都会导致工作电流的的剧烈变化,从而影响LED的正常使用,固LED宜采用三级管驱动方式。

极大的改善EMI,同时具有过温、过压、过流、LED开路保护等多种功能。

该驱动适合用于绿色照明LED灯的驱动电路,具有应用电路非常简洁的优点。

  通过9014,8050三级管的基极,可以方便的进行模拟或PWM调光。

由于模拟调光是直接改变流过LED电流的大小来实现亮度调节,除了亮度会改变以外,也会影响白光的质量,即不同电流下发出的白光存在色偏。

因此,本设计采用PWM调光方案,PWM调光的基本原理是保持LED正向导通电流恒定,而通过控制电流导通和关断的时间比例,即改变输入脉冲信号的占空比,使LED产生亮暗变化;并利用人眼的视觉残留效应,当LED亮暗变化频率大于120Hz时,人眼就不会感觉到闪烁,而看到是LED的平均亮度。

PWM调光的优势是LED正向导通的电流是恒定的,LED的色度就不会像模拟调光时产生变化。

PWM脉冲信号则由单片机P1.2产生,其高低电平决定LED的通断状态。

将定时器T1溢出中断定为1/2500秒(即400μS),每10次脉冲作为一个周期,即频率为250HZ。

这样,在每1/250秒的方波周期中,通过改变方波的输出占空比,从而实现LED灯的10级亮度调节,即LED亮度等级由每个周期内的高电平脉冲数目决定。

当高电平脉冲个数为1时,占空比为1/10,亮度最低,其调光原理如所示;当高电平脉冲为10时,占空比为1,LED亮度最高。

  

1.3时钟系统

  时钟系统采用AT89S51单片机中的一个定时中断,其频率为12MHZ的晶振。

1.4蜂鸣系统

  蜂鸣系统用于报警声以及按键提示音。

由单片机P1.0口控制PNP三极管8050的通断实现对蜂鸣器声音控制;通过延迟函数实现蜂鸣报警声‘滴’用于按键提示音。

1.5按键系统

  按键控制系统由S1~S5五个按键组成,分别为S1时设置键、S2分设置键、S3亮度减小键、S4亮度增加键。

S5用于复位键。

  

1.6电源系统

  本系统设计最大功率约1.6W,可采用电池或稳压电源多种方式供电。

由于系统光源采用20只LED灯珠并联组成,供电电源在5V电压范围内均可使LED灯正常使用。

但单片机供电系统采用三端稳压芯片7805,该线性稳压芯片正常工作输入电压与输出电压差值应至少高于2V,若差值过大会增加额外功耗。

同时,系统设计简洁灵活,可根据用户需求适当调整驱动电路参数,即可扩展LED照明功率,最大可至2W左右。

1.7硬件电路图

驱动电路

单片机原图

2系统软件设计 

该系统控制程序主要包含系统初始化程序、实时时钟处理程序、键盘检测与处理程序、闹钟中断以及定时器产生PWM程序构成。

2.1系统主程序

系统主程序主要包括系统初始化程序(包括I/O口初始化、、数码管的初始化、外部中断0与定时器T0设置)、按键检测和处理程序、时钟数据的读取与处理程序、报警的判断和处理程序、PWM调光处理程序等。

2.2按键检测和处理程序

按键控制系统由S1~S5五个按键组成,分别为S1时设置键、S2分设置键、S3亮度减小键、S4亮度增加键。

S5用于复位键。

S1、S2用于选择需要调整的时钟的(时分)这一参数,按下S1时加一,按下S2时分加一。

S3、4实现LED灯光亮度的10级调节,每按S3一次,LED亮度增大一级;当达到亮度最大时,再次按下则关闭LED灯光。

每次有按键按下,蜂鸣器都以短‘滴’声提示。

每按S4一次,LED亮度减少一级;当达到亮度最少时,再次按下则关闭LED灯光。

每次有按键按下,蜂鸣器都以短‘滴’声提示。

2.3定时器中断程序

为产生调节LED灯光亮度的PWM信号,定时器T0设置为工作方式0,即13位计数器定时,最多装载数值为213=8192个。

因为系统晶振采用12MHz,赋值使TH0=(8192-400)/32与TL0=(8192-400)%32,即可实现400μS的定时中断。

10次中断(即4mS)作为一个周期,通过调节每个周期内单片机P1.1(该控制口名称定义为LED_PWM)输出的占空比来产生PWM脉冲信号,程序设置对T0中断次数(即定义为T0_num)进行计数,以便判断一个周期到否;同时判断比较高电平脉冲个数(即定义为scale值,由调光键S6按下次数设置)用于实现不同亮度等级的调节。

在定时器T0中断服务程序中,首先T0重新装入定时为400μS的初值;定时器中断次数T0_num加1,判断一个方波周期到否,若到达,令T0_num归零,并将P1.1口输出电平置高(即LED_PWM=1);如果一个方波周期还没到,则与亮度等级scale值作比较,判断高电平脉冲个数scale到否,若到达,令P1.1口输出电平置低(即LED_PWM=0),否则继续保持P1.1口输出高电平(即LED_PWM=1);而后中断返回,等待下一次定时中断。

这样,P1.1口就产生了所需的PWM调光信号。

定时器生成PWM流程图所示。

2.4主要程序

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineS30xbf

#defineS40x7f

sbitS1=P3^0;

sbitS2=P3^1;

sbitbeep=P1^0;

ucharKeyValue;

ucharcodedisptab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

ucharcodebittab[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

ucharhour=12;

ucharmin=0;

ucharq;

ucharsec=0;

uintcount;

voiddisp_2();

ucharpwm;

ucharnum;

voiddleplay(ucharf);

voidbee();

voidinit_t0();

voidinit_t1();

voidkoycan();

voidshu();

voiddelay(uchari);

ucharScanKey()

{

ucharkey;

P3=0xff;

key=P3;

if(key==0xff)return0xff;

delay(30);

P3=0xff;

key=P3;

if(key==0xff)return0xff;

while(P3!

=0xff)disp_2();

returnkey;

}

voiddisp_2()

{

staticucharmun=0,CON=255;

while(CON--);

mun++;

mun=(mun%8);

P0=0xff;

P2=bittab[mun];

switch(mun)

{

case0:

P0=disptab[sec%10];break;

case1:

P0=disptab[sec/10%10];break;

case2:

P0=0xbf;break;

case3:

P0=disptab[min%10];break;

case4:

P0=disptab[min/10%10];break;

case5:

P0=0xbf;break;

case6:

P0=disptab[hour%10];break;

case7:

P0=disptab[hour/10%10];break;

default:

break;

}

}

voidmain()

{

P2=0XFF;

P0=0XFF;

pwm=16;

num=0;

P1=0X00;

init_t0();

init_t1();

while

(1)

{

koycan();

shu();

}

}

voidbee()

{

beep=0;

delay(100);

beep=1;

delay(100);

}

voiddelay(uchari)

{uchary,x;

for(x=i;x>0;x--)

{

for(y=120;y>0;y--)

{

}

}

}

voidshu()

{

P3=0xff;

KeyValue=ScanKey();

switch(KeyValue)

{

caseS3:

hour++;

break;

caseS4:

min++;break;

default:

break;

}

if(q==1)

{TR1=0;

P0=0X8C;

P2=0X24;

}

else

{TR1=1;

disp_2();

}

}

voidkoycan()

{

if(S1==0)

{

delay(30);

if(S1==0)

{

if(pwm!

=0x20)

{

pwm++;

delay(250);

delay(250);

}

else

bee();

}

}

if(S2==0)

{

delay(30);

if(S2==0)

{

if(pwm!

=0x01)

{

pwm--;

delay(250);

delay(250);

}

else

bee();

}

}

}

voidinit_t0()

{

TMOD=0X01;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

EA=1;

ET0=1;

TR0=1;

}

voidt0()interrupt1

{

TR0=0;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

num++;

if(num==33)

{

num=0;

}

if(num<=pwm)

{

P1=0xff;

}

else

P1=0X00;

TR0=1;

}

voidinit_t1()

{

TMOD=0X10;

TH1=0xfc;

TL1=0x18;

EA=1;

ET1=1;

TR1=1;

}

voidt1()interrupt3

{

TH1=0xfc;

TL1=0x18;

count++;

if(count==1000)

{

count=0;

sec++;

if(sec==60){sec=0;min++;}

if(min==60){min=0;hour++;}

if(hour==24){hour=0;}

}

}

 3实验结果

根据以上设计方案,本文制作了该款基于PWM调光的多功能LED台灯。

经调试后系统运行稳定可靠,基本可以满足家庭生活的使用要求。

系统工作时,最低功率(即LED熄灭状态)为0.28W;最大功率(即LED最高亮度状态)约为1.52W;同时,数码管显示时间准确。

4结论

本文多功能LED台灯系统采用AT89S51单片机为控制核心,运用PWM调光技术实现LED台灯的多级调光控制,并兼有时间功能。

该系统具有控制电路简单、亮度调节精确、功能丰富、实用便捷等优点,适合于现代家庭的实际需要。

可以预见,随着LED照明技术的不断发展完善,节能高效的LED将在家用照明领域发挥着日益重要的作用。

  

[参考文献]

[1]黎平.LED驱动电源研究[D].重庆:

重庆大学硕士学位论文,2007.

[2]毛兴武,张艳雯,周建军.新一代绿色光源LED及其应用技术[M].北京:

人民邮电出版社,2009.

[3]楼然苗,李光飞.单片机课程设计指导[M].北京:

北京航空航天大学出版社,2007.

[4]陈雷,赵艳军.基于PT4115的大功率LED恒流驱动的设计[J].灯与照明,2008.12:

31~34.

[5]郑久云,韩志刚,罗胜钦.白光LED的应用与驱动[J].现代显示,2009.8:

43~45.

[6]张军.AVR单片机应用系统开发典型实例[M].北京:

中国电力出版社,2005.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1