图4.5 整体硬件实物图
5 火灾报警系统软件设计
5.1 系统软件设计
根据任务书的要求,进行了该系统软件构架的设计,根据硬件部分设计已经知道,要实现的模块功能。根据硬件电路设计,对AT89C52芯片I/O口管脚的分配,采集温度的端口、采集烟雾浓度的端口、AD模拟转换通道选择端口、GSM900串口通信端口RXD/TXD以及蜂鸣器声光报警连接的端口。并根据所需用的端口进行设计,分配好内存存储空间,以及定时器中断和外部中断的正确使用。
而该系统,是以模拟火灾发生的情况,通过实时数据处理的内部操作,信号处理,信号发送和传输。单片机,内部运行每一条指令的运行时间是微秒级别,
26
所以,内部处理一个循环检测,只需要很短的时间就可以完成一次数据采集,以及发送数据的这个过程。
设计该系统的目的是用于普通家庭住宅区的室内温度、烟雾情况监测。因此,要求该系统具有实时更新、远距离传输报警信息。这样就要求单片机的检测运行速度不可以太慢,而89C52单片机的8位处理速度,对于这样的一个系统已经足够。同时,为了能够远距离向人们传输信号,则选择了GSM900的无线传输功能,满足接入这个网路,插入SIM卡就可以根据自己设定的模式进行发送信息或者拨打电话通知人们可能出现的火灾情况。
而由于52单片机有8K字节的程序存储空间,512字节的存储变量,以及2K的EEPROM可以在掉电之后保存数据,并在下一次上电之后显示上一次的数值。
对于火灾报警系统软件的设计,编写软件流程图,分为以下三个模块: (1)温度传感器数据采集,首先对DS18B20进行相应的初始化设置,读取DS18B20,开始启动转换模式,发送转换指令,数据按位读取,并以字节方式储存,转换结束后读取出实际温度值,同时开始下一次的数据转换。转换过程十分短暂。设置起始转换指令,DS18B20传感器的启动转换以及转换完成都是由程序内部执行转换成为。转换过程数据是先按位(BIT)转换,8位一个字节(BYTE),
27
转换结束后,把数据写到LCD液晶显示屏上显示出来。软件流程5.1所示。
5.1 温度转换程序框图
(2)烟雾传感器烟雾检测,MC14468离子检测芯片是一款内部逻辑芯片,Detect out 脚输出有效数据,输出数据通过ADC0809 AD采样会8路转换,根据基准电压Vref+=5V,Vref-=0V,转换精度为5/2^8=0.00015V。MC14468会有内部欠压保护,以及短路保护,在一定程度上减少了外界对它的干扰,也使得采集的数据具有较好的精度和准确性。烟雾浓度的变化最终会在LCD液晶上面显示出来,由于数据采集过程是一个实时的过程,因此,在LCD上观察到的数据也就是周围环境中真实的烟雾浓度情况。烟雾采集执行过程流程图如下5.2图所示。
28
图5.2 烟雾离子浓度采集程序框图
(3)无线报警,以发送信息指令的方式,GSM900A无线发射系统,在频率上的设置要保持和单片机的频率一致,并用定时方式2, TL0/TH0来设置串口的波特率时钟,才可以保证GSM900A在能够握手成功,实现通讯,同时,根据温度传感器以及烟雾传感器采集的数据,单片机作出判断后,并决定是否开启GSM,并发送开启指令,SIM卡无线通讯开启,并选择将要发送信息或者拨号的电话号码。
SIM900A通讯方式采用串口(UART)本次设计的火灾报警系统,是选择TTL电平作为通讯接口,通过对比MAX232电平接口,由于TTL电平的电路简单,所需的元器件也少,成本较低,而MAX232搭建电路比较复杂,同时也会受旁路电容的影响,综合考虑之下,选择TTL电平。
而标准的AT指令,在本次设计中主要用到的相关指令, AT+CMGF=1,设置文本PDU模式。控制该指令用于查询SIM卡的状态。AT+CSCS=GSM,设置缺省字符集,可用于发送英文短信。AT+CMGS=“10086”,该指令可用设置要发送信息的
29
手机号码,把“10086”改为相应的手机号码就可以了。在数据最后发送的时候,转为十六进制的方式,也发送指令 0X1A。而在发送的过程中,需要注意的是等待延时问题,发送等待下一条指令的时间过长或者太短都是会造成干扰。无线传输流程如下图5.3所示。
\
图5.3 GSM900A发送短信
5.2 软件程序开发
使用Keil uVision4作为编程开发软件, uVision IDE集成的开发环境之下,支持ARM C/C++编译。在集成开发环境下,可以对编译程序进行调试,并支持部分芯片protues在线仿真调试。
30