当前位置:首页 >> 信息与通信 >>

毕业设计(论文)-基于DS18B20 AT89S51的数字温控器设计

分类号 UDC

密级

毕业设计
基于 DS18B20&AT89S51 的 数字温控器设计

学生姓名 指导教师 系(中心) 专 业

辛雨 王喜 信息工程系
年级

学号 920040888

电子信息工程
年 月

通信 5041

论文答辩日期



长 江 大 学 文 理 学 院

I





在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被 控参数。其中,温度控制也越来越重要。在工业生产的很多领域中,人们都需要对各类 加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机对温度进行控 制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指 标,从而能够大大的提高产品的质量和数量。因此,单片机对温度的控制问题是一个工 业生产中经常会遇到的控制问题。 单片机是一种集 CPU、RAM、ROM、I/O 接口和中断系统等部分于一体的器件,只需 要外加电源和晶振就可实现对数字信息的处理和控制。因此,单片机广泛用于现代工业 控制中。 本论文侧重介绍“单片机温度控制系统”的软件设计及相关内容。论文的主要内容 包括:采样、滤波、键盘、LED 显示和报警系统,加热控制系统等。作为控制系统中的 一个典型实验设计,单片机温度控制系统综合运用了微机原理、自动控制原理、模拟电 子技术、数字控制技术、键盘显示技术等诸多方面的知识,是对所学知识的一次综合测 试。 关键词:单片机;数字控制;温度计;DS18B20;AT89S51

II

Design of digital temperature controller based on DS18B20 & AT89S51

Abstract
In industrial production, current, voltage, temperature, pressure, and flow rate, velocity, and the switch quantity are common main accused of parameters. Among them, the temperature control is becoming more and more important. In many areas of industrial production, people need to all kinds of heating furnace, heat treatment furnace, reactor and boiler temperature of inspection and control. Adopts single-chip microcomputer control of temperature has not only control convenient, simple and flexible, and advantages of could increase the technical indexes of accused of temperature, which can greatly improve the quality and quantity of products. Therefore, the monolithic integrated circuit to the control of the temperature is an issue that we often encounter industrial production control problem. SCM is a kind of set the CPU, RAM, ROM, I/O interface and interrupt system parts in one of the devices, only require additional power and can be realized vibration of digital information processing and control. Therefore, microcontroller is widely used in modern industrial control. This thesis focuses on introducing "single-chip microcomputer temperature control system" software design and related content. The main contents include: paper sampling, filtering, keyboard, LED display and alarm system, heating control system, etc. As a control system of a typical experiment design, Single-chip microcomputer temperature control system comprehensive using microcomputer principle, automatic control principle, analog electronic technology, digital control technology, keyboard display technology of many aspects, such as knowledge, is a learned knowledge of comprehensive test. Keywords: Microcontroller; Digital control; Thermometers; DS18B20; AT89S51

III





1 绪论......................................................... 1
1.1 课题的背景及意义 ...................................................... 1 1.2 相关技术的发展概况 .................................................... 1

2 总体设计方案 ................................................. 3
2.2 设计思路 .............................................................. 3 2.2 数字温控器设计方案论证 ................................................ 3 2.3 方案选择 .............................................................. 4 2.4 总体设计框图 .......................................................... 4

3 主要芯片概述 ................................................. 5
3.1 单片机 AT89S51 ........................................................ 5 3.2 数字温度传感器 DS18B20 ................................................ 6 3.3 二四译码器 ............................................................ 8

4 硬件电路设计 ................................................. 9
4.1 主模块 ................................................................ 9 4.2 温度采集模块 ......................................................... 10 4.3 温度传感与单片机的连接 ............................................... 10 4.4 显示模块 ............................................................. 11 4.5 报警电路 ............................................................. 11 4.6 复位电路及电源电路 ................................................... 12

5 软件程序分析 ................................................ 13
5.1 系统软件算法分析 ..................................................... 13 5.2 主程序 ............................................................... 13 5.3 读出温度子程序 ....................................................... 13 5.4 温度转换命令子程序 ................................................... 15 5.5 计算温度子程序 ....................................................... 15 5.6 显示数据刷新子程序 ................................................... 16

结束语........................................................ 17 参考文献...................................................... 18 致 谢......................................................... 19 附 录......................................................... 20

IV

基于 DS18B20&AT89S51 的数字温控器设计

1

绪论

