毕业论文-烟雾探测报警器设计与实现_第1页
毕业论文-烟雾探测报警器设计与实现_第2页
毕业论文-烟雾探测报警器设计与实现_第3页
毕业论文-烟雾探测报警器设计与实现_第4页
毕业论文-烟雾探测报警器设计与实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连东软信息学院高职毕业设计(论文)论文题目论文题目:烟雾探测报警器设计与实现系所:电子工程系专业:嵌入式系统工程学生姓名:学生学号:指导教师:导师职称:讲师完成日期:2014年4月25日大连东软信息学院DalianNeusoftUniversityofInformation大连东软信息学院毕业设计(论文)摘要IV烟雾探测报警器设计与实现摘要随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。本文以电阻式烟雾传感器和单片机技术为核心并与其他电子技术相结合,设计出一种技术水平较好的烟雾探测报警器。主要以单片机为主控制器,烟雾检测采用MQ-2型半导体可燃气体敏感元件烟雾传感器,温度检测采用DS18B20温度传感器,实现火灾烟雾检测报警、故障自诊断、浓度级别显示、报警限设置等功能,是一种结构简单、性能稳定、使用方便、价格低廉、智能化的烟雾报警器,具有一定的实用价值。关键词:烟雾传感器,报警器,STC12C5A60S2大连东软信息学院毕业设计(论文)AbstractDesignandImplementationofSmokeDetectionAlarmAbstractWiththeadventof"informationtimes",asameansofaccessinginformation--sensortechnologyhasbeensignificantprogress,itsapplicationfieldismoreandmoreextensive,therequirementismoreandmorehigh,moreandmoreurgentneed.Inthispaper,resistancetypesmokesensorandsingle-chipmicrocomputerasthecoretechnologyandelectronictechnology,designsatechnologybettersmokealarm.TheselectionofMQ-2typesemiconductorgassensitiveelementsmokesensorsmokedetection,TemperaturedetectedbythetemperaturesensorofDS18B20,itcanachievefiresmokedetectionalarm,faultdiagnosis,theconcentrationleveldisplay,alarmthresholdsettingandotherfunctions.Itisakindofsimplestructure,stableperformance,convenientoperation,lowprice,intelligentsmokealarm,Hasacertainpracticalvalue.Keywords:Smokesensor,Alarm,STC12C5A60S2大连东软信息学院毕业设计(论文)目录目录TOC\o"1-3"\u摘要 IAbstract II第1章项目概述 11.1项目简介 11.2项目背景和研究意义 11.3国内外现状 2第2章项目实施方案 32.1概述 32.2烟雾传感器选择 32.3单片机选择 4第3章项目实施过程 53.1单片机介绍 53.1.1STC12C5A60S2简介 53.1.2A/D转换器简介 73.2硬件实现过程 73.2.1硬件系统框图 73.2.2显示电路设计 83.2.3烟雾检测电路设计 83.2.4温度检测电路设计 93.2.5报警电路设计 93.2.6按键电路设计 103.3软件实现过程 103.3.1软件流程图 103.3.2开发环境 113.3.3主函数介绍 123.3.4按键调节程序 133.3.5烟雾浓度采集程序 143.3调试过程 143.3.1硬件调试过程 143.3.2软件调试过程 15第4章项目成果 164.1硬件成果物 164.2软件成果物 17第5章结论 19参考文献 20致谢 21附录 22大连东软信息学院毕业设计(论文)-第1章项目概述1.1项目简介本系统是一个由单片机控制的烟雾探测报警器,单片机火灾报警系统主要控制模块有数据采集模块、单片机控制模块、声光报警模块、MQ2传感器模块和DS18B20温度采集模块。单片机是整个报警系统的核心,系统的工作原理是:MQ2烟雾传感器和DS18B20温度传感器对周围环境进行采集,并将采集结果传给单片机,1602并显示采集结果,当周围烟雾浓度和温度超过报警值,系统就会发生声光报警,同时用户可以自己设定报警上限,使用户可以根据实际情况方便的掌握安全状况。系统可以全天全方位检测,空气中的温度或浓度一旦超标就会报警,将危险消灭在萌芽状态,提早铲除安全隐患,最大限度减少损失,保护人民生命和财产安全。1.2项目背景和研究意义人类能够利用和控制火是文明进步的重要标志,火是一把双刃剑,控制好火,会给人的生活带来极大的便利。失去控制火,就会发生火灾。火灾经常发生在我们的身边,火灾总是悄无声息的。火灾是世界上发生频率较高的一种灾害,世界上几乎每天都有火灾发生。据官方数据显示,全世界每年发生火灾大约在700万次左右,全世界每年死于火灾的人数约为70000人左右。发达地区发生的火灾较多,但是他们的死亡人数却远远少于其他地区;相比较而言,亚洲地区发生火灾次数较少,但死亡人数较多,这是因为发达地区的经济水平比较高,消防设施比较完善等。更具有关部门统计,我国70年代火灾年平均损失不到2.5亿元,80年代火灾年平均损失接近3.2亿元。进入90年代,特别是1993年以来,火灾造成的直接财产损失上升到年均十几亿元,年均死亡2000多人。随着我国经济的快速发展,城市高层建设、地下以及大型综合性建筑日益增多,这都导致火灾隐患的增加,因此每年发生的火灾次数逐年上升,对人们造成的损失也成上升趋势,对人们生命财产造成十分大的危害。事实证明,随着社会的不断发展,由于人们的生活水平和经济水平不断提高,一旦发生火灾,不仅破环物质建筑,还会造成社会的混乱,给人们的生命财产造成威胁,也会给人的心灵造成很大的伤害。因此,社会越发展,灾难给社会和人类造成的危害就会越来越大。为了减少火灾的发生,我们要有良好的监控系统和完善的报警机制,做到早发现,尽可能的减少不必要的损失,减少人员伤亡。为了早期发现火灾,保护人民财产安全,在火灾初期及时发现并进行报警,防止火灾造成爆炸,大范围燃烧等问题。为了减少这类事故的发生,就必须使用仪器现场实时检测,因此检测空气中的烟雾浓度和温度是十分重要的,取正确有效的措施,防止事故的发生,使人民的财产生命受到保护。因此烟雾探测报警器成为了一个重要研究课题。1.3国内外现状从20世纪30年代初,国外烟雾传感器技术的飞速发展,一方面是因为由于经济的发展,人们对生活的舒适性和安全性有了新的认识,人们安全意识有了很大的提高,因此对生活质量有了更高的要求,他们想通过这改善生活质量。另一方面原因是由于政府安全法规的推动,传感器市场有了很大的有了很大的增长。据统计,美国1996〜2002年6年间烟雾传感器的年增长率为30%左右。随着传感器的生产技术逐步提高,传感器集成度越来越大,而体积却越来越小,这使得烟雾传感器更加便携,应用变得更广泛,这都加快了烟雾传感器的发展。我国在20世纪70年代开始研制烟雾报警器,由于我国的传感器研究起步较晚,刚开始都是引进国外技术和工艺,但是近年来,我国的传感开发形成自己的特色,在烟雾选择性和产品稳定性上也有很大进步。烟雾报警器可分为民用火灾烟雾报警器、工业烟雾报警器两大产品:1.民用火灾烟雾报警器民用烟雾报警器具有体积小,携带型方便,易于操作,价钱便宜等。民用烟雾报警器一般应用于家庭,往往被安装在厨房等经常使用火的场所,这类报警器遇到空气中的烟雾浓度超标时,会发出声光报警,并能通过屏幕显示,及早的发现灾难,减少损失。2.工业烟雾报警器只有工业用有毒的烟雾报警器和烟雾报警器检测探头的差异,而在理论和应用都非常相似。根据不同的环境中的工业可燃气体和有毒烟雾报警检测,可分为泄漏探测器,控制器和探测器。便携式或手持式,主要用于气体泄漏检查的管理。如果煤气泄漏,泄漏检测仪会发出声光报警,同时数字显示,以便采取安全措施,防止发生爆炸等严重事故烟雾的浓度。在与检测器一起使用的控制器,在爆炸现场长期监测烟雾的浓度。安装在爆炸现场,如控制器探测器有人值班的值班室墙壁的地方使用屏蔽电缆来连接两个。一旦在气体泄漏检测仪的现场,通过屏蔽电缆信号给控制器,控制器发出声光报警,并启动或关闭电磁阀废气供给装置切断,确保安全。这种仪器广泛应用于燃气站,加油站,锅炉房等工业场所。第2章项目实施方案2.1概述烟雾检测报警器是能够检测环境中的烟雾浓度和温度,并具有报警功能的仪器,仪器的最基本组成部分应包括:单片机控制电路、烟雾采集电路、温度采集电路、液晶显示电路、报警电路等。

