火灾报警器毕业设计3稿 - 图文

更新时间:2024-06-16 15:32:01 阅读量: 综合文库 文档下载

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

本科生毕业论文(设计)

论文题目 火灾报警器设计

学生姓名 蒋 倩

指导教师 童 强(讲师)

(姓名及职称)

系(院)物理与电子工程学院 专业 电子信息工程

班 级 2008级 电信3班

学 号 08303416

完成日期:2012 年4月

乐山师范学院毕业论文(设计)

火灾报警器设计

蒋倩

物理与电子工程学院 电子信息工程 08303416

[摘要] 本文介绍了使用8051系列单片机设计的大楼火灾报警系统。本系统主要功能是通过MQ-2烟雾传感器和DS18B20温度传感器来监测火灾时的烟雾和温度异常,由蜂鸣器和指示灯实现报警;MQ-2的输出通过ADC0832进行A/D转换,由数码管显示设定的和当前的烟雾浓度和温度值。

[关键词] 火灾报警系统 MQ-2 数码管 ADC0832 DS18B20 AT89C52

1引 言

1.1 系统介绍

大楼火灾报警系统是以AT89C52单片机作为控制中心,接受、处理火灾探测器输出的烟雾浓度信号、温度信号,并进行声光报警。在本次设计中,该系统需实现以下功能:

1、实现通过MQ-2烟雾传感器和DS18B20温度传感器由蜂鸣器和指示灯来实

现报警

2、实现通过MQ-2由ADC0832转换芯片用数码管显示烟雾浓度的数字量 3、实现通过按键由数码管显示设定的和当前的烟雾浓度和温度 根据需要实现的功能,现将本文的结构安排做如下规划:

1、首先向大家介绍本文的火灾探测原理,给出火灾自动报警系统的总体设

计方案,给出硬件和软件的整体构架及系统设计中的主要元器件选择。 2、火灾自动报警系统的硬件设计,介绍传感器信号调理电路、单片机处理

电路及声光报警电路。

3、整个火灾自动报警系统的程序设计,详细介绍数据采集子程序、火灾判

断与报警程序等。

2

乐山师范学院毕业论文(设计)

2 系统工作原理

2.1 形成火灾的原因

在初中的物理、化学课中我们曾学习过,产生火灾的基本要素是可燃物、助燃物和点火源。可燃物以气态、液态和固态三种形态存在,助燃物通常是空气中的氧气。液体和固体是凝聚态物质,难以与空气均匀混合,它们燃烧的基本过程是从外部获取一定的能量时,液体或固体先蒸发成蒸汽或分解出可燃气体(如CO、H2等)的分子团、灰烬和未燃烧的物质颗粒悬浮在空气中,称之为气溶胶。一般气溶胶的分子较小,在产生气溶胶的同时,产生分子较大的液体或固体微粒,称之为烟雾。可燃气体与空气混合,在较强火源作用下产生预混燃烧,着火后,燃烧产生的热量使液体或液体的表面继续放出可燃气体,并形成扩散燃烧。同时,发出含有红、紫外线的火焰,散发出大量的热量。这些热量通过可燃物的直接燃烧、热传导、热辐射和热对流,使火从起火部位向周围蔓延,导致了火势的扩大,形成火灾。其中的气溶胶、烟雾、火焰和热量都称为火灾参量,通过对这些参量的测定便可确定是否存在火灾。

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

[1]

[1]

图2.1 起火过程曲线图

2.2 火灾探测器的原理

3

乐山师范学院毕业论文(设计)

火灾发生时,必然会伴随着产生烟雾、高温和火光,探测器对这些都很敏感。当有烟雾、高温、火光产生的时候,它就改变平时的正常状态,引起电流、电压或机械部分发生变化或位移,再通过放大、传输等过程发出警报声,有的还能同时发出灯光信号并显示发生火灾的部位、地点。本设计中将详细介绍感烟及感温探测器。