1.1 课题的背景及意义
温度控制系统在国内各行各业的应用虽然己经十分广泛, 但从国内生产的温度控制 器来讲,总体发展水平仍然不高,同日本、美国、德国等先进国家相比,仍然有着较大 的差距。成熟的温控产品主要以“点位”控制及常规的 PID 控制器为主,它们只能适应 一般温度系统控制,而用于较高控制场合的智能化、自适应控制仪表,国内技术还不十 分成熟, 形成商品化并广泛应用的控制仪表较少.随着我国经济的发展及加入 WTO, 我国 政府及企业对此都非常重视,对相关企业资源进行了重组,相继建立了一些国家,企业 的研发中心,开展创新性研究,使我国仪表工业得到了迅速的发展。 目前,温度控制器产品从模拟、集成温度控制器发展到智能数码温度控制器。智能 温控器(数字温控器)是微电子技术、计算机技术和自动测试技术的结合,特点是能输 出温度数据及相关的温度控制量,适配各种控制器,并且它是在硬件的基础上通过软件 来实现控制功能的,其智能化程度也取决于软件的开发水平,现阶段正朝着高精度高质 量的方向发展,相信以我国的实力,温控技术在不久的将来一定会为于世界前列! 本文重点对该系统的硬件、软件进行分析设计。在硬件上对各部分电路一一进行了 理论分析与方案论证进行了设计, 介绍了 DS18B20 数字温度传感器在单片机下的硬件连 接及软件编程,并给出了软件流程图,最终设计完成了该系统的硬件电路。在软件设计 上根据硬件电路和该温度采集系统所需要实现的功能,经过反复的模拟运行、调试、修 改,最终完成了该系统的软件设计。通过硬件与软件的密切配合,最终设计完成达到了 题目所要求的功能。本设计采用的是 AT89S51 单片机,对多点温度进行采集。通过集成 温度传感器 DS18B20 将温度值转换为电量输出。 通过键盘实现增加或减少温度上下限模 式的切换,可以利用小键盘设定温度的最大值和最小值,当温度高于设定的上限值时, 单片机停止加热器加热,同时点亮红色发光二极管,当温度低于设定的下限时,单片机 启动加热器加热,同时点亮绿色发光二极管。在软件上进行主程序和子程序的编程,使 该温度控制系统实现智能化发展,精度更高。

1.2 相关技术的发展概况
单片机诞生于 20 世纪 70 年代,象 fairchid 公司研制的 F8 单片微型计算机。所 谓单片机是利用大规模集成电路技术把中央处理单元(Center Processing Unit,也即常

1

基于 DS18B20&AT89S51 的数字温控器设计

称的 CPU)和数据存储器(RAM)、程序存储器(ROM)及其他 I/O 通信口集成在一块芯片上, 构成一个最小的计算机系统,而现代的单片机则加上了中断单元,定时单元及 A/D 转换 等更复杂、更完善的电路,使得单片机的功能越来越强大,应用更广泛。 20 世纪 70 年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各 种新材料新工艺尚未成熟,单片机仍处在初级的发展阶段,元件集成规模还比较小,功 能比较简单,一般均把 CPU、RAM 有的还包括了一些简单的 I/O 口集成到芯片上,象 Farichild 公司就属于这一类型,它还需配上外围的其他处理电路方才构成完整的计算 系统。类似的单片机还有 Zilog 公司的 Z80 微处理器。 1976 年 INTEL 公司推出了 MCS-48 单片机, 这个时期的单片机才是真正的 8 位单片微 型计算机,并推向市场。它以体积小,功能全,价格低赢得了广泛的应用,为单片机的 发展奠定了基础,成为单片机发展史上重要的里程碑。 在 MCS-48 的带领下,其后,各大半导体公司相继研制和发展了自己的单片机,象 Zilog 公司的 Z8 系列。到了 80 年代初,单片机已发展到了高性能阶段,象 INTEL 公司 的 MCS-51 系列,Motorola 公司的 6801 和 6802 系列,Rokwell 公司的 6501 及 6502 系 列等等,此外,日本的著名电气公司 NEC 和 HITACHI 都相继开发了具有自己特色的专用单 片机。 80 年代, 世界各大公司均竞相研制出品种多功能强的单片机, 约有几十个系列, 300 多个品种,此时的单片机均属于真正的单片化,大多集成了 CPU、RAM、ROM、数目繁多 的 I/O 接口、多种中断系统,甚至还有一些带 A/D 转换器的单片机,功能越来越强大, RAM 和 ROM 的容量也越来越大,寻址空间甚至可达 64kB,可以说,单片机发展到了一个 全新阶段,应用领域更广泛,许多家用电器均走向利用单片机控制的智能化发展道路。 单片机发展趋势 现在可以说单片机是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出 了自己的单片机,从 8 位、16 位到 32 位,数不胜数,应有尽有,有与主流 C51 系列兼 容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。 纵观单片机的发展过程,可以预示单片机的发展趋势,大致有: 1.低功耗 CMOS 化 MCS-51 系列的 8031 推出时的功耗达 630mW,而现在的单片机普遍都在 100mW 左右, 随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了 CMOS(互补金 属氧化物半导体工艺)。象 80C51 就采用了 HMOS(即高密度金属氧化物半导体工艺)和 CHMOS(互补高密度金属氧化物半导体工艺)。CMOS 虽然功耗较低,但由于其物理特征决 定其工作速度不够高,而 CHMOS 则具备了高速和低功耗的特点,这些特征,更适合于在 要求低功耗象电池供电的应用场合。 所以这种工艺将是今后一段时期单片机发展的主要 途径。
2

