基于单片机的火灾报警器设计

更新时间:2024-06-23 10:07:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

设计题目:基于单片机的火灾报警器设计

课程设计

课程设计任务书

专业:电子信息工程 学号:4091426 学生姓名(签名):

设计题目:基于单片机的火灾报警器设计

一、设计实验条件

微机实验室

二、设计任务及要求

1. 根据题目要求进行资料收集及监测方案设计; 2. 主要功能要求:(1)实时检测至多8个监测点的环境温度、烟雾浓度等因素变化,

以判断是否出现火警;(2)判定某监控点出现火警时进行声光报警,并显示此监控点编号;(3)能手动报警和取消报警;(4)能手动进行系统检测;(5)监控点数目可以通过键盘设置。 3. 撰写课程设计说明书;

三、设计报告的内容

1. 2. 3. 4. 5.

设计题目与设计任务(设计任务书) 前言(绪论)(设计的目的、意义等)

设计主体(各部分设计内容、分析、结论等) 结束语(设计的收获、体会等) 参考资料

四、设计时间与安排

1、设计时间: 2周

2、设计时间安排:

熟悉实验设备、收集资料: 2 天

设计图纸、实验、计算、程序编写调试: 9天

编写课程设计报告: 2天

答辩: 1天

目 录

1 绪论 ............................................................. 1 1.1 课题研究的背景和意义 ........................................... 1 1.2 国内外的研究现状 ............................................... 2 1.3 本文内容的结构安排 ............................................. 3 2 火灾报警系统整体方案设计 ......................................... 4 2.1火灾产生原理及过程 .............................................. 4 2.2系统总体方案设计 ................................................ 6 2.2.1 系统硬件总体构架 ............................................. 6 2.2.2 系统软件总体构架 ............................................. 6 2.3系统主要器件的选择 .............................................. 8 2.3.1 火灾探测器的选择 ............................................. 8 2.3.2 单片机的选择 ................................................ 15 3 火灾自动报警系统硬件设计 ........................................ 16 3.1 复位电路与晶振电路 ............................................ 16 3.1.1晶振电路 ..................................................... 16 3.1.2 复位电路 .................................................... 16 3.2 传感器信息采集电路 ............................................ 17 3.3 声光报警显示电路 .............................................. 18 3.4 系统控制电路 .................................................. 19 4 火灾报警系统程序设计 ............................................ 20 4.1软件开发环境 ................................................... 20 4.2火灾报警系统程序设计 ........................................... 21 4.2.1数据采集子程序 ............................................... 22 4.2.2火灾判断/报警子程序 .......................................... 23 4.2.3控制系统子程序 ............................................... 25

5 总结 ............................................................ 26 5.1 总结 .......................................................... 26

5.2 展望 .......................................................... 27 附录1 系统程序 .................................................... 29 附录2 系统原理图 .................................................. 38 参考文献 .......................................................... 39 致谢 .............................................................. 40

东北大学2012届毕业设计说明书

1 绪论

1.1 课题研究的背景和意义

在各种灾害中,火灾是最经常、最普遍地威胁公众安全和社会发展的主要灾害之一。火灾是世界上发生频率较高的一种灾害,几乎每天都有火灾发生。据联合国“世界火灾统计中心(WFSC)2000统计资料”,全球每年大约发生火灾600万至700万次,全球每年死于火灾的人数约为65000至75000人。其中,欧美地区发生的火灾较多,死亡人数却相对较少,这与欧美发达国家的生活水平以及消防技术和设施有关;相比较而言,亚洲地区发生火灾次数较少,但死亡人数较多,这与亚洲经济发展程度不高、消防设施不完善等因素有关。据统计,我国70年代火灾年平均损失不到2.5亿元,80年代火灾年平均损失接近3.2亿元。进入90年代,特别是1993年以来,火灾造成的直接财产损失上升到年均十几亿元,年均死亡2000多人。随着经济和城市建设的快速发展,城市高层、地下以及大型综合性建筑日益增多,火灾隐患也大大增加,火灾发生的数量及其造成的损失呈逐年上升趋势。一旦发生火灾,将对人的生命和财产造成极大的危害[1]。

严峻的事实证明,随着社会和经济的发展,社会财富日益增加,火灾给人类、社会和自然造成的危害范围不断扩大,它不仅毁坏物质财产,造成社会秩序的混乱,还直接危胁生命安全,给人们的心灵造成极大的伤害。残酷的现实让人们逐渐认识到监控预警和消防工作的重要性,良好的监控系统和及时的报警机制可以大大降低人员的伤亡,为社会减少不必要的损失[2]。火灾自动报警系统(FAS)就是为了满足这一需求而研制出的,并且其自身的技术水平也在随着人们需求的不断地提高,在功能、结构、形式等方面不断地完善。

火灾自动报警系统能迅速监测火情,可发现人们不易发觉的火灾早期特征,可将火灾带来的生命财产损失降到最低限度。火灾发生的早期,会使得燃烧物质分解,析出大量的有毒气体CO,人们可能在毫无察觉火情的情况下就发生了CO中毒,从而无力逃生,火灾自动报警系统可监测到CO浓度的变化,为人们提供CO浓度超标报警信息,通知人们及时疏散[3]。火灾自动报警系统可作为城市消防系统的单元,通过城市消防专用网与城市消防报警中心联网,及时将报警信息传递到消防报警中心,城市消防报警中心会自动查找到火灾发生的位置,并为消防

