基于单片机的家用煤气泄漏监控系统的设计与实现 - 图文

更新时间:2024-06-11 07:25:01 阅读量: 综合文库 文档下载

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

目 录

摘 要 .................................................. 1 ABSTRACT ................................................ 2 第1章 绪论 ............................................. 3 1.1 课题来源及研究意义 ................................ 3 1.2 煤气泄漏监控系统的研究现状 ........................ 4 1.3 系统设计内容 ...................................... 4 第2章 煤气泄漏监控系统的方案设计 ........................ 5 2.1 设计思想 .......................................... 5 2.2 煤气泄漏检测监控系统的整体设计 .................... 5 2.3 气体传感器的选型 .................................. 6 2.3.1 气体传感器的介绍 ............................. 6 2.3.2 气体传感器的选定 ............................. 7 第3章 煤气泄漏监控系统的硬件部分设计 .................... 8 3.1 单片机系统的设计 .................................. 8 3.1.1 AT89C51单片机概述 ............................ 8 3.1.2 引脚和最小系统 ............................... 8 3.1.3 时钟电路 .................................... 10 3.1.4 复位电路 .................................... 11 3.2 按键电路设计 ..................................... 12 3.3 信号采集电路设计 ................................. 13 3.3.1 气体信号采集电路的设计 ...................... 13

3.3.2 温度信号采集电路的设计 ...................... 16 3.4 A/D转换部分电路设计 .............................. 17 3.4.1 模数转换芯片ADC0809 ......................... 17 3.4.2 A/D转换电路 ................................. 19 3.5 显示部分电路的设计 ............................... 20 3.5.1 LCD1602显示屏 ............................... 20 3.5.2 显示部分电路 ................................ 21 3.6 报警排风的电路设计 ............................... 21 第4章 煤气泄漏监控系统的软件部分设计 ................... 23 4.1 主程序流程图 ..................................... 23 4.2 温度采集流程图 ................................... 24 第5章 系统仿真 ........................................ 25 5.1 编程软件简介 ..................................... 25 5.2 仿真软件简介 ..................................... 26 5.3 仿真测试 ......................................... 27 5.4 实物制作 ......................................... 30 第6章 总结 ............................................ 32 附录 程序清单 .......................................... 34 致 谢 ................................................. 44

新乡学院本科毕业论文(设计)

摘 要

随着生活水平的提高,罐装煤气和煤气管道已经进入千家万户。在人们享受它带来的方便的同时,也受到了由于设备使用不当或者设备老化而导致的煤气泄漏的巨大威胁。煤气泄漏可以使人煤气中毒,煤气在和空气混合到一定比例形成的混合物还会发生爆炸,严重威胁到了人们的生命财产安全。针对这种情况设计了一种煤气泄漏监控系统,该系统可以很好的在家用煤气发生泄漏的时候发出警报,使危急情况得到处理。

本系统以AT89C51单片机为核心,由MQ-2传感器、单片机AT89C51、模数转换芯片ADC0809、LCD1602液晶显示屏、DS18B20构成,它的用途是测量空气中煤气的浓度及温度,在煤气浓度或者温度大于或者等于预设值定将发出声、光报警。该系统有硬件与软件设计两部分。硬件部分的设计包括煤气浓度采集电路的设计、温度采集电路的设计、模/数转换电路的设计、单片机最小系统电路和按键电路的设计、显示电路的设计、报警电路的设计。软件部分由KEILC51编程PROTEUS仿真。该设计主要完成了系统原理图的绘制,软件仿真,并利用单片机开发板实现了具体的功能,经验证该系统工作稳定可靠。

关键词:MQ-2传感器;报警;监控;AT89C51单片机

1

新乡学院本科毕业论文(设计)

ABSTRACT

With the improvement of living standards, canned gas and gas has entered innumberable families. While people enjoy it bring convenience, has been due to improper use or equipment aging of huge threat to gas leakage. Leaking gas can make the person the gas poisoning, the gas and air mixture to a certain proportion to form the mixture will be an explosion, a serious threat to people's life and property safety. For this situation is to design a kind of gas leak monitoring system, the system can be very good at the time of household gas leak alarm, for emergency treatment.