基于 DS18B20&AT89S51 的数字温控器设计

2.微型单片化 现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程 序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单 一的芯片上, 增强型的单片机集成了如 A/D 转换器、 PMW(脉宽调制电路)、 WDT(看门狗)、 有些单片机将 LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路 就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有 自己特色的单片机芯片。 此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低 外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其中 SMD(表面封装) 越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。 3.主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以 80C51 为核心的单片机占主流,兼 容其结构和指令系统的有 PHILIPS 公司的产品, ATMEL 公司的产品和中国台湾的 Winbond 系列单片机。所以 C8051 为核心的单片机占据了半壁江山。而 Microchip 公司的 PIC 精 简指令集(RISC)也有着强劲的发展势头,中国台湾的 HOLTEK 公司近年的单片机产量与 日俱增,与其低价质优的优势,占据一定的市场分额。此外还有 MOTOROLA 公司的产品, 日本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单 片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。

2

总体设计方案

2.2 设计思路:
AT89S51 为核心、DS18B20 为温度传感元件。只要在所设定的上下温度界限内,就 会在显示设备中精确的显示出来,如果温度超过了所设定的温度上下限,就会自动发出 报警信号。另外此温度控制器操作简单,灵敏度高,测温范围宽,一般能满足日常测温 的需求,用四位 7 段数码管显示故具有直观的特点。

2.2 数字温控器设计方案论证
1.2.1 方案一 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是 非常容易想到的,所以可以采用一只温度传感器 DS18B20,此传感器,可以很容易直接
3

基于 DS18B20&AT89S51 的数字温控器设计

读取被测温度值,进行转换,就可以满足设计要求。 1.2.2 方案二 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被 测温度变化的电压或电流采集过来, 进行 A/D 转换后, 就可以用单片机进行数据的处理, 在显示电路上,就可以将被测温度显示出来,这种设计需要用到 A/D 转换电路,感温电 路比较麻烦

2.3 方案选择
从以上两种方案,很容易看出,采用方案一,电路比较简单,软件设计也比较简单, 故采用了方案一。

2.4 总体设计框图
温度计电路设计总体设计方框图如图 2-1 所示,控制器采用单片机 AT89S51,温度 传感器采用 DS18B20,用四位 7 段数码管实现温度显示。
显示电路 AT89S51 单片机

测温电路

报警电路

复位电路

图 2-1

总体设计方框图

4

基于 DS18B20&AT89S51 的数字温控器设计

3

主要芯片概述

3.1 单片机 AT89S51
1. AT89S51 是一个低功耗, 高性能 CMOS 8 位单片机, 片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器, 器件采用 ATMEL 公司的 高密度、非易失性存储技术制造,兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片 内集成了通用 8 位中央处理器和 ISP Flash 存储单元, 功能强大的微型计算机的 AT89S51 可为许多嵌入式控制应用系统提供高性价比的解决方案。 AT89S51 具有如下特点:40 个引脚,4k Bytes Flash 片内程序存储器,128 bytes 的随机存取数据存储器(RAM) ,32 个外部双向输入/输出(I/O)口,5 个中断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串行通信口,看门狗(WDT) 电路,片内时钟振荡器。 2.功能特性:兼容 MCS-51 指令系统 32 个双向 I/O 口,2 个 16 位可编程定时/计 数器,全双工 UART 串行中断口线,2 个外部中断源,中断唤醒省电模式,看门狗(WDT) 电路,灵活的 ISP 字节和分页编程,4k 可反复擦写(>1000 次)ISP Flash ROM,4.5-5.5V 工作电压,时钟频率 0-33MHz128x8bit 内部 RAM,低功耗空闲和省电模式,3 级加密位 软件设置空闲和省电功能。 3.系统中所用一些引脚的简介 P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口 的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被 定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校 验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为 低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为 第八位地址接收。 P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

