1、 基于单片机的烟雾报警器 2015届本科生毕业设计 题 目: 基于单片的烟雾报警器 作 者 姓 名: 学 号: 学 院: 专 业: 指导教师姓名: 指导教师职称: 摘 要社会的发展,楼层也越来越高,防火问题越来越大,但是目前国内的许多研发都针对于大型商场的火灾报警。所以,我研制一种结构简单、经济实用的家庭烟雾报警器以适应市场的需求,是非常可行的。基于单片机的烟雾报警器应该具备的基本烟雾报警功能。本设计以传感器和单片机作为烟雾报警器设计的核心器件,配合其它器件即可实现声光报警、自动排烟换气和消防灭火等功能。设计中单片机选用ATC89C52作为控制器件,传感器选用MQ-2型半导体可燃气体敏感元件烟
2、雾传感器实现烟雾的检测。烟雾报警器主要由烟雾信号采集及前置放大电路、模数转换电路、单片机控制电路、显示电路、声光报警电路和安全保护电路构成,设计完整、简单完美、价格低,使单片机在烟雾报警系统的控制中得到充分应用,具有一定的市场价值。论文主要针对烟雾报警系统中的各个组成部分及功能进行了详细的介绍和说明,并对其主控电路和外围设备电路之间的接口连接方式,以及系统软件设计进行了重点的分析和讲解。关键字:传感器; 单片机; 烟雾报警器ABSTRACTThe development of the society, more and more is also high floor, fire prevent
3、ion problem is more and more big, but the current domestic research and development of many of the large shopping malls in fire alarm. So, I developed a kind of simple structure, economical and practical household smoke alarm to adapt to the demand of the market, it is very feasible. Based on single
4、 chip microcomputer of smoke alarm should have the basic smoke alarm function.This design by sensor and single chip microcomputer as core components of smoke alarm design, in combination with other devices can be realized sound and light alarm, automatic exhaust ventilation and fire extinguishing, a
5、nd other functions. In the design of single chip microcomputer ATC89C52 chosen as the control device, sensor selection MQ - 2 type semiconductor gas sensitive element smoke sensor realizes the smoke detection. Smoke alarm is mainly composed of smoke signal acquisition and circuit, analog-to-digital
6、conversion circuit, single-chip microcomputer control circuit, display circuit, sound and light alarm circuit and safety protection circuit, reasonable design, simple and easy to understand, the price is low, make SCM are fully applied in the smoke alarm system control, has a certain practical value
7、. Thesis mainly to the various components of the smoke alarm system and function has carried on the detailed introduction and explanation, and its main control circuit and the interface between the peripheral circuit connection mode, and focuses on the system software design in the analysis and inte
8、rpretation.Key words: sensor; Single chip microcomputer; Smoke alarm1 绪论11.1选题背景11.2 设计描述11.3烟雾报警器的发展现状22 总体设计方案32.1传感器的选型32.2 MQ-2气体烟雾传感器42.3单片机的选型52.4 AT89C51单片机的介绍63 系统硬件电路93.1 单片机最小系统93.2 时钟电路和复位电路介绍103.3烟雾检测AD采集电路103.4显示模块113.5 声音报警系统和按键控制电路123.6 温度传感器电路图134 系统软件的设计144.1主程序设计和流程图145 总结15致 谢15参考
9、文献16附录一:总体原理图设计17 附录二:部分程序源代码171 绪论1.1选题背景随着时代的发展,越来越多的潜在隐患伴随着人们的生活。为了早期发现和通报火灾,防止和减少火灾危害,保护人身和财产安全。保卫社会主义现代化建设,防止火灾引起燃烧、爆炸等事故,造成严重的经济损失,甚至危及生命安全。为了减少这类事故的发生,就必须对烟雾进行现场实时检测,采用先进可靠的安全检测仪表,严密监测环境中烟雾的浓度, 及早发现事故隐患,采取有效措施,避免事故发生,才能确保工业安全和 家庭生活安全。因此,基于单片机的烟雾报警器就成为传感器技术发展领域的一个非常重要的课题。1.2 设计描述基于单片机的烟雾报警器的两个
10、重大组成部分是单片机和传感器。单片机为连接器,联系着传感器和报警电路设备。近些年来,单片机已广泛运用于人类生产各部门及人们日常生活的各个方面。各种类型的单片机也根据社会的需求而开发出来。单片机是器件级计算机系统,实际上它是一个微控制器或微处理器。由于它功能全,体积较小,成本低廉,因此它可以应用到所有电子系统中。同样,它也可以广泛应用于报警技术领域,使各类报警装置的功能更加完善,可靠性大大提高,以满足社会发展的需要。而传感器作为信息技术系统的触手,如果没有触手感受信息,或者触手不够灵敏,都难以形成高精度、高速度的控制系统。美国把上世纪八十年代称为传感技术时代,日本更是把传感技术列为十大技术之首。
11、所以,根据报警器功能的需要,选择合适、精确、经济的烟雾传感器和单片机芯片是至关重要的。在本论文中的最主要的设计是选AT89C51单片机和MQ-2半导体气体烟雾传感器为核心器件。 当前,高层群建筑都会有选择地安装不同功能的烟雾自动报警系统。因为烟雾自动报警系统是建筑物的神经,它能够感受、接收着发生火灾的早期信号并及时报警,发出警报同时告知用户和周边居民。在火灾的早期发生阶段,及时发出警报,把火苗扼杀在摇篮中,这才是将损失降低到最低的最有效,成本最低的有效手段。1.3烟雾报警器的发展现状国外上世纪30年代开始研究及探讨烟雾传感器,且发展迅猛,1是人们安全意识增强,对环境安全性和生活舒适性要求提高,
12、2是因为传感器市场增长受到政府安全法规的推动。随着传感器生产 工艺水平稳步提高,传感器日益小型化、集成化不断增大,使得烟雾检测 仪器的体积越来越小,提高了烟雾检测仪器的便携性,更加利于市场推广和使用。 中国在70年代初期开始研制烟雾报警器,生产型号多样、品种较齐全,应用范围也由单一的炼油系统扩展到几乎所有危险作业环境的各种类型报警器,产品数量也在不断增长。但主要是在借鉴国外先进的传感器技术和先进的生产工艺基础上,进行研究与开发具有自我特色的产品。稳定性越来越好。燃气报警器可分为民用烟雾报警器、工业用烟雾报警器、 化学烟雾报警器三个大方向产品。(1)民用烟雾报警器 民用烟雾报警器为居民家庭用的火
13、灾报警器,一般安装在厨房,遇到火灾产生的烟雾时时,报警器可发出高频报警,。有的报警器可自动开启排风扇,把烟雾排出室外 (2) 工业用烟雾报警器及化学烟雾报警器 工业用烟雾报警器及有毒有害烟雾报警器只是检测探头有差异,而在原理和应用中都很相近。工业用燃气报警器及化学烟雾报警器根 据检测环境的不同,也可分为检漏仪、控制器和探测器。 检漏仪的体积较小,可随身携带或手持,主要应用于燃气管理的查漏 与巡检。若有燃气泄漏,检漏仪便会发出声光报警,同时数字显示烟雾浓 度,以便及时采取安全措施,防止爆炸等恶性事故的发生。 控制器与探测器结合使用,可在防爆现场长期监测烟雾的浓度。探测器安装在防爆现场,控制器壁挂
14、在值班室等有人值守的地方,二者采用屏 蔽电缆线连接。当在现场的探测器探测到燃气泄漏之后,通过屏蔽电缆线将信号传到控制器,控制器发出声光报警,同时启动排风装置或关闭电磁阀切断气源,以确保安全。此种仪器广泛应用于液化气站、汽车加油站、等高危工业场所。2 总体设计方案 烟雾报警器是能够检测环境中的烟雾浓度,并具有报警功能的仪器。该报警系统的最基本组成部分应包括:信号采集模数转换电路、单片机控制电路、字符显示电路、声光报警电路和安全保护电路等部分组成。 为适应家庭和工业等场所对可燃性易爆烟雾安全性要求,设计的烟雾报警器具有显示报警状态。报警器采用延时的工作方式,烟雾检测报警器以AT89C51单片机为控
15、制核心,选用MQ-2半导体气体烟雾传感器采集烟雾浓度信息,配合外围电路构成烟雾报警系统。本设计包括硬件和软件设计两个部分。从设计的要求来分析该设计须包含如下结构:电路总题框图如图1所示: 电源开关 电源 AT89C51单片机AD采集电路显示电路报警电路按键控制图1 总体设计框图处理器采用51系列单片机AT89C51。整个系统是在系统软件控制下工作的。设置在监测点上的烟雾检测探头将检测到的烟雾变换成电信号,送出模拟信号,给AD采集电路采集。在单片机内,经软件查询、识别判决等环节实时发出烟雾报警状态控制信号。驱动蜂鸣器及报警指示灯报警。2.1传感器的选型烟雾传感器是测量装置和控制系统的首要环节。而
16、烟雾报警器的信号采集由烟雾传感器负责。烟雾传感器能够将气体的种类及其浓度有关的信息转换为电信号,根据这些电信号的强弱就可以获得与待测气体在环境中存在的情况有关的信息,从而达到检测、监控、报警的功能。可以说,没有精确可靠的传感器,就没有精确可靠的自动检测、控制和报警系统。烟雾传感器作为报警器中不可缺少的核心器件,它决定了所采集的烟雾浓度信号的准确性和可靠性。烟雾传感器内部结构如图2所示。图2传感器结构图烟雾传感器是模拟传感器。它能将空气中的烟雾浓度变量转换成有一定对应关系的输出信号的装置。烟雾传感器就是通过监测环境中烟雾的浓度来实现火灾防范的。当烟雾探头碰到烟雾或某些特定的气体,烟雾探头内部阻值
17、发生变化,产生一个模拟值,从而对其进行控制。烟雾传感器利用烟雾敏感元件的电阻受烟雾(主要是可燃颗粒)浓度影响阻值变化的原理向单片机发送烟雾浓度相应的模拟信号。2.2 MQ-2气体烟雾传感器MQ-2半导体传感器是以清洁空气中电导率较低的金属氧化物二氧化锡(SnO2)为主体的N型半导体气敏元件。当传感器所处环境中存在烟雾气体时,传感器的电导率随空气中烟雾气体浓度的增加而增大。在设计报警器时只有使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。该传感器具备一般半导体烟雾传感器灵敏度高、电导率变化大、响应和恢复时间短、抗干扰能力强、输出信号大、寿命长和工作稳定等优点,在市面上应用十分
18、广泛。 MQ-2主要指标如下图:图3传感器标准工作条件图4传感器环境条件图5传感器的灵敏度特性设计时应注意,气敏元件开机通电时,其内阻很小,但经过一段时间后,才能恢复到原来的稳定状态。因此,QM-2气体传感器需开机预热几分钟,才可投入使用,以免造成误报。2.3单片机的选型单片机是烟雾自动报警系统的关键部件,在实际操作过程中接收火灾信号并启动报警装置显示和执行相应的报警。在单片机实现的控制功能中,需要单片机有比较快的运算速度,使检测人员和用户在报警器系统正常工作时能够及时地观测到实时的烟雾浓度等级,并立即进行处理。在能够满足报警器系统设计的计算速度及接口功能要求的同类型单片机中,要考虑选择价格低
19、且体积小的机型,在保证了报警器的精确性、可靠性及抗干扰性的基础上,能够不提高成本,尽量减小体积。由于单片机技术在各个领域得到越来越高的重视,世界上许多集成电路生产厂商相继推出了各种类型的单片机,在单片机家族的众多成员中,MCS系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,被广大消费者所接受,成为国内单片机应用领域中的主流。其中,51系列单片机的优点是价钱便宜,I/O口多,程序空间大。所以使用51系列单片机是最理想的选择,因此设计采用AT89C51。2.4 AT89C51单片机的介绍图6AT89C51单片机1 与MCS-51 兼容2 4K字节可编程FLASH存储器3 寿命:100
20、0写/擦循环4 数据保留时间:10年5 全静态工作:0Hz-24MHz6 三级程序存储器锁定7 1288位内部RAM8 32可编程I/O线9 两个16位定时器/计数器10 5个中断源11 可编程串行通道12 低功耗的闲置和掉电模式13 片内振荡器和时钟电路图7AT89C51VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
21、P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它
22、利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输
23、入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上
24、置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器
25、的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3 系统硬件电路3.1 单片机最小系统图8单片机最小系统单片机最小系统包括三个部分分别为单片机、复位电路、时钟电路。AT89C51单片机的工作电压范围:4V-5.5V,所以通常给单片机外界5V直流电源。连接方式为单片机中的40脚VCC接正极5V,
26、而20脚VSS接电源地端。复位电路就是确定单片机的工作起始状态,完成单片机的启动过程。单片机接通电源时产生复位信号,完成单片机启动确定单片机起始工作状态。当单片机系统在运行中,受到外界环境干扰出现程序跑飞的时候,按下复位按钮内部的程序自动从头开始执行。一般有上电自动复位和外部按键手动复位,单片机在时钟电路工作以后,在RESET端持续给出2个机器周期的高电平时就可以完成复位操作。本设计采用的是外部手动按键复位电路,需要接上上拉电阻来提高输出高电平的值。 时钟电路好比单片机的心脏,它控制着单片机的工作节奏。时钟电路就是振荡电路,是向单片机提供一个正弦波信号作为基准,决定单片机的执行速度。XTAL1
27、和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器。如采用外部时钟源驱动器件,XTAL2应不接。因为一个机器周期含有6个状态周期,而每个状态周期为2个振荡周期,所以一个机器周期共有12个振荡周期,如果外接石英晶体振荡器的振荡频率为12MHZ,一个振荡周期为1/12us。3.2 时钟电路和复位电路介绍、图9时钟电路图10复位电路本系统采用内部方式的时钟电路和加电自复位的复位电路如图8图9。3.3烟雾检测AD采集电路图11烟雾采集AD采集电路 烟雾检测采用MQ-2传感器。经过ADC0832采集后就可以得到各种烟雾浓度下的电压值。从而设定出理想的烟雾强度报警值。3.4显示模块
28、图12数码管显示图13显示电路显示采用数码管显示,显示电路如图133.5 声音报警系统和按键控制电路图14声音报警电路图电路通过三极管与单片机P3.6端口连接从而达到控制蜂鸣器是否报警。图15 按键连接电路图本电路设计了四个按键,一个设置键、一个加键、一个减键、一个手动报警键,当遇到紧急情况时,可按下手动报警键,蜂鸣器进行报警。如图15所示3.6 温度传感器电路图图16温度传感器接口电路图 (1) DS18B20控制方法DS18B20有六条控制命令: 温度转换 44H 启动DS18B20进行温度转换 读暂存器 BEH 读暂存器9个字节内容 写暂存器 4EH 将数据写入暂存器的TH、TL字节 复
29、制暂存器 48H 把暂存器的TH、TL字节写到E2RAM中 重新调E2RAM B8H 把E2RAM中的TH、TL字节写到暂存器TH、TL字节 读电源供电方式 B4H 启动DS18B20发送电源供电方式的信号给主CPU (2) DS18B20供电方式DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图3.1所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个三极管来完成对总线的上拉。本设计采用电源供电方式, P2.3口接单线总线为保证在有效的DS18B20时钟周期内
30、提供足够的电流,可用一个上拉电阻和STC89C52的P2.3来完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D变换操作时,总线上必须有强的上拉,上拉开启时间最大为10 s。采用寄生电源供电方式是VDD和GND端均接地。由于单线制只有一根线,因此发送接收口必须是三状态的。主机控制DS18B20完成温度转换必须经过3个步骤:l 初始化。l ROM操作指令。l 存储器操作指令。4 系统软件的设计4.1主程序设计和流程图主程序流程图如下图所示。首先要给传感器预热,因为MQ-2型半导体电阻式烟雾传感器在不通电存放一段时间后,再次通电时,传感器不能立即正常采集烟雾信息,需要一段时间预热。程序
31、初始化结束后,系统进入监控状态。程序初始化传感器预热处理开始 单片机处理,判断否超过设定报警值A/D转换进入报警子程序 信号采集是否 图17主程序流程图在整个报警系统工作中,烟雾浓度信息经ADC0832转换处理后,由单片机进行分析处理,判断系统是否启动报警。主程序还包括LED八段式数码管浓度字符显示功能、手动报警功能、报警浓度设定功能,中断子程序等,使报警器功能更加完善,给用户带来便利。5 总结 基于单片机的烟雾检测报警器可以以最快的方式发现火灾和爆炸事故以及煤气中毒的发生,它是预防火、防爆和安全生产所必备的仪器,具有无限的市场空间与发展前景。 本论文在对烟雾传感器和报警技术进行深入研究的基础
32、上,合理地确定系统的设计方案。并对仪器的整体设计和各个组成部分进行了详细的分析和完整设计。 本设计以传感器和单片机作为烟雾报警器设计的核心器件,配合其它器件即可实现声光报警。根据设计要求、使用环境、成本等因素,选用MQ-2型半导体电阻式烟雾传感器。该传感器是对以烷类烟雾为主的多种烟雾有良好敏感特性的广谱型半导体敏感器件。它的灵敏度适中,具有响应与恢复特性好,长期工作稳定性,不易受环境影响及抗温湿度影响等优点。 在系统单片机控制电路的设计上,采用了高性能、高整合度的AT89C51单片机作为核心芯片,充分利用了其高速数据处理能力和丰富的片内外设,实现了仪器的小型化和智能化。使仪器具有结构简练、性能
33、可靠、体积小、成本低廉等优点。由于烟雾传感器需要在加热状态下工作,温度越高,反应越快,响应时间和恢复时间就越快。为提高响应时伺,保证传感器准确地、稳定地工作,需要向烟雾传感器持续供给5V的加热电压。烟雾报警器能在较宽的温度范围工作,可将烟雾浓度显示用LED数码管显示。当烟雾的浓度达到设定的浓度时,发出报警。在这次的毕业设计中,自己也学习到了很多以前没有的新知识,也把以前学习到的知识进行了更深一步的实践和探索,让我更加清楚了理论知识和实践能力的差别了,了解到自己的短处,培养了我的独立思考能力,进一步提高了自己在实际设计过程中研究问题、发现问题、解决问题的动手能力,同时,也发现了自己的问题的存在,
34、并有待进一步学习和发展,让自己在未来的工作和学习之中更快的适应和提高自己的综合素质。致 谢 在完成这次设计的过程中,我十分感谢我的指导老师纵榜峰纵老师。从选题到完成设计,老师一直都是耐心的指出设计中遇到的各种问题,然后指导我如何解决问题,帮助我开拓设计思路,并不断地激励着我,使我感到信心倍增,让我非常积极地投入到设计中,不断地攻坚设计中一个一个的难题。在此,再次感谢纵老师在设计上不断地给与我帮助,让我在大学里的最后一次的学习过程中,能够完整的完成学校给我们的课题和挑战,给四年大学生活画上一个完美得句号。回想大学四年的时光,仿佛大一就在昨天,时间如白马过隙。最后,我还要感谢在我大学四年的学习期间
35、给我极大关心和支持的家人、各位老师以及我的同学和朋友。是你们在生活和学习上不断给与我支持、帮助和无微不至的关怀,是你们不断地给与了我信心,希望我以后走上社会,能够走得更好,走得更高。参考文献1 李华.MCS一51系列单片机实用接口技术.北京航空航天大学出版社.2 张毅坤等.单片微型计算机原理及应用.西安电子科技大学出版社.2006.3 潘新民等.微型计算机控制技术.电子工业科技大学出版社.2003.4 陈伟.MCS一51系列单片机实用子程序集锦.清华大学出版社.1993.5 吴佑寿. Lab VIEW7实用教程.电子工业出版社.2007.6 朱明程等.一氧化碳传感器MGS1100原理及应用电子
36、技术.1998年第1期.7 刘迎春.传感器原理设计及应用.哈尔滨工业大学出社.8 赵负图.数据采集与控制系统.北京科学技术出社.1987.9 王若鲸.数据通信系统入门.人民邮电出版社.1984.10 肖忠祥主编.数据采集原理.西北工业大学出版社.200311 刘广玉.新型传感器技术及应用.北京航空航天大学出版社.1989.12 张毅刚.MCS一51单片机应用设计.1990.13 陈伟.MCS一51系列单片机实用子程序集锦.清华大学出版社.1993.14 何立民.单片机实用文集.北京航空航天大学出版.1993.15 余成波.传感器与自动检测技术.高等教育出版社.2004. 附录一:总体原理图设计
37、 附录二:部分程序源代码#include /调用单片机头文件#define uchar unsigned char /无符号字符型 宏定义变量范围0255#define uint unsigned int /无符号整型 宏定义变量范围065535#include #include eeprom52.h/数码管段选定义 0 1 2 3 4 5 6 7 8 9uchar code smg_du=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff; /断码/数码管位选定义uchar
38、 code smg_we=0x7f,0xbf,0xdf,0xef;uchar dis_smg8 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8;sbit CS=P32;/CS定义为P3口的第2位脚,连接ADC0832CS脚 PCBsbit SCL=P33;/SCL定义为P3口的第3位脚,连接ADC0832SCL脚sbit DO=P34;/DO定义为P3口的第4位脚,连接ADC0832DO脚sbit dq = P35;/18b20 IO口的定义sbit beep = P36; /蜂鸣器IO口定义uint temperature,s_temp ; /温度的变量u
39、char dengji,s_dengji; /烟物等级uchar shoudong; /手动报警键bit flag_300ms = 1;uchar key_can; /按键值的变量uchar menu_1; /菜单设计的变量/*1ms延时函数*/void delay_1ms(uint q)uint i,j;for(i=0;iq;i+)for(j=0;j120;j+);/*小延时函数*/void delay_uint(uint q)while(q-);/*把数据保存到单片机内部eeprom中*/void write_eeprom()SectorErase(0x2000);byte_write(0
40、x2000, s_temp);byte_write(0x2001, s_dengji);byte_write(0x2060, a_a);/*把数据从单片机内部eeprom中读出来*/void read_eeprom()s_temp = byte_read(0x2000);s_dengji = byte_read(0x2001);a_a = byte_read(0x2060);/*开机自检eeprom初始化*/void init_eeprom() read_eeprom();/先读if(a_a != 1)/新的单片机初始单片机内问eeproms_temp = 50;s_dengji = 5;a_
41、a = 1;write_eeprom(); /保存数据/*18b20初始化函数*/void init_18b20()bit q;dq = 1;/把总线拿高delay_uint(1); /15usdq = 0;/给复位脉冲delay_uint(80);/750usdq = 1;/把总线拿高 等待delay_uint(10);/110usq = dq;/读取18b20初始化信号delay_uint(20);/200usdq = 1;/把总线拿高 释放总线/*写18b20内的数据*/void write_18b20(uchar dat)uchar i;for(i=0;i= 1;/*读取18b20内的
42、数据*/uchar read_18b20()uchar i,value;for(i=0;i= 1; /读数据是低位开始dq = 1; /释放总线if(dq = 1) /开始读写数据 value |= 0x80;delay_uint(5); /60us读一个时间隙最少要保持60us的时间return value; /返回数据/*读取温度的值 读出来的是小数*/uint read_temp()uint value;uchar low; /在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序init_18b20(); /初始化18b20write_18b20(0xcc); /跳过64位ROMwrite_18b20(0x44); /启动一次温度转换命令delay_uint(50); /500usinit_18b20(); /初始化18b20write_18b20(0xcc); /跳过64位ROMwrite_18b20(0xbe); /发出读取暂存器命令EA = 0;low = read_18b20(); /读温度低字节valu