烟雾信号采集电路一般由烟雾传感器和模拟放大电路等组成,烟雾采集电路时刻采集外界的烟雾浓度,并且将采集到的信号传给单片机,单片机对该数字信号进行滤波处理,并对处理后的数据进行分析,是否大于或等于某个预设值(也就是报警限),如果大于或者等于报警值就会发生报警,否则为正常状态。为了使报警更加全面,我所设计的烟雾报警器还具有温度检测功能,当外界的温度或者烟雾浓度有一项超过所设定的报警值就会发生报警。为了让使用者能更加了解所处的环境,烟雾采集电路和温度采集电路会将空气中的烟雾浓度和温度显示在LCD显示屏上。为使报警装置更加完善,我还加入了光闪报警,使烟雾报警器同时具备声音和光闪报警,弥补嘈杂环境中声音报警的局限。2.2烟雾传感器选择1.常见烟雾传感器简介

比较常见的烟雾传感器有固体电解质烟雾传感器,接触燃烧式传感器

,高分子烟雾传感器,电化学传感器,热传导传感器等。

2.MQ-2烟雾传感器介绍烟雾传感器可以有一个功能,也可以有许多功能。可以是单一的实体,也可能是许多传感器组成的模块。但是无论是单一的实体还是传感器模块都需要具备许多条件:烟雾传感器应该具有较高的灵敏度,可以时刻检测空气中的烟雾浓度,具有很好的稳定性,可实现长时间不间断检测,烟雾传感器还应该响应灵敏,能把检测到的数据迅速传到主控模块,还应具有寿命长,维护简单,成本低等特点。