第1页 共37页

东北大学2012届毕业设计说明书

队员制定消防路线图,以便消防队员可以迅速抵达火灾地点[4]。火灾自动报警系统能对火灾进行实时监测和准确报警,有着防止和减少火灾危害、保护人身安全和财产安全的重要意义,有着很大的经济效益和社会效益。 1.2 国内外的研究现状

根据现代战争的突发性、立体性和区域不确定性,使攻防界线模糊,作战方向多变,战火灾自动报警系统已有百余年的发展历史,19世纪40年代美国诞生的火灾报警装置标志着火灾自动报警系统首次进入人们的视野[5]。1890年在英国,感温式火灾探测器研制成功并应用于火灾探测系统,标志着火灾自动报警系统的发展走上正轨[6]。此后,随着世界科技取得了突飞猛进的进步和各种新兴技术的出现和发展,火灾监测技术也相应迅速发展,各种类型的火灾探测器相继问世,并日臻完善,火灾自动报警系统也在此基础上逐渐地蓬勃发展起来,其发展过程可以分为以下几个阶段:

第一阶段,从19世纪40年代至20世纪40年代,火灾报警系统处于发展的初级阶段,采用的探测器主要是感温式的探测器,它通过采集温度信号,然后判定是否超出设定的阂值,从而判断是否有火灾发生。这一阶段,火灾报警系统简单,仅靠单一的温度参量进行火灾判断。但是它易受环境中其他干扰源的影响,灵敏度低,响应速度慢,无法判断阴燃火灾,也无法满足智能化火灾报警系统的要求。

第二阶段,20世纪40年代末,瑞士物理学家 Emst Meili研究的离子感烟探测器推出以后,引起了人们对离子感烟探测器的重视,随后感烟探测器得到广泛应用,并逐渐占据了绝大部分市场,迫使感温式探测器退居其次;到70年代末,光电式感烟探测器在光电技术的基础上发展起来,并很快得到大力发展,它的使用寿命长,抗干扰能力强,没有离子感烟探测器的放射性问题。在这一阶段,火灾报警系统普遍采用多线制布局方式,布线、调试、系统可靠性是系统发展的瓶颈。

第三阶段,20世纪80年代初期,总线型火灾报警系统开始兴起,在火灾报警领域中迈出了一大步,并得到了较普遍的应用。它使得布线工作量显著减少,安装调试更加容易,更能精确报警定位。但是这一时期的火灾报警系统的智能化

第2页 共37页

东北大学2012届毕业设计说明书

水平不高,采用有线连接对工程要求高。

第四阶段,从20世纪80年代中后期开始,随着计算机技术、控制技术、集成电路技术、传感器技术及智能技术的快速发展,火灾自动报警系统步入智能化时代,智能化火灾报警系统迅速发展起来,各种智能型的火灾自动报警系统相继出现。模拟量可寻址技术的应用使得火灾报警系统的安全性、精准性和智能性有了很大提高,在火灾自动报警系统发展史上具有里程碑的意义[7]。

近年来,采用无线通信方式的火灾自动报警系统在国外悄然兴起。这种系统引入了无线电通信技术,利用无线通信方式代替传统的有线通信方式,将大多的电器装置通过无线连接方式进行信息传输与控制,适用于各类建筑和场所。无线火灾自动报警系统起初仅用于特殊场合,如博物馆、名胜古迹等不宜布线的场合,而且其价格也比较高[8]。随着科技进步和元器件成本的降低,无线火灾自动报警系统的研发和生成成本也随之降低,它在性能和价格上都具有很强的竞争力,其市场潜力已经崭露头角[9]。

在我国,采用的无线通信方式的火灾自动报警系统日益受到重视。由于其具有安装简便、对建筑物无损坏作业、灵活性好,易于扩展等优点,适用于许多场合,如名胜古迹、体育馆、博物馆、展览中心、处于施工阶段的建筑物、医院等。火灾自动报警系统的智能性主要体现在火灾判决和统筹管理方面,一般分为分散式、集中式和分布式,分散式系统由非智能型控制器若干智能型探测节点组成,由探测节点完成火灾状态的判断;集中式系统由智能型控制器和若干非智能探测节点构成,探测节点仅将火灾参量传送给控制器,由控制器智能地判断火灾状态;分布式系统的控制器和探测节点均为智能型,也是今后火灾自动报警系统的发展方向[10]。

1.3 本文内容的结构安排

基于社会和经济方面的需求,本课题旨在开发一个能够对监测点实时监控、报警的智能火灾报警系统。智能型火灾报警系统是一个集信号检测、传输、处理、报警于一体的系统。随着经济和城市建设的快速发展,城市高层、地下建筑以及大型综合性建筑日益增多,火灾隐患也大大增加,火灾的数量及其造成的损失呈逐年上升趋势,市场上迫切需要一种容量大、可靠性高、使用简单的智能型火灾

第3页 共37页

东北大学2012届毕业设计说明书

报警控制系统。该火灾报警系统是以AT89C52单片机作为控制中心,接受、处理火灾探测器输出的烟雾浓度信号、温度信号,并进行声光报警。