1)感烟探测器:是一种离子感烟探测器,它在内外电离室里面有放射源镅241,电离产生的正负离子,在电场的作用下各向正负电极移动。在正常的情况下,内外电离室的电流、电压都是稳定的。一旦有烟雾窜逃外电离室,干扰了带电粒子的正常运动,电流、电压就有所改变,破坏了内外电离室之间的平衡,于是就发出了信号。还有一种叫光电感应探测器,它有一个发光元件和一个光敏元件,平常光源发出的光,通过透镜射到光敏元件上,电路维持正常,如果有烟雾从中阻隔,到达光敏元件上的光就显著减弱,于是光敏元件就把光强的变化变成电的变化,通过放大电路向人们报警。还有一种叫管道抽吸式感烟探测器,他的工作原理与光电感应探测器中另一种散射型相似,通过烟雾的反射或散射产生光敏电流,主要用在船舶上。近年来还出现了激光感烟探测器,它也是利用光电感应原理,不同的是光源改用激光束。这种探测器采用半导体器件,体积小、价格低、耐震动、寿命长,很有发展前途。 2)感温探测器:一种是运用金属热胀冷缩的特性。正常的情况下,探测器的电路断开,当温度升到一定值时,由于金属膨胀、延伸,导体接通,于是发出了信号。一种是利用某些金属易熔的特性,在探测器里固定一块低熔点合金,当温度升到它的熔点(70~90℃)时,金属熔化,借助弹簧的作用力,使触头相碰,电路接通,发出信号。这两种探测器都属定温型,即当外界温度超过某一限值时就会报警;还有一类是差温型,升温的速度超过特定值时,便会感应报警。如将两者结合起来,便成为差定温组合式。

[2][2]

3 硬件设计

本系统主要以单片机为核心,包括数据采集模块、单片机控制模块、声光报警模块三部分。如图3.1为本系统的结构框图:

4

[3]

乐山师范学院毕业论文(设计)

数据采集模块 细介绍各个模块。

? 硬件组成:

烟雾探测模块 温度采集模块 数据处理模块 控制模块 显示模块 报警模块

图3.1 火灾报警系统的结构框图

该系统的工作原理是:先通过MQ-2烟雾传感器和DS18B20温度传感器将现场的温度、烟雾等非电信号转化为电信号,调理电路将传感器输出的信号进行放大、滤波等,使它满足A/D转换的要求,再由A/D转换电路,从而完成将DS18B20和MQ-2输出的模拟信号到数字信号的转换,接着单片机判断现场是否达到发生火灾的条件,如果达到,系统中的蜂鸣器和指示灯以声光的形式报警。下面将详

AT89C51 控制模块 数码管显示模块 声光报警模块 图3.2 系统硬件系统结构框图

如图3.2本系统主要由单片机控制模块、烟雾探测模块、温度采集模块、数码管显示模块、声光报警模块构成。

5

乐山师范学院毕业论文(设计)

3.1单片机控制模块:

在本设计中,采用的是ATMEL公司生产的AT89C52,它一种带8K字节闪烁可编程可擦除的只读存储器(FPEROM)和256字节的随机存取数据存储器(RAM)的低电压,高性能CMOS8位微处理器。AT89C52是一个低功耗高性能单片机,片内置通8为中央处理器(CPU)和FLASH存储单元,可灵活应用于各种控制领域40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。AT89C52的引脚功能排列如图3.1.1图:

[4]

U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617qt1a2a3ad1d2d3d4d5d6d7d8abcd18XTAL29RST293031PSENALEEAk1k2k3k412345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51f 图3.1.1 DIP-40封装AT89S52引脚图

[4]

主要引脚功能如下: VCC:电源引脚。 GND:接地引脚。