由于市场上的烟雾传感器种类很多,综合各种因素我最终选择了MQ-2烟雾传感器,MQ-2烟雾传感器不仅可以满足烟雾探测报警器需要,而且MQ-2烟雾报警器自带数据信号和模拟信号输出,图2.1是MQ-2烟雾传感器模块介绍。图2.1MQ-2烟雾传感器MQ-2烟雾传感器适用于家庭和工厂的可燃性/毒性气体泄漏探测装置,对液化气、丙烷、丁烷的探测灵敏度十分高,也可进行甲烷,酒精,液化气,等烟雾的探测。MQ-2烟雾传感器具有广泛的探测范围,非常高的灵敏度,能迅速准确探测空气中烟雾浓度和迅速响应恢复,而且它的驱动电路十分简单,易于理解和应用,MQ-2烟雾传感器还具有稳定性好,寿命长,应用广泛等特点。

MQ-2烟雾传感器所使用的气敏材料是二氧化锡。当MQ-2烟雾传感器所处环境中有可燃气体或者毒性气体时,传感器的电导率会随着空气中气体浓度增大而增大。烟雾传感模块感受到电导率的变化后,就会把电导率变化转化为与气体浓度相对应的输出信号。2.3单片机选择烟雾探测报警器单片机我选择51系列中的STC12C5A60S2,因为STC12C5A60S2是普通51单片机的加强版,STC12C5A60S2单片机不仅运行速度比普通51快,最重要的是STC12C5A60S2单片机自带A/D转换,而我设计的烟雾探测报警器需要将检测的烟雾浓度显示到LCD上,STC12C5A60S2恰好解决了这个难题。第3章项目实施过程3.1单片机介绍3.1.1STC12C5A60S2简介STC12C5A60S2系列单片机是宏晶科技生产的单片机,是新一代8051单片机,具有高速,低功耗,抗干扰等特点,指令代码能完全兼容传统的8051,而且速度比传统的8051快十倍左右。内部集成专用复位电路,2路PWM,8路高速10位A/D转换。STC12C5A60S2和普通51单片机构造基本相同,但是多出了AD转换功能,这相对于普通51单片机来说十分方便。STC12C5A60S2系列单片机几乎包含了数据采集,数据转换,以及主控模块等。图3.1是STC12C5A60S2单片机引脚图。图3.1STC12C5A60S2单片机原理图1.STC12C5A60S2单片机特点(1)STC12C5A60S2工作电压:5.5V-3.5V(5V单片机)。(2)工作频率范围:0~35MHz,相当于普通8051的0~420MHz。(3)用户应用程序空间8K/16K/20K/32K/40K/48K/52K/60K/62K字节等。(4)片上集成1280字节RAM(5)我使用的STC12C5A60S2具有40个通用I/O口,单片机复位后可设置成四种模式:第一种模式是准双向口或者弱上拉,第二种模式是强推挽或者强上拉,第三种模式是为输入或者高阻,第四种模式是开漏,每个I/O口驱动能力均可达到20mA,但是单片机芯片不要超过120mA。(6)STC12C5A60S2在线编程方法具有在系统可编程和在应用可编程,不需要专门的仿真器和专门的编程器,可以使用串口下载程序,而且十分迅速。(7)具有EEPROM功能和看门狗功能。(8)内部集成专用复位电路(MAX810)。(9)STC12C5A60S2具有外部掉电检测电路。5V单片机为1.33V,误差为±5%,3.3V单片机为1.31V,误差为±3%。2.STC12C5A60S2单片机引脚简介STC12C5A60S2共有4个16位定时器,两个与8051兼容的定时器/计数器,16位定时器T0和T1,具有独立波特率发生器,再加上2路PCA模块可再实现2个16位定时器。3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,独立波特率发生器可以在P1.0口输出时钟外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块,PowerDown模式可由外部中断唤醒。P0.0~P0.7

