您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页家庭安全防护系统设计

家庭安全防护系统设计

来源:筏尚旅游网


摘 要 随着中国经济的飞速发展,中国家庭的财富积累也呈上升趋势,与此同时,人们对于家庭的安全问题也越来越重视,然而,传统的防护系统功能却太过单一,满足不了人们的这种需求。于是,本文基于这一现状设计了一款家庭安全防护系统。

本设计包括两个子系统,分别是防盗报警子系统与防火报警子系统,其中防盗子系统采用STCC52为核心控制器,利用单片机控制模块、红外探头模块、红外遥控模块、驱动执行报警模块等部分实现功能;防火报警子系统采用STCC52为核心控制器,利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器、火焰传感器、LCD液晶显示等实现基本功能。

关键词:防盗报警;防火报警;STCC52;人体红外传感器;红外遥控;气体传感器MQ-2;DS18B20温度传感器;火焰传感器。

I

Abstract

With the rapid development of Chinese economy, the Chinese family wealth accumulation also on the rise, at the same time, people for security family more and more attention, however, the traditional protection systems function is too simple, can not meet people's this demand. Thus, this paper based on this Situation designed a home security system.

The design consists of two subsystems, namely, burglar alarm and fire alarm subsystems subsystem, including security subsystem STCC52 as the core controller, using SCM control module, infrared sensor module, infrared remote control module, drive execution alarm module and other components to achieve function; fire alarm subsystem STCC52 as the core controller, using a gas sensor MQ-2, ADC0832 analog to digital converter, DS18B20 temperature sensor, flame sensor, LCD liquid crystal display and other basic functions.

Keywords: burglar alarm; fire alarm; STCC52; human infrared sensor; IR remote control; gas sensor MQ-2 ; DS18B20 temperature sensor; flame sensor.

II

目录

1 绪论 ............................................................................................................................................. 1

1.1 家庭安全防护系统的研究背景 ...................................................................................... 1 1.2 家庭安全防护系统的发展与现状 .................................................................................. 1 1.3 课题的研究内容 .............................................................................................................. 1 2 家庭安全防护系统的总体方案设计 ......................................................................................... 2 3 防盗报警子系统 ......................................................................................................................... 3

3.1 系统的功能要求 ............................................................................................................. 3 3.2 系统的技术要求 ............................................................................................................. 3 3.3 系统的组成及方案设计 ................................................................................................. 3 3.4 硬件电路设计 ................................................................................................................. 4

3.4.1 单片机部分 ........................................................................................................... 5 3.4.2 人体红外感应部分 ............................................................................................... 7 3.4.3 红外遥控模块 ..................................................................................................... 10 3.4.4 按键控制电路 ..................................................................................................... 11 3.4.5 指示灯和报警电路 ............................................................................................. 12 3.4.6 总体硬件电路设计 ............................................................................................. 13 3.5 软件的程序实现 ........................................................................................................... 15

3.5.1 主程序工作流程图 ........................................................................................... 15 3.5.2 软件部分 ........................................................................................................... 16

4 防火报警子系统 ....................................................................................................................... 19

4.1 系统的功能要求 ........................................................................................................... 19 4.2 系统的技术要求 ........................................................................................................... 19 4.3 系统的组成及方案设计 ............................................................................................... 19 4.4 系统的硬件设计 ........................................................................................................... 20

4.4.1 单片机部分 ....................................................................................................... 21 4.4.2 烟雾探测电路 ................................................................................................... 21 4.4.3 火焰传感器模块 ............................................................................................... 23 4.4.4 液晶显示电路 ................................................................................................... 24 4.4.5 声光报警提示电路 ........................................................................................... 25 4.4.6 温度采集电路 ................................................................................................... 26 4.4.7 按键电路 ........................................................................................................... 28 4.4.8 GSM模块 ......................................................................................................... 28 4.4.9 总体电路 ........................................................................................................... 29 4.5 系统的软件设计 ........................................................................................................... 31

4.5.1 软件介绍 ........................................................................................................... 32 4.5.2 系统程序流程图 ............................................................................................... 32

5 系统调试与结果 ....................................................................................................................... 33

5.1 调试 ................................................................................................................................ 33 5.2 结论 ................................................................................................................................ 36 致谢 ............................................................................................................................................... 37 参考文献 ....................................................................................................................................... 38 附录一:防盗报警子系统程序 ................................................................................................... 39

II

附录二:防火报警子系统程序 ................................................................................................... 44

IV

河南理工大学毕业设计(论文)说明书

1 绪论

1.1

家庭安全防护系统的研究背景

随着中国经济的飞速发展,中国人民的生活水平有了很大的提升,中国家庭的财富积累也呈上升趋势。随着经济的发展和生活水平的提高,围绕经济生活各方面的配套体系都在随之适应进行调整,其中,家庭的安全也更加引起人们的注意。家庭的安全包括财产和人身安全,相对的应对措施主要是防盗与防火系统。而传统的防盗系统的结构单一、性能落后,已经不能适应当今的科学水平与生活水平,而传统的防火系统在家庭中更是见都没有见过。人们迫切需要一款功能更加强悍,更安全的家庭安全防护系统,这也正是本设计的背景。

1.2 家庭安全防护系统的发展与现状

经过长时间的发展,家庭安全防护系统在国外已经趋于成熟化市场化,从刚开始的价格昂贵、适用面窄发展到了现在的能广泛应用于各类的建筑。而与国外相比,中国的家庭安全防护系统起步较晚,而且在初期大多是模仿或者引进国外技术,直到近二三十年,中国企业在家庭安全防护才有了实质性的发展,像荣事达、livinglab、小米等企业都在家庭安全防护系统上有涉足,并且开发了出功能比较强大的产品。

1.3 课题的研究内容

家庭安全防护系统可实现功能:主要是检测人体红外、火焰、温度、烟雾,通过液晶显示屏来显示通过按键设定的相应的阀值以及由传感器采集到的当前的烟雾值和温度值。再通过单片机控制完成报警及短信发送功能。

该设计包括以下几个方面:

(1) 硬件部分:包括火焰、温度、人体红外、燃气传感器,显示模块,烟雾及火焰信号转换电路,单片机控制电路,按键以及无线遥控,报警驱动电路,短信发送模块。

(2) 软件部分:包括程序的编写和原理图、仿真图的绘制。

(3) 系统的综合调试与分析:在软硬件完成以后,要对系统进行综合的测试与实验,针对系统中出现的实际问题对软件与硬件部分进行调整与修改。

1

河南理工大学毕业设计(论文)说明书

2 家庭安全防护系统的总体方案设计

系统设计简介:

本系统总体功能是通过对人体红外信号、温度值、烟雾浓度、火焰信号等的实时采集,如检测到人体红外和火焰信号直接进行报警。另外通过按键模块设置模式以及预设报警阈值,并通过显示模块显示当前温度、浓度,将实时采集到的信号与设定值进行比对,来判断当前是否发生火情,是否发生燃气泄漏。并通过声光报警模块进行对应的声光报警,以及短信发送。系统总体框图如图2-1所示。

本设计功能较多,由于单片机引脚及电流的,本设计分开采用防盗与防火两个子系统。防盗子系统主要是实现盗窃发生时的报警,防火子系统主要是实现燃气泄漏、火灾发生时的报警。下面将分别从系统功能要求、系统技术要求及系统实现方案三个方面讨论。

人体红外采集模块 单 片

温度采集模块 按键模块 机 最 声光报警提示模块 红外遥控模块 显示模块 烟雾采集模块 小 系 统 GSM短信模块

火焰传感模块

图2-1 系统总体框图

2

河南理工大学毕业设计(论文)说明书

3 防盗报警子系统

3.1 系统的功能要求

本设计主要包括以下几项功能:

(1) 人体探测功能:为了实现报警的准确性和及时性,需要双元件型热释电红外线传感器来实现探测移动人体的目的。

(2) 声光报警功能:当系统处于布防状态时发现有人闯入,报警器进行声光报警。当户主发现有人闯入时可手动报警。