5

基于 DS18B20&AT89S51 的数字温控器设计

3.2 数字温度传感器 DS18B20
1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电. 2、 独特的单线接口方式, DS18B20 在与微处理器连接时仅需要一条口线即可实现微 处理器与 DS18B20 的双向通讯 3、DS18B20 支持多点组网功能,多个 DS18B20 可以并联在唯一的三线上,实现组网 多点测温 4、 DS18B20 在使用中不需要任何外围元件, 全部传感元件及转换电路集成在形如一 只三极管的集成电路内 5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃ 6、 可编程的分辨率为 9~12 位, 对应的可分辨温度分别为 0.5℃、 0.25℃、 0.125℃ 和 0.0625℃,可实现高精度测温 7、 9 位分辨率时最多在 93.75ms 内把温度转换为数字, 位分辨率时最多在 750ms 在 12 内把温度值转换为数字,速度更快 8、测量结果直接输出数字温度信号,以"一线总线"串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力 9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 2、DS18B20 的外形和内部结构 DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度 报警触发器 TH 和 TL、配置寄存器。DS18B20 的外形及管脚排列如下图:

图 3-1 DS18B20 引脚图 DS18B20 的管脚排列如下: DQ为数字信号输入/输出端; GND为电源地;
6

基于 DS18B20&AT89S51 的数字温控器设计

VDD为外接供电电源输入端。

图 3-2 3、DS18B20 工作原理

DS18B20 内部结构图

DS18B20 的读写时序和测温原理与 DS1820 相同, 只是得到的温度值的位数因分辨率 不同而不同,且温度转换时的延时时间由 2s 减为 750ms。 DS18B20 测温原理如图 3 所 示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送 给计数器 1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器 2 的脉冲输入。计数器 1 和温度寄存器被预置在-55℃所对应的一个基数值。计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1 的预置值减到 0 时,温度 寄存器的值将加 1,计数器 1 的预置将重新被装入,计数器 1 重新开始对低温度系数晶 振产生的脉冲信号进行计数,如此循环直到计数器 2 计数到 0 时,停止温度寄存器值的 累加,此时温度寄存器中的数值即为所测温度。图 3-3 中的斜率累加器用于补偿和修正 测温过程中的非线性,其输出用于修正计数器 1 的预置值。

斜率累加器
预置

比较 LSB 置 位 清楚 温度寄存器 置

计数器 1 低温度系数晶振
=

预置

=0
加1

高温度系数晶振

计数器 2
停止

=0 图 3-3 DS18B20 测温原理框

7

基于 DS18B20&AT89S51 的数字温控器设计

3.3 二四译码器
译码的的含义就是把输入的二进制代码的特定含义翻译成被编码的信息。 译码器是 以一种常见的组合逻辑电路,它的输入代码组合会在某一个输出端产生特定的信号。译 码器按照用途可分为 3 类:变量译码器、码制编码器和显示译码器。本系统用到了变量 译码器,所以在这里我们只介绍变量译码器。 变量译码器有 n 个输入端,m 个输出端,它们的关系应满足:m<= 2 。变量译码器 的一般以二进制出现, 输出端只有与输入二进制码对应的那个输出才为 1.本系统所用的 译码器有使能端 E 。当 E =1 时,译码器的 4 个输出均为 1,译码器停止工作;当 E =0 时,译码器才处于正常的工作状态。带使能端的 2-4 译码器的真值表如表 3-1 所示。
表 3-1 译码器真值表
E
n

X1

X

0

Z0

Z1

Z2

Z3

1 0 0 0 0
Z0

d 0 0 1 1 =
E X1X

d 0 1 0 1

1 0 1 1 1

1 1 0 1 1

1 1 1 0 1

1 1 1 1 0

即根据真值表可以写出函数表达式如下:
0

Z1 ? E X 1X Z
2

0

? EX

1

X

0

Z 3 ? EX 1 X