P0:P0口既可以作为输入和输出口,也可以作为数据总线和地址总线使用。当P0口作为输入/输出口时,P0是一个8位双向口,和普通51单片机一样内部有上拉电阻,不需要外接。当P0当作数据总线和地址总线使用时,是低8位地址线A0~A7,数据线D0~D7。

P1.0标准IO口、ADC输入通道0、独立波特率发生器的时钟输出。

P1.1ADC输入通道1。P1.2标准IO口、ADC输入通道2、PCA计数器的外部脉冲输入脚,第二串口数据接收端

。P1.3外部信号捕获,高速脉冲输出及脉宽调制输出、第二串口数据发送端

。P1.4非

SPI同步串行接口的从机选择信号。P1.5SPI同步串行接口的主出从入(主器件的输入和从器件的输出)

。P1.6SPI同步串行接口的主入从出。

P2.0~P2.7P2口内部有上拉电阻,既可作为输入输出口(8位准双向口),也可作为高8位地址总线使用。

P3.0标准IO口、串口1数据接收端

P3.1

外部中断0(INT0),下降沿中断或低电平中断

P3.3

外部中断1(INT1)。P3.4定时计数器0。

3.1.2A/D转换器简介我选择STC12C5A60S2单片机作为我的主控制器最主要的原因就是因为它自带A/D转换功能,因为STC12C5A60S2单片机可以将烟雾采集模块的模拟信号转换成数字信号。STC12C5A60ADS2单片机A/D转换口在P1口,有8路10位高速A/D转换器,速度可达到250KHz(25万次/秒)。8路电压输入型A/D,我们可以使用STC12C5A60S做温度检测与报警、浓度检测与报警、按键扫描等。上电复位后P1口为上拉型IO口,我们可以把8路中任何一路单点当作A/D转换,其他口可以当作I/O口使用。

STC12C5A60S单片机的转换逐次比较转换。逐次比较型ADC主要组成结构是D/A转换器和比较器,通过对此比较。使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较型A/D转换器具有速度高,功耗低等优点。