(3) 模式选择功能:为了使系统不影响家庭的正常生活,有时需要关闭报警功能,当遇到紧急情况,需要手动报警,因此需要对系统进行功能上的选择。

(4) 红外遥控功能:当户主外出或回家时,可以通过红外遥控设置系统布防或者取消布防。

3.2 系统的技术要求

在对本设计的基本思路有了一个大致的概念以后,我们就可以确定该系统的一些基本的技术要求,比如体积小、功耗低、数传性能可靠和成本低廉等,具体的指标如下:

(1) 体积小:为了使系统更加隐蔽以及较少对空间的占用,传感器的体积要尽可能的小,这样才有利于使用和更换,以及减少不必要的使用时的危险。

(2) 功耗低:由于该系统系长期运行的系统,出于节能方面的考虑,应尽可能保证系统的耗能较低,因此本系统可以使用外接5v电源进行供电。

(3) 可靠性高:由于系统工作环境中存在各种不确定因素如天气、温度、湿度、物理碰撞、电磁干扰等等,为了保证系统长时间的可靠工作,该系统应有良好的抗干扰能力。

3.3 系统的组成及方案设计

本设计主要由热释电红外传感器、STCC52单片机、声光报警电路、红外遥控电路、负载驱动电路以及程序等组成。

系统的组成结构如图3-1。

3

河南理工大学毕业设计(论文)说明书

晶振电路 按键模块 人体红外信号采集模块 单 片 声光报警模块 红外遥控模块 复位电路 机 图3-1 防盗报警系统结构

其中,单片机及晶振、复位电路一同构成最小单片机系统,以完成实现功能的基本的电路;人体红外传感器执行对人体信号的采集并且将信号传给单片机进行处理;按键模块实现对模式的选择;声光报警模块实现报警功能。

3.4 硬件电路设计

需求决定功能,因此从本设计的需求出发,该设计硬件部分须包含以下几部分:红外感应部分、STCC52单片机、红外遥控、声光报警系统四部分。硬件电路总原理框图如图3-2所示。

人体红外 红外遥控 按键控制 电源开关 STCC52 单片机最小系统 LED指示灯 蜂鸣器

图3-2 防盗报警系统总体硬件设计框图

4

河南理工大学毕业设计(论文)说明书

本硬件设计采用STCC52为核心控制器,并且通过烧录的程序来进行控制。系统运行时,首先由人体红外传感器将检测到的人体红外信号输出成为电信号,通过BISS0001进行信号的调制,完成后送出TTL电平至单片机。然后经过事先烧录好的程序实时发出报警状态控制信号,并控制报警电路进行声光报警。

3.4.1 单片机部分

STCC52是一种低功耗、高性能的CMOS8位微控制器,拥有灵巧的8 位CPU,因此可以为众多应用系统提供高灵活、超有效的解决方案。STCC52主要功能如表3-1所示,其引脚图如图3-3所示。

表3-1 STCC52主要功能

主要功能特性

兼容MCS51指令系统

32个双向I/O口

3个16位可编程定时/计数器中断

2个串行中断 2个外部中断源 2个读写中断口线 低功耗空闲和掉电模式

4K可反复擦写Flash ROM

256x8bit内部RAM 时钟频率0-24MHz 可编程UART串行通道

共6个中断源 3级加密位

软件设置睡眠和唤醒功能

STCC52引脚介绍 (1) 主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 (2) 外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 (3) 控制引脚(4根) RST/VPP(Pin9):复位引脚

ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通 (4) 可编程输入/输出引脚(32根)

STCC52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位,共32根。

P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7

5

河南理工大学毕业设计(论文)说明书

P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7 作频率35Mhz,6T/12T可选。 U112345671011121314151617181920P10P11P12P13P14P15P16P17RESETP30/RXDP31/TXDP32/INT0P33/INT1P34/T0P35/T1P36WRP37/RDX2X1GNDSTCC52VCCP00P01P02P03P04P05P06P07EA/VPALE/PPSENP27P26P25P24P23P22P21P204039383736353433323130292827262524232221 图3-3 STCC52封装图

单片机最小系统是指能维持单片机正常运行所需要的最小的外部电路,一般为电源、时钟、复位等部件。单片机最小系统是应用系统的核心部分,只有在其基础上进行扩展才能实现复杂的的功能。图3-4为单片机最小系统原理框图。

时钟电路 STCC52单片机 复位电路 I/O口 图3-4 单片机最小系统原理框图

(1) 时钟电路

STCC52单片机的时钟信号通常使用内部时钟方式产生。电路如图3-5所示。在STCC52单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接晶振,并且并联电容,就构成了自激振荡器并能在单片机内部产生时钟脉冲信号。

C21830pFY1C311.0592MHz1930pF 图3-5 STCC52内部时钟电路

6

河南理工大学毕业设计(论文)说明书

(2) 复位电路

当在STCC52单片机的RST引脚引入高电平并保持2个机器周期时,单片机就执行复位操作,一般按键手动电平复位的方法,其功能的视线是通过RST引脚与电源Vcc接通而实现的。复位电路如图3-6所示。

VCCS49C1R110uF10k 图3-6 STCC52复位电路

3.4.2 人体红外感应部分

3.4.1.1 热释电传感器

热释电传感器对人体辐射出的红外信号非常敏感,可以很轻易地识别出人体并且将其转化成电信号输出,利用它的这一特性便可用到很多用途上,比如对灯光的控制、防盗防火报警系统等,人体辐射的红外线中心波长为9~10um,而探测元件的波长灵敏度在0.2~20um范围内几乎稳定不变,在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7~10um,正好适合于人体红外辐射的探测,而对其它波长的红外线由滤光片予以吸收,这样便形成了一种专门用作探测人体辐射的红外线传感器,本传感器是整个系统的关键,如图3-7所示。

图3-7 热释感应传感器

3.4.1.2 菲涅耳透镜

由于人体热释电传感器的检测范围较小距离较短等缺点,直接使用的话对其信号的采集有很大的影响,而菲涅耳透镜片可以将探测到的红外线集中到传感器上,根据自己的需求,可以选择不同的感应距离,刚好能弥补人体热释电传感器的缺点,因此在本设计中将二者配合使用,如图3-8所示为菲涅耳透镜模型图。

7

河南理工大学毕业设计(论文)说明书

图3-8 菲涅耳透镜

3.4.1.3 BISS0001芯片特点及参数

BISS0001是用于信号处理的集成芯片,将人体热释电发送出的电信号传输到BISS0001里,通过外部电路便可实现信号的处理,如图3-9所示为BISS000集成芯片的内部框图,管脚功能说明如表3-2所示。

图3-9 BISS0001内部框图 表3-2 BISS0001管脚说明图

引脚

名称

I/O

功能说明

可重复触发和不可重复触发选择端。当A为“1”时,允许重复触发;反

1

A

I

之,不可重复触发

控制信号输出端。由VS的上跳前沿触发,使Vo输出从低电平跳变到

2

VO

O

高电平时视为有效触发。在输出延迟时间Tx之外和无VS的上跳变时,Vo保持低电平状态。

3

RR1 --

输出延迟时间Tx的调节端

8

河南理工大学毕业设计(论文)说明书

4 5 6 7 8 9

RC1 -- RC2 -- RR2 -- VSS -- VRF I VC

I --

输出延迟时间Tx的调节端 触发封锁时间Ti的调节端 触发封锁时间Ti的调节端 工作电源负端,一般接0V

参考电压及复位输入端。通常接VCC,当接“0”时可使定时器复位 触发禁止端。当Vc>VR时允许触发(VR≈0.2VDD)

运算放大器偏置电流设置端,经RB接VSS端,RB取值为1M左右。 工作电源正端,范围为3~5V 第二级运算放大器的输出端 第二级运算放大器的反相输入端 第一级运算放大器的同相输入端 第一级运算放大器的反相输入端 第一级运算放大器的输出端

10 IB

11 VCC -- 12 2OUT O 13 2IN- I 14 1IN+ I 15 1IN- I 16 1OUT O