This system USES AT89C51 microcontroller as the core, by MQ - 2 sensor, single chip microcomputer AT89C51, modulus conversion chip ADC0809, LCD1602 LCD screen and DS18B20, its purpose is to measure the concentration of the gas in the air and the temperature, the gas concentration or temperature is equal to or greater than the preset value will send out sound and light alarm. The system hardware and software design of two parts. The design of the hardware part includes the gas concentration of acquisition circuit design, the design of the temperature acquisition circuit, d/a conversion circuit design, single chip microcomputer minimum system circuit and the design of key circuit, display circuit design, the design of the alarm circuit. Part of the software is KEILC51 programming PROTEUS simulation. This design is mainly completed the system schematic drawing, software simulation, and the use of microcontroller development board to achieve a specific function, verified the system work stable and reliable.

Key words: MQ - 2 sensors; alarm; monitoring; AT89C51

2

新乡学院本科毕业论文(设计)

第1章 绪论

1.1 课题来源及研究意义

随着经济和科技水平的提高,人们生活水平也在逐步改善,罐装煤气和管道煤气已经进入到普通百姓的家庭。设备不正确的使用方法或者老化是产生煤气泄漏的关键起因,煤气泄漏对人民的生命危害极大且威胁着人民的财产安全。一氧化碳是煤气的主要成分,一氧化碳基本上不与水相溶,它的特点是没有刺激性、没有气味、没有颜色、鼻子闻不到,在与空气混杂比达12.5%~80%时,此时的混合物拥有爆破性。由人类呼吸进入血液循环,造成血液缺氧症,造成结构缺氧,遏制结构呼吸[1]。煤气中对人体伤害最大的物质还是它。所以,设计出有作用的,可以使用在家中的煤气监控系统是拥有巨大含义的,而且市场运用上也是前途光明的。

以下是健康的成年人或许产生一氧化碳中毒的现象: 50ppm 健康的成年人可以经受最多8个小时; 200ppm 2到3小时后人会感到疲劳,略微头疼; 400ppm 1到2小时后前额痛,3小时后将危及性命;

800ppm 45分钟普通人会痉挛、目眩、呕吐;2小时将会失去意识;2到3小时内可能会死亡;

1600ppm 20分钟会目眩、呕吐、头晕;会在一小时内死去; 3200ppm 5到10分钟内呕吐、头晕、目眩;25到30分钟死亡; 12800ppm 1到3分钟死亡。

由此可见,煤气泄漏时对人们造成的危害是很大的,发生煤气泄漏时会让人中毒,导致生命危险,而且还有随时发生爆炸的可能。煤气一旦泄漏,如果不及时采取措施就会造成的一系列的事故,因此,找到一个解决方法是我们需要做的。应用煤气泄漏监控系统就是抵挡煤气泄漏的主要措施。有关内行说明,煤气泄漏出来的巨量一氧化碳是发生煤气中毒的起因,若是应用煤气泄漏监控系统,在煤气泄漏时就会产生报警信号,人们可以及早关掉煤气阀门,将危险去除。相关组织经过长时间检验得出结果,煤气泄漏监控系统预防煤气泄漏事件发生的有效率大于95%。

3

新乡学院本科毕业论文(设计)

主要引脚介绍: VCC:电源。 GND:接地。

P0口:P0口的双向I/O引脚是8个,8TTL是引脚接收的门电流。高阻输入就是在给P0口第一次送“1”,这个时候的连上拉电阻。

P1口:P1口的双向I/O引脚也是8个,在它的里面带有上拉电阻。4TTL为它里面的缓冲器吸取/发出的门电流大小。

P2口:P2口的双向I/O引脚也是8个,在它的里面带有上拉电阻。4TTL为它里面的缓冲器吸取/发出的门电流大小。它的管脚被拉高,在为P2口送“1”的时候,用作输入口。

P3口:P3口的双向I/O引脚也是8个,在它的里面带有上拉电阻。4TTL为它里面的缓冲器吸取/发出的门电流大小。

RST:复位输入引脚。

ALE/PROG:在外面的存储器来读写的时候,这个引脚锁存地址是低位字节。在FLASH编写程序的时候,这个引脚给编写程序输进去脉冲。周期平稳的正脉冲由ALE输出,这个周期比振荡器周期大5倍。所以它能为外部输出脉冲,也可用来定时。不过当成外部数据存储器时,就会跨越一个ALE脉冲。

/PSEN:External program memory(外部程序存储器)选通信号。在由External program memory取指时,一个机器周期中/PSEN有效两次。不过访问External program memory时,就不显示这两次有用的信号。