3.2硬件实现过程3.2.1硬件系统框图报警系统主要由数据采集模块、单片机控制模块、温度采集和烟雾采集模块、声光报警模块和传感器模块组成。硬件系统结构框图如图3.2所示。图3.2硬件系统结构框图单片机是整个报警系统的核心,系统的工作原理是:烟雾传感器检测到烟雾浓度和温度传感器检测到温度后传给单片机,单片机通过和限定值对比来判断现场是否发生火灾。如果发生火灾,系统以声光的形式报警。本文设计的单片机火灾报警系统具有以下特点:(1)能对室内烟雾及温度突变进行报警,具有声、光双重报警功能,引起人们注意,尽可能避免火灾的发生。(2)火灾报警功能。一旦真出现火灾时,能立即发出语音、光火灾警报。据类似本系统的报警器现场模拟实验表明,本系统安全可靠,误报率低。且由于其体积小、操作维护方便、成本低廉等,具有广阔的应用前景。3.2.2显示电路设计LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。LCD1602第一行前半部分显示的是温度采集模块采集到即时温度,后半部分是报警温度值。第二行前半部分是烟雾采集模块采集到的即时浓度,后半部分是报警烟雾浓度值。本设计中,STC12C5A60S2的P0口与液晶LCD1602的数据引脚相连接,P2.5连接LCD1602的RW读写控制端,P2.6连接RS寄存器选择端,P2.7连接EN使能端。显示电路如图3.5所示。图3.3LCD1602电路图3.2.3烟雾检测电路设计烟雾检测我用的是MQ-2烟雾模块,MQ-2烟雾模块是双路信号输出(模拟量输出及TTL电平输出),而且持续工作十分稳定,还可以通过电位器调节灵敏度,顺时针灵敏度增高,逆时针灵敏度降低,十分简单方便。MQ-2烟雾模块时刻检测空气中的烟雾浓度,并传给单片机,单片机通过转换,把转换后的数值显示在LCD1602上,然后把检测数值和设定浓度值比较,如果浓度大于设定值,则发生报警,反之,继续循环检测。MQ-2烟雾检测模块我把它外接在单片机开发板上,输出端与单片机P1.0口连接,MQ-2烟雾模块VCC和GND接单片机开发板上的VCC和GND。MQ-2烟雾检测模块原理图如图3.4所示。图3.4MQ-2烟雾检测模块3.2.4温度检测电路设计DS18B20的VCC端接电源,GND端接地,I/O接单片机P3.7口。DS18B20时刻检测温度变化,并通过1602显示,当DS18B20把检测到的温度传给单片机后,单片机和设定温度值就行比较,如果大于设定温度就会发生报警。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。单片机需要经过一些步骤才能控制DS18B20完成温度转换:DS18B20读写之前先要进行复位,复位后先发送ROM指令,然后发送RAM指令,这样才能对DS18B20进行预定的操作。然后释放,DS18B20收到信号后就会发出低脉冲,主CPU收到此信号表示复位成功。DS18B20原理图如图3.6所示。图3.5DS18B20原理图3.2.5报警电路设计蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,我所用的蜂鸣器是无源的,是电磁式蜂鸣器,电磁式蜂鸣器主要由线圈、磁铁和振荡器等组成。接通电源后,振荡器电磁线圈就会通过电流,通过电流会让使电磁线圈产生磁场,震动膜片受到磁场的作用下,蜂鸣器就会发声。蜂鸣器与单片机的P3.5口相连,另一端接电源。当单片机检测到浓度或者温度超标时,蜂鸣器就会接收到来自单片机的信号,发生报警。蜂鸣器原理图如图3.7所示。图3.6蜂鸣器原理图3.2.6按键电路设计烟雾探测报警器一共用到四个按键,他们分别是K1,K5,K2,K6。K1和单片机的P2.0口相连,K1是用来增加温度报警值。K5和单片机的P2.1相连,K5是用来减少温度报警值。K2和单片机P2.2口相连,K2是用来增加浓度报警值的,K6和单片机的P2.3口相连,K6是用来减少浓度报警值的。独立按键的特点是每个按键单独占用一个IO口,每个按键工作不会影响其他的IO口线的状态,每一个按键都有一个按键电路来判断其是否按下。当按键被按下时,按键就会把信号传递给单片机,单片机会执行按键所对应的程序,按键原理图如图3.8所示。图3.7按键原理图3.3软件实现过程3.3.1软件流程图烟雾探测报警器启动后,首先系统会初始化,接着烟雾探测报警器就会开始工作,烟雾检测模块和温度检测模块会时刻检测所处环境中的烟雾浓度和温度,并把检测到的数据传给单片机,并且可以显示在LCD1602上,单片机会把接收到的数据与设置报警值相比较,如果浓度或者温度大于设定值就会发生报警,烟雾报警系统还具有按键设置报警值的功能。主程序流程图如图3.9所示,DS18B20子程序流程图如图3.10所示。图3.8主程序流程图图3.9DS18B20子程序流程图3.3.2开发环境单片机开发除了必要的硬件外,也离不开软件。烟雾报警器的软件开发主要通过Keil来编写程序的,Keil软件是目前最流行开发51系列单片机的软件,Keil软件虽然没有中文版本,但是会被中国80%的硬件工程师使用。Keil软件提供丰富的库函数和功能强大的集成开发调试工具,Keil软件有三个版本,我用的是KeiluVision4,KeilμVision4引入非常灵活的窗口管理系统,开发人员通过窗口管理系统能够使用多台监视器,而且提供了对窗口位置控制的所有地方。这个全新的用户界面能更好地利用屏幕空间,而且也能更有效的去组织多个窗口,能为使用者一个整洁,美观,高效率的环境来开发应用程序。(1)单击Project菜单,在下拉菜单中选中NewProject选项。然后输入想保存的名字,然后点击保存。(2)工程文件保存成功后,这时候会弹出一个单片机型号选择框,我们可以在单片机选择框中选择所使用的单片机型号。(3)下面我们开始编写第一个程序,单击“File”菜单,然后再在弹出的下拉菜单中选New选项,这时候可以键入用户的应用程序了,但是建议首先保存New选项的文件,单击菜单的“File”,在弹出菜单中选中“SaveAs”保存选项,然后输入你想保存的名字。注意,如果我们用C语言编写程序,那么我们保存扩展名后缀为(.c);如果我用汇编语言编写程序,那么我们保存扩展名后缀为(.asm)。输入完你想保存的名字后,然后直接保存就可以。(4)文件保存结束后,单击“Target1”前面的“+”号,然后在“SourceGroup1”上单击右键,然后单击“AddFiletoGroupSourceGroup1”。3.3.3主函数介绍主函数是用if语句完成的,主要实现温度报警值和检测到的温度,浓度报警值和检测到的浓度的对比,如果检测到温度或者浓度大于报警值就会发生报警,对应LED灯也会亮,主函数如下所示。#include<STC12C5A60S2.h>#include<math.h>#include"AD.h"#include<intrins.h>#include<stdio.h>#defineINT8Uunsignedchar#defineINT16Uunsignedintsbitwendu_led=P2^4;sbitbuzzer=P3^5;sbitnongdu_led=P3^6;INT8UTemp_Value[]={0x00,0x00}; //从DS18B20读取的温度值INT8Uxdatatab1[17];floattemp=0.0; //浮点温度变量floatwendu=30.0; intnongdu=19;{if(temp>=wendu||dianya>=nongdu){TR0=1;TR1=1;}else{TR0=0;TR1=0;}if(temp>=wendu){wendu_led=0;}else{wendu_led=1;}if(dianya>=nongdu){nongdu_led=0;}else{nongdu_led=1;} }3.3.4按键调节程序这个按键函数实现的功能是对浓度和温度报警值的调节。此函数是由一个while死循环组成,用if作为判断语句,当按下温度或者浓度对应加减按键后,报警值会以0.1加减改变,1602显示屏也会显示改变后的报警值。voiddelayms(INT16Ums) { INT8Ui;while(ms--)for(i=0;i<120;i++);}voidmain(){ init_1602(); AD_init(); TMOD=0x11; TH0=0xfe; TL0=0x00; IT0=1; IE=0x8b; EX1=1; IT1=1; IP=0x01; TR0=0; TR1=0; while(1) { FRQ++;delayms(1); if(wendu_up==0){while(!wendu_up);wendu=wendu+0.1;} if(wendu_down==0){while(!wendu_down);if(wendu>0)wendu=wendu-0.1;} if(Read_Temperature()) { temp=(int)(Temp_Value[1]<<8|Temp_Value[0])*0.0625; sprintf(tab1,"T:%2.1f\xDF\x43",temp); sprintf(tab5,"%2.1f\xDF\x43",wendu); gotoxy(1,0);for(j=0;j<8;j++)write_LCD_data(tab1[j]); gotoxy(1,10);for(j=0;j<6;j++)write_LCD_data(tab5[j]); } get_ad(); if(nongdu_up==0){while(!nongdu_up);nongdu++;} if(nongdu_down==0){while(!nongdu_down);nongdu--;} tab6[0]=num[nongdu/10]; tab6[2]=num[nongdu%10]; gotoxy(0,0);for(j=0;j<5;j++)write_LCD_data(tab[j]); gotoxy(0,10);for(j=0;j<3;j++)write_LCD_data(tab6[j]); }}3.3.5烟雾浓度采集程序这个函数主要实现浓度的采集与转换功能。烟雾采集模块会时刻采集空气中的浓度,采集到的浓度经过单片机转换为数字,并取有效数字。voidget_ad(){ unsignedintj; if(count<=0) Sample_Array[count++]=AD_get(i); else { count=0; for(j=0;j<1;j++) { AC_Volt+=Sample_Array[j]*Sample_Array[j]; } AC_Volt=sqrt(AC_Volt/1.0); avg_AC=(int)(AC_Volt*5000/1024)*4; avg_AC_Volt+=avg_AC; lvbo+=1; if(lvbo==10) { lvbo=0; Num_youxiao=(int)(avg_AC_Volt/10); Num_youxiao=Num_youxiao/10; Num_youxiao=Num_youxiao/10; dianya=Num_youxiao; tab[4]=num[Num_youxiao%10];Num_youxiao=Num_youxiao/10; tab[2]=num[Num_youxiao%10]; avg_AC_Volt=0; } }}3.3调试过程3.3.1硬件调试过程烟雾探测报警器由显示模块,报警模块,烟雾采集模块,温度采集模块等多个模块组成,系统比较复杂。因此我们要分多个模块调试。首先对单片机进行检测调试,利用STC串口下载软件检测单片机,如果检测不到,问题一般是单片机的复位电路、下载口、或者单片机型号不对应等。单片机电路检测完后,我应该对显示模块进行检测,首先检测显示屏是否有坏点,背光亮度是否合适,然后单独用程序测试1602是否能正常显示。显示模块检测完后,我应该对MQ-2浓度采集模块检测,把浓度采集代码烧入到单片机中,看显示模块是否显示,利用打火机改变气体浓度,看浓度是否反生变化。3.3.2软件调试过程软件调试和硬件一样十分重要。当程序编好后,可以使用常用单片机开发软件KeilC51来进行软件检测。单击“Project”菜单,再在下拉菜单中单击“OptionsforTarget”,在跳出来的图表中单击“Output”中单击“CreateHEXFile”选项,把“Target”中“Xtal”改成12,使程序编译后产生HEX代码。然后单击左上角“Rebuild”,就可以运行所有程序,在下方中BuildOutput中可以看到运行结果。然我我们可以根据运行结果更改代码,把运行后生成的HEX代码加载到单片机中,看是否能实现想要实现的功能。大连东软信息学院毕业设计(论文)第4章项目成果4.1硬件成果物图4.1是烟雾报警器的上电状态,上电后,温度采集和浓度采集会时刻采集环境中的温度和浓度,并把采集到的结果显示到LCD1602上,T代表温度,前面的数值是采集到的即时温度,后面的是报警值温度。P代表浓度,前面的数值是采集到的即时浓度,后面的是报警值浓度,报警值温度和浓度都可以通过按键调节。图4.2是报警状态,从图中可以看到,采集到的即时浓度大于报警值浓度,这时候蜂鸣器会发出报警声音,对应的LED灯也会亮。图4.1上电时硬件实物图图4.2报警硬件实物图4.2软件成果物利用Keil进行软件代码的编写,图4.3是烟雾浓度采集代码,单片机会把采集到的浓度转换为数字。图4.4是主函数代码,报警模块代码使用的是if语句,通过if语句把采集到的即时温度和浓度和报警值进行比较,如果即时温度或者浓度超过报警值就会发生报警,LED等会亮,并且程序会一直循环检测。图4.5是LCD1602显示代码。图4.3烟雾浓度采集代码图4.4主函数代码图4.5LCD1602显示代码第5章结论烟雾探测报警器采用单片机和传感器等技术相结合,经过几个月的努力,通过设计方案,软件设计,硬件设计,硬件连接与调试等阶段,我的烟雾探测报警器可以实现预期的全部功能,可以实现温度采集,浓度采集,报警值的设置,采集到的温度和浓度可以显示到LCD1602上,可以时刻检测环境中的温度和浓度,温度和浓度超标后会发生声光报警。烟雾探测报警器可以应用于民用报警和工业报警等,具有操作简单,使用稳定,智能化,成本低等特点。可以保障生产与生活的安全,避免火灾和爆炸事故以及煤气中毒的发生,它是防火、防爆和安全生产所必备的仪器,具有广阔的市场空间与发展前景。通过这次设计,更加深入的理解和掌握了这方面的知识,对本专业的认识也更加深入,使自己对本专业更加的热爱,、更加明确了自己学习的目标和方向。在设计过程中,自己也学到了许多新的知识,有很多感悟和体验心得。但也发现很多不足,不仅系统上功能不是很完善,而且自己在有些细节方面刚开始做的很不详细,我想原因在于自己平时对自己的学习要求的不够严格,才造成遇到一些问题显得惊慌失措,在日后我会克服这些缺点的。参考文献[1]建忠.单片机原理及应用[M],西安电子科技大学出版社,2002[2]宇光.单片机应用新技术教程[M],电子工业出版社,2000[3]李广弟.单片机基础[M],北京航空航天大学出版社,2004[4]胡学嗨.单片机原理及应用系统设计[M],电子工业出版社,2005[5]彭军.传感器与检测技术[M],西安电子科技大学出版社,

