教室灯光自动控制系统嵌入式系统设计教材Word文档格式.docx
《教室灯光自动控制系统嵌入式系统设计教材Word文档格式.docx》由会员分享,可在线阅读,更多相关《教室灯光自动控制系统嵌入式系统设计教材Word文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
又由于近几年世界出现的能源危机,以及与日俱增的能源需求,因此,能源缺乏成为世界面临的严重问题,尤其对于我国这样的人口大国来说尤为重要。
在寻找替代品、提高能源利用率和节约能源等几种缓解能源危机的途径中,节能无疑是符合可持续发展的要求。
教室是高等院校学习和交流的场所,随着教室的扩建,对教室照明的需求也越来越多。
同时,高等院校为了便于学生之间进行相互动态的交流,通常都采用分时段开放式自由管理模式,这样对教室照明系统的管理就加大了难度。
由于缺乏对应的高效调配管理自动化系统以及有些学生节能观念淡薄,很多教室能源浪费十分严重,通常出现教室只有几个人,甚至无人时灯光还全部亮着,或者在光照强度满足学习要求时,照明系统还处于工作状态,造成了电能的大量浪费。
因此,提高教室照明系统效率显得至关重要。
1.2教室灯光自动控制系统的研究背景
随着社会经济和科学技术的发展,人类社会的进步越来越依赖于资源的开发与利用,然而与日俱增的能源需求和有限的资源数量形成了巨大的矛盾,能源短缺问题日益突出,成为一个国家经济发展的“瓶颈”。
在寻找替代品、提高能源利用率和节约能源等几种缓解能源危机的途径中,节能无疑是符合可持续发展要求。
英国城市大型彻夜灯光照明现象很少见,无论公司和政府部门,都没有虚浮华丽的所谓“照明工程”。
夜晚漫步在伦敦街头,看不到大面积光华淌泻与楼体通明的景观,所有照明都基本以不影响人们的正常生活节奏为准。
许多店铺橱窗的灯光在打烊后会全部关闭,有些店铺还采用定时关灯装置。
在政府住宅楼和公寓楼内,楼道里的公用灯也大多采用自动断电装置。
作为提高能源使用效率最重要的途径之一,德国政府努力推动能源公司实施“供热供电结合”,鼓励能源公司将发电的余热尽可能用于供暖。
2002年,德国颁布了促进“供热供电结合”的法规,根据这一法规,政府向实施该措施的能源公司,尤其是小型能源公司提供补助,帮助他们置办相应设备。
中国城市每年用于公共照明的能源支出高达280多亿,节能空间巨大。
其中路灯照明能耗占30%以上。
发展城市道路照明的同时,路灯以供街道照明以外,还大力兴建了不少景观照明工程,美化城市的夜景,但同时也带来了能耗的极大浪费。
中国十二五规划已经将城市绿色照明规划纳入重点,该规划除了强调控制污染和产品回收的问题,还着重强调节能降耗,节能新产品的设计等内容,说明我国已经对照明系统方面的节能十分重视,教室照明系统的研究正逐步发展。
目前,我国的照明用电约占世界总用电量的13%左右,采用高效照明产品代替传统的低效产品可节电60%-80%。
如今,北京正大力推行绿色照明工程,已推出上百万只绿色照明光源和部分节能电器。
另外,我国各类院校中,由于同学们的自觉节能意识薄弱,在光线足够强时也开着灯,上完课教室空无一人时灯还亮着的现象普遍存在,而且节能规划极为欠缺,教室的灯光控制完全由管理人员手工代替,教室极多,管理人员忙不过来,这样就造成不必要的电能浪费和经济损失。
对于国外关于教室灯光的自动控制设计,也有一定的发展和研究。
例如,丹麦在能源利用方面很成功,他们不断提供一些节能供热系统,尽可能有效的利用资源,给世界各地对能源的高效利用提供了很好的借鉴;
还有欧司朗—斯维尼亚公司不断的推出新型高输出的荧光灯,节约6%的总系统功率,并具有更高的光通量和平均光通量;
飞利浦照明公司推出的陶瓷金卤灯代替过去的卤钨灯,可节能60%。
种种迹象表明世界各国都在采取不同的方式来节约能源、节约电能。
第2章系统总体设计
2.1教室灯光自动控制系统组成
教室灯光自动控制系统主要由硬件和软件两部分组成。
硬件部分是设计的前提,是整个系统执行的基础,为软件部分提供程序运行的平台。
软件部分是对硬件部分所体现的信号加以采集、分析、处理,是实现所希望系统达到预期效果必不可少的一部分。
通过硬件与软件配合使用,并结合相应外界可能出现的干扰对其进行消除和改进,最终实现控制系统所希望实现的各项功能的智能照明系统。
2.2教室灯光自动控制系统的功能
教室灯光自动控制系统,以环境光线强度和人体存在作为主要输入参数,同时结合对AT89C51单片机的软硬件进行控制,可以实现自动控制室内灯光的开与关。
当环境光线充足时,无论有无人,教室灯光均不亮;
当环境光线较弱时,根据教室内人数决定打开灯的数量。
采用热释红外人体传感器检测人体的存在,采用光敏三极管构成的电路检测环境光的强度;
根据教室合理开灯的条件,系统通过对人体的存在信号和环境光信号的识别和智能判断,完成对教室照明回路的智能控制。
整体系统由人体传感器感应信号,再送入单片机进行处理,再由单片机控制控制教室灯光。
另外,为了防止学生学习时间过长而作息不规律的问题,还设置了时钟电路和超时报警电路,在LCD显示器上显示当前时间,当22点时会报警一次,提醒该休息了,延时20秒后蜂鸣器会自动关闭。
2.2.1教室灯光自动控制系统需要的模块
本系统主要包括五个模块分别是:
环境采集模块、热释电红外传感器模块、始终模块、LED显示模块、超时报警模块。
环境采集模块,利用按钮开关模拟光敏三极管,当按钮开关按下时,表示环境光很强,此时灯都不亮;
当按钮开关松开时,表示环境光变弱,此时灯亮。
热释电红外传感器模块,利用按钮开关模拟红外传感器检测室内人数,外界环境光较弱时,当人数在十人以下时亮一个灯,人数在十人以上时亮两个灯。
时钟模块,采用DS1302芯片控制,主要实现时分秒的显示。
LCD显示模块,主要实现的功能是显示系统时间和室内人数。
超时报警模块,为了更好地实现自动控制,特设超时报警电路,当系统达到夜间休息时间22:
00:
00时,蜂鸣器自动报警,延时20S后自动关闭。
2.2.2教室灯光自动控制系统的设计程序
此系统的软件设计主要包括环境光采集模块设计、红外传感器模块设计、时钟模块设计以及LCD显示模块设计,而环境光采集模块和红外模块是通过键盘来模拟的。
系统软件用C语言实现,源程序如下:
#include<
reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineREAD_SEC0X81
#defineREAD_MIN0X83
#defineREAD_HOU0X85
#defineREAD_DAY0X87
#defineREAD_ZHO0X8B
#defineREAD_MON0X89
#defineREAD_YEA0X8D
#defineWRITE_SEC0X80
#defineWRITE_MIN0X82
#defineWRITE_HOU0X84
#defineWRITE_DAY0X86
#defineWRITE_ZHO0X81
#defineWRITE_MON0X88
#defineWRITE_YEA0X8C
#defineWRITE_PROTECT0X8E
/*ucharcodetemp0[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
*/
ucharmiao,fen,shi;
ucharnumber;
sbitS1=P1^0;
sbitS2=P1^1;
sbitS3=P1^2;
sbitrs=P2^0;
sbitrw=P2^1;
sbiten=P2^2;
sbitrst=P2^5;
sbitclk=P2^7;
sbitio=P2^6;
sbitring=P3^5;
sbitled0=P1^2;
sbitled1=P1^3;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
voiddelay(uintk)
{
uinti,j;
for(i=k;
i>
0;
i--)
for(j=110;
j>
j--);
}
voiddelay1()
{;
;
}
/************液晶显示********************/
voidwrite_1602date(uchardate)
rs=1;
delay(5);
rw=0;
en=1;
P0=date;
en=0;
voidwrite_1602com(ucharadd)
rs=0;
P0=add;
voidinit_1602()
write_1602com(0x38);
write_1602com(0x0c);
//开显示,不显示光标,光标不闪烁
write_1602com(0x04);
//读或写一个字符地址指针不加一,不移屏
write_1602com(0x01);
//清屏
write_1602com(0x80);
//write_1602com(0x85);
//write_1602date(0x2d);
//write_1602com(0x88);
write_1602com(0x80+1);
write_1602date('
T'
);
write_1602com(0x80+2);
I'
write_1602com(0x80+3);
M'
write_1602com(0x80+7);
write_1602date(0x3a);
write_1602com(0x80+10);
write_1602com(0X80+0x40+1);
N'
U'
/*****************1302程序********************/
/*********ds1302写入程序*************/
voidwrite_1302(ucharaddr,uchardat)
uchari;
rst=0;
clk=0;
rst=1;
//发送地址
for(i=0;
i<
8;
i++)
{
clk=0;
ACC=addr;
io=ACC0;
addr>
>
=1;
clk=1;
//发数据
ACC=dat;
dat>
/*********ds1302读出程序*************/
ucharread_1302(uchartemp)
ucharreturndate,i;
delay1