/EA/VPP:无论有没有内部程序存储器,全作为外部程序存储器在/EA为低电平时。

XTAL1:给振荡器反相放大器或者内部时钟运行电路供应输入。 XTAL2:振荡器输出引脚。 上电复位是用RC充电来实现的。

图3中电容C1和C2的效果为飞快起振与巩固振荡频率,15到33pF位通常起电容值,33pF的电容被本系统所运用。6MHz的晶振频率被运用。时钟信号较平静的为内部振荡形式所得到,通常用在现实电路,12M的晶体振荡器被本系统所运用。

9

新乡学院本科毕业论文(设计)

图3 AT89C51的最小系统

3.1.3 时钟电路

AT89C51的时钟电路出现脉冲之后掌控指令准确的发生动作。CPU掌控信号掌控指令发生动作的时间顺序为AT89C51的时序。AT89C51内部电路要按时序进行运行须在时钟信号下才可以,可以保证各个部件同步运行。外部时钟与内部时钟为AT89C51时钟的两类形式。

内外部形式之时钟电路如图4(a)和4(b)。运用外面的振荡脉冲连接到XTAL1或者XTAL2是外部时钟的形式。HMOS与CHMOS单片机的外面的时钟信息接进去的形式是相异的。

RXD接地,TXD接入外部振荡器。外部振荡信号选择频率低于12MHz的信号因为它没有特别的条件,仅仅保证脉冲宽度。片内发生器出现两相时钟P1与P2,提供给AT89C51应用。这里选用内部方式的时钟电路。

10

新乡学院本科毕业论文(设计)

(a) 内部方式时钟电路

(b) 外部方式时钟电路

图4 时钟电路

3.1.4 复位电路

AT89C51初始化动作是复位。AT89C51上电后,首先就是复位,其效果就是让CPU与系统的其他元件还原为一个明确的初始形态,在此基础上就行下一步动作。因此,复位是一个很重要的操作。但是AT89C51自身是不可以来复位的,需要结合外部复位电路才可以完成。

手动复位和上电复位是外部复位的两类形式。

上电复位是利用充电实现的。如图5(a),复位电路的参数被给出。 按键手动复位有按键电平和按键脉冲复位两种形式。如图5(b)为按键电平复位,图5(c)为按键脉冲复位。在复位按键按下后,通过小电阻复位端和电源连通,马上放电,RST转变成高电平,在复位按键释放后,经过电源给电容的再次充电,RST引脚产生复位正脉冲,RC电路时间常数决定了延续的时间长短。这里选用按键电平复位。

11

新乡学院本科毕业论文(设计)

(a) 上电复位 (b) 按键电平复位 (c) 按键脉冲复位

图5 复位电路

3.2 按键电路设计

按键接低的方式被本设计运用,用来读取按键,AT89C51初始时,因为是高电平,在按键按下的时候,会给AT89C51一个低电平,信号被AT89C51进行处理。

口的电平高低被单片机I/O口获取作为判断是不是有按键按下是独立式键盘的实现方法。连接地的端口是常开按键,单片机的一个I/O口与另一端口连接,把这个I/O口置为高电平在程序开始时,这个高电平被I/O口保卫在通常没有键按下的时候。在有键按下的时候,I/O口转变成低电平由于I/O口与地的短路。按键松开后,I/O口依旧维持在高电平因为AT89C51内部的上拉电阻使然。如果我们想知道有没有按键动作的发生,只要在程序中查找这个I/O口的电平状态就行了。

本设计有三个按键,用于设置温度与浓度上限,上键K1是设置键,用于设置温度和煤气浓度上限,一端接单片机P2.6端口,一端接地,中间键K2是加值键,用于增高温度或者煤气浓度的报警值,一端接单片机P2.7端口,一端接地,下键K3是减值键,用于减低温度或者煤气浓度的报警值,一个端口连接单片机P3.7端口,另一端口接地。按键电路如图6。

12

新乡学院本科毕业论文(设计)

图6 按键电路

3.3 信号采集电路设计

3.3.1 气体信号采集电路的设计

(1)MQ-2传感器

SnO2是MQ-2气体传感器所应用的原料,其在干净的空气的导电率是十分低的。随着煤气浓度的增加,传感器的电导率也随之增加。电导率的变化通过分压电路的转换输出的电压信号和煤气浓度相浓度照应。MQ-2实物图如图7。

图7 MQ-2气敏传感器实物