P0口: P0口是一个三态双向口,在有外部扩展存储器时被作为地址/数据分时复用口,被定义为数据/地址的低八位,此时是一个真正的双向口。在没有外部扩展存储器时,也可以作为通用I/O接口,就是一个准双向口。在输出数据时,必须外接上拉电阻。P0口的输出级具有驱动8个TTL负载,即输出电流不大于800uA。

P1口: P1口是8位准双向I/O口,内部提供上拉电阻。当作为输入时,被内部上拉为高电平,P1口管脚写1。P1口被外部下拉为低电平时,可提供电流,这是

6

乐山师范学院毕业论文(设计)

由于内部上拉的缘故。P1口具有驱动4个TTL负载的能力

P2口: P2口作为输入输出口的同时,还可以作为地址总线的高8位。由于P2口内部具有上拉电阻,当被内部上拉为高电平,作为输入使用。当被外部下拉为低电平时,作为输出使用时输出低电平。当P2作为输出使用时可以驱动4个TTL电路。

P3口: P3口是具有内部上拉电阻的双向I/O口,向内部写入高电平时作为输入使用,。当被外部下拉为低电平,P3将作为输出使用,此时将可以驱动4个TTL电路。

P3口除了作为通用的I/O口使用外,还具有第二功能,通常会使用P3口的第二功能,P3口的第二功能如表3.1.2:

表3.1.2 P3口功能表图

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 引脚 10 11 12 13 14 15 16 17 第二功能 RXD(串行输入口) TXD(串行输出口) INT0(外中断0) INT1(外中断1) T0(定时/计数器0) T1(定时/计数器1) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 单片机接线图:

图3.1.3 单片机接线图

7

乐山师范学院毕业论文(设计)

3.2烟雾探测模块:

本设计中,烟雾探测器方面我采用的是MQ-2气体传感器,MQ-2气体传感器

[5]

[5]

所使用的气体材料是在清洁空气中电导率较低的二氧化锡

