搜索
您的当前位置:首页温度报警系统设计

温度报警系统设计

来源:乌哈旅游
目录

第1章 绪论

1.1 单片机的概述

1.2 温度控制的研究意义和目的 1.4 课题设计任务和要求

第2章单片机温度控制系统的概述

2.1 MCS-51单片机简介

2.1.1 MCS-51 单片机的特点及应用

2.2 外围电路

2.2.1 振荡电路 2.2.2 复位电路 2.2.3 键盘电路设计 2.2.4 显示电路设计

2.3 本章小结

第3章 系统设计思想及主要应用器件

3.1 系统设计的总体思想 3.2 系统硬件简介

3.2.1 硬件设计思想

3.3 系统主要器件

3.3.1 核心控制器件 AT89C52

3.3.2 DS1820内部结构及工作原理 3.3.3 LCD1602A 内部结构及工作原理

3.4 本章小结

第4章 系统软件设计

4.1 软件设计总体思路及主程序流程图

江苏城市职业学院高职毕业设计(论文)

4.2 测温模块

4.2.1 温度的采集 4.2.2 温度的测量

4.3 显示模块流程图4-4所示 4.4 键盘扫描流程图

结论 谢 辞 参考文献

附录1 原理图和仿真测试 附录2 软件程序

第1章 绪论

1.1 单片机的概述

随着现代工业的逐步发展,在工业生产中,温度、压力、流量和液位是四种最常见的过程变量。其中,温度是一个非常重要的过程变量。例如:在冶金工

2

江苏城市职业学院高职毕业设计(论文)

业、化工工业、电力工业、机械加工和食品加工等许多领域,都需要对各种加热炉、热处理炉、反应炉和锅炉的温度进行控制。然而,用常规的控制方法,潜力是有限的,难以满足较高的性能要求。采用单片机来对它们进行控制不仅具有控制方便、简单和灵活性大的优点,而且可以大幅度提高被测温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的控制问题。在人类的生活环境中,温度扮演着极其重要的角色。

单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。

1.2温度控制的研究意义和目的

温度是工业生产中常见的工艺参数之一,任何物理变化和化学反应过程都与温度密切相关,因此温度控制是生产自动化的重要任务。对于不同生产情况和工艺要求下的温度控制,所采用的加热方式,燃料,控制方案也有所不同。无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。

1.4 课题设计任务和要求

本文所要研究的课题是基于单片机温度控制及报警系统的设计,介绍了对温度的显示、控制及报警,实现了温度的实时显示及控制。温度控制部分,提出了用DS18B20、89C52单片机及LED的硬件电路完成对温度的实时检测及显示,利用DS18B20与单片机连接由软件与硬件电路配合来实现实时控制及超出设定的上下限温度的报警系统。 课题设计的目的:

1.掌握用51单片机控制LCD显示字符的方法。 2.掌握用单片机进行显示系统开发的方法。 3.掌握单片机软件、硬件调试技术。 4.了解单线器件DS18B20的驱动方法。

3

江苏城市职业学院高职毕业设计(论文)

5.了解LCD显示器的一般驱动原理。

第2章 单片机温度控制系统的概述

2.1 MCS-51单片机简介

MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展能力还是指令系统和CPU的处理功能都非常的强。尤其是MCS-51系列就是所特有的布尔处理机,在逻辑处理和控制方面具有突出优点。MCS-51系列单片机适合于实时控制,可构成工业控制器、智能仪表、智能接口以及通用的测控单元等。 2.1.1 MCS-51 单片机的特点及应用

MCS-51系列单片机主要产品及特点如2-1所示。

表2-1 MCS-51系列单片机特点

片内ROM形式 子 系 列 片内 ROM 容量 片内 RAM 容量 寻址 范围 计数器 I/O特性 中 断 源 无 ROM EPROM 并行口 串行口 8031 51 80C31 8051 8751 4KB 128B 2×64KB 2×16 4×8 1 5 80C51 87C51 4KB 128B 2×64KB 2×16 4×8 1 5 4

江苏城市职业学院高职毕业设计(论文)

8032 52 80C32 8052 8752 8KB 256B 2×64KB 3×16 4×8 1 6 80C52 87C52 8KB 256B 2×64KB 3×16 4×8 1 6

MCS-51单片机(此处以8051为例)芯片的基本组成如图2-2所示:

图2-2 8051芯片的内部组成框图

图中各组成部分:

a.中央处理器(CPU)。它是单片机的核心,包括运算器和控制器两个主要组成部分,用于实现运算和控制功能。运算器主要包括算术逻辑运算部件(ALU)、位处理器、累加器A、寄存器B、缓存器TMP1和TMP2、程序状态字寄存器PSW以及十进制调整电路等。其主要功能是实现数据的算术运算、逻辑运算、位操作及数据传送等。控制器主要由时钟和时序电路以及一些控制寄存器组成。其主要功能是协调整个单片机的工作,产生时序脉冲和提供控制信号等。