在对液化气、丙烷、天然气、氢气以及其它可燃蒸汽检测中MQ-2气敏传感器的灵敏度较高。

图8中纵坐标是传感器的电阻比(Rs/Ro),横坐标是气体浓度。Rs代表传感

13

新乡学院本科毕业论文(设计)

就A/D转换器来说,转换时间是固定与已知的技术指标。因此策划延时的子程序,移用这个子程序在模/数转换开始之后,转换一定已经实现,只要延迟时间到了,接下来可以来递送数据。

(2)查询方式

转换完成的形态信息在模/数转换芯片上也有说明。想要知道转换是不是实现,下一步的数据递送能够运用查询的形式,测试EOC的形态。

(3)中断方式

中断请求信号是表示转换实现的状态信号(EOC),数据的传递用中断的形式。想要通过指令来数据传递,只有确定转换完成,无论运用上面的何种方法。第一步发送的口地址并以信号管用的时候,OE信号就有作用,将转换的数据传递到数据总线,使AT89C51采纳。 3.4.2 A/D转换电路

由MQ-2气体传感器收集的电信号连接电阻之后连接模数转换芯片ADC0809的IN0端口;ADC0809的ADD A、ADD B、ADD C和VREF(-)端接地;VREF(+)接5V电压;ALE端接START接单片机的P3.3端口;BOC端口接单片机P3.6端;CLOCK接单片机ALE端口;OUT1-OUT8分别连接单片机的P1.7-P1.0端口;用作用是收集转化为的数字信号;OE端连接P3.2端口。详细的电路衔接方法如图16所示。

图16 A/D转换部分

19

新乡学院本科毕业论文(设计)

3.5 显示部分电路的设计

3.5.1 LCD1602显示屏

在AT89C51的人和机器交流层面中,液晶显示器、发光管、LED数码管是输出方法的普通几类。LCD1602显示有几个突出特点:

(1)显示质量高; (2)数字式接口; (3)体积小、重量轻; (4)功耗低。

耗能低是液晶显示器的显著特点,内部的电极和驱动IC是主要耗能部件,耗所以用的电量就比其他的要少一些。

1602字符型LCD简介

字符型液晶显示模块是特地展示字母、数字、符号等点阵式LCD,现在普遍应用16*1,16*2,20*2与40*2等类型[11]。一般实物图如图17。

图17 LCD1602显示屏实物图

如图18为LCD1602的引脚图。

图18 1602字符型液晶引脚图

第1脚:VSS接地。

第2脚:VDD接5V正电源。

20

新乡学院本科毕业论文(设计)

第3脚:VL是对比度的调整端口,连到正电源时是最大,连到地时是最小。 第4脚:RS是Data/Cmd寄存器挑选端口,高、低电平依次选取Data寄存器与Cmd寄存器。

第5脚:R/W是读/写信息挑选端口,高电平时是读动作,低电平时是写动作。在RS和R/W同时送入低电平,这时是写的命令或着显示地址的动作,在R/W是“1”RS是“0”的时候能够读忙信号,在R/W是“0”RS是“1”的时候能够写入数据。

第6脚:E端为1602的使能端口,在E端送出一个正脉冲后,1602模块实行命令。

第7~14脚:D0~D7为8位输入/输出数据线。 第15和16脚:分别为背光源正极、负极[12]。 3.5.2 显示部分电路