(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随着空气中可燃气体浓度的增加而增大,这里使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。下面将向大家分别介绍本设计中所采用MQ-2的工作原理、预热,参数范围等。 1、工作原理:

MQ-2是一种体电阻控制型的气敏器件,其阻值随被测气体的浓度而变化。气敏器件又是一种“气——电”传感器件,它将被测气体的浓度(成分)信号转变成相应的电信号。气敏器件阻值与气体浓度之间一般为非线性关系,但在浓度域的气体检测时可近似认为是线性的,如图3.2.1所示。因此,在本设计中一定的浓度范围内的检测是有效的。

[5]

图3.2.1 阻值与浓度关系图

2、预热及其原因:

MQ-2在不通电放置一段时间后,再通电使用时,阻值是先下降,然后又上升,不能立即采集氧气浓度,所以需要先预热一段时间,需要通电几分钟后才能稳定到与气氛状态相应的阻值。但工作温度不宜太高(一般不要超过35℃),否则会造成性能衰减,降低气敏灵敏度。在本设计中是先将传感器预热3分钟,预热的时候,用软件方式检测电缆线是否断线或者接触不良。

图3.2.2是MQ-2的基本工作电路图,它是一个惠斯登电桥,当空气中某种可燃气体的浓度超过某值时,电桥电路失去平衡,有电压输出,起到检测作用。一般气敏器件很难消除环境温度的影响,通常在电路中加入热

8

乐山师范学院毕业论文(设计)

敏电阻进行温度补偿。

图3.2.2 MQ-2基本工作电路图

4、MQ-2参数范围:

A.标准工作条件 符号 Vc Vh Rl Rh Ph B.环境条件 符号 Tao Tas RH O2 参数名称 使用温度 储存温度 相对湿度 氧气浓度 技术条件 -10℃-50℃ -20℃-70℃ 小于95%RH 21%(标准条件) 氧气浓度会影响灵敏度特性 技术条件 3KΩ-30KΩ (1000ppm 异丁烷) ≤0.6 最小值大于2% 备注 参数名称 回路电压 加热电压 负载电阻 加热电阻 加热功耗 技术条件 ≤15V 5.0V±0.2V 可调 31Ω±3Ω ≤900mW 备注 AC or DC AC or DC 室温 C.灵敏度特性 符号 Rs α (3000/1000) 异丁烷 标准工作条件 参数名称 敏感体表面电阻 浓度斜率 备注 探测浓度范围 100ppm-10000ppm 液化气和丙烷 300ppm-5000ppm 丁烷 5000ppm-20000ppm 甲烷 300ppm-5000ppm 氢气 100ppm-2000ppm 酒精 温度: 20℃±2℃ Vc:5.0V±0.1V 相对湿度: 65%±5% Vh: 5.0V±0.1V 5、小结在本设计中MQ-2的使用:

传感器将环境中采集到的氧气浓度对应的微小的电信号经过放大转化成电信号送如AT89C52中,然后在单片机中进行A/D转换,进行浓度比较,氧气浓度值是否超过了设置的报警限值,超出时,则蜂鸣器发出声音报警,指示灯闪烁。在设计中MQ-2需要先预热,在加热状态下工作,温度越高,反应越快,响应时间就越快。为了提高响应时间在设计时向MQ-2

9

乐山师范学院毕业论文(设计)

输出一个5V的电压。

MQ-2的基本特性如下: ? 高灵敏度/快速响应恢复 ? 广泛的探测范围 ? 长寿命、低成本 ? 简单的驱动电路 3.3温度探测模块:

温度探测器在本设计中,我采用的温度探测器是DS18B20.新的“一线器件”体积更小、适用电压更宽、更经济Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。

DS18B20具有微型化、低功耗、高性能、抗干扰、接口简单等特点,可直接将温度转换为数字信号供处理器处理。DS18B20的封装图如3.3.1图:

[6]

图3.3.1 DS18B20封装图

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

表图3.3.2 ROM指令表

指 令 读ROM 符合ROM 约定代码 33H 55H 总线上与该编码相对应的DS1820使之响应,为下一功 能 读DS1820ROM中的编码(即64位地址) 发出此命令之后,接着发出64位ROM编码,访问单 10

乐山师范学院毕业论文(设计)

步对该DS1820的读写作准备。 用于确定挂接在同一总线上DS1820的个数和识别搜索ROM 0F0H 64位ROM地址。为操作各器件作好准备。 忽略64位ROM地址,直接向DS1820发温度变换命跳过ROM 0CCH 令。适用于单片工作。 执行后只有温度超过设定值上限或下限的片子才做告警搜索命令 0ECH 出响应。 DS18B20的接线图如下所示:

U4t321VCCDQGNDDS18B2030.0

图3.3.3 DS18B20的接线图

DS18B20 时序

(a)初始化时序

图3.3.4 初始化时序图

(b)写时序

图3.3.5 写时序图

11

乐山师范学院毕业论文(设计)

(c)读时序

3.3.6读时序图

DS18B20的基本特性[6]:

1、独特的单线接口仅需一个端口引脚进行通讯 2、简单的多点分布应用 3、无需外部器件

4、可编程分辨率9~12位,对应可分辨温度分别为0.5℃ 、0.25℃ 、0.125℃ 、0.0625℃ 。 5、可通过数据线供电 6、温度以9位数字量读出

7、负压特性,电源接反时,芯片不会烧毁,但不能正常工作。 3.4 A/D转换芯片[6]:

在采用的A/D转换芯片是ADC0832,是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。体积小、兼容性好、性价比高。ADC0832的封装如3.4.1图:

[5]

图3.4.1 ADC0832的封装及各端口

ADC0832特点如下:

[6]

12

乐山师范学院毕业论文(设计)

? 8位分辨率 ? 双通道A/D转换

? 输入输出电平与TTL/CMOS兼容 ? 5V电源供电时输入电压在0~5V之间 ? 工作频率为250KHZ,转换时间为32μS ? 一般功耗仅为15 mW

芯片接口说明如下[6]:

? CS_ 片选使能,低电平芯片使能 ? CH0 模拟输入通道0,或作为IN+/-使用 ? CH1 模拟输入通道1,或作为IN+/-使用 ? GND芯片参考0电位

? DI数据信号输入,选择通道控制 ? DO 数据信号输出,转换数据输出 ? CLK 芯片时钟输入

? Vcc/REF 电源输入及参考电压输入(复用) 3.5数据采集模块:

本系统采用四个数码管来显示带一为小数位的温度,其接线如图3.5所示其中74LS164为移位寄存器,数码管采用共阳接法。

1918171615141312RP1U274HC5731d1d2d3d4d5d6d7d823456789Q0Q1Q2Q3Q4Q5Q6Q723456789d1d2d3d4d5d6d7d8111LEOED0D1D2D3D4D5D6D7RESPACK-8abcd 图3.5 数码管接线图 13

乐山师范学院毕业论文(设计)

3.6声光报警模块:

报警装置由蜂鸣器和指示灯组成:当气体浓度或温度超过限定值时,P1.4脚置为高电平,三极管导通,蜂鸣器即发出鸣叫报警。其电路原理图如下所示:

图3.6.蜂鸣报警电路

4 软件设计

4.1系统程序流程[7]:

为了便于系统维护和功能扩充,采用了模块化程序设计方法,系统各个模块的具体功能都是通过子程序调用实现的。本系统主要包括数据采集子程序、火灾判断与报警子程序等,系统程序流程如图4.1所示:在设计报警的子程序中,为了防止误报,提高判断的准确度,在设计时对烟雾的浓度采用快速重复检测和延时报警两种方法。

开始 初始化 第一次温度、气体浓度采集与判断 第一次采集数据 显示 第二次温度、气体浓度采集与判断 第二次采集数据 正常 否 报警判断 是 报警 火灾报警 图4.1 系统程序流程图

复位 14

乐山师范学院毕业论文(设计)

其流程是:首先在上电之后系统的各部分包括单片机输入输出端口的设置、数据存储电路、外围驱动电路等完成初始化,接下来执行火灾报警系统的数据采集程序、火灾判断报警程序。系统初始化后,先预热,灯闪烁三次以后倒计时30秒,灯不亮蜂鸣器不报警。倒计时结束后,显示设置报警烟雾浓度限值,按键可切换显示当前烟雾浓度、设置报警温度限值、当前温度、并可以按键调节设定数值。在本次设计中我将报警烟雾浓度范围设定为:2500 温度范围设定为:50,其中设定的范围都是可以通过软件中的程序做修改的。 4.2数据采集流程

在本次设计中系统实现报警功能是通过调用子程序来实现的,在数据采集子程序中,温度烟雾信号采集延时10 ms,是让ADC0832准备好进行下一次信号转换。当系统采集2次温度烟雾信号后,转换好的数据存入单片机寄存器中,系统再调用火灾判断子程序。系统温度烟雾信号采集流程图如图4.2所示: 开始 采集温度信号 中断 第二次采集数据 无中断 等待数据转换 接收温度数据 延时50毫秒 延时1s 等待数据转换

采集烟雾信号 中断 无中断 接收烟雾信号 第二次采集完毕

结束

图4.2 系统温度烟雾信号采集流程图

15

乐山师范学院毕业论文(设计)

4.3火灾判断与报警流程[7]

在软件中已经设定了报警烟雾浓度限值和报警温度限值,在具体的操作中是可以进行人机界面调节的。在整个判断过程中,单片机接收到采集到的温度值和烟雾浓度值,与设定的限值进行对比,如果烟雾浓度和温度任一一个值超过了报警限值,则蜂鸣器和指示灯会发出声光报警。如果两项都没有达到报警限值则不报警。当然也可以在两项都没有达到报警限值时通过手动按键报警,报警后必须手动解除。如果两项值有任一项还处于报警条件下,则不能取消报警。在本次设计中我将报警烟雾浓度范围设定为:1800-4000,温度范围设定为:20-70。主程序循环判断以上二项是否发生异常,当有一项异常时,系统再判断其他两项是否有一项或两项都异常,如果是则系统认为发生了火灾,发出声光报警,直到异常被排除,如果其他两项都没有异常则系统认为没有发生火灾,系统继续循环检测。

图4.3 系统循环检测图

4.4主要端口说明:

P1.0为单片机向数码管串行输出要显示的温度的数据口,P1.1为单片机向数码管串行输出数据的脉冲信号,P1.2温度传感器DS18B20的数据输入口,P1.4烟雾传感器的检测口,单片机检测到该口为高电平时认为烟雾浓度过高,发生异常,P1.5蜂鸣器的触发信号口。

16

乐山师范学院毕业论文(设计)

图4.4 主要端口说明图

5 单片机接口电路

5.1 前端信号调理电路[8]

对于传感器输出的模拟信号,一般要用运算放大器[9]对其进行调理或放大,以满足A/D转换器对输入模拟量幅值及极性的要求。在本报警器电路中,同样要对两类传感器的输出信号进行放大调理。电路图如上图5.1所示,运算放大器接成电压放大电路。从传感器采集过来的微弱电压信号,经过电压放大器的放大,得到较强的模拟电压信号。

8R320k32U5:A14559D2DIODEC20.1uFR4R510k100k 图5.1 信号处理电路图

4 5.2 晶振电路

晶振电路为单片机AT89C52工作提供时钟信号,芯片中有一个用于构成内部振荡器的高增益反相放大器

[10]

,引脚XTAL1和XTAL2分别是该放大

17

乐山师范学院毕业论文(设计)

器的输入端和输出端。这个放大器与作为反馈原件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。电路中的外接石英晶体及电容C5、C6接在放大器的反馈回来中构成并联振荡电路,由于外接电容C5、C6的容量大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及温度稳定性,如果使用石英晶体,电容的容量大小范围为30±10pF;如果使用陶瓷谐振,则电容容量大小为40±10pF;在本设计中,我使用的是石英晶体,电容的容值设定为30 pF。 5.3复位电路

复位电路的基本功能是:系统上电是提供复位信号,直至系统电源稳定后,撤销复位信号。我们在启动单片机时都需要复位,使CPU及系统各部件处于确定的初始状态,并从初始状态开始工作。AT89C52的复位信号时从REST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态且振荡器稳定后,如果REST引脚上有一个高电平并维持2个机器周期以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位,在本次设计中,我采用的是手动按钮复位。在复位输入端REST上加一个高电平,采用的办法是在电源和REST端接一个按钮,当手按一下按钮时,系统复位。AT89C52的复位电路如图5.3所示:

R2C11nF10k

图5.3 AT89C52的复位电路

5.4声光报警电路

在AT89C52的控制下,声光报警电路可以根据不同的情况,通过蜂鸣器和指示灯发出声光信号。

由于蜂鸣器的工作电流一般比较大,单片机的I/O口无法直接驱动了,所以需要利用放大电路来驱动,一般使用三极管来放大电流就可以了。声光报警电路由单片机的P1.4引脚进行控制,当P14输出的电平为高电

18

乐山师范学院毕业论文(设计)

平时,三极管导通,蜂鸣器的电流此时形成回路,会发出声音报警;否则,三极管截止,蜂鸣器就不会发出声音。蜂鸣器报警电路如图5.4.1所示:

Q1fNPNBUZ1BUZZER

图5.4.1 蜂鸣报警电路

声光报警电路就有单片机的P10口进行控制1个发光二极管,予以光报警(指示灯为:红灯闪烁)。声光报警电路如图5.4.2所示:

qR110kD1LED-BIGY

图5.4.2 声光报警电路图

5.5数据采集电路

数据采集是本次设计中的重要环节。为了降低误报率,设计时对温度烟雾做了两次采集、两次判断的方法。每次采集温度烟雾数据后,将数据存入单片机的寄存器中,然后在火灾判断程序中,将采集的数据与设定的值进行比较,从而判断出是否发生火灾。数据采集的具体流程[11]是:系统和程序初始化后,驱动ADC0832的1N0对温度信号先进行A/D转换,单片机接收转换好的数据,存入单片机的P1.6口,有INT1中段服务程序完成;系统延时10 ms,驱动ADC0832的IN1对烟雾信号进行A/D转换,转换完成后系统延时50 ms,进行第二次温度烟雾信号采集,

19

乐山师范学院毕业论文(设计)

将转换好的数据存入寄存器数。单片机每次驱动A/D转换后等待外部中段1,当ADC0832的EOC端变为I时,即中断到来,说明A/D转换已经完成,通过中断服务程序读取转换得到的数据。数据采集电路如图5.5所示:

图5.5 烟雾传感器采集电路和转换电路图

6 软硬件调试

6.1软件调试

先画出整个电路原理图,然后将写好的程序调入KEIL软件中进行调试,首先对各模块的子程序进行调试,在调试过程中,如果遇到与希望得到的结果不相符合的,进行单步调试,直到该模块能够汇编成可执行文件并出现相应的现象,然后将编译成功后的程序加载到Protel 99 SE上进行仿真,仿真图和 KEIL软件调试图如6.1.1和6.1.2所示:

图6.1.1 软件调试图

20

乐山师范学院毕业论文(设计)

}

}