本文的结构安排如下:

第1章:绪论。主要介绍课题的研究背景和意义,介绍了火灾报警系统的发展状况。此外,介绍了论文的主要内容及章节安排。

第2章:介绍了火灾探测原理,给出火灾自动报警系统的总体设计构架,分别给出硬件和软件的整体构架,并给出系统设计中的主要器件的选型。

第3章:火灾自动报警系统硬件设计,详细介绍了单片机系统基本电路、传感器信息采集电路、声光报警显示电路及系统控制电路,并给出相应的设计原理图。

第4章:火灾自动报警系统监控程序设计,介绍数据采集子程序、火灾判断/报警子程序和系统控制子程序等。

第5章:对本文工作进行总结,并对火灾报警器的发展前景进行展望。

2 火灾报警系统整体方案设计

2.1火灾产生原理及过程

火灾是一种失去人为控制的由燃烧造成的灾害,产生火灾的基本要素是可燃物、助燃物和点火源。可燃物以气态、液态和固态三种形态存在,助燃物通常是空气中的氧气。根据可燃气体与空气混合方式不同有两种燃烧方式,如果在燃烧前,可燃气就与空气均匀混和,则称之为预混燃烧;如果可燃气体和空气分别进入燃烧区边混合边燃烧,则称之为扩散燃烧。液体和固体是凝聚态物质,难与空气均匀混合,它们燃烧的基本过程是当从外部获取一定的能量时,液体或固体先蒸发成蒸汽或分解出可燃气体(如CO、H2等)的分子团、灰烬和未燃烧的物质颗粒悬浮在空气中,称之为气溶胶。一般气溶胶的分子较小(直径0.01μm)。在产生气溶胶的同时,产生分子较大(直径0.01一10μm)的液体或固体微粒,称为烟雾。可燃气体与空气混合,在较强火源作用下产生预混燃烧。着火后,燃烧产生的热量使液体或固体的表面继续放出可燃气体,并形成扩散燃烧。同时,发出含有红、紫外线的火焰,散发出大量的热量[11]。这些热量通过可燃物的直接燃烧、热传导、

第4页 共37页

东北大学2012届毕业设计说明书

热辐射和热对流,使火从起火部位向周围蔓延,导致了火势的扩大,形成火灾。其中的气溶胶、烟雾、火焰和热量都称为火灾参量,通过对这些参量的测定便可确定是否存在火灾。

根据火灾发生时产生现象的不同,可以将火灾分为慢速阴燃、明火和快速发展火焰等。阴燃就是在疏松或颗粒介质中形成的缓慢进行的热解和氧化反应,它能长时间自行维持并传播,当条件发生变化时,或者自行熄灭,或者转化为明火。明火则是火灾发生时燃烧火焰产生的热量使液体或固体的表面放出可燃气体,并形成扩散燃烧,同时发出含有红、紫外线的火焰。快速发展火焰则是火灾扩散的速度特别快,这种类型的火灾一般为空气中混有大量可燃气体。通过大量的研究表明阴燃是诱发火灾的重要原因[12]。

总的来说,普通可燃物在燃烧时表现为以下形式:首先是产生燃烧气体,然后是烟雾,在氧气充足的条件下才能达到全部燃烧,产生火焰,发出可见光和不可见光,并散发出大量的热,使环境温度升高。起火过程中,起初和阴燃两个阶段所占的时间比较长,虽然产生大量的烟雾,但是环境温度不太高,若探测器就应该从此阶段开始进行探测,就可以火灾损失控制在最小限度。火焰燃烧后,迅速蔓延,产生大量的热使得环境温度升高,如果能将这时能够探测到有效地温度值,就可以比较及时地控制火灾。起火过程曲线如图2.1所示[13]。

图2.1 起火过程曲线

第5页 共37页

东北大学2012届毕业设计说明书

2.2系统总体方案设计 2.2.1 系统硬件总体构架

报警系统主要由数据采集模块、单片机控制模块、声光报警显示模块、系统控制模块组成。图2.2为火灾报警系统的结构框图。

烟雾、温度 器电传感路 单片机系 统电路 声、光报警 器显示电路 手动控制电路 图2.2 系统结构框图

单片机是整个报警系统的核心,系统的工作原理是:先通过传感器 (包括温感和烟感)将现场温度、烟雾等非电信号转化为电信号,再通过外接电路或者芯片内置电路将所获取的电信号转化为单片机可读取的信号,传入单片机。单片机通过程序的控制,对获取的信号做出判断,并据此控制声、光报警器显示电路工作。如果发生火灾,系统以声光的形式报警,并显示着火点位置信息。

本火灾自动报警系统具有以下功能: (1)声、光双重报警及显示编号的功能。 (2)手动报警及取消报警的功能。 (3)设置并显示监测点个数功能。 (4)指定检测点功能。 2.2.2 系统软件总体构架

为了便于系统维护和功能扩充,采用了模块化程序设计方法,系统各个模块的具体功能都是通过子程序调用实现的。本系统主要包括数据采集子程序、火灾判断、报警子程序与系统控制子程序等,系统程序流程图如图2.3所示。

第6页 共37页

东北大学2012届毕业设计说明书