0

根据该表达式,可以画出带使能的 2-4 译码器的逻辑电路图,如图 3-4 所示。
&
Z0

&

Z1

&
X 0
1
P 1 .4

Z2

1

P 1 .4

X 1

1

P 1 .4

1

P 1 .4

Z3 &

Z3

E

图 3-4 译码器的逻辑电路图
8

基于 DS18B20&AT89S51 的数字温控器设计

4

硬件电路设计

4.1 主模块
单片机控制模块是温度控制器的核心,它控制了温度的采集、处理与显示、温度上 下限值的设定与温度越限时加热器的启动与停止。 本文选用 AT89S51 作为控制器件。 AT89S51 单片机是美国 ATMEL 公司生产的低电压, 高性能 CMOS 8 位单片机,片内含 4K bytes 的可反复擦写的 Flash 只读程序存储器和 128bytes 的随机数据存储器(RAM) ,器件采用 ATMEL 公司的高密度,非易失性存储技术 生产,兼容标准 MCS-51 指令系统。功能强大的 AT89S51 单片机可为您提供许多高性价 比的应用场合,可灵活应用于各种控制领域。
C1 33pF X1 U1 18 CRYSTAL 19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 XTAL2 P0.3/AD3 P0.4/AD4 C3 9 22uF R8 1K 29 30 31 PESN ALE EA RST P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/AD8 P2.1/AD9 P2.2/AD10 P2.3/AD11 P2.4/AD12 P2.5/AD13 P2.6/AD14 P2.7/AD15 1 2 3 4 5 6 7 8 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD C2 33pF

主块 模
39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

JP 1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16

HEADER 8X2

图 4-1 主模块
9

基于 DS18B20&AT89S51 的数字温控器设计

4.2 温度采集模块
数字化温度传感器 DS1820 是世界上第一片支持 “一线总线”接口的温度传感器。 一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引 入全新概念。DS18B20、数字化温度传感器 DS18B20 也,测量温度范围为 -55°C~+125° C,在-10~+85°C 范围内,精度为±0.5°C。 并且还可选更小的封装方式,更宽的电压适用 范围。图 4-2 为温度采集模块

U2 VCC DS18B20 DQ GND 3 2 1

R? RES2

图 4-2 温度采集模块

4.3 温度传感与单片机的连接
温度传感器的单总线(1-Wire)与单片机的 P2.0 连接,P2.0 是单片机的高位地址 线 A8。P2 端口是一个带内部上拉电阻的 8 位双向 I/O,其输出缓冲级可驱动(吸收或 输出电流)4 个 TTL 逻辑门电路。对该端口写“1”,可通过内部上拉电阻将其端口拉 至高电平,此时可作为输入口使用,这是因为内部存在上拉电阻,某一引脚被外部信号 拉低时会输出一个电流。在访问外部程序存储器或 16 位地址的外部数据存储器时,如 执行 MOVX DPTR 指令,则表示 P2 端口送出高 8 位的地址数据。在访问 8 位地址的外部 数据存储器时,可执行 MOVX RI 指令,P2 端口内容即为特殊功能寄存器(SFR)区中 R2 寄存器内容,整个访问期间不改变。在 Flash 编程和程序校验时,P2 端口也接收高位 地址和其他控制信号。

图 4-3 温度传感与单片机的接口电路

10

基于 DS18B20&AT89S51 的数字温控器设计

4.4 显示模块
采用技术成熟的74HC164实现串并转换。LED显示分为静态显示和动态显示。这里采 用静态显示,系统通过单片机的串行口来实现静态显示。串行口为方式零状态,即工作 在移位寄存器方式,波特率为振荡频率的1/12。当器件执行任何一条将SBUF作为目的寄 存器的命令时,数据便开始从RXD端发送。在写信号有效时,相隔一个机器周期后发送 控制端SEND有效,即允许RXD发送数据,同时允许从TXD端输出移位脉冲。 单片机与报警电路系统中的报警电路是由发光二极管和限流电阻组成, 并与单片机 的P1.2 端口连接。P1 端口的作用和接法与P2 端口相同,不同的是在Flash 编程和程 序校验期间,P1 接收低8 位地址数据。

图4-4 显示电路

4.5 报警电路
路由一个三极管和蜂鸣器组成。 当温度值在设定的范围时, 单片机 AT89C51 的 P3.7 口高电平引脚始终保持高电平, 当所采集的温度越限时, P3.7 口便由高电平改为低电平, 使三极管导通从而发出蜂鸣声进行报警来提醒操作人员实施相应的措施, 如图 4-5 所示