b.数据存储器。MCS-51系列单片机芯片数据存储器共有128个存储单元,用于存放可读写的数据。为了与外部扩展的数据存储器相区别,通常称芯片内部的

5

江苏城市职业学院高职毕业设计(论文)

数据存储器为内部数据存储器,简称内部RAM。

c.程序存储器。8051芯片内部有4KB掩膜ROM,8751芯片内部有4KB EPROM,用来存放程序和原始数据。通常称之为内部程序存储器或内部ROM。 d.定时器/计数器。MCS-51共有两个16位的定时器/计数器,以实现定时和计数功能。

e.并行I/O口。MCS-51共有四个8位的I/O口(即P0、P1、P2和P3),用以完成数据的并行输入/输出。

f.串行I/O口。MCS-51有一个全双工串行口,以实现单片机和其他计算机或设备之间的串行数据传送。

g.中断控制系统。MCS-51共有5个中断源,分高和低两个优先级别。

[3]

2.2 外围电路

单片机的外围电路如图2-3所示,主要包括振荡电路,复位电路。

图2-3 单片机外围电路

2.2.1 振荡电路

AT89C52的XTAL1和XTAL2引脚分别为单片机内反相放大器的输入和输

6

江苏城市职业学院高职毕业设计(论文)

出端,其频率范围上限为24MHz。这个内部反相器与外部元件组成皮尔斯振荡器, C1,C2是30pF的电容。C1,C2没有严格要求,但电容容量的大小会轻微影响振荡频率的高低、振荡工作的稳定性、起振的难易程度及温度稳定性,通常选择在10~30pF左右。

在任何情况下,振荡器始终驱动内部时钟发生器向主机提供时钟信号。因为时钟发生器的输入是个二分频触发器,所以对外部振荡信号的脉宽无特殊要求,但必须保证高低电平的最小宽度。在外接晶振11.0592MHZ时,一个机器周期为ls,一个振荡周期为1/12s。

2.2.2 复位电路

RST为复位信号输入端口引脚,它是斯密特触发器的一个输入端。复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即两个机器周期)以上。复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送斯密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对斯密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。

本设计中的复位电路。由C3,R1,R2和按键组成按键电平复位。复位端经电阻与Vcc电源接通。主控制芯片的复位电路是采用的按键复位,而从机采用的是上电复位。

2.2.3 键盘电路设计

根据设计任务书中要求实现的功能,我选择了3个键盘来设置温度的上、下限值,此键盘设计符合系统设置要求,所以我选择此键盘完成本设计。 ①矩阵键盘结构:

键盘实际上是一组按键开关的集合,平时按键开关总是处于断开状态,当按下键时它才闭合。键盘结构能够有效的提高单片机系统中I/O口的利用率。它的结构和产生的波形如图2-4所示。

7

江苏城市职业学院高职毕业设计(论文)

图2-4 键盘结构及产生的波形图

2.2.4显示电路设计 温度显示工作原理:

LCD1602可以采用两种方式与单片机连接,一种是采用8位数据总线D0—D7,和RS、R/W、EN三个控制端口;另一种是只用D4-D7作为四位数据分两次传送。本实验将使用并采用八位数据方式来控制1602显示。

进行LCD设计主要是LCD的控制/驱动和外界的接口设计。控制主要是通过接口与外界通信、管理内/外显示RAM,控制驱动器,分配显示数据;驱动主要是根据控制器要求,驱动LCD进行显示。控制器还常含有内部ASCII字符库,或可外扩的大容量汉字库。

2.3 本章小结

单片机具有全电脑功能,且体积小、可靠性高、价格便宜、简单易学和开发应用方便,深受广大科技人员的欢迎。单片机具有众多的I/O口线,丰富的操作指令,较强的逻辑能力,特别适用于各类工业测控系统。今后一段时期内,单片机发展的总趋势将是不断推出高档和高性能的机型;重点提高8位单片机的性能;采用新工艺,实现低功耗、宽电压、高速度、高可靠性;以及日趋单片化。 单片机以其高可靠性、高性能价格比广泛地用于各种实时控制系统中,将测量技术、自动控制技术和单片机技术相结合,充分发挥数据处理和实时控制的功能,使系统处于最佳状态,在工业控制系统、数据采集系统、智能化仪表等诸多

8

江苏城市职业学院高职毕业设计(论文)

