单片机DS18B20数字温度计设计 - 图文 下载本文

图3.1.4 P2口1位结构图

P3.0--P3.7:P3口是8位准双向I/O端口。它是一个复用功能口。作为第一功能使用时,为普通I/O口,其功能和操作方法与P1口相同。作为第二功能使用时,各引脚的定义如表2.1所示。P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。P3口能驱动4个LSTTL负载。

图3.1.5 P3口1位结构图

表3.1 口线 第二功能 6

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD (串行口输入) TXD (串行口输出) INT0 (外部中断0输入) INT1(外部中断1输入) T0 (定时器0的外部输入) T1 (定时器1的外部输入) WR (外部数据存储器“写”信号输出) RD (外部数据存储器“读”信号输出) 3.1.4单片机最小系统电路

图图3.1.6 晶3.1.7 按键振电路 复位电路

3.2温度采集电路

3.2.1 DS18B20概述

DS18b20是美国DALLAS公司推出的单总线数字化测温集成电路,它具有独特的单线接口方式,将非电模拟量温度值转换为数字信号串行输出仅需占用1位I/O端口,能够直接读取被测现场的温度值。它体积小,电压适用范围宽(3v~5v),且可通过编程实现9~12位的温度读数,即具有可调的温度分辨率,因此实用性和可靠性较高,应用广泛。 传感器特性:

1) 适应电压范围宽,电压范围在3.0~5.5V,在寄生电源方式下可有数据线供电。 2) 独特的单线接口方式,它与微处理器连接时仅需要一条口线即可实现微处理器与

DS18B20的双向通信。

3) 支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 4) 在使用中不需要任何外围元件,全部传感器元件及转换电路集成在形如一只三极管

的集成电路内。

5) 测温范围-55℃~+125℃,在-10℃~+85℃时精度为±0.5℃。

6) 可编程分辨率为9~12位,对应的可分辨率温度分别为0.5℃,0.25℃,0.125℃和

0.0625℃,可实现高精度测温。 7) 在9位分辨率时,最多在93.78ms内把温度转换为数字;12位分辨率时,最多在750ms

内把温度转换为数字,显示速度快。

8) 测量结果直接输出数字温度信号,以“一线总线”串行送给CPU,同时可传送CRC

校验码,具有极强的抗干扰纠错能力。

7

9) 负压特性。电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 应用范围:

1) 冷冻库、粮仓、储罐、电信机房、电力机房、电缆线槽等测温和控制领域。 2) 轴瓦、缸体、纺织、空调等狭小空间工业设备测温和控制。 3) 汽车空调、冰箱、冷柜以及中低纬度干燥箱等。

4) 供热、制冷管道热量计量、中央空调分户热能计量等。

3.2.2 DS18B20的管脚配置和内部结构

图3.2.1 DS18B20芯片封装

引脚定义:

(1)DQ为单数据总线,是数字信号输入/输出端; (2)GND为电源地;

(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 内部结构:

图3.2.2 DS18B20内部结构图

(1)64位光刻ROM中的序列号是出厂前被光刻好的,它可以看做该DS18B20的地址序列码。其各位排列顺序是:开始8位为产品类型标号,接下来48位是该DS18B20自

8

身的序列号,最后8位是前面56位的CRC循环冗余校验码(CR=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一条总线上挂接多个DS18B20的目的。

表3.2.1 64位光刻ROM各位定义

(2)高速暂存器RAM由9个字节的存储器组成。第0~1字节是温度的显示位;第2和第3个字节是复制的TH和TL,同时第2和第3个字节的数字可以更新;第4个字节是配置寄存器,同时第4个字节的数字可以更新;第5,6,7三个字节的保留的。可电擦出E2ROM又包括温度触发器TH和TL,以及一个配置寄存器。 表3.2.2 高速暂存器RAM

寄存器内容 温度值低位(LSB) 温度值高位(MSB) 高温限值(TH) 低温限值(LT) 配置寄存器 保留 保留 保留 CRC校验值 字节地址 0 1 2 3 4 5 6 7 8 表3.2.3 温度数据存储格式

DS18B20在出厂时默认配置为12位,其中最高位为符号位,即温度值共11位,单片机在读取数据时,会读2字节共16位,读完后将低11位的二进制数转化为十进制数后再乘以0.0625便为所测的实际温度值。另外,还需要判断温度的正负。前5个数字为符号位,这5位同时变化,我们只需要判断11位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反加1再乘以0.0625才可得到实际温度值。前5位为0时,读取的温度为正值,且温度为正值时,只要将测得的数值乘以0.0625即可得到实际温度值。

9