判断手动/自动检测 手动 自动 轮流检测某些监测点 开始 初始化 指定某监测点检测 温度烟雾信号采集

报警判断 异常 无异常 报警 是否取消报警 取消报警 结束 图2.3 程序流程图

第7页 共37页

东北大学2012届毕业设计说明书

2.3系统主要器件的选择 2.3.1 火灾探测器的选择

1)探测器简介

火灾探测器是火灾报警系统的重要组成部分,直接关系到整个系统的正常运行。当火灾发生时,把火灾产生的各种非电量参数(如烟雾,温度)变成电量参数传送给控制器。其特点是模拟量传输,跟随各种非电量参数的变化而变化[16]。火灾探测器根据火灾发生时所表现出来的物理现象可以分为:气敏型、感温型、感烟型、感光型、感声型五大类。

(l)感温探测器

感温探测器一般分为定温式和差温式。单一的感温探测器灵敏度低、探测速度慢、探测范围小,尤其对阴燃情况不响应,因此不适用于火灾早期的探测,而在设计时往往安装在不宜安装感烟探测器的区域[17]。

(2)感烟探测器

感烟探测器可以分为离子感烟探测器和光电感烟探测器[18]。感烟探测器具有非常好的早期报警功能,即使在不太好的环境条件场所也会有比较好的探测效果,它一般适用于极高的房屋或空心花板或地下室中。感烟探测器适用于火灾前期及早期,产生大量的烟和少量的热,但它不能区分火灾信号与非火灾信号,如厨房烟、水蒸气等,所以误报率较高。

(3)气体探测器

气体探测器的主要作用是在发生可燃气体泄漏危险时,提醒有关人员采取相关措施以保护现场工作人员、生产设备的安全运转以及周围环境。气体探测器适用于散发可燃气体和可燃蒸汽的场所。但由于气体探测器探测对像CO易与还原气体发生化学反应,因此在有还原气体的场所可能会发生误报警。

(4)图像探测器

图像火灾探测器分为烟雾图像探测器、火焰图像探测器、激光图像感烟探测器等,它们都非常适合于商场大空间建筑。但烟雾图像火灾探测器对不规则物体或相似图像可能发生误报警;而火焰图像探测器则对高温物体或太阳光照射可能发生误报警;激光图像感烟火灾探测器则由于其良好的探测性能,发生误报警的概

第8页 共37页

东北大学2012届毕业设计说明书

率小,非常适合商场建筑的火灾探测[19]。

(5)红、紫外火焰探测器

火灾中能够辐射出红外线的不仅仅是火焰,一些高温物体的表面都能发出与火焰红外线频带相吻合的红外线,因此这些并非火灾的红外源就容易使单波段红外火焰探测器产生误报警[20]。紫外火焰探测器灵敏度高(ms级),反应快,适合在火灾时有强烈的火焰辐射而无阴燃阶段且需对火焰做出快速反应的场合,但当环境中有紫外辐射、高温物体或有太阳光直射时可能或产生误报警,因此,紫外火焰探测器不宜用于火焰出现前有浓烟扩散或有阳光直射的地方。

烟雾浓度是火灾的特性参数之一,在较大范围的监视场所,烟雾探测一直被广泛使用的火灾探测方法。火灾中会产生大量的热,温度也是火灾的另一特性参数,和环境温度相比火灾的温升是很明显的,所以温度也被用来进行火灾探测[21]。然而烟雾探测器在受到外界非火灾的干扰信号会产生误报警,且对于某些黑烟的探测并不敏感。温度探测器可以很好地补充烟雾探测器造成的漏报,但由于只有在燃烧的后两个阶段才会发生明显的变化,报警的响应时间慢。因此根据以上情况以及本系统的要求,采用感烟探测器和感温探测器相结合的多传感器探测方法

[22]

,可以发挥各自的优势、弥补不足之处,在火灾发生的早期就能够更加准确的

报警。

2)烟雾探测器

本设计的感烟探测器采用的是MQ-2气体传感器,其特点有:广泛的探测范围、 高灵敏度、快速响应恢复、优异的稳定性、寿命长、简单的驱动电路等等。MQ-2传感器可应用于家庭和工厂的气体泄漏监测装置, 适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。

MQ-2的规格

第9页 共37页

东北大学2012届毕业设计说明书

第10页 共37页

东北大学2012届毕业设计说明书

第11页 共37页

东北大学2012届毕业设计说明书

3)温度探测器

温度探测器使用的是DALLAS(达拉斯)公司生产的DS18B20温度传感器。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20

第12页 共37页

东北大学2012届毕业设计说明书

更受欢迎。对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。

DS18B20的主要特征: ", 全数字温度转换及输出。 ", 先进的单总线数据通信。

", 最高12位分辨率,精度可达土0.5摄氏度。 ", 12位分辨率时的最大工作周期为750毫秒。 ", 可选择寄生工作方式。

", 检测温度范围为–55°C ~+125°C (–67°F ~+257°F) ", 内置EEPROM,限温报警功能。

", 64位光刻ROM,内置产品序列号,方便多机挂接。 ", 多样封装形式,适应不同硬件系统。 DS18B20芯片封装结构:

DS18B20引脚功能:

·GND 电压地 ·DQ 单数据总线 ·VDD 电源电压 ·NC 空引脚 DS18B20工作原理及应用:

DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作

第13页 共37页

东北大学2012届毕业设计说明书

流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:

ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。

RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。

控制器对18B20操作流程:

1, 复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。

2, 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。

3, 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注

第14页 共37页

东北大学2012届毕业设计说明书

意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。

4, 控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。

5, 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。数据的读写方法将有下文有详细介绍。

若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS温度转换时间。紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。其它的操作流程也大同小异,在此不多介绍。 2.3.2 单片机的选择

本设计的控制芯片使用的是ATMEL公司生产的低电压,高性能CMOS 8位单片机AT89C52.其片内含8K bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052 产品引脚兼容,片内置通用8位中央处理器(CPU )和FLASH由存储单元,功能强大的AT89C52单片适用于许多较为复杂控制应用场合。

AT89C52提供以下标准功能:8字节FLASH闪速存储器,256字竹内部RAM , 32个I/O口线,3个16 位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。空闲方式停止CPU 的工作,但允

第15页 共37页

东北大学2012届毕业设计说明书

许RAM,定时/计数器.串行通信口及中断系统继续工作。掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.

3 火灾自动报警系统硬件设计

3.1单片机系统基本电路 3.1.1晶振电路

晶振电路为单片机AT89C52工作提供时钟信号,芯片中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振荡器一起构成自激振荡器。电路中的外接石英晶体及电容C1、C2接在放大器的反馈回路中构成并联振荡电路,系统的晶振电路如图3.1所示。由于外接电容C1、C2的容量大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,电容的容量大小范围为30pF?10pF;如果使用陶瓷谐振,则电容容量大小为40pF?10pF。本设计中使用石英晶体,电容的容值设定为30pF。

3.1.2 复位电路

复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分合过程中引起的抖动而影响复位。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。AT89C52的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果REST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位,本设计采用的是手动按钮复位。

手动按钮复位需要人为在复位输入端RST上加入高电平,采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就

第16页 共37页

东北大学2012届毕业设计说明书

会直接加到RST端,系统复位。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,设计完全能够满足复位的时间要求。复位电路中REST为手动复位开关,电容C3可避免高频谐波对电路的干扰。AT89C52的复位电路如图3.3所示。

图3.1 晶振电路与复位电路

3.2传感器信息采集电路

MQ-2气敏元件的对不同种类、不同浓度的气体有不同的电阻值,灵敏度的调整是很重要的。

烟雾传感器的外部电路设计图如图3.2。

图3.2 MQ-2外围电路

第17页 共37页

东北大学2012届毕业设计说明书

DS18B20采用单数据总线传送数据,即一个器件只占用一个AT89C52芯片的IO引脚,本系统要最多检测8个位置,因此设计将AT89C52的P2口由于温度采集。

此设计图中,拨码开关SW1即模拟的是8个烟雾传感器经过外部电路处理后传回来的电信号。

图3.3 数据采集电路

3.3声光报警显示电路

声光报警显示电路在AT89C52的控制下,可在外部环境异常时蜂鸣器发出警报声,红色led灯点亮,红色数码管其位置信息。

AT89C52的P0口加入了大小为10K欧姆的上拉电阻,因P0口是地址数据复用口线,与其它口线不一样。所以,当P0作普通IO时,必须用上拉电阻将其电平拉高,上拉电阻不起限流作用。

以方便操作,选用了直流电压控制型的蜂鸣器、红色发光二级管以及红色7段数码管作为声光报警显示设备。

第18页 共37页

东北大学2012届毕业设计说明书

为了简化电路节省单片机的管脚,采用了74ls47芯片为数码管编码,使得本来要占用的7个单片机管脚变为只占用4个。考虑到之后的检测点数目的显示也要用7段数码管(本设计采用蓝色数码管),因此采用了两个74hc573芯片作为锁存器,分别于两个数码管连接,使得单片机只需要控制之前的4个管脚和这两锁存器的两个使能管脚便能控制两个数码管的显示。至此P0口的8个管脚用掉了6个,剩余的两个管脚分别连接蜂鸣器电路和红色led电路即可完成此部分的设计。

图3.4 声光报警电路

3.4系统控制电路

系统控制电路包含了10个按键和一个蓝色数码管,1~8号按键分别对应着1~8号检测位置,9号按键对应系统中的取消报警键,10号按键对应系统中的设置检测点数目功能键,蓝色数码管则实时地显示当前监测点的个数,方便用户调整。

蓝色数码管的电路已在3.3中叙述。

出于节省单片机管脚的考虑,10个按键被连接在两个8-3编码器上。这样使得被来要占用的10个单片机管脚变为5个。

同时为了提高程序运行的效率,本设计将两个8-3编码器GS输出端通过一个与门(74LS08)连接到单片机的外部中断0口,这样把中断与管脚扫描结合一体,使得程序运行效率有了大大提高。

第19页 共37页

东北大学2012届毕业设计说明书

图3.5 系统控制电路

4 火灾报警系统程序设计

4.1软件开发环境

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

第20页 共37页

东北大学2012届毕业设计说明书

控制指令[29]。数据结构方面,可以使用结构体和数组,能够处理复杂的数据,可用于实时处理系统。

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