11

基于 DS18B20&AT89S51 的数字温控器设计

+5

SPEAKER R7 P3.7 3.3K R8 5.6K AT89S51 2SC1815

图 4-5 报警模块

4.6 复位电路及电源电路
单片机的 P1.6 端口是 MAX813 看门狗电路中喂狗信号的输入端, 即单片机每执行一 次程序就设置一次喂狗信号,清零看门狗器件。若程序出现异常,单片机引脚 RST 将出 现两个机器周期以上的高电平,使其复位。该复位信号高电平有效,其有效时间应持续 24 个振荡脉冲周期即两个机器周期以上。若使用频率为 12 MHz 的晶体振荡器,则复位 信号持续时间应超过 2μ s 才完成复位操作。 由于该系统需要稳定的5V电源,因此设计时必须采用能满足电压、电流和稳定性要 求的电源。该电源采用三端集成稳压器LM7805。它仅有输入端、输出端及公共端3个引 脚,其内部设有过流保护、过热保护及调整管安全保护电路,由于所需外接元件少,使 用方便、可靠,因此可作为稳压电源。

图4-6 电源电路图

12

基于 DS18B20&AT89S51 的数字温控器设计

5

软件程序分析

5.1 系统软件算法分析
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程 序,显示数据刷新子程序等。

5.2 主程序
主程序的主要功能是负责温度的实时显示、 读出并处理 DS18B20 的测量的当前温度 值,温度测量每 1s 进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见 图 5-1 所示。
初始化

调用显示子程序

N
1S 到?

Y Y
初次上电

N
读出温度值温度 计算处理显示数 据刷新

发温度转换开始命令

图 5-1 主程序流程图

5.3 读出温度子程序
读出温度子程序的主要功能是读出 RAM 中的 9 字节,在读出时需进行 CRC 校验,校
13

基于 DS18B20&AT89S51 的数字温控器设计

验有错时不进行温度数据的改写。其程序流程图如图 5-2 示
启动 DS18B20

初始化

发读温度命令

读取操作,CRC 校验

Y N
9 字节完?

Y
CRC 校验正? 确? 移入温度暂存器

N

结束

图 5-2 读温度流程图 读取DS18B20 数据的部分程序代码为: Read One Char(void) { unsigned char i=0; unsigned char date=0; for (i=8;i>0;i--) { DQ = 0; Date>>=1; DQ = 1; if(DQ) date|=0x80; delay(4); } return(date);
}

//读一个字节的主程序 //循环次数 //从DS18B20中读取的温度数值 // 8次一个字节 //脉冲信号 //右移一位 //脉冲信号

// 延时 // 返回读取温度数据其程序流程图

14

基于 DS18B20&AT89S51 的数字温控器设计

5.4 温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用 12 位分辨率时转换时间 约为 750ms, 在本程序设计中采用 1s 显示程序延时法等待转换的完成。 温度转换命令子 程序流程图如上图,图 5-3 所示
发 DS18B20 复位命令

发跳过 ROM 命令

发温度转换开始命令

结束

图 5-3

温度转换流程

5.5 计算温度子程序
计算温度子程序将 RAM 中读取值进行 BCD 码的转换运算, 并进行温度值正负的判定, 其程序流程图如图 5-4 所示。
开始

N 温度零下? Y
温度值取补码置“—”标志 置“+”标志

计算小数位温度 BCD 值

计算整数位温度 BCD 值

结束

图 5-4 计算温度流程图

15

基于 DS18B20&AT89S51 的数字温控器设计

5.6 显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作, 当最高显示 位为 0 时将符号显示位移入下一位。程序流程图如图 5-5。
温度数据移入显示寄存 器

N
十位数 0?

Y
百位数 0?

N Y

十位数显示符号 百位数不显示

百位数显示数 据(不显示符 号)

结束

图 5-5

显示数据刷新流程图

16

基于 DS18B20&AT89S51 的数字温控器设计