由BISS0001内部框图可以看出,该数模混合专用集成电路由于其数模混合专用的特性而受到广泛的使用。首先,根据实际需要,利用运算放大器OP1组成传感信号预处理电路,将信号放大,然后耦合给运算放大器OP2,再进行第二级放大,同时将直流电位抬高为VM(≈0.5VDD)后,将输出信号V2送到由比较器COP1和COP2组成的双向鉴幅器,检出有效触发信号Vs,COP3是一个条件比较器,当输入电压VC>VR时,COP3输出为高电平,进入延时周期,当A端接“0”电平时,在Tx时间内任何V2的变化都被忽略,直至Tx时间结束,即所谓不可重复触发工作方式,当Tx时间结束时,Vo下跳回低电平,同时启动封锁时间定时器而进入封锁周期Ti,在Ti时间内,任何V2的变化都不能使Vo跳变为有效状态(高电平),可有效抑制负载切换过程中产生的各种干扰,而可重复触发工作方式下的波形在Vc=“0”、A=“0”期间,信号Vs不能触发Vo为有效状态,在Vc=“1”、A=“1”时,Vs可重复触发Vo为有效状态,并可促使Vo在Tx周期内一直保持有效状态,在Tx时间内,只要Vs发生上跳变,则Vo将从Vs上跳变时刻起继续延长一个Tx周期;若Vs保持为“1”状态,则Vo一直保持有效状态;若不是“1”,则Vo在Tx周期结束后恢复为无效状态。

9

河南理工大学毕业设计(论文)说明书

3.4.1.4 信号采集处理模块

本模块可以实现红外信号向电信号的转化。在本模块工作期间,如果检测到人体红外信号,则持续输出高电平,当人离开人体红外传感器模块的检测范围时,高电平变为低电平。如图3-10、3-11所示为信号处理模块原理图与实物图。

图3-10 信号处理模块

图3-11 实物图

3.4.3 红外遥控模块

PT2262/2272是一种CMOS工艺制造的编解码电路,具有低功耗,性价比高的特点。广泛应用于车辆防盗系统、家庭防盗系统、遥控玩具、电器遥控等方面。

该部分的功能实现是由编码芯片PT2262发出信号,解码芯片PT2272接收信号。PT2262经过编码形成完整的码字,解码芯片PT2272接收到信号后,进行解码,运行相应的程序。车辆防盗系统、家庭防盗系统、遥控玩具、其他电器遥控,图3-12为PT2262引脚图以及表3-3为管脚说明表:

10

河南理工大学毕业设计(论文)说明书

图3-12 PT2262引脚图 表3-3 PT2262引脚图管脚说明 名称 A0-A11 D0-D5 Vcc Vss TE OSC1 OSC2 Dout

管脚 1-8、10-13 7-8、10-13 18 9 14 16 15 17

说 明

地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空), 数据输入端,有一个为“1”即有编码发出,内部下拉 电源正端(+) 电源负端(-)

编码启动端,用于多数据的编码发射,低电平有效; 振荡电阻输入端,与OSC2所接电阻决定振荡频率; 振荡电阻振荡器输出端;

编码输出端(正常时为低电平)

3.4.4 按键控制电路

由于单片机引脚初始电平为高电平,本设计采用按键接地的方式来检测按键的信号。

单片机常用的键盘有键盘和矩阵式键盘两种:键盘每一个I/O 口上只接一个按键,按键的另一端接地;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用式键盘接法,本电路的设计是为了对应控制电路中布防和紧急状态下不同的工作形式,当按下布防按键后,5秒后进入监控状态,进入布防模式后,当有人靠近时,热释红外感应到信号,传回给单片机,单片机马上进行声光报警,当遇到紧急情况时,可按下紧急报警键,直接进行声光报警,当需要解除警报时可以按下消警按键解除警报,如图3-13所

11

河南理工大学毕业设计(论文)说明书

示。

图3-13 按键部分

3.4.5 指示灯和报警电路

3.4.5.1 指示灯

LED是一种能够将电能转化为光能的半导体器件,LED具有寿命长、辐射低与功耗低的特点,这与本设计的技术要求相一致,因此本设计利用不同颜色的LED指示不同的报警模式,分别在P20、P21和P22分别接上LED指示灯,当有报警信号时赋对应的引脚低电平。指示灯报警电路如图3-14所示:

图3-14 指示灯报警电路

3.4.5.2 声音报警

声报警方面本系统采用有源蜂鸣器,该蜂鸣器采用直流电供电,由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成,接通电源后,振荡器产生的信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在该磁场中震动产生声音。在P23接上蜂鸣器并且外接个8550的三极管起到驱动作用,当引脚输出低电平,三极管达到饱和,驱动蜂鸣器工作,而基极高电平则使三极管关闭,蜂鸣器停止发声。声音报警电路如图3-15所示:

12

河南理工大学毕业设计(论文)说明书

图3-15 声音报警电路

3.4.6 总体硬件电路设计

基于以上各部分的硬件电路设置,防盗报警子系统总体电路原理图及仿真图如图3-16,图3-17所示:

图3-16 防盗报警系统原理图

13

河南理工大学毕业设计(论文)说明书

图3-17 防盗报警系统仿真图

14

河南理工大学毕业设计(论文)说明书

3.5 软件的程序实现

3.5.1 主程序工作流程图

按上述硬件电路的设计分析可知系统主程序工作流程图如图3-18所示:

开始 布防按键按下 5秒倒计时开始 倒计时结束 N 检测到有无 信号 Y 紧急按键按下 Y 蜂鸣器报警,发光二级管闪烁 蜂鸣器报警 结束

图3-18 主程序工作流程图

15

河南理工大学毕业设计(论文)说明书

该程序所实现的功能是开机初始化,并且通过扫描按键值运行相对应的程序段,如果按下布防按键,运行布防程序段,通过定时器的累加达到5秒延时的的效果,然后进入监控模式,如果红外检测到人体信号则启动报警程序;当按下紧急报警则直接启动报警程序;当按下消警按键,则清零变量。

3.5.2 软件部分

在本课题的软件设计过程中,一共用到了KEILC51、PROTEL、PROTEUS三款软件。其中,使用KEILC51完成了程序的设计,使用PROTEL完成了对原理图的设计,使用PROTEUS完成了对仿真图的设计。以下是分别对这几款软件的介绍。 3.5.2.1

KeilC51软件介绍

KeilC51是兼容51系列单片机的基于C语言的编写程序软件,C语言在结构性、可读性、可维护性上有明显的优势,容易掌握,KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,另外重要的一点,KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势,KeilC51软件界面如图:

图3-19 Keil软件界面

3.5.2.2 Protel99SE软件介绍

Protel99SE是PORTEL公司在80年代末推出的EDA软件。采用设计库管理模式,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和

16

河南理工大学毕业设计(论文)说明书

可编程逻辑器件设计等工作

Protel99SE软件的特点:

(1)可生成30多种格式的电气连接网络表; (2)强大的全局编辑功能;

(3)同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、引脚、网络

(4)原理图和PCB之间可以保持一致 (5)满足国际化设计要求

(6)支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件 (7)智能覆铜功能,覆铀可以自动重铺; (8)提供大量的工业化标准电路板做为设计模版;

Protel99SE的工作界面是一种标准的Windows界面,如下图所示:

图3-20 Prtel99SE软件界面

3.5.2.3 Proteus软件介绍

Proteus在仿真单片机及其外部电路方面功能强大。以下是Proteus软件的特点:

(1)丰富的器件库,可方便地创建新元件

(2)智能的器件搜索:通过模糊搜索可以快速定位所需要的器件 (3)智能化的连线功能:减少工作量 (4)支持总线结构:电路更加明了

17

河南理工大学毕业设计(论文)说明书

(5)可输出高质量图纸 (6)完善的电路仿真功能 (7)ProSPICE混合仿真 (8)多样的激励源

(9)丰富的虚拟仪器:13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;

(10)生动的仿真显示:使仿真更加直观、生动; (11)支持主流的CPU类型 (12)支持通用外设模型 (13)实用的PCB设计平台