C52工具包的整体结构中,μVision与Ishell分别是C52for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。 4.2火灾报警系统程序设计

本系统主要包括数据采集子程序、火灾判断/报警子程序与系统控制子程序等来实现设计任务的要求。主要功能要求:(1)实时检测至多8个监测点的环境温度、烟雾浓度等因素变化,以判断是否出现火警;(2)判定某监控点出现火警时进行声光报警,并显示此监控点编号;(3)能手动报警和取消报警;(4)能手动进行系统检测;(5)监控点数目可以通过键盘设置。

程序流程图:

第21页 共37页

东北大学2012届毕业设计说明书

判断手动/自动检测 手动 自动 轮流检测某些监测点 开始 初始化 指定某监测点检测 温度烟雾信号采集

报警判断 异常 无异常 报警 是否取消报警 取消报警 结束 图2.3 程序流程图

4.2.1数据采集子程序

对于烟雾信息,根据电路设计可知,MQ-2烟雾传感器电路传回单片机P1口的是高低电频的信号。高电频意味着没有出现异常,低电频意味着烟雾指数出现异常。因此,对烟雾情况的检测实则对P1口相应管脚上高低电频的检测。在读取的同时也实现了判断功能,因此也是把报警功能和取消报警功能跟烟雾数据采集结合于一体的原因。

对于温度信息,由于DS18B20是单总线传输数据的器件,只需根据该器件的单总线特性设计程序。每采集一次温度信息的流程为:

第22页 共37页

东北大学2012届毕业设计说明书

读取温度,跳过ROM命器件复位 器件复位 跳过ROM命令,执行温并转换为所令,设置读模式 度转化命令并等待完成 需的值 温度采集子函数:

unsigned int temperature(unsigned char Q) {

unsigned char temp1,temp2; unsigned int temp; rst18B20(Q);

write18B20(Q,0xcc); write18B20(Q,0x44);

rst18B20(Q);

write18B20(Q,0xcc); write18B20(Q,0xbe);

temp1=read18B20(Q);//低8位 temp2=read18B20(Q);//高8位

temp=temp2; temp<<=8; temp+=temp1;

temp=(unsigned int)(temp*0.625); //保留一位小数 return temp; }

此函数中的参数值的是监测点对应的位置。由于电路连接对应的是单片机的P3口,所以该函数要借助辅助子函数unsigned char getQ(unsigned char i)来将1~8转化为P2口的P2^0~P2^7管脚即:0x01,0x02,0x04,0x10,0x20,0x40,0x80.以支持单总线操作。所以如果要检测第8号监测点,则本函数的调用应该是:tmpT=temperature(getQ(8))。 4.2.2火灾判断/报警子程序

根据任务要求,火灾判断报警子程序要实现两个功能:1.对采集到的温度、烟雾浓度值进行判断,触发报警;2.对取消报警按键的读取,当报警产生时如果被按下,则取消当前的报警,如果再次被按下,则恢复报警功能。 烟雾检测及温度、烟雾报警判断子函数: void checkFun(unsigned char i){ unsigned char temp=0x01; temp<<=(i-1); dense=0xff; delaynms(1);

第23页 共37页

}

东北大学2012届毕业设计说明书

tmpT=temperature(getQ(i)); if((dense&temp)==0){ //check dense while(((cancel%2)==0)&&((dense&temp)==0)){ led=0; buzz=0; seg7(i,2); }

}else if(tmpT>stdT){ //check temperature while(((cancel%2)==0)&&(tmpT>stdT)){ tmpT=temperature(getQ(i)); led=0; buzz=0; seg7(i,2); } } led=1; buzz=1; seg7(0,2);

此函数中的参数则指的是检测点的位置。此函数中包含了温度采集子函 unsigned int temperature(unsigned char Q)和数码管显示子函数。 数码管显示子函数:

void seg7(unsigned char value,unsigned char lock){ if(value%2==1) AA=1; else AA=0; value/=2;

if(value%2==1) BB=1; else BB=0; value/=2;

if(value%2==1) CC=1; else CC=0; value/=2;

if(value%2==1) DD=1; else DD=0; if(lock==1){ //total number lock1=1;

delaynms(20); lock1=0;

delaynms(20); lock2=0;

}else if(lock==2){ //fire number lock2=1;

delaynms(20);

第24页 共37页

东北大学2012届毕业设计说明书

}

}

lock2=0;

delaynms(20); lock1=0;

根据数码管显示部分的电路设计可知,两个数码管的显示只需要控制6个单片机引脚。其中AA、BB、CC、DD引脚连接的是74LS47芯片的输入引脚,单片机控制这四个引脚输出的2进制数经过74LS47译码,控制数码管显示相应的十进制数字。其中lock1,lock2分别连接两个74HC573使能端,当lock1=0,lock2=1时,红色数码管保持当前读数不变,蓝色数码管根据AA、BB、CC、DD的输出信号改变数字,当lock1=1,lock2=0时,蓝色数码管保持当前读数不变,红色数码管根据AA、BB、CC、DD的输出信号改变数字。该程序中包含了毫秒延时函数。

毫秒延时函数:

void delaynms(unsigned int ms) {

unsigned int x,y; for(x=ms;x;x--) for(y=110;y;y--); }

此函数中的参数即延时的时间,单位为毫秒。 4.2.3系统控制子程序

系统控制功能主要有三个:1.指定检测点的位置;2.设置监测点的个数;3.取消/恢复报警功能。

本设计主要通过按键的应用来实现系统控制功能。根据设计的电路可知,10个按键是经过两个8-3编码器连接到单片机的P3^3~P3^7 五个引脚上的,并且两个8-3译码器的GS端还通过一个与门连接到P3^2即外部中断0口,所以系统控制子程序是通过外部中断0实现的。当外部中断0被触发,则开始检测P3^3~P3^7上的电位信息,经过程序分析得出到底是哪个按键被按下,然后执行相应的控制命令。

系统控制子程序:

void keyValue() interrupt 0{ unsigned char temp; EX0=0; EA=0;

temp=P3&0xf8; switch(temp){

case 0x38:keyV= 1;//0011 1000 break;

case 0xf0:keyV= 2;//1111 0000 break;

case 0xe8:keyV= 3;//1110 1000 break;

第25页 共37页

}

东北大学2012届毕业设计说明书

case 0xe0:keyV= 4;//1110 0000 break;

case 0xd8:keyV= 5;//1101 1000 break;

case 0xd0:keyV= 6;//1101 0000 break;

case 0xc8:keyV= 7;//1100 1000 break;

case 0xc0:keyV= 8;//1100 0000 break;

case 0xb8:keyV= 9;//1011 1000 break;

case 0x78:keyV= 10;//0111 1000 break; }

if(keyV>=1&&keyV<=8){ checkNum=keyV;

alter=1; //check the only one }else if(keyV==9){ cancel++;

}else if(keyV==10){ alter++; //calculate the total number the check alternately if(alter>8) alter=1; }

EA=1; EX0=1;

5 总结与展望

5.1 总结

本文设计了一种基于单片机AT89C52的火灾自动报警系统,系统安全可靠,误报率低,操作方便,成本较低。本设计抛弃了传统的使用单一传感器探测报警,采用了温度传感器DS18B20和烟雾传感器MQ-2相结合的多传感器探测方法,使系统灵敏度高、响应时间短,在火灾发生的早期就能准确的报警。在系统的软件设计方面,采用了模块化程序设计方法,系统各个模块的具体功能都是通过子程序调用实现的。既使得程序结构清晰,又便于以后进一步扩展其功能,也便于系

第26页 共37页

东北大学2012届毕业设计说明书

统的维护。

当发生火灾,系统以声光的形式发出报警。在系统中设置了1个蜂鸣器,实现声音报警;并且还设置了1个发光二极管。如果系统出现硬件故障,能发出故障报警;如果烟雾和温度出现异常,则说明有火灾,发出火灾警报。

由于时间紧迫和个人能力有限,本文设计的火灾报警系统还存在许多需要完善和作进一步研究的问题,如:

(1)火灾报警系统判断的算法有待进一步的研究改进,应用更先进的神经网络和模糊识别等智能算法,降低系统的误报率,提高灵敏度。

(2)火灾报警系统没有联网,当发生火灾时不能通过电话网络向消防指挥中心报警。 5.2 展望

二十一世纪是网络化时代,在计算机技术、微电子技术和网络技术的迅速发展下,火灾探测报警技术的更新变化也非常明显,总体来看,主要的发展变化是:数字技术和新工艺、新材料的应用,改进系统能力和减少维护要求,向着高可靠、低误报和网络化、智能化方向发展。

l)早期、超早期的火灾探测报警

超早期火灾报警的主要指导思想是:(1)提高灵敏度,在火灾早期阶段生成物较少的时候即可探测报警;(2)探测火灾过程中尚未形成火灾时的生成物即超早期火灾探测报警。为此,利用提高灵敏度实现早期火灾探测报警的方法中,已经将粒子计数测量技术用于火灾探测。

2)全新的火灾判定依据

从以搜集时间信息为主作为报警依据,转为以物性信息与时间信息相结合作为报警依据。

3)采用智能技术处理传感器提供的火灾信息

目前传感器所提供的是混合型时间信息,做好对信息的处理,以弥补信息源头的缺陷,尽可能提高报警的可靠性和后续工程系统联动控制的准确性。

4)火灾探测报警的网络化

火灾探测报警系统网络化是指将计算机数据通信技术应用于火灾探测报警系

第27页 共37页

东北大学2012届毕业设计说明书

统,使控制器之间或者探测器之间,系统内部之间和系统外部之间通过网络协议交换数据信息,实现火灾自动报警系统层次功能设定,远程数据调用管理、119自动报警、网络监控和网络通信服务等功能。

第28页 共37页

东北大学2012届毕业设计说明书

附录1 系统程序

#include //7seg sbit AA=P0^0; sbit BB=P0^1; sbit CC=P0^2; sbit DD=P0^3; sbit lock1=P0^6; //red sbit lock2=P0^7; //blue //led

sbit led=P0^4; //buzz

sbit buzz=P0^5; //fog

#define dense P1 #define stdD 0xff //temperature #define ww P2 //10key sbit P33=P3^3; sbit P34=P3^4; sbit P35=P3^5; sbit P36=P3^6; sbit P37=P3^7; void init_ext0(){ EA=1; EX0=1; IT0=1;

}