结束语
短短两周的毕业设计已经结束了,通过这次的毕业设计锻炼了我们的实践能力,也 是对我们以后的实际工作能力的具体训练和考察过程。现在是一个高科技的时代,单片 机已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在的。因此对 于我们这一专业的同学来说,学好单片机,并正确应用单片机是非常重要的。 此次单片机课程设计,从选题到定稿,从理论到实践,在整整两个星期里,学到了 很多的东西。同时不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学 到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知 识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能 真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次的课程设计还 让我学会了如何去培养我们的创新精神, 从而不断地战胜自己, 超越自己。 更重要的是, 我在这一设计过程中,学会了坚持不懈,不轻言放弃。 设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做, 难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的 知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相 讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了 不少知识,也经历了不少艰辛,但收获同样巨大。 在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作 能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的 能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的 也不太好,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富。 单片机课程设计虽然结束了,但通过设计所学到的东西将长久存在。相信这次设计 带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下 一个更坚实的基础。

17

基于 DS18B20&AT89S51 的数字温控器设计

参考文献
[1]王志刚.现代电子线路[M].第四版.北京:清华大学出版社,2008:150-176 [2]高西全,丁玉玉.数字信号处理[M].第三版.西安电子科技大学出版社,2008:146-180 [3]王伟.Veri Log HDL 程序设计与应用[M].北京:人民邮电出版社,2005:80-98 [4]陈松,金鸿.电子设计自动化技术[M].南京:东南大学出版社,2003:58-64 [5]章锡鹤,盛鸿宇.印制电路板电路设计实训教材[M].北京:科学出版社,2005:120-154 [6]徐欣,于红旗,易凡, 卢启中.基于 FPGA 的嵌入式系统设计[M].北京: 机械工业出版社, 2005: 82-98 [7]陈曾平,刘平,马云.电子设计基础与专用系统构成[M].北京:科学出版社,2006,55-70 [8]余发山.单片机原理及应用技术[M].徐州:中国矿业大学出版社,2003:56-70 [9]陈龙三.8051 单片机 C 语言控制与应用[M].北京:清华大学出版社,2001:88-100 [10]李银,汪泳.电子线路设计指导[M].北京:北京航空航天大学出版社,2005:105-125 [11]李广弟.单片机基础[M].北京:北京航空航天大学出版社.2006:178-235 [12]吴颖.《数字式温度传感器与分布式温度测量系统》[J].传感技术学报,2001,(1):26-31 [13]张萌,和湘,姜斌.单片机应用系统开发[M].北京:清华大学出版社,2007:98-106 [14]王俊峰,斐炳南,李传光.电子产品的设计与制作工艺[M].北京:北京理工大学出版社,1995: 128-150 [15] MAXIM NEW Releases Data Book.volum 1998:50-64 [16] Onas C.Bartee.Computere Architecture abd Logic Design[J].McGraw-HILL Inc. 1991:10-18 [17]G Jiang M Zhang, X Xie, S Li.Application on tenperaature control of DS18B20[J].Control Engineering of China,2003:8-20

18

基于 DS18B20&AT89S51 的数字温控器设计


候,有一种如释重负的感觉,感慨良多。



大学生活一晃而过,回首走过的岁月,心中倍感充实,当我写完这篇毕业论文的时 首先要感谢我的导师王老师。本文是在导师的精心指导下完成的,从论文的选题、 设计方案直至完成论文的整个过程中,都得到了王老师耐心细致的指导。王老师严谨的 治学态度、渊博的学识、独特的学术思维、一丝不苟的工作作风、热情待人的品质,使 我满怀敬意。 还有教过我的所有老师们, 你们严谨细致、 一丝不苟的作风一直是我工作、 学习中的榜样,你们循循善诱的教导和不拘一格的思路给予我无尽的启迪。 感谢我的团队,有大家齐心协力,共同努力,互相帮助我才能顺利的完成本系统的 设计和本论文的编写。 感谢四年中陪伴在我身边的同学、朋友,感谢他们为我提出的有益的建议和意见, 有了他们的支持、鼓励和帮助,我才能充实的度过了四年的学习生活。

19

基于 DS18B20&AT89S51 的数字温控器设计


语言程序如下: ORG 0000H 单片机内存分配申明 TEMPER_L EQU 29H; TEMPER_H EQU 28H; FLAG1 EQU 38H; a_bit equ 20h; b_bit equ 21h ; MAIN: LCALL GET_TEMPER; MOV A, 29H MOV C,40H; RRC A MOV C, 41H RRC A MOV C, 42H RRC A MOV C, 43H RRC A MOV 29H, A LCALL DISPLAY; AJMP MAIN ; INIT_18B20: ; SETB P3.2 NOP CLR P3.2 MOV R1,#3; TSR1: MOV R0,#107 DJNZ R0, $ DJNZ R1, TSR1 SETB P3.2; NOP NOP NOP MOV R0, #25H TSR2: JNB P3.2,TSR3; DJNZ R0, TSR2 LJMP TSR4 ; TSR3: SETB FLAG1 ;
20