显示部分选用1602LCD液晶显示。AT89C51的P0口操纵着LCD液晶显示,其中P0口连接上拉电阻的8个管脚之后依次与操纵LCD1602的D0-D7衔接[。电路连接方式如图19所示。

图19 LCD显示部分

3.6 报警排风的电路设计

数字信号通过单片机分析处理之后若是环境中煤气浓度大于或者等于报警装置设立的设定值时,单片机就会驱动蜂鸣器报警,黄色LED灯闪烁,风扇转动。

21

新乡学院本科毕业论文(设计)

图20中用电机代替风扇。黄色LED的正极连到+5V电源的正极,负极经过一个电阻之后连到AT89C51的P2.1端口。当温度达到设定值,单片机就会驱动控制蜂鸣器报警,红色LED灯闪烁。红色LED的正极连到+5V电源的正极,负极经过一个电阻之后连到AT89C51的P2.2端口。蜂鸣器正极连到+5V电源的正极。具体电路连通方法如图20所示。

图20 报警显示部分

22

新乡学院本科毕业论文(设计)

第4章 煤气泄漏监控系统的软件部分设计

4.1 主程序流程图

开始 初始化 设置温度与浓度值 读AD转换浓度 读取温度值 判断当前 浓度范围 判断当前 温度范围 N 判断是否超 过浓度范围 判断是否超 过温度范围 N Y 执行相应的 指示控制 Y 执行相应的 指示控制 结束

图21 系统流程图

23

新乡学院本科毕业论文(设计)

4.2 温度采集流程图

开始 18B20复位 否 18B20存在? 是 发出温度转换命令 显示测温写入18B20 点位置 延时 延时 读温度前复位 发出读温度命令 写入18B20 读入温度值数据 返回

图22 DS18B20流程图

24

新乡学院本科毕业论文(设计)

第5章 系统仿真

系统仿真采用Keil C51与Proteus联调,先用Keil C51生成程序,导入到Proteus进行仿真测试。

5.1 编程软件简介

Keil软件能够同时进行集编辑,编译,仿真,赞成汇编,PLM语言和C语言的程序的编写[13]。比较汇编语言,在功能上、可读性、可维护性上、结构性C语言有突出的特点,所以使用简单方便。体会更为深刻的是先编写汇编语言然后再编写C语言程序。Keil C51软件具备功用强悍的汇成开拓调试用具与充足的库函数。此外,Keil C51生成目标代码的效率是很高的,只需要看一下编译后产生的汇编代码,即可以感受到。而且产生的汇编代码极为严密在多数语句,轻松的就能明白。如图23和图24是生成HEX文件的页面。

图23 设置生成hex文件

25

新乡学院本科毕业论文(设计)

图24 程序编译并生成hex文件

5.2 仿真软件简介

Proteus ISIS是由英国Labcenter electronics公司制作的软件,它可以仿真,还能够设计电路。是现在仿真数字电路、模拟电路、单片机及外围器件的最佳选择

[14]

。得到了用户的喜爱,也受到了用户们的一致好评。当今Proteus是把电路仿

真软件、PCB设计软件和模拟仿真相结合唯一的开发平面。它的处理器模型支

26

新乡学院本科毕业论文(设计)

持PIC,ARM7,HC11,AVR,MSP430,DSP和Cortex系列,8051系列的CPU模型[15]。编译部分,Proteus ISIS支持IAR、Keil和MPLAB等许多编译器。

5.3 仿真测试

利用proteus描述的系统电路的原理图,如图25所示。

图25 系统的电路原理图

下面在单片机导入利用Keil C51生成的程序进行仿真测试,仿真主要测试一下几点:

(1)没有煤气泄漏时系统运转是不是正常; (2)煤气过高时系统运转是不是正常; (3)温度过高时系统工作是否正常; (4)按键是否正常。

27

新乡学院本科毕业论文(设计)

图26 正常情况下的仿真结果

正常情况下仿真结果如图26所示,室内温度与煤气浓度均没有超过设定的最低值,LCD1602显示屏上出现室内温度与煤气浓度,没有LED灯光闪亮,没有蜂鸣器发声,电机没有转动。

图27 浓度超标时的仿真结果

28

新乡学院本科毕业论文(设计)

当室内煤气浓度超过设定的最低值时的仿真结果如图27所示,LCD1602显示屏上显示室内温度与当前煤气浓度值,这个时候单片机会送出一个低电平,驱使黄色LED灯闪烁,蜂鸣器报警,电机转动。如图27红框内所示。

图28 温度超标时的仿真结果

当室内温度超过设定的最低值时的仿真结果如图28所示,LCD1602显示屏上出现室内当前温度与煤气浓度值,这个时候单片机同样送出一个低电平,驱使红色LED灯闪烁,蜂鸣器报警。如图28红框内所示。

29

新乡学院本科毕业论文(设计)

图29 按键的仿真结果

按键可以设置报警温度和煤气浓度的上限,如29图中显示屏内所示,煤气和煤气浓度的报警上限已改变。

运用Proteus来电路仿真,加载程序过后,系统在平常运行下显示环境中煤气浓度和温度。当环境中煤气浓度超标时,系统会发出报警。当温度过高时,系统照样可以报警。通过仿真考证,这个监测监控系统完成了设计的需要。

5.4 实物制作

煤气监控系统实物的制作利用万用板,将MQ-2气体传感器,ADC0809转换芯片,AT89C51单片机,DS18B20温度传感器,LCD1602显示器以及蜂鸣器,LED灯,按键,风扇等元件和各种电阻、电容根据系统电路原理图焊接到一起,具体制作好的实物如图30所示。

30

新乡学院本科毕业论文(设计)

图30 煤气监控系统实物图

31

新乡学院本科毕业论文(设计)

第6章 总结

本设计主要完成了系统原理图的绘制,程序的编程,仿真调试以及实物制作。应用程序以C语言编写,充分利用芯片的内部资源,提高了代码执行效率,减小了代码的容量。经过仿真与实物验证,本系统稳定的完成所需的功能,但是设计中还有一些缺点,比如在实物中排风装置只是连接了一个较小的风扇,如果用在实际家庭则需要连接220V的排风扇。由于该系统具有体积小、功耗低、安装调试简单、可靠性高等优点,因此,该煤气泄漏监控系统有着良好的市场前景。

32

新乡学院本科毕业论文(设计)

参考文献

[1]刘春梅.基于单片机的煤气泄漏检测与报警系统的设计[J].科技资讯,2012,02:113~114

[2]王化祥,张淑英.传感器原理及应用[M].天津:天津大学出版社,2012:220~230

[3]王泽荣,王进浩,张婷婷.室内空气质量监测与传感器的应用[J].商情,2010,17:17~17

[4]陈智文.室内煤气泄漏监控系统设计与实现[J].数控技术,2012,06:19~20

[5]李全利.单片机原理及接口技术[M].北京:高等教育出版社,2007.211~215

[6]王程研.基于AVR单片机的智能家庭测控报警系统设计[J].科技创新导报,2010,26:92~92

[7]白雪.静电纺SnO2/Al203纳米复合纤维及其气敏性研究[D].天津:天津工业大学,2010,52~55

[8]李华.智能厨房煤气监控系统[J].电脑开发与应用,2011,04:38~41 [9]江进国,王文巧.基于GSM网络的煤气泄漏自动关闭系统的设计[J].安全与环境工程,2013,20(01):121~131

[10]汪文,陈林.单片机原理及应用[M].湖北:华中科技大学出版社,2007.112~130

[11]贾艳娟,王永清.基于单片机的煤气浓度监控系统的设计[J].计算机时代,2011,05:98~99

[12]李育生,常晓明,闫晓伟.基于单片机的煤气渗漏监控系统的设计[J].山西大同大学学报,2008,03:33~35

[13]赵亮,侯国锐.单片机C语言编程与实例[M].北京:人民邮电出社,2003 [14]杜树春.基于Proteus和Keil C51的单片机设计与仿真[M].北京:电子工业出版社,2011.1~48

[15]翁嘉民.单片机应用开发技术、基于Proteus单片机仿真和C语言编程[M].北京:中国电力出版社,2010.56~68

33

新乡学院本科毕业论文(设计)

附录 程序清单

//程序头函数 #include //显示函数

#include //宏定义

#define uint unsigned int #define uchar unsigned char #define Data_ADC0809 P1

//管脚声明

sbit LED_wendu= P2^2; sbit LED_yanwu= P2^1; sbit baojing= P2^5; sbit DQ = P2^0; //ADC0809 sbit ST=P3^3; sbit EOC=P3^6; sbit OE=P3^2; //按键

sbit Key1=P2^6; sbit Key2=P2^7; sbit Key3=P3^7;

signed char w; //温度值全局变量 uint c; //温度值全局变量 bit bdata flag=0; //煤气含量变量

34

新乡学院本科毕业论文(设计)

uchar temp;

uchar yushe_wendu=50; uchar yushe_yanwu=45; //按钮模式| uchar Mode=0;

//函数声明

extern uchar ADC0809(); extern void Key();

void delay(uint z) { uint i,j; for(i=0;i

/*****延时子程序*****/ 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

35

新乡学院本科毕业论文(设计)

DQ = 1; //拉高总线 Delay_DS18B20(14);

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

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;

36

新乡学院本科毕业论文(设计)

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; 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); }

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

37

新乡学院本科毕业论文(设计)

==================

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

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

/*****读取温度*****/ void check_wendu(void) {

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

//ADC0809读取信息 uchar ADC0809() {

uchar temp_=0x00; //转化初始化 ST=0; //开始转换 ST=1; ST=0;

//外部中断等待AD转换结束 while(EOC==0) //读取转换的AD值 OE=1;

temp_=Data_ADC0809;

38

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

Top