第29页 共37页

东北大学2012届毕业设计说明书

//all parameters unsigned int keyV=0; unsigned int stdT=300; //standard temperature =30

unsigned int tmpT=0;

unsigned char checkNum=1; //range from 1~8 unsigned char fireNum=0; //safe=0;danger=1; unsigned char cancel=0;

//go on=0;stop=1; unsigned char alter=1; //sigle=0;alternate=1; //function1: temperature void delay6us(unsigned int us) { while(us--);

}

void delaynms(unsigned int ms) { unsigned int x,y; for(x=ms;x;x--) for(y=110;y;y--);

}

void rst18B20(unsigned char Q) { ww|=Q; delay6us(8); ww&=~Q;

delay6us(80);//>480 11+6*100=611 ww|=Q;

delay6us(15);//>240 至少为20

}

第30页 共37页

东北大学2012届毕业设计说明书

void write18B20(unsigned char Q,unsigned char temp) { unsigned char i; for(i=8;i;i--) { ww&=~Q; temp>>=1; //ww=CY; if(CY) ww|=Q; else ww&=~Q; delay6us(5);

ww|=Q;//关键的神机!!

}

}

unsigned char read18B20(unsigned char Q) { unsigned char i,temp; for(i=8;i;i--) { ww&=~Q; temp>>=1;

ww|=Q;//关键的神机!! if((ww&Q)!=0) temp|=0x80; delay6us(5);

}

return temp;

}

第31页 共37页

东北大学2012届毕业设计说明书

unsigned int temperature(unsigned char Q) { unsigned char temp1,temp2; unsigned int temp; rst18B20(Q); write18B20(Q,0xcc); write18B20(Q,0x44);

rst18B20(Q); write18B20(Q,0xcc); write18B20(Q,0xbe);

temp1=read18B20(Q);//低8位 temp2=read18B20(Q);//高8位 temp=temp2; temp<<=8; temp+=temp1; temp=(unsigned int)(temp*0.625); //保留一位小数 return temp; }

void seg7(unsigned char v,unsigned char t);

//function2: 10key value void keyValue() interrupt 0{

unsigned char temp;

第32页 共37页

东北大学2012届毕业设计说明书

EX0=0; EA=0; temp=P3&0xf8; switch(temp){ case 0x38:keyV= 1;//0011 1000 break;

case 0xf0:keyV= 2;//1111 0000 break;

case 0xe8:keyV= 3;//1110 1000 break;

case 0xe0:keyV= 4;//1110 0000 break;

case 0xd8:keyV= 5;//1101 1000 break;

case 0xd0:keyV= 6;//1101 0000 break;

case 0xc8:keyV= 7;//1100 1000 break;

case 0xc0:keyV= 8;//1100 0000 break;

case 0xb8:keyV= 9;//1011 1000 break;

case 0x78:keyV= 10;//0111 1000 break; }

if(keyV>=1&&keyV<=8){ checkNum=keyV;

alter=1; //check the only one

第33页 共37页

东北大学2012届毕业设计说明书

// seg7(checkNum,1);//display the only number to check

}else if(keyV==9){

cancel++;

}else if(keyV==10){ alter++;

//calculate the total number the check alternately

if(alter>8) alter=1;

} EA=1; EX0=1;

}

//function3: 7seg

void seg7(unsigned char value,unsigned char lock){ if(value%2==1) AA=1; else AA=0; value/=2;

if(value%2==1) BB=1; else BB=0; value/=2;

if(value%2==1) CC=1; else CC=0; value/=2;

if(value%2==1) DD=1; else DD=0; if(lock==1){

//total number

lock1=1; delaynms(20); lock1=0; delaynms(20);

lock2=0;

第34页 共37页

东北大学2012届毕业设计说明书

}else if(lock==2){

//fire number

lock2=1; delaynms(20); lock2=0; delaynms(20); lock1=0;

}

}

unsigned char getQ(unsigned char i){ unsigned char temp=0x01; temp<<=(i-1); return temp; }

void checkFun(unsigned char i){ unsigned char temp=0x01; temp<<=(i-1); dense=0xff; delaynms(1);

tmpT=temperature(getQ(i)); if((dense&temp)==0){

//check dense

while(((cancel%2)==0)&&((dense&temp)==0)){ led=0; buzz=0; seg7(i,2);

}

}else if(tmpT>stdT){

//check temperature

while(((cancel%2)==0)&&(tmpT>stdT)){

tmpT=temperature(getQ(i));

led=0;

第35页 共37页

东北大学2012届毕业设计说明书

}

void main(){

unsigned char i=0; //circle parameter; unsigned char temp=0x01; unsigned char n=0x04; init_ext0(); cancel=0; while(1){

seg7(alter,1);

if(alter==1) checkFun(checkNum); else { }

//显示指定位置的温度

for(i=1;i<=alter;i++){ }

checkFun(i);

}

}

buzz=0; seg7(i,2);

led=1; buzz=1; seg7(0,2);

/* tmpT=temperature(getQ(checkNum));

seg7(tmpT/100,2); delaynms(500);

seg7(tmpT0/10,2); delaynms(500); seg7(tmpT,2); delaynms(500); */

第36页 共37页

本文来源:https://www.bwwdw.com/article/af23.html

Top