warn(); //手动报警/取消

if((S0>=S1)||(S2>=S3)) {ledw=0;BEEP=0;};//报警条件

User.c:

#include\#define uchar unsigned char #define uint unsigned int uint temp1; fun.c:

#include\sbit ledw=P1^3; //LED sbit BEEP = P1^4; //蜂鸣器

unsigned char code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共 阴 uchar t=0,k=0;

uint x=0,y=62,S,S0,S1=2500,S2,S3=50,y1=12; void delay1(uint n) { }

//=============================预热 void pre() {

uchar i; while(n--);

P2_4=1;P2_5=1;P2_6=1;P2_7=1; //消影

26

乐山师范学院毕业论文(设计)

for(i=0;i<5;i++) //LED闪烁三次 {

ledw=~ledw; delay1(55000);

} ledw=1; while(1)

//预热30秒左右

{ delay1(200); P0=led[y/10]; P2_6=0; delay1(200); P0=led[y]; P2_5=0; delay1(200); if(y==0) break;

}

}

//=============================初始化 void initial() { TMOD=0x01; //定时器工作方式

ET0=1; TR0=1;

EA=1;

BEEP=1;

27

乐山师范学院毕业论文(设计)

}

TH0=(65536-50000)/256; TL0=(65536-50000)%6;