领域得到广泛应用[。目前,可用于单片机开发的硬件越来越多,与之配套的开发系统和各种应用软件也日趋完善。

第3章 系统设计思想及主要应用器件

3.1 系统设计的总体思想

根据单片机温度控制要实现的功能,设计了基于ATMEL公司的AT89C52芯片的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路。整个系统硬件部分包括温度检测系统、信号放大系统、A/D转换、单片机、I/O设备、控制执行系统等.。温度控制部分用DS18B20、89C52单片机及LED的硬件电路完成对温度的实时检测及显示。

3.2 系统硬件简介

硬件大致构成:核心控制器件AT89C52 ,温度传感器DS18B20,显示器1602A 报警控制LED。

3.2.1 硬件设计思想

本设计是以AT89C52为单片机作为控制核心,提出了一种基于DS18B20

的单总线多点温度测控系统,多个温度传感节点通过单总线与单片机相联形成分布式系统。单片机通过实时监控温度的变化,通过LCD1602字符型液晶显示各

9

江苏城市职业学院高职毕业设计(论文)

节点温度的数值,当温度值超出所设定的值时,报警器开始报警,从而远程实现对整个温度系统的管理和控制。这种分布式温度测量系统具有成本低廉、传感精度高、系统稳定、易于管理等优点。

3.3 系统主要器件

3.3.1 核心控制器件AT89C52

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本[1]。

AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。 主要功能特性:

· 兼容MCS51指令系统

· 32个双向I/O口

· 3个16位可编程定时/计数器中断 · 2个串行中断 · 2个外部中断源 · 2个读写中断口线 · 低功耗空闲和掉电模式 AT89C52各引脚及管脚如图3-1所示

10

江苏城市职业学院高职毕业设计(论文)

图3-1 AT89C52各引脚

概述:AT89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

·P0 口:P0 口是一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

·P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外

11

江苏城市职业学院高职毕业设计(论文)

部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash 编程和程序校验期间,P1 接收低8 位地址。 P1.0和P1.1的第二功能如表3-2所示。

表3-2 P1.0和P1.1的第二功能

引脚号 P1.0 P1.1 功能特性 T2,时钟输出 T2EX(定时/计数器2) ·P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

·P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。

P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能 P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。 ·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

·ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。

如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

·PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,

12

江苏城市职业学院高职毕业设计(论文)

当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

·EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。

Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。

·XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 ·XTAL2:振荡器反相放大器的输出端[5]。

3.3.2 DS1820内部结构及工作原理

DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。

1.DS18B20产品的特点:

 只要求一个端口即可实现通信。

 在DS18B20中的每个器件上都有独一无二的序列号。  实际应用中不需要外部任何元器件即可实现测温。  测量温度范围在-55.C到+125.C之间。

 数字温度计的分辨率用户可以从9位到12位选择。  内部有温度上、下限告警设置。 TO-92封装的DS18B20的引

脚排列见图3-3所示。

13

江苏城市职业学院高职毕业设计(论文)

图3-3 DS18B20的引脚排列

DS18B20引脚功能描述见表3-4所示。

表3-4 DS18B20引脚功能 序号 1 2 名称 GND DQ 引脚功能描述 地信号 数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源 3 VDD 可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地

2. DS18B20的内部结构

DS18B20的内部框图下图3-5所示。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节

14

江苏城市职业学院高职毕业设计(论文)

含有循环冗余码(CRC )。

图3-5 DS18B20的内部框图

3.DS18B20的4个主要数据部件:

①光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

②DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。DS18B20温度数据表表如3-6所示。

表3-6 DS18B20温度数据表

TEMPERATURE +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃

DIGITAL OUTPUT 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1110 0110 1111 1111 1100 1001 0000 15

DIGITAL OUTPUT 07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FF5EH FE6FH FC90H 江苏城市职业学院高职毕业设计(论文)

③DS18B20温度传感器的存储器

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

④配置寄存器

表3-7 配置寄存器

0 R1 R0 1 1 1 1 1 低五位一直都是\"1\",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表3-8所示。(DS18B20出厂时被设置为12位)

表3-8 R1与R0确定传感器分辨率设置表

R1 0 0 1 1 4.DS18B20的工作过程

 初始化

R0 0 1 0 1 传感器精度/bit 9 10 11 12 转换时间/ms 93.75 187.5 375 750  ROM命令跟随着需要交换的数据;  功能命令跟随着需要交换的数据。

访问DS18B20必须严格遵守这一命令序列,如果丢失任何一步或序列混乱,DS18B20都不会响应主机(除了Search ROM 和Alarm Search这两个命令,在这两个命令后,主机都必须返回到第一步)。

a.初始化:

DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时,即向主机表明它已处在总线上并且准备工作。

b. ROM命令:

ROM命令通过每个器件64-bit的ROM码,使主机指定某一特定器件(如果有多个器件挂在总线上)与之进行通信。DS18B20的ROM如表3-4所示,每个ROM命令都是8 bit长。

16

江苏城市职业学院高职毕业设计(论文)

c. 功能命令:

主机通过功能命令对DS18B20进行读/写Scratchpad存储器,或者启动温度转换。DS18B20的功能命令如表3-9所示。

表3-9 DS18B20的功能命令 指令 读ROM 符合ROM 搜索ROM 跳过ROM 协议 33H 55H 0F0H 功能 读DS18B20中的编码(即64位地址) 发出此命令后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS18B20,使之作出响应,为下一步对该DS18B20的读写作准备 用于确定挂接在同一总线上DS18B20的个数和识别64位ROM地址,为操作各器件作好准备 0CCH 忽略64位ROM地址,直接向DS18B20温度转换命令,适用于单个DS18B20工作 报警搜索命令 0ECH 执行后,只有温度超过庙宇值上限或下限的片子才做出响应 温度转换 读暂存器 写暂存器 复制暂存器 重调E2PROM 读供电方式 44H BEH 4EH 48H 启动DS18B20进行温度转换,转换时间最长为500ms(典型为200ms),结果丰入内部9字节RAM中 读内部RAM中9字节的内容 发出向内部RAM的第3、4字节写上、下温度数据命令,紧该温度命令之后,传达两字节的数据 将RAM中第3、4字内容复制到E2PROM中 0B8H 将E2PROM中内容恢复到RAM中的第3、4字节 0B4H 读DS18B20的供电模式,寄生供电时DS18B20发送“0”,外部供电时DS18B20发送“1” 5.DS18B20的信号方式

DS18B20采用严格的单总线通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲、写0、写1、读0和读1。除了应答脉冲所有这些信号都由主机发出同步信号。总线上传输的所有数据和命令都是以字节的低位在前。

a.初始化序列:复位脉冲和应答脉冲

在初始化过程中,主机通过拉低单总线至少480µs,以产生复位脉冲(TX)。然后主机释放总线并进入接收(RX)模式。当总线被释放后,5kΩ的上拉电阻将单总线拉高。DS18B20检测到这个上升沿后,延时15µs~60µs,通过拉低总线

17

江苏城市职业学院高职毕业设计(论文)

60µs~240µs产生应答脉冲。初始化波形如图3-10所示。

图 3-10 初始化脉冲

b.读和写时序

在写时序期间,主机向DS18B20写入指令;而在读时序期间,主机读入来自DS18B20的指令。在每一个时序,总线只能传输一位数据。

 写时序

存在两种写时序:“写1”和“写0”。主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60µs,且在两次写时序之间至少需要1µs的恢复时间。两种写时序均以主机拉低总线开始。

产生写1时序:主机拉低总线后,必须在15µs内释放总线,然后由上拉电阻将总线拉至高电平。产生写0时序:主机拉低总线后,必须在整个时序期间保持低电平(至少60µs)。

在写时序开始后的15µs~60µs期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。

 DS18B20读/写时序图3-11所示。

18

江苏城市职业学院高职毕业设计(论文)

图3-11 DS18B20读/写时序

DS18B20只能在主机发出读时序时才能向主机传送数据。所以主机在发出读数据命令后,必须马上产生读时序,以便DS18B20能够传送数据。所有读时序至少60µs,且在两次独立的读时序之间至少需要1µs的恢复时间。

每次读时序由主机发起,拉低总线至少1µs。在主机发起读时序之后,DS18B20开始在总线上传送1或0。若DS18B20发送1,则保持总线为高电平;若发送0,则拉低总线。当传送0时,DS18B20在该时序结束时释放总线,再由上拉电阻将总线拉回空闲高电平状态。DS18B20发出的数据在读时序下降沿起始后的15µs内有效,因此主机必须在读时序开始后的15µs内释放总线,并且采样总线状态。

DS18B20 在使用时,一般都采用单片机来实现数据采集。只需将DS18B20 信号线与单片机1 位I/O线相连,且单片机的1 位I/O 线可挂接多个DS18B20,就可实现单点或多点温度检测[9]。

6.DS18B20的温度计算

DS18B20允许通过程序对传感器的分辨率,温度报警的上、下限等参数进行配置。它的内部存储器包括一个高速暂存存储器和一个非易失性可擦除E²PROM。速暂存存储器共有8个字节(byte),每个字节8位(bit)。

19

江苏城市职业学院高职毕业设计(论文)

根据温度的计算方法如下: S S S S S = 11111 b 温度值:

T = [ (MSB and 7) ×256 + LSB] ×0.0625 ℃ SSSSS = 00000 b 温度值:

T = - [ (256 - MSB) ×256 - LSB] ×0.0625 ℃

如果,存储器高位寄存器MS的S S S S S 均为1 ,则被测温度为正值,用上面第1个公式来计算温度。如果存储器高位寄存器MSB的S S S S S均为0,则被测温度为负值,用上面第2个公式来计算温度。在这里,有两点应当注意:一是公式中中括号内的数值为二进制,在计算口号内计算完成后应转化为十进制;二是这里的7与0.0625是假设传感器的分辨率设置0.0625时的计算值。如果分辨率的设置值不是0.0625,那么就应当作相应的变化。第3和第4个字节分别用来存放温度报警的上限(TH)和下限值(TL)。DS18B20在完成温度变换后,会将所测温度值与贮存在TH和TL内的上下限值相比较,如果测温结果高于TH或低于TL,DS18B20内部的告警标志就会被置位,表示温值超出了测量范围。并且该值在掉电后不会丢失,而是记忆其设定的上下限值。第5字节是配置寄存器,该寄存器用于对温度转换值的分辨率进行设置。其中,最高位用于设置传感器是工作模式还是测试模式,是生产厂家为便于检验使用。其出厂时的默认值为0,为工作模式(即用户使用时的模式)。并且在用户使用中,该位总是保持为0。R1与R0确定传感器的分辨率,DS18B20有4种分辨率可供选择。使用时可以根据实际需要来设置,出厂时的默认设置是12位。最后5位总保持为1[8]。

3.3.3 LCD1602A内部结构及工作原理工作原理

LCD内部结构:由CGRAM(自建字型产生器)、DDRAM(数据显示存储器)、CGROM(内含字型产生器)、指令寄存器、数据寄存器、地址计数器、指令译码器等组成

LCD显示原理:利用旋光效应对光进行偏转,再利用偏振片滤去不需要透过光的相应像素,从而实现图像显示。

LCD驱动原理:分成两大步,即写指令,写数据,其中写数据之前要找到显示的位置。

本实验所采用的液晶型号为LCD1602A 。它位数多,可显示32位,32个数码管体积相当庞大了,显示内容丰富,可显示所有数字和大、小写字母,程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而LCD1602A自动完成此

20

江苏城市职业学院高职毕业设计(论文)

功能。

1602A采用标准的16脚接口如图3-12所示。

图3-12 1602A的接口图

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

第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度(建议接地,弄不好有的模块会不显示)

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

第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。 第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15~16脚:空脚(有的用来接背光)

1602A液晶模块内部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有,阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同ASCII码兼容。其内部还有自定义字符(CGRAM),可用业存储自已定义的字符。

3.4 本章小结

本章简单介绍了系统的设计思想、硬件组成及主要器件的工作原理。

21

江苏城市职业学院高职毕业设计(论文)

第4章 系统软件设计

4.1 软件设计总体思路及主程序流程图

本系统采用C语言编写,主程序主要由四部分构成,系统通电后首先初始化系统,依次完成温度采集、温度处理、数据显示、键盘处理等四项功能。温度采集部分主要完成温度测试点的温度数据采集任务;温度处理部分主要是将采集到的温度数据与用户设定的各点上下限温度值进行比较处理,并判断是否超出设定的上下限值,如果超出则led灯亮报警;数据显示部分主要实现温度数据的显示,显示方式根据设计要求支持温度测试点的轮流循环显示和固定显示两种方式;键盘处理部分主要实现用户对系统参数的设置,结合显示部分,实现用户与系统之间的人机接口。系统软件主流程如图4-1所示。

温度采集 温度处理 数据显示 键盘处理

图4-1 系统软件总流程图

开始 系统初始化 22

江苏城市职业学院高职毕业设计(论文)

4.2 测温模块

测温流程图4-2所示。

读温度 初始化温度传感器 扫描键盘选定所需芯片 选定所需芯片 进行温度转换 读取温度 调试显示子程序 图4-2 DSl8B20操作流程图

4.2.1 温度的采集

DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM中,主机在进入操作程序前必须逐一接入DSl8B20,用读ROM(33H)命令将该DSl8B20的序列号读出并登录。当主机需要对众多在线DSl8B20的某一个进行操作时首先要发出匹配ROM命令(55H),紧接着主机提供64位序列(包括该DSl8B20的48位序列号)之后的操作就是针对该DSl8B20的,而所谓跳过ROM命令即为之后的操作,是对所有DSl8B20的框图中先有跳过ROM即是启动所有DSl8B20进行温度变换之后通过匹配ROM再逐一地读回每个DSl8B20的温度数据在DSl8B20组成的测温系统中主机在发出跳过ROM命令之后再发出统一的温度转换启动码44H就可以实现所有DSl8B20的统一转换再经过1s后就可以用很少的时间去逐一读取这种方式,使其T值往往小于传统方式[7]。

23

江苏城市职业学院高职毕业设计(论文)

4.2.2 温度的测量

单总线已经挂接了DS18B20。由于已经在上面获取了DS18B20的ROM代码并在AT89C52单片机内部的中建立了测量位置点和传感器64位ROM代码之间的关系表,因此对温度的巡回测量的步骤如下:

(1)发跳过ROM命令CCH。

(2)发启动所有在线的DS18B20进行温度转换命令44H。 (3)延迟1s。

(4)发匹配ROM命令55H。

(5)按照AT89C51中建立的关系表的顺序取出64位ROM代码发送到单总线。 (6)发读温度值命令BEH,读取温度值。

(7)进行CRC校验和数据处理后送LCD显示器显示。 (8)重复第4步到第7步,直到所有的DS18B20测量处理完。 (9)再重复第1步到第8步,进行下一轮的巡回测量。 温度测量电路流程如图4-3所示。

初始化 设置18B20 跳过ROM 符合ROM 等待1S 读存储器 初始化 缓冲指针增一 初始化 否 B-1=0? 图4-3 温度测量电路流程

24

江苏城市职业学院高职毕业设计(论文)

4.3 显示模块流程图4-4所示

开始 液晶初始化 送显示地址 写指令 忙判断 Y P0.7=1? N 送显示字符 写数据 忙判断 Y P0.7=1? N 结束 图4-4 LCD显示流程图

25

江苏城市职业学院高职毕业设计(论文)

4.4 键盘扫描流程图

按键处理程序通过扫描按键情况,读取键值。主要完成各点温度传感器上下限报警参数设置和显示模式设置。

(1)通过扫描键盘读取键值,流程图如图4-5所示。

键盘扫描 N 有键闭合 Y 延时去键抖动扫描键盘 N 找到闭合键 Y 计算键值 闭合键释放 建立无效标志 N Y 建立有效标志 返回 图4-5 键盘扫描程序流程图

(2)设置报警上、下限值

DS18B20设有温度上下限报警功能。DSl8B20的存储器由两部分组成:一个是9字节的静态RAM,其中第0和第1字节用于存储16位的温度转换值,第2(高温限TH)和第3字节(低温限TL)作为温度报警限值或通用存储器单元供用户使用;另一个是非易失性的E²PROM。当静态RAM作为温度报警限值使用时,可以在系统安装和工作前,用写RAM命令4EH将高温限TH和低温限TL写入第2和第3字节单元。

26

江苏城市职业学院高职毕业设计(论文)

由于静态RAM掉电后信息即丢失,因此需要再通过拷贝RAM命令48H将第2和第3字节单元的温度报警限值拷贝到E²PROM中。主程序只要在初始化部分使用重调E²PROM命令B8H,就可以将E²PROM中的温度报警限值重新拷贝到静态RAM中。 读取DDRAM或CGRAM中的内容。

结论

经过几个月的不断学习和努力,在刘老师的谆谆教导下,在其他老师及同学们的热心帮助与指导下,基于单片机的温度测控系统的毕业实践报告即将结束,基本完成了老师所规定的各项工作任务。

本报告介绍了用单片机AT89C52控制DS18B20以及着重分析各单元电路的设计,以及各电路与单片机的接口技术。最后还给出系统的软件的设计过程,使用了C语言进行程序设计。本文是采用模块化的方式进行叙述,对各模块的设计进行了比较详细地阐述。

通过本次温度监控系统的设计,我大有收获,在制作过程中,一定要注意的每个工骤的检查,确保制作成功。比如在合理选择模块,检查装配无误的情况下,如果还出现电路无输出的情况,那么可以肯定是原理图错误,这时就要回到原理图进行检查。从整体来说这是一个复杂的过程,要细心谨慎,沉着冷静,反复检查,直到找到原因为止。

经过三年学习的积累,在已经掌握相关专业方面知识及其它各方面知识的情况下,我认真严肃的完成了我的毕业实践报告。

从得到题目到查找资料,从对题目的研究设定到程序的调试,从电路图的仿真调试到失败后再一次全部重新开始……在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。我在这个过程中深刻的感受到了做毕业设计的意义所在,和我一样真正投入了身心去做的人也一定会有同样的感触。

本课题的重点、难点是:

(1) 初步接触温度传感器,要对传感器的原理、结构、应用等各方面; (2) 考虑从非电量信号到电量信号的电路实现原理以及与单片机的接口; (3) 熟悉编程的技术;

27

江苏城市职业学院高职毕业设计(论文)

(4) 考究调整电路的实现过程以及怎么样通过单片机来间接的控制。 通过做本课题,我了解并掌握了传感器的基本理论知识,更深入的掌握单片机的开发应用和PC编程控制。为以后从事单片机软硬件产品的设计开发、PC软件开发打下了良好的基础,树立独立从事产品研发的信心,并在这种能力上得到了比较充分的锻炼。

28

江苏城市职业学院高职毕业设计(论文)

谢 辞

在本次实践报告中,我得到了指导老师赵书安老师的指导。自始至终关心督促进程和进度。帮助解决毕业设计(论文)中遇到的许多问题。还不断向我传授分析问题和解决问题的办法,并指出了正确的努力方向,使我在毕业设计(论文过程中少走很多弯路。并致以诚挚的谢意!

另外,系里的领导和老师也给了我们很多的指导,我也向系和年级的领导们表示衷心的感谢!最后感谢学院对我这几年的培养。

参考文献

[1]何立民,单片机高级教程.北京航空航天大学出版社,2004.7 [2] 粟世明,刘湘涛.单片机原理与应用.电子工业出版社,2006.8

29

江苏城市职业学院高职毕业设计(论文)

[3] 何立民,单片机中级教程.北京航空航天大学出版社,1999.12

[4] 李华,MCU-51系列单片机实用接口技术.北京:北京航空航天大学出版社, 1993.6 [5] 陈光东,单片机微型计算机原理与接口技术(第二版).武汉:华中理工大学出版社,

1999.4

[6] 徐淑华,程退安,姚万生.单片机微型机原理及应用.哈尔滨:哈尔滨工业大学出版社,

1999. 6

[7] 锻九州,放大电路实用设计手册.沈阳:辽宁科学技术出版社,2002.5

[8] 马田华等,可编程单总线数字式温度传感器DS18B2的原理与应用.电子质量,2004.7 [9] 于永学等,1-Wire总线数字温度传感器DS18B20及应用.电子产品世界,2003.12 [10] 张胜全,D18B20数字温度计在微机温度采集系统中的序编制. 南京:南京大学出版,

社,1998. 3

[11] 周晗晓,袁慧梅.单片机系统的印制板设计与抗干扰技术.电子工艺技术,2004 .6

附录1 原理图和仿真测试

1.原理图

30

江苏城市职业学院高职毕业设计(论文)

2.延时第一次的画面

3.设好上下限灯2亮

31

江苏城市职业学院高职毕业设计(论文)

4.上限改变了,使温度超出上限报警灯1亮

5.下限改变了,使温度在设定的范围内,灯2亮

32

江苏城市职业学院高职毕业设计(论文)

6.超出上限报警灯1亮

33

江苏城市职业学院高职毕业设计(论文)

附录2 软件程序

//调用头文件和初始化模块 #include #include

#include sbit RS =P2^7; sbit RW =P2^6; sbit EN =P2^5; sbit DB0 =P0^0; sbit DB1 =P0^1; sbit DB2 =P0^2; sbit DB3 =P0^3; sbit DB4 =P0^4; sbit DB5 =P0^5; sbit DB6 =P0^6; sbit DB7 =P0^7; uchar alarm1 =0x28; uchar alarm2 =0x19; sbit LED1 =P1^0; sbit LED2 =P1^1; sbit MODE =P2^4; sbit UP =P2^3; sbit DOWN =P2^2; //LCD驱动模块 void Delay100ms(); void InitInterupt(); void DelayL(); void DelayS();

void WriteCommand(unsigned char c); void WriteData(unsigned char c); void ShowChar(unsigned char pos,unsigned char c);

void ShowString(unsigned char line,char *ptr); void InitLcd();

void delay(unsigned int); void convert(); void RdTemp(); void check();

static char line0[]=\" 00:00 \";

static char line1[]=\" . ^C \";

/* 延时t毫秒 */ void delay(uint t){ uint i; while(t--) {/* 对于11.0592M时钟,约延时1ms */ for (i=0;i<125;i++) {} } }

/* 产生复位脉冲初始化DS18B20 */ /*主程序,读取的温度值最终存放在tplsb和tpmsb变量中。

tplsb其中低4位为二进制的“小数”部分;tpmsb其中高 5位为符号位。 真正通过数码管输出时,需要进行到十进 制有符号实数(包括小数部分)的转换。*/ void main(void) { char code str1[]=\" zhong guo ! \"; char code str2[]=\" 2008-11-15 \"; unsigned char i; DelayL (); InitLcd (); DelayL ();

ShowString (0,str1); ShowString (1,str2); for (i=0;i<15;i++) Delay100ms(); InitInterupt(); do { line1[0]=0x20; delay(1); // 延时1ms convert(); // 启动温度转换,需要750ms delay(1000); // 延时1s RdTemp();

34

江苏城市职业学院高职毕业设计(论文)

line1[0]=0x20; i=tpmsb; if(i>99) { line1[0]=0x31; i-=100; } line1[1]=i/10+0x30; line1[2]=i%10+0x30; line1[4]=tplsb+0x30; line1[8]=alarm1/10+0x30; line1[9]=alarm1%10+0x30; line1[10]='^'; line1[11]='C';

line1[12]=alarm2/10+0x30; line1[13]=alarm2%10+0x30; line1[14]='^'; line1[15]='C';

ShowString (0,line1); Delay100ms(); check(); if(!MODE&&!UP&&DOWN) alarm1=alarm1-0x01; else

if(!MODE&&UP&&!DOWN) alarm1=alarm1+0x01; else

if(MODE&&!UP&&DOWN) alarm2=alarm2+0x01; else

if(MODE&&UP&&!DOWN) alarm2=alarm2-0x01; else { alarm1=alarm1; alarm2=alarm2; }

} // 读取温度} while(1); }

void TxReset(void) {uint i;

DQ = 0;

/* 拉低约900us */ i = 100; while (i>0) i--; DQ = 1; // 产生上升沿 i = 4; while (i>0) i--;}

/* 等待应答脉冲 */ void RxWait(void) {uint i; while(DQ); while(~DQ); // 检测到应答脉冲 i = 4; while (i>0) i--;}

/* 读取数据的一位,满足读时隙要求 */

bit RdBit(void) {uint i; bit b; DQ = 0; i++; DQ = 1; i++;i++; // 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效 b = DQ; i = 8; while(i>0) i--; return (b);}

/* 读取数据的一个字节 */ uchar RdByte(void) {uchar i,j,b; b = 0; for (i=1;i<=8;i++) {j = RdBit(); b = (j<<7)|(b>>1);} return(b);}

/* 写数据的一个字节,满足写1和写0的时隙要求 */

35

江苏城市职业学院高职毕业设计(论文)

void WrByte(uchar b) {

uint i; uchar j; bit btmp;

for(j=1;j<=8;j++) { btmp = b&0x01; b = b>>1; // 取下一位(由低位向高位) if (btmp) {/* 写1 */ DQ = 0; i++;i++; // 延时,使得15us以内拉高 DQ = 1; i = 8; while(i>0) i--; // 整个写1时隙不低于60us } else { DQ = 0; i = 8; while(i>0) i--; // 保持低在60us到120us之间 DQ = 1; i++; i++; } } }

//温度转化模块 void convert(void) {

TxReset(); // 产生复位脉冲,初始化DS18B20 RxWait(); // 等待DS18B20给出应答脉冲 delay(1); // 延时 WrByte(0xcc); // skip rom 命令

WrByte(0x44); // convert T

36

命令

}

//读取温度值模块 void RdTemp(void) {TxReset(); // 产生复位脉冲,初始化DS18B20 RxWait(); // 等待DS18B20给出应答脉冲 delay(1); // 延时 WrByte(0xcc); // skip rom 命令 WrByte(0xbe); // read scratchpad 命令 tplsb = RdByte(); // 温度值低位字节(其中低4位为二进制的\"小数\"部分)

tpmsb = RdByte(); // 高位值高位字节(其中高5位为符号位) tpmsb=tpmsb<<4;

tpmsb+=(tplsb&0xF0)>>4;tplsb=(tplsb&0x08)?5:0;}

//LCD驱动子程序模块 void DelayL () {unsigned char i,j; i=0xF0; j=0xFF; while (i--) while (j--); } void DelayS ()

{ unsigned char i; i=0x1F; while (i--);}

void WriteCommand (unsigned char c) { DelayS(); P0=c; EN=0; RS=0; RW=0; _nop_ (); EN=1; EN=0;}

江苏城市职业学院高职毕业设计(论文)

void WriteData (unsigned char c) { DelayS(); P0=c; EN=0; RS=1; RW=0; _nop_ (); EN=1; EN=0; RS=0; }

void ShowChar (unsigned char pos,unsigned char c) {

unsigned char p; if (pos>=0x10) p=pos+0xB0; else

p=pos+0x80;

WriteCommand (p); WriteData(c); }

void ShowString (unsigned char line,char *ptr) {

unsigned char l,i; l=line<<4;

for (i=0;i<16;i++)

ShowChar (l++,* (ptr+i)); }

void InitLcd() {

DelayL (); P0 = 0;

WriteCommand(0x38); DelayS ();

WriteCommand(0x38); DelayS ();

WriteCommand(0x38); DelayS ();

WriteCommand(0x06); WriteCommand(0x0C);

WriteCommand(0x01);

WriteCommand(0x80); }

void InitInterupt() {

TMOD=0x21; TL1=0xFD; TH1=0xFD; PX0=1; EA=1; ES=1; PCON=0; TR1=1;

SCON=0x50; TL0=0x00; TH0=0x4C; ET0=1; EX0=1; IT0=1; }

void Delay100ms() {

unsigned char i,j,k; for (i=0;i<8;i++) for (j=0;j<25;j++) for (k=0;k<250;k++); }

void check(void) { if(tpmsb>=alarm1) LED1=0; else if((tpmsb>=alarm2)&&(tpmsb<=alarm1)) { LED1=1; LED2=0;} else {LED1=1; LED2=1; }}

37

江苏城市职业学院高职毕业设计(论文)

38

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

Top