基于单片机的室内安全报警系统的设计与实现(共41页).docx
精选优质文档-倾情为你奉上东北农业大学学士学位论文 学号: 基于单片机的室内安全报警系统的设计与实现Design and implementation of indoor safety alarm system based on single chip microcomputer 学生姓名:刘洋指导老师: 所在院系:成人教育学院所学专业:电气工程及其自动化研究方向:电气控制技术 东 北 农 业 大 学中国·哈尔滨2017年11月摘 要本设计采用89S52单片机结合MQ-2传感器技术而开发设计了这一烟雾报警系统。论文中的烟雾报警器小巧轻便,适用于安装在含有爆炸性气体环境场所,还可使用于石油、化工等行业具有防爆要求的场所,可以安装在家里,也可以安装在露天、室外使用,防止和减少火灾危害,保护人身和财产安全。以89S52单片机和MQ-2烟雾传感器为核心设计的烟雾报警器可以实现烟雾报警、溶度显示、看门狗自检单片机状态功能、手动紧急报警等功能。本次设计的烟雾报警器结构简单、性能稳定、使用方便、价格便宜等优点。就有一定的使用价值。关键词:烟雾;报警器;89S52;MQ-2传感器。ABSTRACTThis design USES the 89S52 microcontroller combined with MQ-2 sensor technology and the development of design the smoke alarm system. In the paper the smoke alarm small and portable, designed for installation in contain explosive gases place, still can use in petroleum, chemical and other industries with the requirements of the explosion-proof place, can be installed in the home, can also be installed in the open air, outdoor use, and prevent and reduce the danger of fire protection of personal and property security.In 89S52 single-chip microcomputer and MQ-2 smoke sensor as the core design of smoke alarm can realize smoke alarm, solubility display, manual emergency alarm functions. The design of the smoke alarm simple structure, stable performance, easy to use, cheap price, etc. Have some use value.Key words: Smoke; alarm apparatus; 89S52; sensor专心-专注-专业目 录摘 要.IAbstract.II1 方案设计11.1 设计任务要求11.2 整体方案设计框架12 室内安全报警系统的硬件设计32.1 红外传感器部分设计32.1.1 热释电红外传感器的工作原理32.1.2 菲涅耳透镜42.1.3 BISS0001集成电路介绍42.2 温度传感器部分52.2.1 温度传感器52.2.2 温度传感器工作原理62.3 烟雾传感器部分62.4 数码管部分82.5 声光报警提示电路92.5.1 灯光提示电路92.5.2 声音报警电路92.6 无线遥控模块102.7 单片机部分设计112.7.1 STC89C52单片机112.7.2 单片机的最小系统122.7.3 按键控制电路、指示灯报警电路152.7.4 电源模块163 室内安全报警系统的软件设计173.1 软件结构及功能173.2 软件程序调试18参考文献20致谢 .22附录A 电路图21附录B 程序源代码22附录C 实物图291 方案设计1.1 设计任务要求设计包含了硬件设计和软件设计这两部分。模块分为数据采集、按键的设置、报警设备、无线遥控装置、数码管显示等等。 室内安全报警系统是由红外热释电红外传感器、温度传感器、烟雾传感器、数码管电路、蜂鸣器、单片机控制电路、无线遥控电路和软件组件为主组成。 室内安全主要分为防盗和防火,针对于此本文所设计系统主要实现如下功能:人们出行前,利用无线遥控器打开报警系统的保护状态,30秒后将传感器设置为工作状态进行布防。在布防期间,红外辐射探测器透过菲涅耳透镜建立一个监测区域,在该区域内任何人员活动都会触发红外辐射监测电路,激活报警电路,红色警示灯闪烁,数码管显示数字“1”,蜂鸣器长鸣报警;烟雾探测器会对室内烟雾浓度进行监控,当室内烟雾浓度过高,激活报警电路,黄色警示灯闪烁,数码管显示数字“2”,蜂鸣器长鸣报警;温度探测器会对室内温度进行监控,当室内温度过高,激活报警电路,绿色警示灯闪烁,数码管显示数字“4”,蜂鸣器长鸣报警。1.2 整体方案设计框架本设计所设计的室内安全系统主要包括以下结构:复位电路、报警电路、热释电红外传感器电路、温度传感器电路、烟雾传感器电路、无线遥控电路、数码管显示电路和相应的软件控制程序。本设计所设计的室内安全系统以STC89C52单片机为中央数据处理单元,配以红外传感监测电路、温度传感监测电路和烟雾传感监测电路作为数据采集端,系统启动与关闭采用无线遥控技术,报警方式分为红、黄、绿彩灯闪烁和蜂鸣器长鸣以及数码管数字显示三种方式组合报警。第一个监测点上设置的红外传感器探测到身体散发的红外线辐射时,可以将其转换为电压信号,经过放大电路和一个比较器电路,最终由STC89C52单片机接收产生的TTL电平。在单片机内部,由软件来查询和鉴别以确定最终是否发出警报信号。一旦发出了入侵的警报信号,报警电路将运行并放大,使蜂鸣器、发光二极管等设备发出相应的声音光线来配合。第二个监测点上设置的温度传感器探测到室内高温时,可以将其转换为低电平信号,由STC89C52单片机接收产生的TTL电平。由软件来查询和鉴别以确定最终是否发出警报信号。一旦发出了高温警报信号,报警电路将运行并放大,使蜂鸣器、发光二极管以及数码管等设备发出相应的声音光线来配合。第三个监测点上设置的烟雾传感器探测到室内烟雾浓度高时,可以将其转换为低电平信号,由STC89C52单片机接收产生的TTL电平。由软件来查询和鉴别以确定最终是否发出警报信号。一旦发出了烟雾警报信号,报警电路使蜂鸣器、发光二极管以及数码管等设备发出相应的声音光线来配合。当人们出门后,报警系统变成运行部署状态,当有人闯入检测区域内,热释电红外传感器就可以检测到(或是出现高温、烟雾时),进而迅速转换输出方式,报警器启动,从而起到防盗防火作用。该报警器的最大特点是方便简单,用户操作灵活,智能化程度高,误报率低,易于安装和维护。随着现代科学技术的提高,人们的安全意识也飞速发展,在不久的将来报警系统将在更广泛的领域和层次得到应用。2 室内安全报警系统的硬件设计从设计需求角度来分析,此设计包括如下四个部分:无线遥控部分、传感器部分、数码管部分、单片机STC89C52和报警器的报警系统。电路原理如图2.1所示。图2.1 电路原理图2.1 红外传感器部分设计2.1.1 热释电红外传感器的工作原理热释电红外传感器(简称PIR)是一种全新的高灵敏度的检测仪器。热电传感器是利用热电效应的传感器,具有敏感度高的特点。它是由一个电压晶体元件和陶瓷氧化物部分组成。在监测传感器表面温度变化时,元件表面的电极由于热电效应而会产生电荷,在两者之间形成弱电压。其输出阻抗高,具有一个阻抗转换效应晶体管FET。当传感器表面温度恒定在监视范围内,传感器没有信号输出。当人体进入监视区域,室温和体温的温度差,造成环境温度变化的,此时传感器输出信号;如果身体不移动到监视区域中,则环境温度不发生变化,传感器不会输出信号。热释电红外传感器如图2.2所示。图2.2 热释电红外传感器2.1.2 菲涅耳透镜菲涅耳透镜片由聚烯烃材料制作,反射镜的表面一侧是光滑的,另一侧是从小到大排列的同心圆。在许多情况下,菲涅耳透镜对于红外线和可见光透镜效果良好,但比很多镜片的平均价格都低。菲涅尔透镜可以根据光学设计或结构特点进行分类。菲涅耳透镜具有两种功能:一是聚焦作用,二是对所监视的区域内划分成多个小区域,包括亮区和暗区,如果一个运动物体进入监视区域,检测温度变化的热释电红外传感器将输出红外线信号。我们采用菲涅尔透镜的目的是和热释电红外传感器相结合使用,这样可以有效地集中监控红外感应区域1,菲涅耳透镜如图2.3所示。图2.3 菲涅耳透镜2.1.3 BISS0001集成电路BISS0001是一个很好的传感信号处理集成电路,具有非常高的性能,被动式热释电红外开关由BISS0001、热释电红外传感器和少量的外部元件构成。其结构新颖,性能可靠,3V5V的电压范围,当电压为5V时,具有10mA的输出驱动电流。它是由16个管脚集成块体,BISS0001的内部框图如图2.4所示,红外传感电路实物如图2.5所示。图2.4 BISS内部框图图2.5 红外传感器实物图2.2 温度传感器部分2.2.1 温度传感器本文所使用温度传感器模块可以检测周围环境的温度,具有灵敏度可调的特点,其工作电压 3.3V5V,输出形式为模拟量电压输出和数字开关量输出(0 和 1) 两种,本文所用输出形式为数字开关量输出。该模块接口为4 线制,其中VCC 外接 3.3V5V 电压(直接与单片机相连),GND 外接 GND,D0为数字量输出接口(0 和 1),A0为模拟量输出接口。2.2.2 温度传感器工作原理热敏电阻模块对环境温度最敏感,一般用来检测周围环境的温度,模块在环境温度达不到设定阈值时,D0口输出高电平,当外界环境温度超过设定阈值时,模块 D0 输出低电平;该模块数字量输出D0与单片机直接相连,通过单片机来检测高低电平,由此来检测环境的温度改变;该模块数字量输出D0直接驱动继电器模块,由此组成一个温控开关;该模块模拟量输出A0和A/D模块相连,通过A/D 转换,可以获得环境温度更精准的数值2;热敏电阻传感器原理如图2.6所示。图2.6 热敏电阻传感器原理图2.3 烟雾传感器部分MQ-2型气体传感器用于以氢气为主要成分的城市煤气、天然气、液化石油的测量,而且它抗干扰能力强,水蒸气、烟等干扰气体对它的影响小。其主为要部件MQ-2型气敏元件,该气敏元件采用烧结半导体所形成的敏感烧结体,具有稳定的阻值(即器件在纯洁空气中的阻抗),从而保证了长期工作的稳定性,同时,该器件采用单电源供电,其功耗为0.7W左右,能够对所测试的气体有极高的灵敏度和信噪比。器件的灵敏度S=Ro/Rx为1030。Rx为器件在丁烷浓度为0.2%时的阻抗,MQ-2气敏元件电路、结构和外形如图2.7、2.8所示。图2.7 MQ-2型气体传感器电路图图2.8 MQ-2型元件外形结构图针对室内安全系统设计要求,本文所采用的烟雾传感器模块的主要芯片是LM393、ZYMQ-2气体传感器,其工作电压为直流5V,具有信号输出指示灯,能够提供双路信号输出(模拟量输出及TTL电平输出,本文采用TTL低电平输出),器件响应时间:Tr10s,恢复时间:Tn60s,加热电压:V=5+0.2V,加热功率约0.7W,工作环境要求丁烷浓度在0.2%时,在湿度小于85%RH,在-10+40温度下不会引起误报,能够满足室内安全系统设计要求,烟雾传感器实物、电路原理如图2.9、2.10所示。图2.9 烟雾传感器实物图图2.10 烟雾传感器模块电路原理图2.4 数码管部分当数码管特定的段加上电压后,这些特定的段就会发亮,以形成字样。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。本文所采用单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极组成共阳数码管。为了区分不同传感器报警,红外传感器对应数字1,温度传感对应数字2,烟雾报警对应数字4。本文所设计数码管显示电路原理、实物如图2.11、2.12所示。图2.11 数码管显示电路原理图图2.12 数码管显示电路实物图2.5 声光报警提示电路2.5.1 灯光提示电路LED即发光二极管,是一种能够将电能转化为可见光的固态的,它可以直接把电转化为光;它改变了钨丝发光与三基色粉发光的原理,而采用发光3。本设计利用不同颜色的LED指示不同传感器的报警,灯光提示电路如图2.13所示。图2.13 灯光提示电路2.5.2 声音报警电路针对声音报警电路,本文采用蜂鸣器、限流电阻和晶体管组成的声音报警电路,蜂鸣器为发声元件,是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于报警器、汽车电子设备、定时器等电子产品中作发声器件4。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型,电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成,接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互缠绕,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器)就可以发声,本设计采用电磁式有源蜂鸣器,其中三极管Q1起开关作用,其基极的低电平使三极管饱和导通,使蜂鸣器发声;而基极高电平则使三极管关闭,蜂鸣器停止发声,声音报警电路如图2.14所示。 图2.14 声音报警电路2.6 无线遥控模块本设计利用PT2272模块构成的无线接收电路,在室内安全系统中加入了无线遥控功能,该功能能够实现对室内安全系统的布防、解除布防、停止报警等基础功能。PT2272无线接收电路、无线遥控实物如图2.15、2.16所示。图2.15 PT2272无线接收电路图2.16 无线遥控电路实物图2.7 单片机部分设计2.7.1 STC89C52单片机STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,内置4KB EEPROM,MAX810复位电路,三个16 位 /计数器,一个6向量2级中断结构,全双工串行口。另外 STC89C52可降至0Hz 静态逻辑操作,支持2种可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。单片机引脚如图2.17所示。 图2.17 单片机引脚图STC89C52引脚介绍如下:主电源引脚(2根)。VCC(Pin40):电源输入,接5V电源;GND(Pin20):接地线。外接晶振引脚(2根)。XTAL1(Pin19):片内振荡电路的输入端;XTAL2(Pin20):片内振荡电路的输出端。控制引脚(4根)。RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位;ALE/PROG(Pin30):地址锁存允许信号;PSEN(Pin29):外部存储器读选通信号;EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)。STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。2.7.2 单片机的最小系统最小系统包括单片机及其所需的必要的电源、时钟、复位等部件,能使单片机始终处于正常的运行状态。电源、时钟等电路是使单片机能运行的必备条件,可以将最小系统作为应用系统的核心部分,通过对其进行存储器扩展、A/D扩展等,使单片机完成较复杂的功能。STC89C52是片内有ROM/EPROM的单片机,因此这种芯片构成的最小系统简单、可靠。用STC89C52单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可。单片机最小系统原理框图如图2.18所示。图2.18 单片机最小系统原理框图时钟电路。STC89C52单片机的时钟信号通常是内部时钟方式和外部时钟方式两种方式。内部时钟方式如图2.19所示。图2.19 STC89C52内部时钟电路在STC89C52单片机内部有一振荡电路,只要在单片机的XTAL1(18)和XTAL2(19)引脚外接石英晶体(简称晶振),就构成了自激振荡器并在单片机内部产生时钟脉冲信号5。图中电容C1和C2的作用是稳定频率和快速起振,电容值在530pF,典型值为30pF。晶振CYS的振荡频率范围在1.212MHz间选择,典型值为12MHz和6MHz。复位电路。当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作,若该引脚持续保持高电平,单片机就处于循环复位状态。复位电路工作就是确定单片机的完整的微控制器启动时的初始状态。单片机产生复位信号电源后,确定完成单芯片微控制器开始工作条件,以确定初始状态。当运行外部环境干扰单片机系统的运行发生失控时,按程序中的复位按钮会自动重新启动6。一般有上电复位和外部手动复位按钮,单片机在时钟电路的工作电源启动后,鉴于RESET持续的高级别周期就可以完成复位操作。本设计采用一个外部手动复位电路按钮,您需要连接一个上拉电阻,以提高输出的电平值,STC89C52的复位电路如图2.20所示。 图2.20 STC89C52复位电路STC89C52中断技术概述。中断技术主要用于实时监测与控制,要求单片机能及时地响应中断源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求7。中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序,中断响应和处理过程如图2.21所示。图2.21 中断响应和处理过程如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。最小系统图如图2.22所示。图2.22 单片机最小系统原理图2.7.3 按键控制电路、指示灯报警电路该电路的设计是为了不同类型的控制电路和武装以及紧急的状态下的工作,当你进入布防状态,按下布防键30秒后,当有人走近时,热释电红外传感器感应到的信号通过微控制器,单片机进入报警状态。当遇到特殊紧急情况,立即按下紧急报警按钮,蜂鸣器报警。在单片机(MCU)的I/O其中,电平P20、P21、P22连接到LED指示灯,P23连接到蜂鸣器外接一个外部晶体管8550,起到开关的作用,当第三晶体管饱和时,立即启动蜂鸣器,按键控制电路、指示灯报警电路如图2.23、图2.24所示。 图2.23 按键控制电路 图2.24 指示灯报2.7.4 电源模块外部电源采用直流干电池,利用电池盒串接而成,每个干电池1.5V左右,共计电压约4.5V左右,通过电源连接线连到电源接口处。3 室内安全报警系统的软件设计3.1 软件结构及功能功能说明:按开关按钮,遥控来控制布防,取消布防。红外报警时红灯亮,数码管显示1111;烟感报警时,黄灯亮,数码管都显示2222;温度报警时,绿灯亮,数码管都显示4444。主程序工作流程如图3.1所示。图3.1 主程序工作流程图操作说明:先打开电源开关,摁遥控器1,此时电子屏显示0000。按遥控器2,取消布防,电子屏无显示。红外报警时红灯亮,数码管都显示1;烟感报警时,黄灯亮,数码管都显示2;温度报警时,绿灯亮,数码管都显示4。存在两种报警时显示的是电子管亮暗的相加。例如,测试时注意尽量让一个报警,就是如果单独是红外正在报警,显示1111,如果此时烟感在报警,就会是反写的6,就是上面数的电路相加,不是数字相加。如果避免这种情况,在显示1111时,取消布防,开启布防,如此反复,知道显示0000时,再测另外一个报警。3.2 软件程序调试调试过程中首先要检测的就是硬件电路的设计原理是否正确、能否达到预期效果以及实现方法是否简便等等;其次在焊接好电路之后,认真检查电路的焊接情况。采用分块调试的方法,烟雾探测电路、红外检测电路、温度检测电路、无线遥控电路、数码管显示电路和单片机控制电路进行调试。在对每个模块的进行调试过程中又采用了由局部到整体,由简单到复杂的调试方法,最后再将各个模块总和成一个整体8。程序烧录运行,如图3.2所示。图3.2程序烧录运行图在完成对程序的调试及烧录之后,还需要对其进行演示,把开发板与电脑连上,设置好对应的接口,完成供电及下载。分别对烟雾探测电路、红外检测电路、温度检测电路、无线遥控电路、数码管显示电路和声光报警电路进行测试。测试能否达到报警。经过测试,完全可行。因而简单的实现了对无线遥控、温度、烟雾、红外和报警的控制。参考文献1彭军. 传感器与检测技术. 西安电子科技大学出版社, 2003: 263315 2李永生, 杨莉玲. 半导体气敏元件的选择性研究. 传感器技术, 2002(3): 13 3Yoon D h, Yu J h, Choi Gm. CO Gas Sensing Properties of Zn0-CuO Composite. Sensors and Actuators. 1998(46): 1523 4蔡文斋. 专业级串口调试器设计. 现代电子技术, 2006(23): 6972 5Wang Xi huai,Xiao Jian mei,Bao Minzhong. Multi-sensor Fire Detection Algorithm for Ship Fire Alarm System Using Neural Fuzzy Network. Signal Processing Proceedings. 2000(3):16021605 6张鹏翼, 罗卫兵, 楼超英. 基于STC单片机的无人飞机控系统设计. 设计参考, 2006, 18: 2325 7求是科技. 单片机应用系统开发实例导航. 人民邮电出版社, 2003. 8何衍庆. 控制系统分析设计和应用. 化学工业出版社, 2003. 9郑郁正. 单片机原理及应用. 四川大学出版社, 2003: 2556 10N kansah F D. Technology and reliability of submicron 1 T2 flash EEPROM. UMI Number :. Bell &Howell Information and Learning Company, 2001: 2 11De Salvo B, Ghibaudo G. Pananakak is Getal. Experimental and theoretical investigation of nonvolatile memory data-retention. IEEE Trans Electron Devices, 1999, 46 (7): 1518 12黄再银. 带看门狗和电源监控功能的复位芯MAX813L. 电子世界, 2003(3): 3940 13黄新友, 高春华. 烧结温度对大功率超薄型压电蜂鸣器用压电陶瓷结构和性能 的影响. 中国陶瓷工业. 2003,10(2): 2224 14 于冶会. 对调整仪表用蜂鸣器振动规范的探讨. 传感器世界,2000 (1): 3538 15邵子扬, 黄保明, 刘海涛. Keil软件仿真的串口调试技巧. 单片机与嵌入式系统应用, 2006(7): 7678 16Keil Software. Cx51 Complier Users Guide. Keil Software, 2001 17Keil Software. Macro Assembler and Utilities Users Guide. Keil Software, 200118陈晓莉, 张俊涛. KEIL C51单片机仿真器的设计.微计算机信息(嵌入式与SOC), 2006,2(2): 1920致 谢在本次论文的写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。感谢我的同学和朋友,在我写论文的过程中给予我很多的素材,还在炉温撰写和排版过程中提供热情帮助,由于我的水平有限,所写论文难免有不足之处,恳请各位老师们给予批评和指正,三年的大学生活在这个季节即将划伤一个句话,而于我的人生却只是一个逗号,我将面对又一次征程的开始,三年来的求学生涯,在老师、同学们的帮助下,走得辛苦却也收获颇丰。可是我更急切地要把我的敬意和赞美献给每一位教过我的老师,在相处的日子中,老师们严谨的治学,渊博的学识,深邃的思想,雄阔的视野,为我营造了一种良好的精神氛围,授人以鱼不如授人以渔,置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了宏伟的学术目标,领会了基本的思考方式从论文题目的选定到论文写作的指导,经由您悉心的点拨,再经思考后的领悟,常常让我有山重水复疑无路,柳暗花明又一村。再次感谢自控系的所有老师,祝愿你们在今后工作生活中一帆风顺,心想事成。附录A 电路图图A1 电路汇总图附录B 程序源代码#include <reg52.h> /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#define key_io P1uchar key_can;/ 红外热释电平时为0 有输出为1sbit beep = P23; /蜂鸣器定义sbit red = P22; /红色发光二极管定义sbit green = P21; /绿色发光二极管定义sbit yellow = P20; /黄色发光二极管定义sbit hw = P13; /红外热释传感器定义bit flag_300ms = 0;sbit yaokong1 = P24;sbit yaokong2 = P25;/sbit RST = P26;sbit yw = P32; /烟雾sbit gw = P33;/高温sbit S1 = P17;/千位的位选信号sbit S2 = P16;/百位sbit S3 = P15;/十位sbit S4 = P14;/个位sbit a = P00;sbit b = P01;sbit c = P02;sbit d = P03;sbit e = P04;sbit f = P05;sbit g = P06;sbit p = P07;/sbit key1 = P24;/sbit key2 = P25;/sbit key3 = P26;/sbit key4 = P27;uchar code N10 = 0xC0, 0xf9 ,0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /共阳极段码0, 1, 2, 3, .8, 9/*独立按键处理函数*/ void key()static uchar key_new = 0,key_old = 0,key_value = 0;if(key_new = 0) /按键松开if(key_io & 0x07) = 0x07)key_value +;else key_value = 0;if(key_value >= 5) /按键松开松手检测key_value = 0;key_new = 1;/按键松开后进入等待按键状态else if(key_io & 0x07) != 0x07) /按键按下key_value +;else key_value =0;if(key_value >= 5)/按键按下消抖key_value = 0;key_new = 0; /按键松开后进入等待松开按键状态key_can = 20;if(key_new = 0) && (key_old = 1)switch(key_io & 0x07)case 0x06: key_can = 1; break; /得到按键值 case 0x05: key_can = 2; break; /得到按键值 case 0x03: key_can = 3; break; /得到按键值 key_old = key_new; /*定时器0初始化程序*/void time_init() EA = 1; /开总中断TMOD = 0X01; /定时器0工作方式1ET0 = 1; /开定时器0中断 TR0 = 1; /允许定时器0定时uchar flag_alarm ; /报警标志位uchar flag_bufang ; /布防标志位uchar flag_yanwu;uchar flag_wendu;uchar flag_bufang_en ; /布防标志位使能uint flag_value; /用做定时器的变量/*红外报警处理*/ void hongwai_dis()if(flag_alarm = 1) /报警red = red; /红灯报警beep = beep; /蜂鸣器报警if(flag_bufang_en = 1) /准备开始布防green = green; /绿灯闪 if(flag_bufang = 1) /确认布防green = 0; /如果延时布防成功 绿灯长亮if(hw = 1) /红外有输出flag_alarm = 1;/*对应不同按键处理*/ void key_with()if(key_can = 1) /按键紧急报警flag_alarm = 1; /报警标志位 ; 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;P2 = 0xff; /*主程序*/ void main()/time_init();while(1)/key();if(yaokong1=1) if(flag_alarm=0&&flag_yanwu=0&&flag_wendu=0) S1=S2=S3=S4=0;P0=N0;if(hw = 1)flag_alarm = 1;if(flag_alarm=1)S1=S2=S3=S4=0;P0=N1;red = red; /红灯报警beep = beep; /蜂鸣器报警/beep = beep;if(yw=0)flag_yanwu=1;if(flag_yanwu=1) S1=S2=S3=S4=0;