//=============================数码管显示 void output() { uchar a,b,c,d; a=x/1000;

//千位

b=x00/100; //百位 c=x0/10; //十位 d=x;

//个位

P2_7=0; P0=led[a]; delay1(250); P2_6=0; P0=led[b]; delay1(250); P2_5=0; P0=led[c]; delay1(250); P2_4=0; P0=led[d]; delay1(250);

}

//==========================确定显示类型/加减设定值void getx()

28

乐山师范学院毕业论文(设计)

{

if(k==0)

//显示设定烟雾浓度

并增/减 +100/-100 上限4000

1800 { x=S1; if(P3_0==0) { while(!P3_0); S1=S1+100;

if(S1>=4000) S1=4000;

}

if(P3_1==0) { while(!P3_1); S1=S1-100;

if(S1<=1800) S1=1800; }

}

else if(k==1) //显示实际烟雾浓度 { x=S0; }

else if(k==2) //显示设定温度 并增/减 +1/-1 { x=S3; if(P3_0==0)

{ 上限50 下限20 29

下线

乐山师范学院毕业论文(设计)

}

}

}

while(!P3_0); S3=S3+1; if(S3>=50) S3=50;

if(P3_1==0) { }

while(!P3_1); S3=S3-1;

if(S3<=20) S3=20;