(14)先进的自动布局/布线功能:支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理;

(15) 完整的PCB设计功能

(16)多种输出格式的支持:可以输出多种格式文件,便利与其它PCB设计工具的互转和PCB板的设计和加工。

图3-21 Proteus软件界面

18

河南理工大学毕业设计(论文)说明书

4 防火报警子系统

4.1 系统的功能要求

本设计主要包括以下几项功能:

(1)火情探测功能:为了提高火灾报警的准确性和及时性,火灾报警系统需要使用各种方法进行火灾探测。在实际使用中,可以选用温度探测法、火焰检测法等火灾探测方法,来有效的探测火灾

(2)燃气探测功能:为了预防由于燃气泄漏而引发的火灾或者中毒事故,可以使用燃气浓度检测的方法来有效的预防事故发生

(3)灯光报警功能:当室内燃气浓度过大、有火情产生、故障等异常情况发生时,报警器要进行声光报警

4.2 系统的技术要求

在对本设计的基本思路有了一个大致的概念以后,我们就可以确定该系统的一些基本的技术要求,比如体积小、功耗低、数传性能可靠和成本低廉等,具体的指标如下:

(1) 体积小:探测器的体积要尽可能的小,这样占用的空间才能减少,使用和更换才会方便;

(2) 功耗低:系统可以采用三节5号干电池供电或5v电源供电;

(3) 可靠性高:由于系统工作环境中存在各种不确定因素如天气,湿度,电磁干扰等等,为了保证系统长时间的可靠工作,以及减少误报次数,所以选择多指示灯,指示不同的状态。

4.3 系统的组成及方案设计

本设计主要由燃气探测传感器电路、单片机、灯光报警电路、负载驱动电路、控制程序和编解码程序等组成。系统工作原理是通过燃气采集模块采集燃气浓度、并通过AD转换得到电信号、通过火焰传感器得到火焰信号、通过温度采集得到温度信号,并将这些信号通过I/O口输送至单片机,由单片机事先烧录好的程序进行相应的处理,然后进行声光报警、发送短信等功能。

系统的组成结构如图4-1所示:

19

河南理工大学毕业设计(论文)说明书

按键模块 AD燃气采集模块 单 火焰传感电路 片 机 液晶显示模块 温度采集模块 GSM短信模块 晶振电路 声光报警提示模块 复位电路 图4-1 防火报警系统组成方案

4.4 系统的硬件设计

需求决定功能,因此从本设计的需求出发,该设计硬件部分须包含以下几部分:烟雾传感部分、STCC52单片机、火焰传感部分、温度传感部分、声光报警部分、按键部分、GSM部分七部分组成。硬件电路总原理框图如图4-2所示:

烟雾传感 火焰传感 温度传感 按键部分 STCC52 单片机最小系统 LED指示灯 GSM短信 蜂鸣器

图4-2 防火报警系统总体硬件设计框图

本设计采用STCC52为核心控制器,并且通过烧录程序来进行控制。系统运行时,首先由人体红外传感器将检测到的人体红外信号输出成为电信号,通过BISS0001进行信号的调制,完成后送出TTL电平至单片机。然后经过事先烧录

20

河南理工大学毕业设计(论文)说明书

好的程序实时发出报警状态控制信号,并控制报警电路进行声光报警。

4.4.1 单片机部分

如防盗系统一致,在此不再赘述。

4.4.2 烟雾探测电路

图4-3 烟雾探测电路

如图4-3所示,在这个电路中,有两个部分,主要是烟雾传感器检测烟雾,将电压信号给ADC0832,模数转换电路将模拟信号转换成数字信号给单片机,单片机再读取相应的数值和处理。 4.4.2.1

MQ-2型气体传感器特点及参数

MQ-2型气体传感器主要可以检测甲烷、氢气、一氧化碳等的可燃气体,而且它抗干扰能力强,能有效地减少因水蒸气、烟等干扰造成的影响。

MQ-2型气敏元件具有以下特点:

(1) 采用烧结半导体所形成的敏感烧结体,具有稳定的阻值,从而保证了长期工作的稳定性

(2) 单电源供电,功耗较低,仅0.7W左右 (3) 对所测试的气体有极高的灵敏度和信噪比 电路如图4-4所示:

21

河南理工大学毕业设计(论文)说明书

图4-4 MQ-2电路图

器件的主要参数如下:

响应时间:Tr≤10s;恢复时间:Tn≤60s;加热电压:V﹢=5+0.2V;加热功率::约0.7W;抗干扰能力:丁烷浓度在0.2%时在湿度小于85%RH,在-10℃~+40℃温

度下不会引起误报;工作环境:温度-15℃~+55℃ 湿度≤80%RH

图4-5是元件外形结构图,基座采用耐高温酚醛塑料压制,引脚为镀镍铜丝,上罩采用双层密纹不锈钢网压制,有较高的强度和防爆能力,该元件有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。

图4-5 MQ-2型元件外形结构图

4.4.2.2 ADC0832特点及参数

ADC0832 是一种8 位分辨率、双通道A/D转换的芯片,它具有分辨率高、体积小、价格便宜、转换速度快、兼容性好、稳定性能强等很多优点,可以适用于一般的模拟量转换要求。

其特点具体如下: (1) 分辨率8位

(2) A/D转换器逐次逼近式 (3) A/D转换双通道

(4) 输入输出电平与TTL/CMOS相兼容 (5) 5V电源供电时输入电压在0~5V之间

22

河南理工大学毕业设计(论文)说明书

(6) 工作频率为250KHZ,转换时间为32μS (7) 一般功耗仅为15mW

(8) 8P、14P—DIP(双列直插)、PICC 多种封装

(9) 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C; (10) 芯片接口说明

(11) CS_片选使能,低电平芯片使能 (12) CH0 模拟输入通道0,或作为IN+/-使用 (13) CH1 模拟输入通道1,或作为IN+/-使用 (14) GND 芯片参考0 电位(地) (15) DI 数据信号输入,选择通道控制 (16) DO 数据信号输出,转换数据输出 (17) CLK 芯片时钟输入

(18) Vcc/REF 电源输入及参考电压输入(复用)

4.4.3 火焰传感器模块

模块特色:

(1) 可以检测波长在760纳米~1100纳米范围内的火焰 (2) 探测角度60度左右,对火焰光谱特别灵敏 (3) 灵敏度可调(图中蓝色数字电位器调节) (4) 信号干净,波形好,驱动能力强 (5) 配可调精密电位器调节灵敏度 (6) 工作电压3.3V-5V

(7) 输出形式 :数字开关量输出(0和1) (8) 设有固定螺栓孔,方便安装 (9) 小板PCB尺寸:3.2cm x 1.4cm (10) 使用宽电压LM393比较器 如图4-6所示为火焰传感器电路图:

23

河南理工大学毕业设计(论文)说明书

图4-6 火焰传感器模块设计

4.4.4 液晶显示电路

图4-7 液晶显示电路设计

如图4-7所示为液晶显示电路接线图。LCD1602是常用的液晶显示屏型号,该液晶显示器能够同时显示32个字符(16列2行),功能强大,可以显示数字、文字、专用符号和图形等,液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制。

24

河南理工大学毕业设计(论文)说明书

在单片机系统中应用晶液显示器作为输出器件有以下几个优点: (1) 液晶显示器画质高且不会闪烁 ;

(2) 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便;

(3) 重量上比传统显示器要轻;

(4) 显示部分耗电低,因此在节能上比其它显示器要好得多。 引脚说明:

第1脚:VSS为地电源 第2脚:VDD接5V正电源

第3脚:VL为液晶显示器对比度调整端,使用时可以通过一个10K的电位器调整对比度

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作 第6脚:E端为使能端,当E端由高电平跳变时,液晶模块执行命令 第7~14脚:D0~D7为8位双向数据线 第15脚:背光源正极 第16脚:背光源负极

1602LCD的RAM地址映射以及标准字库表:

LCD1602液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,当需要显示某一字符时,只需要知道该字符对应的固定代码。它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