2003[6]夏继强.单片机实验与实践教程[M],北京航空航天大学出版社,2001[7]培仁等.基于C语言编程MCS-51单片机原理与应用[M],清华大学出版社,2003[8]MeehanJoanne,MuirLindsey.SCMinMerseysideSMES:Benefitsandbarriers[M],TQMJournal,2008[9]李玉梅.单片机原理的应用设计[M],国防工业出版社,2006[10]肖洪兵.跟我学用单片机[M],北京航空航天大学出版社,2002大连东软信息学院毕业设计(论文)致谢在本次毕业设计中,我得到了指导老师王伟老师的悉心指导,王老师是东软大学众多老师中的佼佼者,她学识渊博,专业精通,对东软教育事业怀着深厚的感情;他诲人不倦,与同学们保持着良好的沟通并经常给予科学的指导和热心的勉励。王老师在论文的设计过程中和系统设计中提出了许多宝贵的合理建议,帮助我解决了项目设计中遇到的许多问题,还不断向我传授分析问题和解决问题的办法,并指出了正确的努力方向,使得论文不断完善。在这里非常感谢王老师的指导和帮助,并致以诚挚的谢意!同时,项目的顺利完成,离不开同学的关心和帮助。在整个的项目中,各位同学积极帮助我修改错误,提出建议,在他们的帮助下,我最终完了整个项目。在此一并感谢!大连东软信息学院毕业设计(论文)附录AD转换程序#include<STC12C5A60S2.h>#include<math.h>#include"1602.h"#include"AD.h"#include<intrins.h>#include<stdio.h>#defineINT8Uunsignedchar#defineINT16UunsignedintsbitDQ=P3^7; //DS18B20DQ引脚定义sbitSPK=P3^5;INT8UFRQ=0x00;sbitwendu_up=P2^0;sbitwendu_down=P2^1;sbitnongdu_up=P2^2;sbitnongdu_down=P2^3;sbitwendu_led=P2^4;sbitbuzzer=P3^5;sbitnongdu_led=P3^6;INT8UTemp_Value[]={0x00,0x00}; //从DS18B20读取的温度值INT8Uxdatatab1[17];floattemp=0.0; //浮点温度变量floatwendu=30.0; intnongdu=19;////延时宏定义及函数定义//#definedelay4us(); {_nop_();_nop_();_nop_();_nop_();}//voiddelay_ms(INT16Ux) {INT8Ui;while(x--)for(i=0;i<120;i++);}voidDelayX(INT16Ux) {while(--x);}////初始化DS18B20(注意在选定的振荡器频率11.0592MHz下设置符合时序规定的延时)//INT8UInit_DS18B20(){INT8Ustatus;DQ=1;DelayX(8*12);DQ=0;DelayX(90*12);DQ=1;DelayX(5*12);status=DQ;DelayX(90*12);returnstatus;}////读一字节//INT8UReadOneByte(){INT8Ui,dat=0x00;for(i=0x01;i!=0x00;i<<=1){DQ=0;_nop_();DQ=1;_nop_();if(DQ)dat|=i;DelayX(8*12);}returndat;}////写一字节//voidWriteOneByte(INT8Udat){INT8Ui;for(i=0;i<8;i++){DQ=0;dat>>=1;DQ=CY;DelayX(8*12);DQ=1;}}////读取温度值//INT8URead_Temperature(){if(Init_DS18B20()==1)return0;else{WriteOneByte(0xCC);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0xBE);Temp_Value[0]=ReadOneByte();Temp_Value[1]=ReadOneByte();return1;}}voiddelayms(INT16Ums) { INT8Ui;while(ms--)for(i=0;i<120;i++);}voidmain(){ init_1602(); AD_init(); TMOD=0x11; TH0=0xfe; TL0=0x00; IT0=1; IE=0x8b; EX1=1; IT1=1; IP=0x01; TR0=0; TR1=0; while(1) { FRQ++;//delayms(1); if(wendu_up==0){while(!wendu_up);wendu=wendu+0.1;} if(wendu_down==0){while(!wendu_down);if(wendu>0)wendu=wendu-0.1;} if(Read_Temperature()) { temp=(int)(Temp_Value[1]<<8|Temp_Value[0])*0.0625; sprintf(tab1,"T:%2.1f\xDF\x43",temp); sprintf(tab5,"%2.1f\xDF\x43",wendu); gotoxy(1,0);for(j=0;j<8;j++)write_LCD_data(tab1[j]); gotoxy(1,10);for(j=0;j<6;j++)write_LCD_data(tab5[j]); } get_ad(); if(nongdu_up==0){while(!nongdu_up);nongdu++;} if(nongdu_down==0){while(!nongdu_down);nongdu--;} tab6[0]=num[nongdu/10]; tab6[2]=num[nongdu%10]; gotoxy(0,0);for(j=0;j<5;j++)write_LCD_data(tab[j]); gotoxy(0,10);for(j=0;j<3;j++)write_LCD_data(tab6[j]); if(temp>=wendu||dianya>=nongdu){TR0=1;TR1=1;}else{TR0=0;TR1=0;} if(temp>=wendu){wendu_led=0;}else{wendu_led=1;} if(dianya>=nongdu){nongdu_led=0;}else{nongdu_led=1;} }}voidT0_INT()interrupt1{TH0=0xfd;TL0=FRQ;SPK=~SPK;}////定时器1中断程序//voidT1_INT()interrupt3{TH1=-1000>>8;TL1=-1000&0x1f;}LCD1602液晶显示程序#defineuintunsignedint //while(!button);#defineucharunsignedcharvoiddelayus(uintk);//延时voidwrite_LCD_command(ucharcommand);//命令写入LCDvoidwrite_LCD_data(ucharLCDdata);//数据写入LCDvoidinit_1602(void);//初始化LCDvoidclear_LCD();//LCD清屏voidgotoxy(ucharx,uchary);//光标在x行y列sbitrs=P2^6;//指令寄存器的选择sbitrw=P2^5;//数据写入/读出lcdsbiten=P2^7;//始能端uchartab[6]={"P:0.0"};//p1.0ucharcodenum[]={"0123456789"};uchartab5[6];uchartab6[]={"0.0"};ucharj=0;uchari=0;voidwrite_LCD_command(ucharcommand)//命令写入LCD{ rw=0;//写入LCM rs=0;//指令寄存器 en=1;//始能端 P0=command;//写命令 delayus(200);//延时40*20us en=0;//关闭始能端 rw=1;//读取LCM}voidwrite_LCD_data(ucharLCDdata)//数据写入LCD//2{ rw=0; rs=1; en=1; P0=LCDdata; delayus(10);//40us en=0; rw=1;}voidinit_1602(void)//初始化LCD/////3{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论