资源描述
摘要
单片机在日用电子产品中的应用越来越广泛,温度则是人们日常生活中常常需要测量和控制的一个量。科学技术的发展和检测技术的发展是密切相关的。现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。本文作者采用AT89C2051单片机和温度传感器DS18B20从硬件和软件两方面介绍了一款简易数字温度计的设计过程, 并对硬件原理图和程序流程图作了简洁的描述。数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所。
关键词:单片机AT89C2051;温度传感器DS18B20;74LS48七段数码译码器
Abstract
Single-chip electronic products in the daily application of more and more widely, the temperature is often the need for daily life in a measure and control the volume. Development of science and technology development and testing are closely related. Modern methods to achieve the accuracy, sensitivity and measurement range, to a large extent determine the level of development of science and technology. The author of this article using AT89C2051 MCU and temperature sensor DS18B20 from both hardware and software, introduced a simple digital thermometer of the design process, and schematic diagram of hardware and procedures were concise description of flow chart. Digital thermometer with a traditional thermometer, compared with a reading of convenience, a wide range of temperature measurement, temperature measurement accuracy, the output of the temperature digital display, mainly used for more accurate temperature measurement sites.
Key words: single-chip AT89C2051; temperature sensor DS18B20; Digital Seven Segment Decoder 74LS48
40
第一章 绪 论
随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,广泛应用于冰箱、空调器、粮仓等日常生活中温度的测量和控制。传统的温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,本课程利用集成温度传感器DS18B20设计并制作了一款基于AT89C51的3位数码管显示的数字温度计,其电路简单,软硬件结构模块化,易于实现。
目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。目前的温度计中传感器是它的重要组成部分,它的精度灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。传感器应用极其广泛,目前已经研制出多种新型传感器。
通过“数字温度计的设计”的设计过程,结合所学的课程,掌握目前自动化仪表的一般设计要求、工程设计方法、开发及设计工具的使用方法,通过这一设计实践过程,锻炼学生的动手能力和分析、解决问题的能力;积累经验,培养按部就班、一丝不苟的工作和对所学知识的综合应用能力。
一、 课题背景
单片机,顾名思义就是将计算机的基本部件集成到一块芯片上。包括CPU、ROM、RAM、并行口、串行看口、定时器/计数器、中断系统、系统时钟及系统总线。
虽然单片机具有通用计算机的基本部件,但又不同于通用计算机。单片机主要用于控制场合,所追求的目标是:尽可能体积小,又能实时、快速地对外部事件做出响应,迅速采集大量数据,做出逻辑判断与推理后实现对被控制对象的参数调整与控制。
本文讨论的单片机数字温度计的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的测温系统,具有体积小,可靠性高等特点。不仅能满足所需要求而且还有很多功能可供开发,有着广泛的应用领域。
20世纪80年代中期以后,Intel公司以专利转让的形式把8051内核技术转让给许多半导体芯片生产厂家,如ATMEL、PHILIPS、ANALOG、DEVICES、DALLAS等。这些厂家生产的芯片是MCS-51系列的兼容产品,准确地说是与MCS-51指令系统兼容的单片机。这些兼容机与8051的系统结构(主要是指令系统)相同,采用CMOS工艺,因而,常用80C51系列来称呼所有具有8051指令系统的单片机,它们对8051单片机一般都作了一些扩充,更有特点。其功能和市场竞争力更强,不该把它们直接称呼为MCS-51系列单片机,因为MCS只是Intel公司专用的单片机系列型号。MCS-51系列及80C51单片机有多种品种。它们的引脚及指令系统相互兼容,主要在内部结构上有些区别。目前使用的MCS-51系列单片机及其兼容产品通常分成以下几类:基本型、增强型、低功耗型、专用型、超8位型、片内闪烁存储器型。
二、 单片机的发展概况
单片机的发展历史可以分为以下4个阶段:
单片机初级阶段(1974~1976年),因工艺限制,单片机采用双芯片形式且功能比较简单。例如,美国仙童(Fairchild)公司生产的世界上第一台F8单片机,由于仅包括8位CPU、64B的RAM喝2个并行口,需另加一块3851(由1KB ROM、定时器/计数器和2个并行I/O口构成)才能构成一台完整的计算机。
低性能单片机阶段(1976~1978年),以Intel公司制造的MCS-48单片机为代表,这种单片机片内集成有8位CPU、并行I/O口、8位定时器/计数器、RAM和ROM等。不足之处是没有串行口,中断处理比较简单,片内RAM和ROM容量较小且寻址范围不大于4KB。
高性能单片机阶段(1978~1982年),这个阶段推出的单片机普遍带有串行口、多级中断系统、16位定时器/计数器,片内ROM、RAM容量加大,且寻址范围可达64KB,有的片内还带有A/D转换器、可编程逻辑器件PLD、USB接口、PWM通道等。这类单片机的典型代表是Intel公司的MCS-51系列、Freescale公司的6801和Zilog公司的Z8等。由于这类单片机的性能价格比高,所以仍被广泛应用,是目前应用数量较多的单片机。
8位单片机巩固发展及16位、32位单片机推出阶段(1982年至今),此阶段的主要特征是一方面发展16位单片机、32位单片机及专用型单片机;另一方面,不断完善高档8位计算机,改善其结构,以满足不同用户的需要。16位单片机的典型产品如Intel公司生产的MCS-96系列单片机,其集成度已达120000管子/片,主振为12MHz,片内RAM为232B,ROM为8KB,中断处理为8级,而且片内带有多通道10位A/D转换器和高速输入/输出部件(HIS/HSO),实时处理的能力很强。而32位单片机除了具有更高的集成度外,其主振已达66MHz,这使32位单片机的数据处理速度比16位单片机增快许多,性能比8位、16位单片机更加优越。
三、 单片机的应用领域
单片机应用领域可以归纳为以下几个方面。
1.智能仪表。用单片机系统取代老式的测量、控制仪表,实现从模拟仪表向数字化、智能化仪表的转化,如各种温度仪表、压力仪表、流量仪表、电能计量仪表等。
2. 测控系统。用单片机取代原有的复杂的模拟数字电路,完成各种工业控制、数据采集系统等工作。
3.电能变换。应用单片机设计变频调速控制电路。
4.通信。用单片机开发通信模块、通信器材等。
5.机电产品。应用单片机检测、控制传统的机械产品,使传统的机械产品结构简化,控制智能化,提高了机电产品的可靠性,增强了产品的功能。
6.智能接口。在数据传输中,用单片机实现外部设备与微机通信。
第二章 数字式温度计的硬件设计
第一节 设计要求与方案
一、 设计任务与要求
1.设计任务
(1)设计基于单片机控制的数字温度计,本温度计属于多功能温度计。
(2)设置上下报警温度,当温度不在设置范围内时,可以报警。
2.设计要求
(1)以MCS-51系列单片机为核心器件,组成一个数字式温度计。
(2)采用数字式温度计传感器为检测器件,进行单点温度检测,检测精度为±0.5℃
(3)温度显示采用3位LED数码管显示,两位整数,一位小数。
(4)具有键盘输入上、下限功能,超过上、下限温度时,进行声音报警。
二、 设计方案与思路
1.设计方案
方案一
由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。
方案二
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
2.设计思路
1)根据设计要求,选择AT89C2051单片机为核心器件。
2)温度检测器件采用DDS18B20数字式温度传感器。与单片机的接口为P3.7引脚。
3)键盘采用独立式按键,由3个按键组成,分别为:设置键(SET)、加一键(+1)、确认键(RET).
SET键(上下限温度设置键):当该键按下时,进入上下限温度设置功能。
+1键(加一调整键):在输入上下限温度时,该键按下一次,被调整位加一。
RET键(确认键):当该键按下时,指向下一个要调整的位。
按键的接入方式:
SET键:通过P3口INT0引脚接入,中断工作方式。
+1键:通过P3口引脚接入,查询工作方式。
RET键:通过P3口引脚接入,查询工作方式。
4)声音报警蜂鸣器通过P1.7引脚接入。
第二节 数字温度计的结构原理与器件介绍
一、 单片机 AT89C2051功能介绍和应用
Atmel公司的生产的AT89C2051是一个低电压,高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读Flash程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。
AT89C2051是一个功能强大的单片机,但它只有20个引脚,15个双向输入/输出(I/O)端口,其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双向串行通信口,一个模拟比较放大器。
同时AT89C2051的时钟频率可以为零,即具备可用软件设置的睡眠省电功能,系统的唤醒方式有RAM、定时/计数器、串行口和外中断口,系统唤醒后即进入继续工作状态。省电模式中,片内RAM将被冻结,时钟停止振荡,所有功能停止工作,直至系统被硬件复位方可继续运行。芯片示图2-1如下:
图2-1 AT89C2051芯片示图
1. 主要功能特性
(1). 兼容MCS51指令系统
(2). 2k可反复擦写(>1000次)Flash ROM
(3). 15个双向I/O口
(4). 6个中断源
(5). 两个16位可编程定时/计数器
(6). 2.7-6V的宽工作电压范围
(7). 时钟频率0-24MHz
(8). 128x8bit内部RAM
(9). 两个外部中断源
(10) .两个串行中断
(11). 可直接驱动LED
(12). 两级加密位
(13). 低功耗睡眠功能
(14). 内置一个模拟比较放大器
(15). 可编程UARL通道
(16). 软件设置睡眠和唤醒功能
2.单片机 AT89C2051引脚功能说明
(1).Vcc:电源电
(2).GND:地
(3).P1口:P1口是一组8位双向I/O口,P1.2-P1.7提供内部上拉电阻,P1.0和P1.1内部无上拉电阻,主要是考虑它们分别是内部精密比较器的同相输入端(AIN1),如果需要应在外部接上拉电阻。P1口输出缓冲器可吸收20mA电流并可直接驱动LED.当P1口引脚写入“1”时可作输入端,当引脚P1.2-1.7用做输入并被外部拉低时,它们将因内部的上拉电阻而输出电流(In)。
P1口还在Flash闪速编程及程序校验时接收代码数据。
(4).P3口:P3口的P3.0-P3.7是带有内部上拉电阻的7个双向I/O口。P3.6没有引出,它作为一个普通I/O口但不可访问,但可作为固定输入片内比较器的输出信号,P3口缓冲器可吸收20mA电流。当P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端,作输入端时,被外部拉低的P3口将用上拉电阻输出电流(In)。
P3口还用于实现AT89C2051特殊的功能,
如下表2.1所示:
表2.1 P3口特殊的功能
引脚口
功能特性
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INTO(外中断0)
P3.3
/INT1(外中断1)
P3.4
T0(定时\计数器0输入)
P3.5
T1(定时\计数器1输入)
P3口还接收一些用于Flash闪速存储编程及程序校验的控制信号。
(5).RST:复位输入。RST引脚一旦变成两个机器周期以上电平,所有的I/O都将复位到“1”(高电平)状态,振荡器正在工作时,持续两个机器周期以上的电平便可完全复位,每个机器周期为12个振荡时钟周期。
(6).XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
(7). XTAL2:振荡器反相放大器的输出端。
二、 74LS48数码管译码器引脚及功能
74LS48芯片是一种常用的七段数码管译码器驱动器,常用在各种数字电路和单片机系统的显示系统中,在此简要介绍一下这个元件的一些参数与应用技术等资料。芯片示图2-2如下:
图2-2 74ls48芯片示图
4线-七段译码器/驱动器(BCD输入,有上拉电阻)
简要说明:
48 为有内部上拉电阻的 BCD-七段译码器/驱动器,共有 54/7448、54/74LS48 两种
线路结构型式,其主要电特性的典型值如下:
型号 IOL VO(OFF) PD(典型)
54/7448 6.4mA 5.5V 265mW
54LS48 2mA 5.5V 125mW
74LS48 6mA 5.5V 125mW
输出端(Ya-Yg)为高电平有效,可驱动灯缓冲器或共阴极 VLED。当要求输出 0-15 时,消隐输入(BI)应为高电平或开路,对于输出为 0 时还要求脉冲消隐输入(RBI )为高电平或者开路。
当BI为低电平时,不管其它输入端状态如何,Ya-Yg均为低电平。
当RBI和地址端(A0-A3)均为低电平,并且灯测试输入端(LT)为高电平时,Ya -Yg为低电平,脉冲消隐输出(RBO)也变为低电平。当BI 为高电平或开路时,LT为低电平可使Ya-Yg均为高电平。
48 与 248 的引出端排列、功能和电特性均相同,差别仅在显示 6 和 9, 248 所显示的6 和 9 比 48 多出上杠和下杠。
引出端符号A0-A3 译码地址输入BI /RBO 消隐输入(低电平有效)/脉冲消隐输出(低电平有效)LT灯测试输入端(低电平有效)RBI 脉冲消隐输入端(低电平有效)Ya-Yg 段输出逻辑图。
74ls48引脚功能表—七段译码驱动器功能表
十进数
或功能
输入
BI/RBO
输出
备注</TD< TR>
LT
RBI
D C B A
a
b
c
d
e
f
g
0
H
H
0 0 0 0
H
1
1
1
1
1
1
0
1
1
H
x
0 0 0 1
H
0
1
1
0
0
0
0
2
H
x
0 0 1 0
H
1
1
0
1
1
0
1
3
H
x
0 0 1 1
H
1
1
1
1
0
0
1
4
H
x
0 1 0 0
H
0
1
1
0
0
1
1
5
H
x
0 1 0 1
H
1
0
1
1
0
1
1
6
H
x
0 1 1 0
H
0
0
1
1
1
1
1
7
H
x
0 1 1 1
H
1
1
1
0
0
0
0
8
H
x
1 0 0 0
H
1
1
1
1
1
1
1
9
H
x
1 0 0 1
H
1
1
1
0
0
1
1
10
H
x
1 0 1 0
H
0
0
0
1
1
0
1
11
H
x
1 0 1 1
H
0
0
1
1
0
0
1
12
H
x
1 1 0 0
H
0
1
0
0
0
1
1
13
H
x
1 1 0 1
H
1
0
0
1
0
1
1
14
H
x
1 1 1 0
H
0
0
0
1
1
1
1
15
H
x
1 1 1 1
H
0
0
0
0
0
0
0
BI
x
x
x x x x
L
0
0
0
0
0
0
0
2
RBI
H
L
0 0 0 0
L
0
0
0
0
0
0
0
3
LT
L
x
x x x x
H
1
1
1
1
1
1
1
4
三、 硬件电路设计框图与原理图
根据设计要求与设计思路,硬件电路设计框图如图2-3所示。硬件电路结构与与电子时钟相似,不同之处,一是LED数码管的位驱动电路是由3个PNP型晶体管VT2、VT3、VT4和6个电阻组成,基极与单片机的P1.4、P1.5、P1.6连接。其工作原理是,当某个晶体管的基极为低电平时,该晶体管导通,对应位的LED被点亮,反之则不亮。二是加入了一只温度传感器DS18B20进行温度检测,DS18B20的数据I/O端与单片机的P3.7引脚连接。
硬件电路原理图见附录A
按键输入
电路
时钟电路 复位电路
蜂鸣器电路
单片机
LED显示器驱动电路
3位LED显示器
温度检测
图2-3 硬件电路设计框图
第三节 数字温度传感器DS18B20及应用
DS18B20是美国DALLAS半导体公司生产的一种单总线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易于与微处理器接口等优点,适合于各种温度测控系统。
该器件将半导体文敏器件、A\D转换器、存储器等做在一个很小的集成电路芯片上,传感器直接输出的就是温度信号数字值。信号传输采用两芯(或三芯)电缆构成的单总线结构。一条单总线上可以挂接若干个数字温度传感器,每个传感器有一个唯一的地址编码。微控制器通过对器件的寻址,就可以读取某一个器件的温度值,从而简化了信号采集系统的电路结构。DS18B20的性能特点如下:
1.采用单总线技术,与单片机通信只需要一根I/O线,在一根线上可以挂接多个DS18B20。
2.每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。
3.低压供电,电源范围从3~5V,可以本地供电,也可以直接从数据线上窃取电源(寄生式供电)。
4.测温范围为-55℃~+125℃,在-10℃~85℃范围内误差为±0.5℃。
5.可编辑数据为9~12位,转换12位温度时间为750ms(最大)。
6.用户可自设定报警上下限温度
7.报警搜索命令可识别和寻址哪个器件的温度超出预定值。
8.DS18B20的分辩率由用户通过EEPROM设置为9~12位
9.DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。
一、 DS18B20的引脚
DS18B20采用3脚(或8脚)封装,如图2-4a)所示。其中,VCC和GND是电源和接地引脚,DQ时数据线引脚。从图中看到,DS18B20以串行通信的方式与为控制器进行数据通信,读出和写入数据仅需要一根I\O接口线。
DALLAS
18B20
1 2 3
GND DQ VCC
图2-4a)DS18B20引脚图
寄生电源
64位ROM
和1-Wire
接口
VD1
C
VD2
存储和控制逻辑
温度传感器
TL触发器
TH触发器
配置寄存器
CRC发生器
电源检测
高速
暂存
器RAM
图2-4b) DS18B20内部结构图
二、 DS18B20内部结构及功能
DS18B20的内部结构如图12-3b所示,主要包括:寄生电源、温度传感器、64位激光ROM和单总线接口、存放中间数据的高速暂存器RAM、用于存储用户设定温度上下限值的TH和TL触发器、存储与控制逻辑、8位循环冗余校验码(CRC)发生器等7部分
1. 温度传感器
DS18B20测量温度时使用特有的温度测量技术,将被测温度转换成数值信号,测量结果存入温度寄存器中。温度和数字量的关系如表12-1所示。
温度/℃
二进制表示
十六进制表示
+125
0000 0111 1101 0000
07D0H
+85
0000 0101 0101 0000
0550H
+25.0625
0000 0001 1001 0000
0191H
+10.125
0000 0000 1010 0001
00A2H
+0.5
0000 0000 0000 0010
0008H
0
0000 0000 0000 1000
0000H
-0.5
1111 1111 1111 0000
FFF8H
-10.125
1111 1111 0101 1110
FF5EH
-25.0625
1111 1110 0110 1111
FE6FH
-55
1111 1100 1001 0000
FC90H
表12-1 温度和数字量的关系
DS18B20与单片机的接口电路
2. 寄生电源
寄生电源由二极管VD1、VD2、寄生电容C和电源检测电路组成,如图12-3所示。电源检测电路用于判定供电方式:3.0~5.5V的电源供电方式和寄生电源供电方式(直接从数据线获取电源)。
若采用外部电源给器件供电,外部电源接VCC引脚通过VD2向器件供电,如图12-4所示。
寄生电源供电时,VCC接地,器件从单线总线上获取电源,如图12-5所示。在I\O线呈低电平时,改由电容C上的电压继续向器件供电。该寄生电源有两个优点:第一,检测远程温度时无需本地电源;第二,缺少正常电源时也能读ROM。
3. 64位只读存储器ROM
ROM由64位二进制数字组成,共分为8个字节,字节0的内容是该产品的厂家代号28H,字节1~6的内容是48位器件序列号,字节7是ROM前56位的CRC校验码。由于64位ROM码具有唯一性,在使用时作为该器件的地址,通过读ROM命令可以将它读出来。DS18B20内部存储器由ROM、RAM和E2ROM组成。如图12-6所示。
字节
ROM
RAM
0
产品代号(28H)
温度低8位
1
48位
温度高8位
EPROM
2
器件序列号
TH
TH
3
TL
TL
4
配置寄存器
配置寄存器
5
保留
6
保留
7
CRC
保留
8
CRC
图12-6 DS18B20内部存储器结构图
4.高速暂存器RAM
RAM是由9个字节的高速暂存器和非易失性电擦写E2ROM组成。其中字节0、1存储当前温度,字节2、3存储上、下限报警温度TH和TL,字节4是配置寄存器,字节8是RAM前64位的CRC校验码。RAM中E2ROM用于存储TH、TL和配置寄存器的值。数据先写入RAM,经校验后再传给E2ROM。通过DS18B20功能命令对RAM进行操作。
DS18B20的温度测量范围是-55~+125C,分辨率的默认值12位。表12-2温度存储格式与配置寄存器控制字的格式。由表12-2可知,检测温度由两个字节组成,字节1的高5位S代表符号位,字节0的低4位是小数部分,中间7位是整数部分;字节4是配置寄存器控制字的格式,当R1R0的值为00B、01B、10B、11B时,对应的分辨率为9、10、11、12位,转换时间为93ms、187ms、375ms、750ms。
当主机发出温度转换命令(44H)时,启动温度转换过程,转换时间最长750ms。主机通过读暂存器功能命令(BEH),将温度值读出。通过写暂存器功能命令改变分辨率的设置。
表12-2 温度存储格式与配置寄存器控制字格式
bit7
bit6
bit5
bit4
bit3
bit2
bit1
bit0
字节0
2
2
2
2
2
2
2
2
字节1
S
S
S
S
S
2
2
2
字节4
0
R1
R0
1
1
1
1
1
1. ROM操作命令
ROM操作命令DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。
5. 温度报警信号
DS18B20完成温度转换后,就把测得的温度值与TH、TL作比较。若T>TH或T<TL,则将该器件内的报警标志置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。一旦某测量点越限,主机对利用报警搜索命令,即可识别正在报警的器件,并读出其序号,而不必考虑非报警器件。
6. CRC发生器
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
CRC的函数表达式为:CRC = X + X + X + 1
此外,DS18B20尚需依上式为暂存器中的数据来产生一个8位CRC送给主机,作为数据校验用。
三、 DS18B20的命令集
如表12-3所示。
表12-3 ROM操作命令
指 令
说 明
读ROM命令(33H)
读18B20的序列号
搜索ROM命令(F0H)
识别总线上各器件的编码
匹配ROM命令(55H)
用于多个DS18B20的定位
跳过ROM命令(CCH)
此命令执行后,存储器操作将针对总线上的所有器件
报警搜索ROM命令
仅温度超限的器件对此命令做出响应
RAM操作命令如表12-4所示。
表12-4 RAM操作命令
指 令
说 明
温度转换(44H)
启动温度转换
读暂存器(BEH)
读全部暂存器内容,包括CRC字节
写暂存器(4EH)
写暂存器第2,3和4个字节的数据
复制暂存器(48EH
将暂存器中的TH,TL和配置寄存器内容复制到EEPROM中
读EEPROM(B8H)
将TH,TL和配置寄存器内容从EEPROM中回读至暂存器
四、 DS18B20的通信协议
数字温度传感器和模拟传感器最大的区别,是将温度信号直接转化成数字信号,然后通过串行通信的方式输出。因此掌握DS18B20的通信协议是使用该器件的关键。所有的DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲,应答脉冲时隙;写“0”、写“1”、时隙;读“0”、读“1”时隙。与DS18B20的通信,是通过操作时隙完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。
2. 写时隙
当主机将单总线DQ从逻辑高(空闲状态)拉为逻辑低时,即启动一个写时隙。所有的写时隙必须在60~120us完成,且在每个循环之间至少需要1us的恢复时间。写0和写1时隙如图所示。在写0时隙期间,微控制器在整个时1. 复位和应答脉冲时隙
每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时隙期间,主机向DS18B20器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据。在每一个时隙,总线只能传输一位数据。
隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15us之释放总线。
3. 读时隙
DS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有的读时隙至少需要60us,且在两次独立的读时隙之间,至少需要1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。读时隙如图所示,在主机发起读时隙之后,DS18B20器件才开始在总线上发送“0”或“1”。若DS18B20发送“1”,则保持总线为高电平。若发送为“0”,则拉低总线当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至空闲高电平状态。DS18B20发出的数据,在起始时隙之后保持有效时间为15us。因而主机在读时隙期间,必须释放总线。并且在时隙起始后的15us之内采样总线状态。
四、 DS18B20温度计流程图
1.主程序流程图
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次,其程序流程图如图3.1所示。
初始化
调用显示子程序
1S到?
初次上电?
读出温度值温度计算处理显示数据刷新
发温度转换开始命令
N
Y
N
Y
图3.1 主程序流程图
2. 读出温度子程序流程图:
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需要进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2所示。
Y
发DS18B20复位命令
发跳过ROM命令
发读取温度命令
读取操作,CRC校验
9字节完?
CRC校验正?确?
移入温度暂存器
结束
N
N
Y
图3.2 读出温度子程序流程图
3.温度转换命令子程序流程图:
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辩率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如图3.3所示。
发DS18B20复位命令
发跳过ROM命令
发温度转换开始命令
结束
图3.3 温度转换命令子程序流程图
4. 计算温度子程序流程图:
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其流程图如图3.4所示
开始
温度零下?
温度值取补码置“—”标志
计算小数位温度BCD值
计算整数位温度BCD值
结束
置“+”标志
N
Y
图3.4 计算温度子程序流程图
5、显示数据刷新子程序流程图:
显示数据刷新子程序主要是对显示缓冲区中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图3.5所示。
温度数据移入显示寄存器
个位数0?
十位数0?
个位数显示符号十位数不显示
十位数显示数据(不显示符号)
结束
N
N
Y
Y
图3.5 显示数据刷新子程序流程图
五、 DS18B20的编程
设置合适的时隙,是保证传感器工作的前提条件。下面是时钟频率=12MHz,DS18B20的复位、读一个字节和写一个字节的程序:
1. DS18B20的复位程序
DQ EQU P1.0
RST: NOP
L0: CLR DQ ;DQ=0
MOV R2,#160 ;延时480us
L1: NOP
DJNZ R2,L1
SETB DQ ;DQ=1
MOV R2,#20 ;延时(15~60)us
L4: DJNZ R2,L4
CLR C ;C=0
ORL C,DQ ;
JC L
展开阅读全文