4.4.5 声光报警提示电路 4.4.5.1 灯光提示电路

LED是一种能够将电能转化为光能的半导体器件,LED具有寿命长、辐射低与功耗低的特点,这与本设计的技术要求相一致,因此本设计利用不同颜色的LED指示不同的报警模式,分别在P24和P22分别接上LED指示灯,当有报警信号时赋对应的引脚低电平,本设计中红灯亮表示燃气传感器检测到燃气浓度高于设定值进行报警,黄灯亮表示火灾传感器检测到火焰或者温度传感器检测到温度高于设定值进行火灾报警。如图4-8所示为灯光提示电路原理图:

25

河南理工大学毕业设计(论文)说明书

图4-8灯光提示电路

4.4.5.2 声音报警电路

声报警方面本系统采用有源蜂鸣器,该蜂鸣器采用直流电供电,由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成,接通电源后,振荡器产生的信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在该磁场中震动产生声音。在P23接上蜂鸣器并且外接个8550的三极管起到驱动作用,当引脚输出低电平,三极管达到饱和,驱动蜂鸣器工作,而基极高电平则使三极管关闭,蜂鸣器停止发声。声音报警电路如图4-9所示:

图4-9 声音报警电路

4.4.6 温度采集电路

温度采集电路接线设计如图4-10所示:

图4-10 温度采集电路

26

河南理工大学毕业设计(论文)说明书

4.4.6.1 DS18B20概述

DS18B20温度传感器由不锈钢保护管封装而成,具有耐压、耐碰、体积小等特点.

DS18B20的性能特点如下:

(1) DS18B20与微处理器连接时仅需要一条线即可实现二者之间的双向通讯;

(2) 在使用中不需要任何外围元件; (3) 供电电压范围:+3.0V~+5.0V; (4) 测温范围:-55~+125℃;

(5) 即具有电源反接保护电路,当电源电压正负极接线反接时,能保护DS18B20不会烧毁;

(6) DS18B20的转换速率比较高,进行9位的温度值转换只需93.75ms; (7) 适配各种单片机或系统。 4.4.6.2

DS18B20引脚介绍

图4-11 DS18B20引脚

如图4-11所示为DS18B20引脚图,各引脚功能为:I/O为数据输入/输出端,外接上拉电阻后,常态下呈高电平,UDD是可供选用的外部电源端,不用时接地,GND接电源负极。 4.4.6.3

DS18B20的内部结构

DS18B20的内部结构主要包括7部分:寄生电源、温度传感器、位激光(loser)ROM与单线接口、高速暂存器(即便筏式RAM,用于存放中间数据)、TH触发寄存器和TL触发寄存器,分别用来存储用户设定的温度上下限值、存

27

河南理工大学毕业设计(论文)说明书

储和控制逻辑、位循环冗余校验码(CRC)发生器。如图4-12所示为DS18B20内部结构框图:

图4-12 DS18B20内部结构

4.4.7 按键电路

由于单片机引脚初始电平为高电平,本设计采用按键接地的方式来检测按键的信号。

单片机常用的键盘有键盘和矩阵式键盘两种:键盘每一个I/O 口上只接一个按键,按键的另一端接地;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用式键盘接法,本电路的设计是通过按键实现对温度报警阈值与然其浓度阈值的选择,并通过加减按键分别实现数值上的设定,按键电路图如图4-13所示。

图4-13 按键电路

4.4.8 GSM模块

GSM模块,是将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。

28

河南理工大学毕业设计(论文)说明书

本设计采用的SIM900A模块,集成GSM通信的主要功能于一块电路板上,具有发送短消息、通话、数据传输等功能。模块相当于手机的核心部分,如果增加键盘和屏幕就是一个完整的手机。普通电脑或者单片机可以通过RS232串口与GPRS模块相连,通过AT指令控制GPRS模块实现各种基于GSM的通信功能。

模块特点如下:

(1)供电要求:5V 供电,电流需提供1.5A或以上;

(2)TTL电平串口兼容3.3V和5V单片机。真正的可以与51/STM32/MP430等单片机直接通信;

(3)初期用电脑调试时,推荐用CP2102 USB-TTL模块来给模块供电与通信;

(4)使用单片机控制模块时,还可以通过USB--232监控模块对指令的返回数据,极大方便找到问题所在,特别适合用51单片机的小伙伴。

(5)待机在40MA左右,可以设置休眠状态在10MA左右低功耗。 (6)支持短信、GPRS数据传输,发送彩信,DTMF、HTTP、FTP、PPP拨号等功能。

(7)同时硬件含有一路复位管脚。模块出现问题时,可用此管脚复位来解决。

(8)开发板支持2G/3G/4G联通或移动手机卡。

4.4.9 总体电路

基于以上的硬件电路设计,防火报警子系统的原理图及仿真图设计如图4-14、4-15所示。

该电路能实时显示当前的烟雾值和温度值,共有2个报警值,可以通过按键设定阈值,分别是温度的上限和烟雾的上限报警值,当烟雾超过设定值的时候红灯和蜂鸣器声光报警并发送短信,当温度超过设定值的时候以及检测到火光时黄灯和蜂鸣器声光报警并发送短信。

29

河南理工大学毕业设计(论文)说明书

图4-14 防火报警系统原理图

30

河南理工大学毕业设计(论文)说明书

图4-15 防火报警系统仿真图

4.5 系统的软件设计

31

河南理工大学毕业设计(论文)说明书

4.5.1 软件介绍

同3.5.2节一致,此处不再赘述。

4.5.2 系统程序流程图

本防火报警子系统的程序功能是开机初始化,如果检测到按键值,执行对应的程序段,实现对温度、燃气浓度的报警阈值的设定,如未检测到按键值,则执行监控模式,这时显示模块实时显示当前温度及燃气浓度,如果实际值大于预设值则执行相应的报警程序,进行声光报警、短信报警。程序流程图如4-16所示: 开始 初始化 读取AD转换烟雾值 设置相应参数 显示设置数值 Y 按键 是否按下 N 判断当前 烟雾和温度范围 执行相应 的指示控制 结束 图4-16 程序流程图

32

河南理工大学毕业设计(论文)说明书

5 系统调试与结果

5.1 调试

由于本设计没有采用PCB制作的电路板,所有硬件电路是通过洞洞板手工焊接,所以由于前期布线复杂,焊接工作精密等原因,容易导致电路功能出现障碍。本系统完成初期时进行调试时发现以下问题:

(1) 电路虚焊、漏焊;

(2) 有时飞线绝缘层被烫化与焊锡之间短接; (3) 部分器件测试时接线错误会被烧坏; (4) 需要添加新的功能时没有位置放置新元件;

(5) 有时由于元器件损坏或者规格不对导致系统不能工作,需要仔细检查电路无故障后使用万用表逐点测量,才能发现原因所在;

(6) 有部分程序实际运行中表现并不好,发生延时较高等情况,仍没有较好的方法解决。

(7) 有些程序段运行时会占用别的程序段的资源,比如当红外报警系统报警时由于运行GSM部分的短信发送程序,导致显示屏及报警灯有短暂的卡顿。暂时没有解决。

33

河南理工大学毕业设计(论文)说明书

防盗报警系统实物照片

34

河南理工大学毕业设计(论文)说明书

防火报警系统实物照片

防盗报警系统焊接图

35

河南理工大学毕业设计(论文)说明书

防火报警系统焊接图

5.2 结论

基于家庭防火防盗越来越受人重视,防火防盗系统的作用以及价值呈上升趋势,家庭天然气、煤气的使用广泛,但是市面上却缺少一款防火防盗报警系统的现状。本文设计了以STCC52为核心控制器,以温度传感器、火焰传感器、燃气传感器为检测电路,以LED和蜂鸣器以及GSM短信发送模块为报警电路的家庭防火报警系统,以及以STCC52为核心控制器,以人体红外热释电传感器为检测电路,以按键和红外遥控为控制电路,以LED和蜂鸣器为报警电路的家庭防盗报警系统。借鉴了市场上优秀的同类产品,在其基础上改进了功能,具有体积小巧、外形美观、功耗低、功能实用、安装调试简单等优点,提高了产品的实用性和市场竞争力。

