智能安全家居软件设计
摘要
电力电子技术是20世纪后半叶诞生并迅速发展的一门崭新的科学技术。当时有人就曾经预言,电力电子技术和运动控制联系一起,形同人的肌肉和四肢,使人能够运动和从事劳动。时至今日,当电力电子技术遇上计算机控制技术,两者孕育出多元化、综合化、电控化、网络化以及主动报警的智能安全家居,这就是21世纪住宅安全的新概念——更高度安全性、更信息化、更自动化。本文设计的智能安全家居系统由STC89C52RC单片机搭配的单片机最小系统电路,依靠烟雾传感器、人体红外传感器、蜂鸣器等主要传感器件构成。基本能实现热释电元件REB和红外传感信号处理器BISS来检测人体红外检测作防盗监控、有毒气体浓度检测,达到防盗防火的功效,配上数字温度传感器DS18B20检测室内温度,数码管显示和蜂鸣器实现警报功效。本设计基础简单的硬件电路和软件程序紧密配合、协调一致,简单、方便、可靠的操作便能满足保护家居安全,由此赢得更为贴近大众设计理念。从而能够促使使用者外出或午夜作息时,只要位于门、窗户、大厅等重要位置设定安全线并且给温度传感器和烟雾传感器预设值,一旦监测数据超越这些临界值时,相应的警报、应急措施就能第一时间动作。
关键词:电力电子技术;单片机;家居安全
Abstract
Powerelectronictechnologyisabrand-newscienceemergedanddevelopedrapidlysincethesecondhalfofthe20thcentury.Immediatelysomeonehadpredictedthatitcouldcontributetolaborengagementbyconnectingwithmotioncontrolwhichlikehuman’smuscleandfourlimbs.Untilnow,the GATE=0时,仅用运行控制位TR0或TR1控制寄存器的值来控制定时器或计数器,当TR0为0时,停止工作;TR1为1时,启动工作。
C/T为定时/计数模式选择位,具体情况如下:
C/T=0时为定时功能,C/T=1时为计数功能。
对于M0、M1方式选择的表示,具体如表4-2所示。
在程序编写中,当需要运用到定时计数器时,首先必须在主函数,即程序刚运行的时刻对于定时计数器进行程序初始化,确保IE寄存器中的中断总允许位EA=1,发出中断请求的中断源对应的中断请求标志位为“1”,以及该中断源的中断允许位为“1”,完成以上基本必要条件后,对TMOD控制寄存器进行设定和定时/计数初始值进行赋值后,在无同级或更高级中断正在被服务时候,就能进入中断服务子程序。
但本次设计的过程当中,考虑到优化程序的简易特性以及实际应用的必要性,在设计编写程序的过程中,最终只选取了定时计数器当中的定时功能。对于定时中断没有运用上。当对定时器进行需求的定时时间初始值赋值后,定时器开始进入工作,溢出时,其定时器的溢出标志位就从低电平跳跃到高电平,手动还原。借用定时器的这一特殊功能,达到长/短延时的准确理想的效果。具体程序如下:
voidSys_Init()//定时计数器初始化赋值部分//
{
TMOD=0x01;
TR0=1;
}
voidDelay(ucharcount)//定时计数器用做延时功效部分//
{
TF0=0;
TH0=0xFF;
TL0=0xFF-count;
TR0=1;
while(!TF0);
}
4.3.2数码管显示程序
当从温度传感器读取到准确的数值时,返回到单片机内作为数据采集,并以数码管显示的方式表达出温度的数值。数码管的显示采取动态显示方式,配以延时程序的辅佐,利用人类视觉余光残影的原理,单片机P2.6、P2.7进行数码管位选,P0各端口进行段选。具体程序如下:
voidLED_Display()
{
uchartmp;
tmp=g_wTemperature;
if(tmp99)
{
tmp=99;
}
DisplayHigh=1;
DisplayData=NumTable[tmp/10];
Delay();//延时us
DisplayData=0;
DisplayHigh=0;
DisplayLow=1;
DisplayData=NumTable[tmp%10];
Delay();//延时us
DisplayData=0;
DisplayLow=0;
}
4.3.3初始化DS18B20操作
对DS18B20进行初始化操作只需要按照其操作手册以及其初始化时序图4-5的指示进行,先将数据线置高电平“1”,然后延时尽可能短的时间后,再将数据线拉回低电平“0”,再进行延时到微秒范围内的时间,重新再将数据线拉到高电平“1”,再进入延时等待。若初始化成功则15到60微秒时间之内产生一个由DS18B20所返回的低电平“0”。具体编写程序如下:
voidDS18B20_Init(void)
{
unsignedcharexist=0;
DQ=1;//DQ复位
Delay(5);//稍做延时
DQ=0;//单片机将DQ拉低
Delay();//精确延时大于us
Delay();
DQ=1;//拉高总线
Delay();
Delay();
DQ=1;//DQ复位
}
4.3.4DS18B20写操作
对DS18B20进行写操作同样按照其操作手册以及写操作时序图4-6的指示进行,先将数据线先置为低电平“0”,延时时间15微秒,按从低位到高位的顺序发送字节(每次只发送一位),延时时间45微秒,将数据线拉到高电平,重复以上操作,直至全部字节全部发送完为止,最后将数据线拉回高电平即可。具体编写程序如下:
voidDS18B20_WriteOneChar(unsignedchardat)
{
unsignedchari=0;
for(i=8;i0;i--)
{
DQ=0;//拉低15us之内应将所需写的位送到总线上
_nop_();_nop_();_nop_();_nop_();_nop_();
DQ=dat0x01;
Delay(30);//DSl在总线拉低后15-60us间对总线采样
DQ=1;
dat=1;
}
Delay(5);
}
4.3.5DS18B20读操作
对DS18B20进行读操作同样按照其操作手册以及写操作时序图4-7的指示进行,先将数据线拉为高电平“1”,延时1微秒后将数据线拉回低电平“0”,数据线拉低至少保持一微妙的时间,重新将数据线拉高,然后延时15微秒,读取数据线的状态,数据在下降沿出现后15us内有效,得到1个状态位,并进行数据处理,延时30微秒,将数据线重新拉回到高电平,对数据进行处理。具体编写程序如下:
unsignedcharDS18B20_ReadOneChar(void)//读一个字节
{
unsignedchari=0;
unsignedchardat=0;
for(i=8;i0;i--)
{
DQ=1;
Delay(1);
DQ=0;//拉低数据线必须至少保持1us
_nop_();_nop_();_nop_();
DQ=1;//给高脉冲信号
_nop_();_nop_();_nop_();_nop_();_nop_();//数据在下降沿出现后15us内有效
if(DQ==1)
{
dat
=0x80;
}
Delay(30);
}
DQ=1;//DQ复位
return(dat);
}
5系统调试与性能分析
5.1系统调试
5.1.1STC89C52RC最小系统调试
将设计好的STC89C52RC最小系统的架构元件一一对应焊接到万能板上,然后把定时中断程序烧录至STC89C52RC芯片内,利用连接发光二极管和轻触开关的简易理想检测元件,通过检测I/O口状态,调试、验证定时器溢出中断、外部中断情况。
定时器延时调试时,发现并未理想的进入延时服务执行程序部分,而是直接进入延时部分之后。进行反复排查、试验,发现程序编写过程当中,并没有在程序初始化设定时,对定时溢出标志位TF0进行设定,可能前期单片曾经进入并达到过定时溢出的时刻,由此应加入“TF0=0;”语句进行修正。
5.1.2数码管显示调试
P2.6、P2.7控制数码管的位选,将数据送到P0口进行段选,动态显示数码管。
开始数码管显示会出现不正常现象。经分析验证,会出现没有消隐的原因。因此在每位数码管显示延时完后,把P0数据段送高电平,保证下一位数码管不受上一位数码管的数据影响。
偶然时间范围内显示会出现亮度不足或闪烁跳动的现象,调试动态延时时间,使达到最好显示效果。
5.1.3检测温度调试
将DS18B20的初始化、写操作、读操作稍微调整编写成一个完成的检测温度主程序,烧录至STC89C52芯片内,并连接好DS18B20与STC89C52RC芯片之间的电路。
调试过程中,STC89C52芯片内的开始延时程序定时不精确,未能理想地达到符合DS18B20的时序要求。使用STC89C52芯片内部的定时器作精确的定时延时效果,则不可避免的因为其中的一个检测元件作延时效果而浪费一个宝贵的定时器中断功能,充分合理运用定时器,利用该定时器应用在定时延时的功能上发挥理想功效。因此继续修改延时程序和延时参数,并充分使用KeilC51软件仿真调试功能,时刻查看延时时间,不断地尝试修改调试,直至符合DS18B20的时序要求,将读到温度显示在数码管上,记录数据,如表5-1所示。
表5-1温度记录
5.1.4检测人体红外调试
人体在热释电元件REB附近活动,利用万用表的电压档测出红外传感信号处理器BISS输出的电平,并用万用表的电压档检测单片机的P2.0所读入的电平,从而作防盗模式判断的依据。
5.1.5检测有毒气体调试
用打火机喷出丁烷模拟室内有毒气体浓度过高,充分比较MQ-2输出的模拟值,然后电压比较器输出的电平再输入到单片机,编程检测高低电平或利用万用表的电压档检测单片机P1.0所读入的电平。
5.2性能分析
本设计根据指导老师给出的任务书设定的功能任务,基本达到智能地保护家居安全的性质。当人员外出或夜晚睡觉时,利用热释电元件REB及红外热释电处理芯片BISS在一定范围内检测到人体红外时发出警报;实时检测室内温度,精度值设定为0.1摄氏度,若发生火灾事故时,温度升高,超过预设值则立马发出警报声响;有煤气或其他有毒气体泄露时,空气中有毒气体的浓度升高,检测室内的煤气、液化石油气、天然气、烟雾等有毒气体的浓度,当超过危害人体的浓度时,发出警报并打开排气扇,保障人生财产的安全。
对于系统的性能判定,首先通过事先加入事先调试好的准确电源对元件的完好、接线状态排查,确认一切正常。再进行动态检测与调试步骤,实时记录系统所检测的实时数据,并对故障问题运用信号追踪法以及对比法对系统进行复查、排除。最后实现系统基本能准确无误地实现以上相对应的家居安全保护措施,而且操作简易,适合一般人士的操作、检验,符合合理、简易、稳定的系统设计原则。
6结语
随着集成电路和计算机技术的迅速发展,传统的家居安全模式逐渐被智能安全家居的模式所取缔。所谓智能安全家居就是把现代信息技术融入家居安全工程中,使家居安全与智能化、信息化结合起来。当我们对智能家居感到陌生的时候,智能家居已经悄悄来到我们的身边,智能化家居设计已经成为人们家居设计的一个新趋势。
本文设计的智能安全家居系统,通过根据设计任务提出了论证,合理选择理想的系统核心元件,符合经济、使用、简易操作的大众化设计理念。通过运用STC89C52RC单片机作为控制核心,以其他各种传感器对室内家居环境进行检测控制。以热释电元件REB和红外传感信号处理器BISS监控外物闯入,烟雾传感器MQ-2检测室内室内有毒气体的浓度,数字温度传感器DS18B20检测室内温度,实现了防火、防毒、防盗的功能,为人们提供具有安全、智能化的居住环境。不足之处:缺少一个良好的人际界面,检测人体红外的距离仍有待提高,系统应用I/O端口较少,为系统扩展带来一定的麻烦。
总结整个设计实践过程,通过对系统的硬件设计,软件编程,仿真调试三大方面的实践,使本人具备了较强的动手能力、设计能力以及团队协作精神,同时开拓了思维与知识的界面。整个过程充分地将理论知识与个人实践结合起来,检验了自身的个人技术、知识、能力的真实情况,明白到单单依靠平常的课堂时间的学习时间以及学习到的知识内容,是完全无法简单、顺畅地设计出一个合格的作品,证明目前自己的知识饱和度极其欠缺,必须更进一步地在以后的社会工作当中依旧保持虚心求学的态度,不断提高自身的综合素质和技术技能的水平,这样才能有资格完全在如今这个激烈的社会竞争当中力争立足之地,才能得以实现自身的个人价值。
转载请注明:http://www.abuoumao.com/hykh/3608.html