else if(k==3) //显示实际温度 { }

x=S2;

//=================================未达到自动报警条件时手动报警 /取消报警 void warn() { }

//===============================标志位k值确定 服务确定x程序

30

if(P3_3==0) { }

while(!P3_3);

BEEP=~BEEP;ledw=~ledw;

乐山师范学院毕业论文(设计)

void fun() { if(P3_2==0) { while(!P3_2); k++;

if(k==4) k=0;

}

} Ppm.c:

#include\#include\sbit CLK=P1^5; sbit DO=P1^6;

sbit DI=P1^6; sbit CS=P1^7;

//=========================AD转换

uchar ADC0832() { uchar i;

uchar DOUT=0; //只需255,故使用uchar 0~255

CS=0;

DI=1;//第一个上升沿前为高,确认开始 CLK=0;

CLK=1;

_nop_(); //启动信号

31

乐山师范学院毕业论文(设计)

DI=1; //第二个上升沿前为1 CLK=0; CLK=1; _nop_(); //

DI=0; //第三个上升沿前为0 CLK=0; CLK=1; _nop_(); // CLK=1;

CLK=0; //开始采样

_nop_(); _nop_();

DO=1;//写全一,保证下面的读引脚正常

for(i=8;i>0;i--) {

CLK=1;

CLK=0; //下降沿采样

_nop_();

DOUT=DOUT<<1;

DOUT=DOUT|DO; //按位或,ADC_DO是转换后的输出,其实就是把ADC_DO传送到dig的低位

//因为ADC_DO是一位,这样左移位后获得的空位放置的就是ADC_DO

//第二个时钟下降沿获得就是最高位

} CS=1;

//转换结束

return(DOUT);

32

乐山师范学院毕业论文(设计)

} Temp.c: #include\