但是,与此同时,由于受到资源、时间以及本人自身能力方面的,本设计在报警的后续处理方面还有很多需要改进的地方,比如加入喷水系统实现对火情的控制,加入电机实现开窗功能、加入红外对管实现对窗户的监测,加入拍照系统或者干簧管及电机控制门窗的关闭等等。

36

河南理工大学毕业设计(论文)说明书

致谢

37

河南理工大学毕业设计(论文)说明书

参考文献

[1]胡萍.串口通信的红外报警器的研制[J].计算机与现代化,2010(10):15-16. [2]唐德琴.电子温度测量仪器技术发展战略研究[J].电子科学技术,2009,27(1):1-8

[3]姜道连.用于ATC51设计红外报警器的设计与制作[J].国外电子元器件,2010(12):31-34.

[4]杨志忠.数字电子技术[M].北京:高等教育出版社,2003.12.

[5]及力.Protel99SE原理图与PCB设计教程[M].北京:电子工业出版社,2007.8. [6]徐江海.单片机实用教程[M].北京:机械工业出版社,2006.12 [7]熊如贵.串口通信感应装置[J].电子制作,2009(6):23-31.

[8]时德钢等.基于串口通信的红外报警器的研究[J].计算机测量与控制,2009,10(7):480-482.

[9]陈权昌,李兴富.单片机原理及应用[M].广州:华南理工大学出版社,2007.8 [10]李庆亮.C语言程序设计实用教程[M].北京:机械工业出版社,2005.3 [11]胡宴如.模拟电子技术[M].北京:高等教育出版社,2008.6 [12]刘宁.单片机多功能时钟的设计[M].浙江:浙江海洋学院,2009. [13]汪文,陈林.单片机原理及应用[M].湖北:华中科技大学出版社,2007. [14]康华光.电子技术基础数字部分[M].北京:高等教育出版社,2008.

[15]李行善.基于串口组件的体系结构[J].电子串口与仪器学报,2010(08):15-16.

38

河南理工大学毕业设计(论文)说明书

附录一:防盗报警子系统程序

#include //调用单片机头文件

#define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535

// 红外热释电传感器 平时为0 有输出为1

sbit beep = P2^3; //蜂鸣器定义

sbit red = P2^2; //红色发光二极管定义 sbit green = P2^1; //绿色发光二极管定义 sbit yellow = P2^0; //黄色发光二极管定义 sbit hw = P1^3; //红外热释传感器定义 bit flag_300ms = 0;

uchar flag_alarm ; //报警标志位 uchar flag_bufang ; //布防标志位 uchar flag_bufang_en ; //布防标志位使能 uint flag_value; //用做定时器的变量

sbit pt2272_a = P2^5; sbit pt2272_b = P2^6; sbit pt2272_c = P2^7;

/***********************1ms延时函数*****************************/ void delay_1ms(uint q) {

uint i,j;

for(i=0;i/********************按键程序*****************/ uchar key_can; //按键值

void key() //按键程序 {

static uchar key_new;

key_can = 20; //按键值还原 P1 |= 0x07;

39

河南理工大学毕业设计(论文)说明书

if((P1 & 0x07) != 0x07) {

//按键按下

delay_1ms(1); //按键消抖动

if(((P1 & 0x07) != 0x07) && (key_new == 1)) { //确认是按键按下 key_new = 0; switch(P1 & 0x07) { case 0x06: key_can = 3; break; //得到按键值 case 0x05: key_can = 2; break; //得到按键值 case 0x03: key_can = 1; break; //得到按键值

}

} }

else //按键松开 key_new = 1; }

/***************无线控制****************/ uchar PT2272_can; //按键值

void PT2272() //无线按键程序 {

if(pt2272_a == 1) key_can = 1; if(pt2272_b == 1) key_can = 2; if(pt2272_c == 1) key_can = 3; }

/******************对应不同按键处理**********************/ void key_with() {

if(key_can == 1) //按键紧急报警 { flag_alarm = 1; //报警标志位 ; }

40

河南理工大学毕业设计(论文)说明书

if(key_can == 2) //布防按键

{ flag_bufang_en = 1; }

if(key_can == 3) //取消报警 把变量清零 { flag_alarm = 0; flag_bufang = 0; flag_bufang_en = 0; flag_value = 0; beep = 1;

red = 1; //关闭红灯 green = 1; //关闭绿灯 yellow = 1; //关闭黄灯

} }

/*************定时器0初始化程序***************/ void time_init() {

EA = 1; //开总中断

TMOD = 0X01; //定时器0工作方式1 ET0 = 1; //开定时器0中断 TR0 = 1; //允许定时器0定时 }

/******************红外报警处理**********************/ void hongwai_dis() {

if(flag_bufang_en == 1) //准备开始布防 { green = ~green; //绿灯闪 }

if(flag_bufang == 1) //确认布防 { green = 0; //如果延时布防成功 绿灯长亮 if(hw == 1) //红外有输出

41

河南理工大学毕业设计(论文)说明书

{

flag_alarm = 1; } }

if(flag_alarm == 1) //报警 { red = ~red; //红灯报警 beep = ~beep; //蜂鸣器报警 } }

/******************主程序**********************/ void main() {

time_init(); //定时器初始化程序 beep = 0; //开机叫一声 delay_1ms(200);

P0 = P1 = P2 = P3 = 0xff; //初始化单片机IO口为高电平 while(1) { key(); PT2272(); //无线按键程序

yellow = ~hw; //红外热释电指示灯 有输出就亮黄灯 if(key_can < 10) { key_with(); //按键设置函数 }

if(flag_300ms == 1) { flag_300ms = 0; hongwai_dis(); //红外报警函数

}

} }

/*************定时器0中断服务程序***************/ void time0_int() interrupt 1 {

static uint value; TH0 = 0x3c;

42

河南理工大学毕业设计(论文)说明书

}

TL0 = 0xb0; // 50ms

value ++;

if(value % 6 == 0) { flag_300ms = 1; }

if(flag_bufang_en == 1) { flag_value ++; // 100 * 50ms = 5000ms = 5秒 if(flag_value >= 100) //5秒 { }

}

flag_bufang = 1; flag_bufang_en = 0; flag_value = 0;

43

河南理工大学毕业设计(论文)说明书

附录二:防火报警子系统程序

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include \"intrins.h\"

#define u8 unsigned char #define u16 unsigned int #define uchar unsigned char #define uint unsigned int #define Yes 1 #define No 0

sbit Power_key = P2 ^ 5;

/********测试GSM是否启动**********/ int test_boot;

/********测试GSM是否注册网络**********/ int test_net_register;

/********GSM串口接收数据缓存**********/ unsigned char GSM_receive[60];

/********GSM串口接收计数器**********/ unsigned char GSMDATA_count;

uchar yushe_wendu=50; uchar yushe_yanwu=100; uint wendu; uchar yanwu;

//运行模式 uchar Mode=0; 雾阀值 =0是正常监控模式 //管脚声明

sbit Led_Reg =P2^2; sbit Led_Yellow =P2^4; sbit Buzzer =P2^0; sbit Fan =P3^3; sbit Huoyan =P1^1;

//温度预设值 //烟雾预设值 //温度值全局变量 //用于读取ADC数据

//=1是设置温度阀值 =2是设置烟

//红灯 //黄灯 //蜂鸣器 //

44

河南理工大学毕业设计(论文)说明书

/******************************************************************** * 名称 : delay_1ms() * 功能 : 延时1ms函数 * 输入 : q * 输出 : 无

***********************************************************************/