用两位共阳数码管显示温度值,读取DS18B20及用两位共阳数码管显示温度的汇编

用于保存读出温度的低8位 用于保存读出温度的高8位 是否检测到DS18B20标志位 数码管个位数存放内存位置 数码管十位数存放内存位置 调用读温度子程序 将28H中的最低位移入C

调用数码管显示子程序 循环显示 这是DS18B20复位初始化子程序

主机发出延时537微秒的复位脉冲

然后拉高数据线

等待DS18B20回应 延时 置标志位,表示DS18B20存在

基于 DS18B20&AT89S51 的数字温控器设计

LJMP TSR5 TSR4: CLR FLAG1 ; LJMP TSR7 TSR5: MOV R0, #117 TSR6: DJNZ R0,TSR6 ; TSR7: SETB P3.2 RET GET_TEMPER: ; SETB P3.2 LCALL INIT_18B20; JB FLAG1 ,TSS2 RET ; TSS2: ; MOV A,#0CCH ; LCALLWRITE_18B20; MOV A,#44H ; LCALLWRITE_18B20; LCALL DISPLAY LCALL INIT_18B20; MOV A,#0CCH ; LCALLWRITE_18B20 MOV A,#0BEH ; LCALLWRITE_18B20 LCALL READ_18B20; 35H/36H RET WRITE_18B20: ; MOV R2,#8; CLR C WR1: CLR P3.2 MOV R3, #6 DJNZ R3, $ RRC A MOV P3.2, C MOV R3, #23 DJNZ R3, $ SETB P3.2 NOP
21

清标志位,表示DS18B20不存在

时序要求延时一段时间

读出转换后的温度值 先复位DS18B20 判断DS18B20是否存在? 若DS18B20不存在则返回 DS18B20已经被检测到! 跳过ROM匹配 发出温度转换命令 等待AD转换结束,12位的话750 微秒 准备读温度前先复位 跳过ROM匹配 发出读温度命令 将读出的温度数据保存到

写DS18B20的子程序 一共8位数据

基于 DS18B20&AT89S51 的数字温控器设计

DJNZ R2, WR1 SETB P3.2 RET READ_18B20: ; MOV R4,#2 ; MOV R1,#29H ; RE00: MOV R2,#8; RE01: CLR C SETB P3.2 NOP NOP CLR P3.2 NOP NOP NOP SETB P3.2 MOV R3, #9 RE10: DJNZ R3, RE10 MOV C, P3.2 MOV R3, #23 RE20: DJNZ R3, RE20 RRC A DJNZ R2, RE01 MOV@R1,A DEC R1 DJNZ R4, RE00 RET 显示子程序 display: MOV a,29H; MOV b,#10 ; Div a b MOV b _bit, a; MOV a_ bit, b ; MOVDPTR, #num tab ; MOV r0, #4 dpl1: MOV r1,#250 ; DPLOP:MOV A v, a _bit ; MOVC A,@A+DPTR ; MOV p1,a ; CLR p3.4 ;
22

从DS18B20中读出两字节温度数据 将温度从DS18B20中读出 低位存入29H 数据一共有8位

将29H中的数转换成10进制 10进制/10=10进制

个位在b 指定查表启始地址 显示1000次 取个位数 查个位数的7段代码 送出个位的7段代码 开个位显示

基于 DS18B20&AT89S51 的数字温控器设计

ACALL d1ms ; 显示1ms SETB p3.4 MOV a, V b _bit ; 取出十位数 MOVC A,@A+DPTR ; 查出十位数的7段代码 MOV p1,a ; 送出十位的7段代码 CLR p3.3 ; 开十位显示 ACALL d1ms ; 显示1ms SETB p3.3 DJNZ r1,dplop ; 100次没完循环 DJNZ r0,dpl1 ; 4个100次没完循环 Ret 1MS 延时(按12MHZ 算) D1MS: MOV R7, #80 DJNZ R7, $ RET 7段数码管0~9数字的共阳显示代码 Num tab: DB 0C0H, 0F9H, 0A4H, 0B0H,099H,092H,082H, 0F8H,080H,090H ;0,1,2,3,4,5,6,7,8,9 END

23