基于51单片机火灾报警系统设计(7)

2025-06-27

第4章 火灾报警系统软件设计

4.1 软件开发环境

本系统摒弃了传统的汇编语言而采用C语言进行程序设计。因为C语言的描述由函数组成,是一种结构化的程序设计语言,所以更容易实现模块化,而且具有可读性好,易于移植等优点,同时还有汇编语言一样的位操作功能的硬件详细控制指令[29]。数据结构方面,可以使用结构体和数组,能够处理复杂的数据,可用于实时处理系统。

本系统的软件编程使用的是美国Keil Software公司出品的Keil C51,是51系列兼容单片机C语言软件开发系统。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能 体现高级语言的优势。

C51工具包的整体结构中,μVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经C51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对 目标板进行调试,也可以直接写入程序存贮器如EPROM中。

4.2 火灾报警系统程序设计

4.2.1主程序流程图

火灾报警系统控制器上采用80C51作为主控芯片,其主要功能包括:控制IO端口、逻辑判断处理、驱动外部电路、语音报警和A/D采样等,该部分是火灾报警系统智能化的集中体现。

为了便于系统维护,在火灾报警系统的软件设计中采用了模块化程序设计方法,系统各个模块的具体功能都是通过子程序调用实现的。既使得程序结构清晰,又便于以后进一步扩展其功能。本系统主要包括主程序、温度烟雾数据采集子程序、火灾判断与报警子程序等[ 4 ]。系统程序流程图如图4.1所示。

图4.1 程序流程图

主程序是一个无限循环体,其流程是:首先在上电之后系统的各部分包括单片机输出输入端口的设置、数据存储电路、外围驱动电路等完成初始化,接下来执行火灾报警系统的数据采集程序、火灾判断、报警程序。系统初始化后,80C51的P2.2为低电平,P2.1、P2.3、P2.4、P2.5为高电平,所以只有绿灯亮,红灯、黄灯不亮,蜂鸣器不报警。

4.2.2主程序初始化流程图

主程序初始化流程图如图4-2所示。这部分实现的功能包括各种I/O输入输出状态的设定、寄存器初始化、中断使能等。首先设定定时器工作方式,然后开

系统中断,以便响应中断定时,及时对气体浓度和温度进行采样。然后关闭蜂鸣器,开启绿灯,设置报警限初值。

开始 定时器初始开中断 关闭蜂鸣器,打开绿灯 N 是否保持报警初值 Y 返回 设定初值

图4-2 主程序初始化流程图

4.2.3数据采集子程序

数据采集是火灾报警系统中的重要环节。为了降低误报率,系统设计时对温度烟雾采用了两次采集、两次判断的方法。每次采集温度烟雾数据后,将数据存入单片机的寄存器,然后在火灾判断程序中,将采集的数据与设定的阈值进行比较,判断现场是否发生火灾。

具体流程是:系统和程序初始化后,驱动ADC0809的IN0对温度信号进行A/D转换,单片机接受转换好的数据,存入寄存器,由INT1中断服务程序完成;系统延时10ms,驱动ADC0809的IN1对烟雾信号进行A/D转换,转换完成后存入寄存器。系统延时50ms,进行第二次温度烟雾信号采集,将转换好的数据存入寄存器中。单片机每次驱动A/D转换后等待外部中断1,当ADC0809的EOC端变为1时,即中断到来,说明A/D转换已经完成,通过中断服务程序读取转换得到的数据。

由于设计采用的是模块化设计,系统实现报警功能是通过调用子程序实现的。在数据采集子程序中,一次温度烟雾信号采集延时10ms,是让ADC0809准

备好进行下一次信号转换。当系统采集2次温度烟雾信号后,转换好的数据存入单片机的寄存器中,系统再调用火灾判断子程序。

系统温度烟雾信号采集程序流程图如图4.3所示:

图4.2 数据采集流程图

在火灾自动报警系统的程序设计中使用了延时程序,延时10ms的程序如下: void delay_10ms (uint i) {

while (i--) {

uchar i , j , k ; for (i=5 ;i>0 ;i-- ) for (j=4 ;j>0 ;j-- )

for (k=248 ;k>0 ;k-- ) ; } }

4.2.4火灾判断与报警程序

1.火灾报警数据处理方法

固定门限检测法是使用最早,且应用最广泛的火灾探测方法,优点是计算量小且易于实现,其原理是根据火灾探测器的信号幅值作为火灾报警的依据,并与固定的阈值进行比较[16]:当信号幅值超过报警阈值时,则发出报警,否则解除报警[17]。

火灾报警系统中使用的是温度传感器AD590和烟雾传感器TGS202,烟雾传感器输出电压v与烟雾浓度p关系为:v=-0.3p+5.6,温度传感器使用的灵敏度是-5.5mV/℃。在本设计中报警温度设为57℃,烟雾报警浓度设为3.2%英尺(参照市面销售的火灾报警器温度烟雾的报警临界值)。经过换算可得出温度烟雾传感器输出火灾报警临界电压值为:

V烟临=4.6V,V温临=0.72V

2.火灾判断与报警

系统对温度和烟雾进行了两次数据采集与判断,每次信号采集后根据得到的数据与设定的阈值比较,当温度≥57℃,温度异常,置寄存器变量a为1,否则为0;当烟雾浓度≥3.2%,烟雾浓度异常,置寄存器变量b为1,否则为0。综合两次温度烟雾信号的采集,根据温度和烟雾的寄存器变量a和b的状态,判断现场情况:2个寄存器变量均为0,表示情况正常;2个中仅有1个为1,表示情况异常;2个均为1,表示有火灾发生。系统对现场进行报警判断后,间隔20s后(通过系统的延时程序实现),再一次采集现场的温度烟雾信号进行判断,即每一次语音报警持续20s,直到系统做出下一次判断结果。

当系统状态为00时,表示正常,80C51的P2.2口变成低电平,绿灯亮; 当系统状态为01或10时,表示异常,P2.3口变为低电平,P2.1口变为低电平,黄灯亮,蜂鸣器报警;

当系统状态为11时,表示发生火灾,P24口变为低电平,P2.1口变为低电平,红灯亮,蜂鸣器报警。


基于51单片机火灾报警系统设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Grizzly-Core Framework

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219