void delay_ms(uint q) {

uint i,j;

for(i=0;ifor(j=0;j<110;j++); }

/*****************************************************************************

UART初始化 11.0592

*****************************************************************************/

void Uart_Init() {

EA=1; ES=1;

SCON = 0x50; TMOD = 0x20; PCON=0x00; TH1 = 0xFD; TL1 = 0xfd; TR1 = 1; RI = 0;

}

/*****************************************************************************

单字符发送函数

/****************************************************************************/

void Send_Char (unsigned char UART_data)

45

河南理工大学毕业设计(论文)说明书

{

SBUF = UART_data; while(TI == 0); TI = 0; }

/*****************************************************************************

字符串发送函数

/****************************************************************************/

void Send_String(unsigned char *str) {

while(*str != '\\0') { Send_Char(*str); *str=*str++; }

*str = 0; }

void GSM_yanwu() {

Power_key=0; test_boot=No;

test_net_register=No;

//GSM启动 Power_key=1; delay_ms(100); Power_key=0; Uart_Init();

while(test_boot==No) { Send_String(\"AT\\r\\n\"); delay_ms(1000); }

//测试是否注册到网络

while(test_net_register==No) {

46

河南理工大学毕业设计(论文)说明书

Send_String(\"AT+COPS?\\r\\n\");

delay_ms(1000); }

Send_String(\"AT+CMGF=1\\r\\n\"); delay_ms(200);

Send_String(\"AT+CSMP=17,167,2,25\\r\\n\"); delay_ms(200);

Send_String(\"AT+CSCS=\\\"UCS2\\\"\\r\\n\"); delay_ms(200);

Send_String(\"AT+CMGS=\\\"00310035003600370030003900330039003000350030\\\"\\r\\n\");

delay_ms(200);

Send_String(\"8B6662A570DF96FE\\r\\n\"); delay_ms(200);

Send_Char(0x1A); delay_ms(200); //GSM关闭 Power_key=1; delay_ms(100); Power_key=0; }

void GSM_huozai() { Power_key=0; test_boot=No;

test_net_register=No;

//GSM启动 Power_key=1; delay_ms(100); Power_key=0; Uart_Init(); while(test_boot==No)

47

河南理工大学毕业设计(论文)说明书

{

Send_String(\"AT\\r\\n\"); delay_ms(1000); }

//测试是否注册到网络

while(test_net_register==No) { Send_String(\"AT+COPS?\\r\\n\"); delay_ms(1000); }

Send_String(\"AT+CMGF=1\\r\\n\"); delay_ms(200);

Send_String(\"AT+CSMP=17,167,2,25\\r\\n\"); delay_ms(200);

Send_String(\"AT+CSCS=\\\"UCS2\\\"\\r\\n\"); delay_ms(200);

Send_String(\"AT+CMGS=\\\"00310035003600370030003900330039003000350030\\\"\\r\\n\");

delay_ms(200);

Send_String(\"8B6662A5706B707E\\r\\n\"); delay_ms(200);

Send_Char(0x1A); delay_ms(200);

//GSM关闭 Power_key=1; delay_ms(100); Power_key=0; }

/***********************************************************************************************************

48

河南理工大学毕业设计(论文)说明书

LCD1602相关函数

***********************************************************************************************************/

//LCD管脚声明 (RW引脚实物直接接地,因为本设计只用到液晶的写操作,RW引脚一直是低电平) sbit LCDRS = P2^7; sbit LCDEN = P2^6; sbit D0 = P0^0; sbit D1 = P0^1; sbit D2 = P0^2; sbit D3 = P0^3; sbit D4 = P0^4; sbit D5 = P0^5; sbit D6 = P0^6; sbit D7 = P0^7;

//LCD延时

void LCDdelay(uint z) //该延时大约100us(不精确,液晶操作的延时不要求很精确) {

uint x,y;

for(x=z;x>0;x--) for(y=10;y>0;y--); }

void LCD_WriteData(u8 dat) {

if(dat&0x01)D0=1;else D0=0; if(dat&0x02)D1=1;else D1=0; if(dat&0x04)D2=1;else D2=0; if(dat&0x08)D3=1;else D3=0; if(dat&0x10)D4=1;else D4=0; if(dat&0x20)D5=1;else D5=0; if(dat&0x40)D6=1;else D6=0; if(dat&0x80)D7=1;else D7=0; }

//写命令

void write_com(uchar com) {

49

河南理工大学毕业设计(论文)说明书

LCDRS=0;

LCD_WriteData(com); // DAT=com; LCDdelay(5); LCDEN=1; LCDdelay(5); LCDEN=0; }

//写数据

void write_data(uchar date) {

LCDRS=1;

LCD_WriteData(date); // DAT=date; LCDdelay(5); LCDEN=1; LCDdelay(5); LCDEN=0; }

/*------------------------------------------------

选择写入位置

------------------------------------------------*/

void SelectPosition(unsigned char x,unsigned char y) {

if (x == 0) { write_com(0x80 + y); //表示第一行 } else

{ write_com(0xC0 + y); //表示第二行 } }

/*------------------------------------------------ 写入字符串函数

------------------------------------------------*/

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)

50

河南理工大学毕业设计(论文)说明书

{

SelectPosition(x,y) ; while (*s) { write_data( *s); s ++; } }

//========================================================================

// 函数: void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l)

// 应用: LCD_Write_Char(0,1,366,4) ;

// 描述: 在第0行第一个字节位置显示366的后4位,显示结果为 0366 // 参数: x:行,y:列,s:要显示的字,l:显示的位数 // 返回: none. // 版本: VER1.0 // 日期: 2013-4-1

// 备注: 最大显示65535

//========================================================================

void LCD_Write_Char(u8 x,u8 y,u16 s,u8 l) {

SelectPosition(x,y) ;

if(l>=5) write_data(0x30+s/10000%10); if(l>=4) write_data(0x30+s/1000%10); if(l>=3) write_data(0x30+s/100%10);

//万位 //千位 //百位

if(l>=2) write_data(0x30+s/10%10); //十位 if(l>=1) write_data(0x30+s%10); //个位 }

/*1602指令简介

write_com(0x38);//屏幕初始化

51

河南理工大学毕业设计(论文)说明书

write_com(0x0c);//打开显示 无光标 无光标闪烁 write_com(0x0d);//打开显示 阴影闪烁 write_com(0x0d);//打开显示 阴影闪烁 */

//1602初始化 void Init1602() {

uchar i=0;

write_com(0x38);//屏幕初始化

write_com(0x0c);//打开显示 无光标 无光标闪烁

write_com(0x06);//当读或写一个字符是指针后一一位 write_com(0x01);//清屏 }

void Display_1602(yushe_wendu,yushe_yanwu,c,temp) {

//显示预设温度

LCD_Write_Char(0,6,yushe_wendu,2) ;

//显示预设烟雾

LCD_Write_Char(0,13,yushe_yanwu,3) ;

//时时温度

LCD_Write_Char(1,6,c/10,2) ; write_data('.');

LCD_Write_Char(1,9,c%10,1) ;

//时时烟雾

LCD_Write_Char(1,13,temp,3) ;

}

/*********************************************************************************************************** ADC0832相关函数

*********************************************************************

52

河南理工大学毕业设计(论文)说明书

**************************************/

sbit ADCS =P1^5; //ADC0832 片选 sbit ADCLK =P1^2; //ADC0832 时钟

sbit ADDI =P1^3; //ADC0832 数据输入 /*因为单片机的管脚是双向的,且ADC0832的数据输入输出不同时进行, sbit ADDO =P1^3; //ADC0832 数据输出 /*为节省单片机引脚,简化电路所以输入输出连接在同一个引脚上

//========================================================================

// 函数: unsigned int Adc0832(unsigned char channel) // 应用: temp=Adc0832(0); // 描述: 读取0通道的AD值

// 参数: channel:通道0和通道1选择 // 返回: 选取通道的AD值 // 版本: VER1.0 // 日期: 2015-05-29 // 备注:

//========================================================================

unsigned int Adc0832(unsigned char channel) {

uchar i=0; uchar j; uint dat=0; uchar ndat=0; uchar Vot=0;

if(channel==0)channel=2; if(channel==1)channel=3; ADDI=1;

_nop_(); _nop_();

ADCS=0;//拉低CS端 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 _nop_(); _nop_();

53

河南理工大学毕业设计(论文)说明书

ADCLK=0;//拉低CLK端,形成下降沿1 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 ADDI=channel&0x1; _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿2 _nop_(); _nop_();

ADCLK=1;//拉高CLK端

ADDI=(channel>>1)&0x1; _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿3 ADDI=1;//控制命令结束 _nop_(); _nop_(); dat=0;

for(i=0;i<8;i++) {

dat|=ADDO;//收数据 ADCLK=1; _nop_(); _nop_();

ADCLK=0;//形成一次时钟脉冲 _nop_(); _nop_(); dat<<=1;

if(i==7)dat|=ADDO;

}

for(i=0;i<8;i++) { j=0; j=j|ADDO;//收数据 ADCLK=1; _nop_(); _nop_();

河南理工大学毕业设计(论文)说明书

ADCLK=0;//形成一次时钟脉冲

_nop_(); _nop_(); j=j<<7; ndat=ndat|j; if(i<7)ndat>>=1; }

ADCS=1;//拉低CS端 ADCLK=0;//拉低CLK端

ADDO=1;//拉高数据端,回到初始状态 dat<<=8;

dat|=ndat;

return(dat); //return ad data }

/*********************************************************************************************************** DS18B20相关函数

***********************************************************************************************************/

sbit DQ = P1^0; //ds18b20的数据引脚

/*****延时子程序:该延时主要用于ds18b20延时*****/ void Delay_DS18B20(int num) {

while(num--) ; }

/*****初始化DS18B20*****/ void Init_DS18B20(void) {

unsigned char x=0;

DQ = 1; //DQ复位

Delay_DS18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低

Delay_DS18B20(80); //精确延时,大于480us DQ = 1; //拉高总线 Delay_DS18B20(14);

x = DQ; //稍做延时后,如果x=0则初始化成功,x=1则初始化失

55

河南理工大学毕业设计(论文)说明书

Delay_DS18B20(20); }

/*****读一个字节*****/

unsigned char ReadOneChar(void) {

unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) {

DQ = 0; // 给脉冲信号 dat>>=1;

DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80;

Delay_DS18B20(4); }

return(dat); }

/*****写一个字节*****/

void WriteOneChar(unsigned char dat) {

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

DQ = 0;

DQ = dat&0x01; Delay_DS18B20(5); DQ = 1; dat>>=1;

} }

/*****读取温度*****/

unsigned int ReadTemperature(void) {

unsigned char a=0; unsigned char b=0; unsigned int t=0;

56

河南理工大学毕业设计(论文)说明书

float tt=0;

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x44); //启动温度转换 Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0xBE); //读取温度寄存器 a=ReadOneChar(); //读低8位 b=ReadOneChar(); //读高8位 t=b; t<<=8;

t=t|a;

tt=t*0.0625;

t= tt*10+0.5; //放大10倍输出并四舍五入 return(t); }

//===================================================================================== /*****校准温度*****/ u16 check_wendu(void) {

u16 c;

c=ReadTemperature()-5; //获取温度值并减去DS18B20的温漂误差 if(c<1) c=0;

if(c>=999) c=999; return c; }

/*********************************************************************************************************** 按键检测相关函数

***********************************************************************************************************/ //按键

sbit Key1=P1^6; //设置键 sbit Key2=P1^7; //加按键 sbit Key3=P3^2; //减按键

#define KEY_SET 1 //设置

57

河南理工大学毕业设计(论文)说明书

#define KEY_ADD 2 //加

#define KEY_MINUS 3 //减

//========================================================================

// 函数: u8 Key_Scan()

// 应用: temp=u8 Key_Scan();

// 描述: 按键扫描并返回按下的键值 // 参数: NONE

// 返回: 按下的键值 // 版本: VER1.0

// 日期: 2015-05-29

// 备注: 该函数带松手检测,按下键返回一次键值后返回0,直至第二次按键按下 //======================================================================== u8 Key_Scan() {

static u8 key_up=1;//按键按松开标志

if(key_up&&(Key1==0||Key2==0||Key3==0)) { delay_ms(10);//去抖动 }

key_up=0; if(Key1==0) return 1; else if(Key2==0)return 2; else if(Key3==0)return 3; }

else if(Key1==1&&Key2==1&&Key3==1) key_up=1; return 0;// 无按键按下

void main (void) {

u8 key;

wendu=check_wendu(); //初始化时调用温度读取函数 防止开机85°C Init1602(); //调用初始化显示函数

58

河南理工大学毕业设计(论文)说明书

LCD_Write_String(0,0,\"SET T:00 E:000\"); //开机界面 LCD_Write_String(1,0,\"NOW T:00.0 E:000\"); delay_ms(1000);

wendu=check_wendu(); //初始化时调用温度读取函数 防止开机85°C while (1) //主循环 { key=Key_Scan(); //按键扫描 yanwu=Adc0832(0); //读取烟雾值 wendu=check_wendu(); //读取温度值

if(key==KEY_SET) { Mode++; }

switch(Mode) //判断模式的值 { case 0: //监控模式 { Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu); //显示

预设温度,预设烟雾,温度值,烟雾值

if(yanwu>=yushe_yanwu) //烟雾值大于等于预设值时 { Led_Reg=0; //烟雾指示灯亮 Fan=0; Buzzer=0; GSM_yanwu(); //蜂鸣器报警 } else //烟雾值小于预设值时 { Led_Reg=1; //关掉报警灯 Fan=1; } if((wendu>=(yushe_wendu*10))||(Huoyan==0)) //温度大于等于预设温度值时(为什么是大于预设值*10:因为我们要显示的温度是有小数点

59

河南理工大学毕业设计(论文)说明书

后一位,是一个3位数,25.9°C时实际读的数是259,所以判断预设值时将预设值*10)

{ Buzzer=0; //打开蜂鸣器报警 Led_Yellow=0; GSM_huozai(); //打开温度报警灯 } else //温度值小于预设值时 { Led_Yellow=1;

//关闭报警灯

}

if((yanwucase 1://预设温度模式 { SelectPosition(0,5) ; write_com(0x0d); if(key==KEY_ADD) { yushe_wendu++; if(yushe_wendu>=99) yushe_wendu=99;

//指定位置 //阴影闪烁 //加键按下

//预设温度值(阀值)加1 //当阀值加到大于等于99时 //阀值固定为99

LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度

}

if(key==KEY_MINUS) //减键按下 { if(yushe_wendu<=1) //当温度上限值减小到1时 yushe_wendu=1; //固定为1 yushe_wendu--; //预设温度值减一,最小为0 LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度

60

河南理工大学毕业设计(论文)说明书

}

break; //执行后跳出switch }

case 2: //预设烟雾模式 { SelectPosition(0,12) ; //指定位置 write_com(0x0d); //打开显示 无光标 光标闪烁 if(key==KEY_ADD) //加键按下 { if(yushe_yanwu>=255) //当阀值加到大于等于255时 yushe_yanwu=2; //阀值固定为2

yushe_yanwu++; //预设烟雾值(阀值)加1,最大为255 LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾 }

if(key==KEY_MINUS) //减键按下 { if(yushe_yanwu<=1) //当烟雾上限值减小到1时 yushe_yanwu=1; //固定为1 yushe_yanwu--; //预设温度值减一,最小为0 LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾 }

break; }

default : { write_com(0x38);//屏幕初始化 write_com(0x0c);//打开显示 无光标 无光标闪烁 Mode=0; //恢复正常模式 break; }

} } }

void uart() interrupt 4 {

unsigned char UART_data;

61

河南理工大学毕业设计(论文)说明书

}

if(RI) {

UART_data=SBUF; if(UART_data=='\\n') { if(GSM_receive[0]=='O'&&GSM_receive[1]=='K') test_boot=Yes; else test_boot=No; if(GSM_receive[12]=='C') test_net_register=Yes; else test_net_register=No; GSMDATA_count=0; } else { GSM_receive[GSMDATA_count]=UART_data; GSMDATA_count++;

} } RI=0;

62

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务