#define jump_ROM 0xCC #define start 0x44

#define read_EEROM 0xBE

sbit DQ = P1^2; //DS18B20数据口 unsigned char TMPH,TMPL; void delay(uint e) { while(e--);

}

//==========================================温度传感器模块uchar Reset(void) { uchar deceive_ready; DQ = 0; delay(29); DQ = 1; delay(3);

deceive_ready = DQ; delay(25);

return(deceive_ready);

}

uchar read_bit(void) {

33

乐山师范学院毕业论文(设计)

uchar i; DQ = 0; DQ = 1;

for(i=0; i<3; i++); return(DQ);

}

void write_bit(uchar bitval) { DQ=0;if(bitval==1) DQ=1; delay(5); DQ=1;

}

uchar read_byte(void) { uchar i,m,receive_data; m = 1;

receive_data = 0; for(i=0; i<8; i++) { if(read_bit()) { receive_data = receive_data + (m << i);

} delay(6);

}

34

乐山师范学院毕业论文(设计)

return(receive_data);

}

void write_byte(uchar val) { uchar i,temp; for(i=0; i<8; i++) { temp = val >> i; temp = temp & 0x01; write_bit(temp); delay(5);

}

}

//===============================取得温度temp1 void gett() { Reset();

write_byte(jump_ROM); write_byte(start); Reset();

write_byte(jump_ROM); write_byte(read_EEROM); TMPL = read_byte(); TMPH = read_byte();

temp1 = TMPL / 16 + TMPH * 16; }//================================================温度传感器模块结束

35

乐山师范学院毕业论文(设计)

36

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

Top