复习单片机:温度检测 DS18B20(内含:1 DS18B20 介绍+2 硬件设计+3 软件设计+4 实验现象)

简介: 复习单片机:温度检测 DS18B20(内含:1 DS18B20 介绍+2 硬件设计+3 软件设计+4 实验现象)

1 DS18B20 介绍


DS18B20 温度传感器的内部存储器包括一个高速的暂存器 RAM 和一个非易


失性的可电擦除的 EEPROM,后者存放高温度和低温度触发器 TH、TL 和配置寄存


器。


配置寄存器是配置不同的位数来确定温度和数字的转化,配置寄存器结构如下:


c9a28ebe70b348f5b687c9606aefb1cb.png


低五位一直都是"1",TM 是测试模式位,用于设置 DS18B20 在工作模式还


是在测试模式。在 DS18B20 出厂时该位被设置为 0,用户不需要去改动。R1 和


R0 用来设置 DS18B20 的精度(分辨率),可设置为 9,10,11 或 12 位,对


应的分辨率温度是 0.5℃,0.25℃,0.125℃和 0.0625℃。R0 和 R1 配置如下


图:


af6bbccfc1844be4bfe99c1361a58d35.png


在初始状态下默认的精度是 12 位,即 R0=1、


R1=1。高速暂存存储器由 9 个


字节组成,其分配如下:


f5f32ef2f91c4440a05d6897ae065d42.png


当温度转换命令(44H)发布后,经转换所得的温度值以二字节补码形式存


放在高速暂存存储器的第 0 和第 1 个字节。存储的两个字节,高字节的前 5 位


是符号位 S(如图MS Byte的前5位),其他位为符号位。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,


数据格式如下:


9a3faf47ac4c4684a9b5f3a53958a4d4.png


如果测得的温度大于 0,这 5 位为‘ 0’,只要将测到的数值乘以 0.0625


(默认精度是 12 位)即可得到实际温度;如果温度小于 0,这 5 位为‘ 1’,


测到的数值需要取反加 1 再乘以 0.0625 即可得到实际温度。温度与数据对应


关系如下:


749cfac54f504ca180351d55b7b9c212.png


如,+85摄氏度,对应十六进制为0550h,二进制为0000 0101 0101 0000,高字节前五位为0000 0,表示温度为+,所以0550h转换为十进制为1360(计算器计算),之后*0.0625为85


如,-0.5摄氏度,对应十六进制为FFF8h,二进制为1111 1111 1111 1000,符号位为-,取反+1为


0000 0000 0000 1000,为8,*0.0625为0.5


DS18B20 时序包括如下几种:初始化时序、写(0 和 1)时序、 读(0和 1)时序。 DS18B20 发送所有的命令和数据都是字节的低位在前。


(1)初始化时序


10f1ab5577794b88b413129c15d020a6.png


单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平


时间至少 480us(该时间的时间范围可以从 480 到 960 微妙),以产生复位脉


冲。接着主机释放总线,外部的上拉电阻将单总线拉高,延时 15~60 us,并进


入接收模式。接着 DS18B20 拉低总线 60~240 us,以产生低电平应答脉冲,若


为低电平,还要做延时,其延时的时间从外部上拉电阻将单总线拉高算起最少要


480 微妙。


(2)写时序


dd4bb84fe615476f96fb173c30df96cc.png


写时序包括写 0 时序和写 1 时序。所有写时序至少需要 60us,且在 2 次


独立的写时序之间至少需要 1us 的恢复时间,两种写时序均起始于主机拉低总


线。写 1 时序:主机输出低电平,延时 2us,然后释放总线,延时 60us。写 0


时序:主机输出低电平,延时 60us,然后释放总线,延时 2us。


(3)读时序


29bf1504740b462588f23c4f7975369f.png


单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出


读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少


需要 60us,且在 2 次独立的读时序之间至少需要 1us 的恢复时间。每个读时


序都由主机发起,至少拉低总线 1us。主机在读时序期间必须释放总线,并且在


时序起始后的 15us 之内采样总线状态。典型的读时序过程为:主机输出低电平延时 2us,然后主机转入输入模式延时 12us,然后读取单总线当前的电平,然后延时 50us。


DS18B20 的典型温度读取过程为:复位→发 SKIP ROM 命令(0XCC)→发开始转


换命令(0X44)→延时→复位→发送 SKIP ROM 命令(0XCC)→发读存储器命(0XBE)→连续读出两个字节数据(即温度)→结束。


2 硬件设计


本实验使用到硬件资源如下:


(1)动态数码管


(2)DS18B20


64a31b0eb6c24615b07c45dd3032fe2f.png


从上图可以看出,传感器接口的单总线管脚接至单片机 P3.7 IO 口上,为了让单总线默认为高电平,通常会在单总线上接上拉电阻,在图中并没有看到有上拉电阻,这是因为单片机 IO 都外接了 10K 上拉电阻,当单片机 IO 口连接到传感器的总线管脚时即相当于它们外接上拉电阻,所以此处可以省去。


3 软件设计


本章所要实现的功能是:插上 DS18B20 温度传感器,数码管显示检测的温度


值。


注:代码部分需要对照原理图详细讲解,此处只放代码结果,讲解在下一篇文章


8573f5280b5049d1afbc33ca970431c1.png


6342db0b9a124376b703c231ba217386.png

61fb8538ba564427a5b1138cdc00d613.png


注: 数码管函数部分不再展示


4 实验现象

使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口), 把编译后产生的.hex 文件烧入到芯片内,实现现象如下:插上 DS18B20 温度传

感器,数码管显示检测的温度值。


01385bea08eb406e81c0ca2c3342f761.png

相关文章
|
1月前
|
传感器 C语言 智能硬件
基于单片机的温度控制系统
基于单片机的温度控制系统
32 0
|
1月前
|
传感器 监控 IDE
基于单片机的温度监控系统设计
基于单片机的温度监控系统设计
66 0
|
3月前
|
传感器 编解码 数据处理
毕业设计|基于STM32单片机的水位浑浊度检测设计
毕业设计|基于STM32单片机的水位浑浊度检测设计
268 0
|
3月前
|
传感器 芯片
毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计
毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计
|
3月前
|
传感器 芯片
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
|
3月前
|
传感器
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计
毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计
|
4月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
53 0
|
7月前
单片机实验:外部中断系统实验 如何1357,2468灯交替亮
单片机实验:外部中断系统实验 如何1357,2468灯交替亮
120 0
|
7月前
单片机实验:外部中断系统实验 如何1357,2468灯交替亮
单片机实验:外部中断系统实验 如何1357,2468灯交替亮
305 0
|
3月前
|
传感器 存储 芯片
毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计
毕业设计|基于51单片机的空气质量检测PM2.5粉尘检测温度设计