DS18B20一线总线数字式传感器的原理与使用

合集下载

DS18B20原理及应用

DS18B20原理及应用

数字温度传感器DS18B20的工作原理及在变电站测温的应用一应用背景概述测量温度的关键是温度传感器。

随着技术飞速发展,传感器已进入第三代数字传感器。

本测温系统采用的DS18B20就是属于这种传感器。

DS18B20是美国DALLAS半导体公司生产的单总线数字温度传感器,它可以实现数字化输出和测试,并且有控制功能强、传输距离远、抗干扰能力强、接口方便、微功耗等优点,因而被广泛应用在工业、农业、军事等领域的控制仪器、测控系统中。

二 DS18B20的原理及特性介绍1.DS18B20的几个特点:a. DS18B20因为采用了单总线技术,可通过串行口线,也可通过其他I/O口线与微机直接接传感器直接输出被测温度值(二进制数)。

b.其测量温度范围为:-55℃————+125℃,c.测量分辨率为:0.0625℃,是其他传感器无法相比的。

图1 DS18B20外部形状及管脚d.内含64位只读存储器ROM,(内存出厂序列号,是对应每一个器件的唯一号),还又RAM 存有温度当前转换值及符号。

e.用户可分别设定每个器件的温度上、下限。

f.内含寄生电源。

2. DS18b20的结构:a. 64位光刻ROM ,可以看作是DS18B20的地址序列号,如表一所示。

表1b.高速暂存器RAM共占0、1两个单元:表2两个8位的RAM中,存放二进制的数,高五位是符号位,如果温度大于0OC,这五位数为0,将测到的数值乘以0.0625,即得到实际的温度值;如果温度小于0OC,高五位为1,测到的数值需要取反加1,再乘以0.0625 ,才得到实际的温度值。

c. 九个寄存器的名称及作用:表3三 DS18B20 的控制方法DS18B20的操作是通过执行操作命令实现的,其控制程序是按照DS18B20的通讯协议编制的。

单片机与DS18B20交换数据,CPU按照单总线协议在总线上产生复位时序和读写时序来实现的。

其中包含复位脉冲、响应脉冲、读、写时序,只有响应脉冲是DS18B 20发出的,其他都有单片机发出。

DS18B20的工作原理

DS18B20的工作原理

DS18B20的工作原理DS18B20是一款数字温度传感器,它采用单总线接口进行通信,并且具有高精度、低功耗和可编程分辨率的特点。

在本文中,我将详细介绍DS18B20的工作原理,包括其硬件结构和通信协议。

1. 硬件结构DS18B20由温度传感器、控制逻辑和存储器组成。

温度传感器采用基于硅的温度传感器技术,能够测量环境温度并将其转换为数字信号。

控制逻辑负责控制传感器的工作模式和数据传输。

存储器用于存储温度传感器的惟一标识符和用户可编程的配置寄存器。

2. 工作原理DS18B20采用单总线接口进行通信,这意味着它只需要一个引脚来进行数据传输和控制。

传感器和主控设备之间的通信是通过发送和接收脉冲来实现的。

在通信开始之前,主控设备会发送复位脉冲,以确保传感器处于正确的工作状态。

接下来,主控设备发送指令给传感器,指令包括读取温度、写入配置等操作。

传感器根据指令执行相应的操作,并将结果发送回主控设备。

为了确保数据的准确性,DS18B20采用了一种叫做1-Wire协议的通信协议。

在这个协议中,数据是通过脉冲的持续时间来表示的。

逻辑“0”的脉冲持续时间较短,而逻辑“1”的脉冲持续时间较长。

主控设备和传感器之间的通信是通过发送和接收这些脉冲来实现的。

3. 数据传输DS18B20的数据传输包括三个阶段:复位、命令和数据。

在复位阶段,主控设备发送一个复位脉冲,以确保传感器处于正确的工作状态。

在命令阶段,主控设备发送指令给传感器。

指令包括读取温度、写入配置等操作。

传感器根据指令执行相应的操作,并将结果发送回主控设备。

在数据阶段,传感器将温度数据转换为数字信号,并通过单总线接口发送给主控设备。

主控设备接收到数据后,可以进行进一步的处理和显示。

4. 应用领域由于DS18B20具有高精度、低功耗和可编程分辨率的特点,它在许多领域得到了广泛应用。

在工业领域,DS18B20可用于温度监测和控制系统,如温度计、温度报警器等。

在农业领域,DS18B20可用于温室、畜牧场等环境温度的监测和控制。

DS18b20

DS18b20

一、DS18B20基本结构原理
2. DS18B20外形与引脚功能
一、DS18B20基本结构原理
3.DS18B20内部结构图
存储与逻辑控制
供电 感应
64位ROM 1线端口
高速 寄存器
8位CRC
温度传感器 上限报警寄存器 下限报警寄存器
四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH 和TL、配置寄存器。光刻ROM中的64位序列号是DS18B20的地址序列码。
开始
初始化DS18B20 跳过ROM匹配
开始温度转换
转换结束了否? N
Y
初始化DS18B20 跳过ROM匹配
读温度值 结束
四、DS18B20的温度测量操作
2. DS18B20温度测量程序流程
开始 C51送复位脉冲 18B20送存在脉冲 送SKIP ROM命令
C51送复位脉冲 18B20送存在脉冲 送SKIP ROM命令
三、DS18B20的读写
(一)单线接口访问DS18B20的协议
➢根据DS18B20的通讯协议,主机(总线控制器)每次 访问DS18B20都必须遵循以下顺序:
初始化18B20 ; ROM操作命令; 存贮器操作命令: 执行/数据。
➢协议包括几种单线信号类型:复位信号、存在信号、写0、 写1、读0、读1。除存在信号外,全部由主机产生。
二、DS18B20的寄存器
3. DS18B20温度数据形式
温度存储器中数据用16位符号扩展的二进制补码形式表示。 0.0625℃/LSB形式表达,其中S为符号位。
9位
12位
二、DS18B20的寄存器
以12为例:
12位数据,存储在18B20的两个8比特(位)的RAM中,Bit0是最低位, 二进制中的前面5位是符号位 如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得 到实际温度; 如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可 得到实际温度。 例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

DS18B20的工作原理

DS18B20的工作原理

DS18B20的工作原理DS18B20是一种数字温度传感器,可以通过一根单线串行总线与微处理器或者其他设备进行通信。

它采用了数字温度传感技术,可以准确地测量环境温度,并将温度数据以数字形式传输给主设备。

DS18B20的工作原理如下:1. 温度测量原理:DS18B20使用了一个精确的温度传感器,该传感器基于温度对半导体材料电阻值的影响。

在DS18B20中,温度传感器是由一对金属电极和一个细丝电阻器组成的。

当温度升高时,电阻值增加,反之亦然。

通过测量电阻值的变化,可以确定环境温度。

2. 单线串行总线通信:DS18B20通过单线串行总线与主设备通信,这意味着只需要一根数据线就可以实现数据传输。

通信过程中,主设备发送指令给DS18B20,DS18B20将温度数据以数字形式传输回主设备。

这种通信方式简化了硬件连接,降低了成本。

3. 温度转换和精度:DS18B20将温度数据转换为数字形式,并以12位精度表示。

它可以测量的温度范围为-55℃至+125℃,精度为±0.5℃。

DS18B20还具有可编程的分辨率功能,可以选择9位、10位、11位或者12位的温度分辨率。

4. 供电和工作模式:DS18B20可以通过总线路线提供供电,也可以通过外部电源提供供电。

它还具有多种工作模式,包括连续转换模式和温度警报模式。

在连续转换模式下,DS18B20可以周期性地测量温度并发送数据。

在温度警报模式下,DS18B20可以设置上下限温度阈值,当温度超过或者低于设定阈值时,会触发警报信号。

总结:DS18B20是一种数字温度传感器,采用了数字温度传感技术。

它通过测量温度对半导体材料电阻值的影响来测量环境温度,并将温度数据以数字形式传输给主设备。

DS18B20具有单线串行总线通信、温度转换和精度、供电和工作模式等特点。

它在许多领域中被广泛应用,如气象监测、工业自动化、家用电器等。

其高精度和简单的硬件连接使其成为一种理想的温度传感器。

DS18B20一线总线数字式传感器的原理与使用

DS18B20一线总线数字式传感器的原理与使用

DS18B20一线总线数字式传感器的原理与使用________________________________________DS18B20、DS1822 “一线总线”数字化温度传感器是DALLAS最新单线数字温度传感器,同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。

DS1822的精度较差为± 2°C 。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量,与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。

而且新一代产品更便宜,体积更小。

DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。

可选更小的封装方式,更宽的电压适用范围。

分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。

DS18B20的性能是新一代产品中最好的!性能价格比也非常出色!DS1822与DS18B20软件兼容,是DS18B20的简化版本。

省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。

继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。

DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。

DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

DS18B20的管脚排列如下:15元/只DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。

DS18B20的工作原理

DS18B20的工作原理

DS18B20的工作原理DS18B20是一种数字温度传感器,广泛应用于各种温度测量和控制系统中。

它采用一线式总线通信协议,具有高精度、低功耗和可靠性高等特点。

下面将详细介绍DS18B20的工作原理。

1. 传感器结构DS18B20由温度传感器、数字转换器和总线控制电路组成。

温度传感器采用微处理器技术,内部集成为了温度传感器、模数转换器和数字信号处理电路。

总线控制电路负责与主控设备进行通信,并提供传感器的供电。

2. 温度测量原理DS18B20采用基于半导体的温度传感器,利用温度对半导体材料电阻值的影响来测量温度。

具体来说,DS18B20内部有一个温度传感器,该传感器由一对电阻组成,其中一个电阻是一个恒流源,另一个电阻是一个PTAT(Proportional to Absolute Temperature)电阻。

当温度升高时,PTAT电阻的电阻值也会升高,而恒流源电阻的电阻值保持不变。

通过测量这两个电阻之间的电压差,可以计算出温度值。

DS18B20的内部电路会将这个电压差转换为数字信号,然后通过总线传输给主控设备。

3. 一线式总线通信协议DS18B20采用一线式总线通信协议进行与主控设备的通信。

这种通信方式只需要一根信号线,可以同时传输数据和供电。

主控设备通过发送特定的命令和参数来读取传感器的温度值。

在通信过程中,主控设备会发送复位脉冲,然后传感器会发送存在脉冲作为应答。

接着,主控设备发送读取温度命令,传感器会将温度值转换为数字信号,并通过总线传输给主控设备。

主控设备通过读取总线上的数字信号来获取温度值。

4. 精度和分辨率DS18B20具有高精度和可调节的分辨率。

其温度测量精度可以达到±0.5℃,分辨率可以调节为9位、10位、11位或者12位。

分辨率越高,温度测量的精度越高,但传输的数据量也越大。

5. 供电方式DS18B20可以通过总线路线从主控设备获取供电,也可以通过外部供电。

当通过总线供电时,传感器会利用总线上的电能进行工作;当通过外部供电时,传感器可以提供更大的测量范围和更快的响应速度。

DS18B20温度传感器工作原理及其应用电路图

一、DS18B20温度传感器工作原理(热电阻工作原理)
DS18B20温度传感器工作原理框图如图所示:
D低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
DS18B20温度传感器工作原理及其应用电路图
DS18B20温度传感器工作原理及其应用电路图
DS18B20温度传感器工作原理及其应用电路图
时间:2021-02-16 14:16:04 来源:赛微电子网 作者:
温度与工农业生产密切相关,对温度的测量和控制是提高生产效率、保证产品质量以及保障生产安全和节约能源的保障。随着工业的不断发展,由于温度测量的普遍性,温度传感器的市场份额大大增加,居传感器首位。数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。现在,新一代的DS18B20温度传感器体积更小、更经济、更灵活。DS18B20温度传感器测量温度范围为-55℃~+125℃。在-10℃~+85℃范围内,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。基于DS18B20温度传感器的重要性,小编整理出DS18B20温度传感器工作原理及其应用电路图供大家参考。

DS18B20的工作原理

DS18B20的工作原理DS18B20是一种数字温度传感器,广泛应用于各种温度测量场合。

它采用一线通信协议,具有高精度和可编程分辨率等优点。

本文将介绍DS18B20的工作原理,以帮助读者更好地理解这种传感器的工作机制。

一、DS18B20的基本结构1.1 DS18B20传感器由温度传感器、存储器和控制逻辑电路组成。

1.2 温度传感器采用数字式温度传感器,具有高精度和快速响应特性。

1.3 存储器用于存储传感器的唯一标识号和温度数据。

二、DS18B20的工作原理2.1 DS18B20采用单总线通信协议,通过一根数据线进行数据传输。

2.2 传感器通过内部ADC将模拟温度信号转换为数字信号,并存储在存储器中。

2.3 控制逻辑电路通过单总线协议与主控器通信,读取存储器中的温度数据并传输给主控器。

三、DS18B20的精度和分辨率3.1 DS18B20具有高精度,温度测量精度可达±0.5°C。

3.2 传感器的分辨率可通过配置寄存器进行设置,可选9位、10位、11位或12位分辨率。

3.3 高分辨率能够提供更精确的温度测量结果,但会增加传输数据的长度和时间。

四、DS18B20的应用领域4.1 DS18B20广泛应用于温度监测系统、气象站、温室控制等领域。

4.2 由于其数字化输出和高精度特性,DS18B20在工业自动化和实验室测量中也得到广泛应用。

4.3 DS18B20传感器的小尺寸和低功耗使其适用于需要长期监测温度的场合。

五、DS18B20的优势和劣势5.1 DS18B20具有高精度、数字输出和可编程分辨率等优点。

5.2 传感器的单总线通信协议简化了系统设计和布线。

5.3 传感器的劣势是在极端条件下可能会受到干扰,影响温度测量的准确性。

综上所述,DS18B20是一种功能强大的数字温度传感器,具有高精度和可编程分辨率等优点。

通过深入了解其工作原理和特性,可以更好地应用于各种温度测量场合,为工程和科研提供可靠的温度数据支持。

DS18B20的工作原理

DS18B20的工作原理DS18B20是一种数字温度传感器,采用单总线接口通信,具有高精度、低功耗和可靠性强的特点。

它广泛应用于温度测量领域,例如室内温度监控、气象观测、工业自动化等。

DS18B20传感器的工作原理如下:1. 温度测量原理:DS18B20采用基于半导体的温度测量原理,利用温度对半导体材料电阻值的影响来测量温度。

它内部集成为了温度传感器和模数转换器,能够将温度转换为数字信号输出。

2. 单总线通信:DS18B20传感器采用单总线通信方式,即通过一个数据线进行数据传输和控制。

这种通信方式使得传感器的连接更加简单,只需一个数据线和一个电源线即可。

3. 工作原理:DS18B20传感器的工作原理基于温度对半导体材料电阻值的影响。

传感器内部有一个温度传感器和一个模数转换器。

当传感器接收到读取温度的指令时,它会测量温度并将其转换为数字信号。

具体的工作流程如下:- 主控设备发送启动信号,将总线拉低一段时间;- 主控设备释放总线,等待传感器的响应;- 传感器检测到总线被拉低后,开始工作;- 传感器将温度数据转换为数字信号,并通过总线发送给主控设备;- 主控设备接收到传感器发送的数据,并进行解析。

4. 温度测量精度:DS18B20传感器具有高精度的温度测量能力,可实现±0.5℃的测量精度。

它还具有可调节的分辨率,可以根据需要选择9位、10位、11位或者12位的分辨率。

5. 供电方式:DS18B20传感器可以通过总线路线供电,也可以通过外部电源供电。

通过总线供电时,传感器从总线路线获取所需的电能;通过外部电源供电时,传感器需要额外的电源路线提供电能。

总结:DS18B20传感器是一种基于半导体的数字温度传感器,采用单总线通信方式,具有高精度、低功耗和可靠性强的特点。

它的工作原理是利用温度对半导体材料电阻值的影响来测量温度,并通过单总线进行数据传输和控制。

DS18B20广泛应用于各种温度测量场景,为温度监测和控制提供了可靠的解决方案。

ds18b20工作原理

ds18b20工作原理
DS18B20温度传感器是一种数字温度传感器,采用"1-wire"
(单总线)接口通信,其工作原理如下:
1. 传感器结构:DS18B20传感器由温度传感器芯片、电源线
和数据线组成。

芯片内部包含温度传感器、模数转换器和存储器。

2. 电源供电:传感器通过电源线从计算机、微控制器或其他设备中获取供电。

传感器的VDD和GND引脚用于供电。

3. 温度测量:传感器使用其内部温度传感器测量环境温度。

当温度变化时,传感器内部的温度传感器会产生电压变化。

4. 模数转换:传感器内部的模数转换器将温度传感器测量到的电压转换为数字信号。

转换后的数字信号可以在数据线上传输。

5. 通信协议:传感器使用1-wire接口协议进行通信。

该协议
允许使用单根数据线进行数据传输。

传感器通过数据线将温度数据发送给主控设备。

6. 数据读取:主控设备发送读取指令给传感器,传感器将温度数据通过数据线返回给主控设备。

主控设备可以通过读取传感器返回的数据来获取环境温度。

总结:DS18B20温度传感器工作原理基于温度传感器芯片和
模数转换器的结构,在供电后,传感器通过测量温度传感器的
电压变化来获取环境温度,并通过1-wire接口协议将温度数据传输给主控设备。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DS18B20一线总线数字式传感器的原理与使用________________________________________DS18B20、 DS1822 “一线总线”数字化温度传感器是DALLAS最新单线数字温度传感器,同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。

DS1822的精度较差为± 2°C 。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。

适合于恶劣环境的现场温度测量,与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。

而且新一代产品更便宜,体积更小。

DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。

可选更小的封装方式,更宽的电压适用范围。

分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。

DS18B20的性能是新一代产品中最好的!性能价格比也非常出色! DS1822与DS18B20软件兼容,是DS18B20的简化版本。

省略了存储用户定义报警温度、分辨率参数的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。

继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。

DS18B20和DS1822使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。

DS18B20的内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

DS18B20的管脚排列如下:15元/只DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

光刻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温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。

第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。

第六、七、八个字节用于内部计算。

第九个字节是冗余检验字节。

该字节各位的意义如下:TM R1 R0 1 1 1 1 1低五位一直都是1 ,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)分辨率设置表:R1 R0 分辨率温度最大转换时间0 0 9位 93.75ms0 1 10位 187.5ms1 0 11位 375ms1 1 12位 750ms根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM 指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

DS1820使用中注意事项DS1820虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。

在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。

(2)在DS1820的有关资料中均未提及单总线上所挂DS1820数量问题,容易使人误认为可以挂任意多个DS1820,在实际应用中并非如此。

当单总线上所挂DS1820超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。

(3)连接DS1820的总线电缆是有长度限制的。

试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。

当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。

这种情况主要是由总线分布电容使信号波形产生畸变造成的。

因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。

(4)在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦某个DS1820接触不好或断线,当程序读该DS1820时,将没有返回信号,程序进入死循环。

这一点在进行DS1820硬件连接和软件设计时也要给予一定的重视。

测温电缆线建议采用屏蔽4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。

本站实验板实验程序:;这是关于DS18B20的读写程序,数据脚P2.2,晶振12MHZ;温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒;可以将检测到的温度直接显示到AT89C51开发实验板的两个数码管上;显示温度00到99度,很准确哦~~无需校正!ORG 0000H;单片机内存分配申明!TEMPER_L EQU 29H;用于保存读出温度的低8位TEMPER_H EQU 28H;用于保存读出温度的高8位FLAG1 EQU 38H;是否检测到DS18B20标志位a_bit equ 20h ;数码管个位数存放内存位置b_bit equ 21h ;数码管十位数存放内存位置MAIN:LCALL GET_TEMPER;调用读温度子程序;进行温度显示,这里我们考虑用网站提供的两位数码管来显示温度;显示范围00到99度,显示精度为1度;因为12位转化时每一位的精度为0.0625度,我们不要求显示小数所以可以抛弃29H的低4位;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度MOV A,29HMOV C,40H;将28H中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,ALCALL DISPLAY;调用数码管显示子程序CPL P1.0AJMP MAIN; 这是DS18B20复位初始化子程序INIT_1820:SETB P3.5NOPCLR P3.5;主机发出延时537微秒的复位低脉冲MOV R1,#3TSR1:MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB P3.5;然后拉高数据线NOPNOPNOPMOV R0,#25HTSR2:JNB P3.5,TSR3;等待DS18B20回应DJNZ R0,TSR2LJMP TSR4 ; 延时TSR3:SETB FLAG1 ; 置标志位,表示DS1820存在CLR P1.7;检查到DS18B20就点亮P1.7LEDLJMP TSR5TSR4:CLR FLAG1 ; 清标志位,表示DS1820不存在CLR P1.1;点亮P1。

1脚LED表示温度传感器通信失败LJMP TSR7TSR5:MOV R0,#117TSR6:DJNZ R0,TSR6 ; 时序要求延时一段时间TSR7:SETB P3.5RET; 读出转换后的温度值GET_TEMPER:SETB P3.5LCALL INIT_1820;先复位DS18B20JB FLAG1,TSS2CLR P1.2RET ; 判断DS1820是否存在?若DS18B20不存在则返回TSS2:CLR P1.3;DS18B20已经被检测到!!!!!!!!!!!!!!!!!!MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#44H ; 发出温度转换命令LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒LCALL DISPLAYLCALL INIT_1820;准备读温度前先复位MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 发出读温度命令LCALL WRITE_1820LCALL READ_18200; 将读出的温度数据保存到35H/36HCLR P1.4RET;写DS18B20的子程序(有具体的时序要求)WRITE_1820:MOV R2,#8;一共8位数据CLR CWR1:CLR P3.5MOV R3,#6DJNZ R3,$RRC AMOV P3.5,CMOV R3,#23DJNZ R3,$SETB P3.5NOPDJNZ R2,WR1SETB P3.5RET; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200:MOV R4,#2 ; 将温度高位和低位从DS18B20中读出MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)RE00:MOV R2,#8;数据一共有8位RE01:CLR CSETB P3.5NOPNOPCLR P3.5NOPNOPNOPSETB P3.5MOV R3,#9RE10:DJNZ R3,RE10MOV C,P3.5MOV R3,#23RE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,ADEC R1DJNZ R4,RE00RET;显示子程序display: mov a,29H;将29H中的十六进制数转换成10进制mov b,#10 ;10进制/10=10进制div abmov b_bit,a ;十位在amov a_bit,b ;个位在bmov dptr,#numtab ;指定查表启始地址mov r0,#4dpl1: mov r1,#250 ;显示1000次dplop: mov a,a_bit ;取个位数MOVC A,@A+DPTR ;查个位数的7段代码mov p0,a ;送出个位的7段代码clr p2.0 ;开个位显示acall d1ms ;显示1mssetb p2.0mov a,b_bit ;取十位数MOVC A,@A+DPTR ;查十位数的7段代码mov p0,a ;送出十位的7段代码clr p2.1 ;开十位显示acall d1ms ;显示1mssetb p2.1djnz r1,dplop ;100次没完循环djnz r0,dpl1 ;4个100次没完循环ret;1MS延时(按12MHZ算)D1MS: MOV R7,#80DJNZ R7,$RET;实验板上的7段数码管0~9数字的共阴显示代码numtab: DB 0F3H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90Hend以下是第二种采集和处理程序供网友参考;温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒;将温度数据通过串口发送出去,波特率2400;本程序专为AT89C51实验开发板编写.适合12晶振;本程序经过验证,可以显示温度+/-和两位整数温度和两位小数温度数据DOT EQU 30HZHENGSHU EQU 31HFLAG1 EQU 38H ;是否检测到DS18B20的标志位;定义温度数据DIS_1 EQU 32H ;符号DIS_2 EQU 33H ;十位DIS_3 EQU 34H ;个位DIS_4 EQU 35H ;小数点后第一位DIS_5 EQU 36H ;小数点后第二位WDDATA BIT P2.2 ;定义DS18B20的数据脚为P2.2端口ORG 0000H;以下为主程序进行CPU中断方式设置CLR EA ;关闭总中断MOV SCON,#50H ;设置成串口1方式MOV TMOD,#20H ;波特率发生器T1工作在模式2上MOV TH1,#0F3H ;预置初值(按照波特率2400BPS预置初值)MOV TL1,#0F3H ;预置初值(按照波特率2400BPS预置初值)SETB TR1 ;启动定时器T1;以上完成串口2400通讯初始化设置;-------------------------; 主程序;-------------------------MAIN:LCALL INIT_1820 ;调用复位DS18B20子程序MAIN1:LCALL GET_TEMPER;调用读温度子程序LCALL FORMULA ;通过公式计算,小数点后显示两位LCALL BCDLCALL DISPLAY ;调用串口显示子程序LCALL DELAY500 ;延时0.5秒LCALL DELAY500 ;延时0.5秒LCALL DELAY500 ;延时0.5秒AJMP MAIN1;-------------------------; DS18B20复位初始化程序;-------------------------INIT_1820:SETB WDDATANOPCLR WDDATA;主机发出延时540微秒的复位低脉冲MOV R0,#36LCALL DELAYSETB WDDATA;然后拉高数据线NOPNOPMOV R0,#36TSR2:JNB WDDATA,TSR3;等待DS18B20回应DJNZ R0,TSR2LJMP TSR4 ; 延时TSR3:SETB FLAG1 ; 置标志位,表示DS1820存在LJMP TSR5TSR4:CLR FLAG1 ; 清标志位,表示DS1820不存在LJMP TSR7TSR5:MOV R0,#06BHTSR6:DJNZ R0,TSR6 ;复位成功!时序要求延时一段时间TSR7:SETB WDDATARET;-------------------; 读出转换后的温度值;-------------------GET_TEMPER:SETB WDDATA ; 定时入口LCALL INIT_1820 ;先复位DS18B20JB FLAG1,TSS2RET ; 判断DS1820是否存在?若DS18B20不存在则返回MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#44H ; 发出温度转换命令LCALL WRITE_1820MOV R0,#50 ;等待AD转换结束,12位的话750微秒.LCALL DELAYLCALL INIT_1820 ;准备读温度前先复位MOV A,#0CCH ; 跳过ROM匹配LCALL WRITE_1820MOV A,#0BEH ; 发出读温度命令LCALL WRITE_1820LCALL READ_18200; 将读出的九个字节数据保存到60H-68H RET;----------------------------------;写DS18B20的子程序(有具体的时序要求);----------------------------------WRITE_1820:MOV R2,#8 ;一共8位数据CLR CWR1:CLR WDDATAMOV R3,#6DJNZ R3,$RRC AMOV WDDATA,CMOV R3,#24DJNZ R3,$SETB WDDATANOPDJNZ R2,WR1SETB WDDATARET;--------------------------------------------------; 读DS18B20的程序,从DS18B20中读出九个字节的数据;--------------------------------------------------READ_18200:MOV R4,#9MOV R1,#60H ; 存入60H开始的九个单元RE00:MOV R2,#8RE01:SETB WDDATANOPNOPCLR WDDATANOPNOPNOPSETB WDDATAMOV R3,#09RE10:DJNZ R3,RE10MOV C,WDDATAMOV R3,#23RE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV @R1,AINC R1DJNZ R4,RE00RET;------------------------;温度计算子程序;------------------------FORMULA: ; 按公式:T实际=(T整数-0.25)+( M每度-M剩余)/ M每度;计算出实际温度,整数部分和小数部分分别存于ZHENGSHU单元和DOT单元;将61H中的低4位移入60H中的高4位,得到温度的整数部分,并存于ZHENGSHU单元MOV 29H,61HMOV A,60HMOV C,48HRRC AMOV C,49HRRC AMOV C,4AHRRC AMOV C,4BHRRC AMOV ZHENGSHU,A; ( M每度-M剩余)/ M每度,小数值存于A中MOV A,67hMOV B,#64HMUL ABMOV R4,BMOV R5,AMOV R7,67HLCALL DIV457MOV A,R3;再减去0.25,实际应用中减去25SUBB A,#19HMOV DOT,A ;小数部分存于DOT中MOV A,ZHENGSHUSUBB A,#00H ;整数部分减去来自小数部分的借位MOV ZHENGSHU,AMOV C,4BHJNC ZHENG ;是否为负数CPL AINC AMOV DIS_1,#2DH ; 零度以下时,第一位显示"-"号MOV ZHENGSHU,AZHENG:MOV DIS_1,#2BH ; 零度以上时,第一位显示"+"号RET;------------------------;双字节除以单字节子程序;------------------------DIV457: CLR CMOV A,R4SUBB A,R7JC DV50SETB OV ;商溢出RETDV50: MOV R6,#8 ;求平均值(R4R5/R7-→R3)DV51: MOV A,R5RLC AMOV R5,AMOV A,R4RLC AMOV R4,AMOV F0,CCLR CANL C,/F0JC DV52MOV R4,ADV52: CPL CMOV A,R3RLC AMOV R3,ADJNZ R6,DV51MOV A,R4 ;四舍五入ADD A,R4JC DV53SUBB A,R7JC DV54DV53: INC R3DV54: CLR OVRET;---------------------;转换成非压缩的BCD码;---------------------BCD: MOV A,ZHENGSHUMOV B,#0AHDIV ABORL A,#00110000B ;转换成ASCII码MOV DIS_2,AMOV DIS_3,BMOV A,DIS_3ORL A,#00110000B ;转换成ASCII码mov DIS_3,AMOV A,DOTMOV B,#0AHDIV ABORL A,#00110000B ;转换成ASCII码MOV DIS_4,AMOV DIS_5,BMOV A,DIS_5ORL A,#00110000B ;转换成ASCII码mov DIS_5,ARET;----------------------;串口显示数据子程序;----------------------CLR TIMOV A,DIS_1MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示+/-CLR TIMOV A,DIS_2MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示整数第一位CLR TIMOV A,DIS_3MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示整数第二位CLR TIMOV A,#2EHMOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示小数点CLR TIMOV A,DIS_4MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示小数第一位CLR TIMOV A,DIS_5MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示小数第一位CLR TIMOV A,#0DH;换行MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示CLR TIMOV A,#0AH;换行MOV SBUF,AJNB TI,$ ;发送给PC,通过串口调试助手显示RET;----------------------;延时子程序;----------------------;为保证DS18B20的严格I/O时序,需要做较精确的延时;在DS18B20操作中,用到的延时有15 μs,90 μs,270 μs,540 μs ;因这些延时均为15 μs的整数倍,因此可编写一个DELAY15(n)函数DELAY: ;11.05962M晶振LOOP: MOV R1,#06HLOOP1: DJNZ R1,LOOP1DJNZ R0,LOOPRET;500毫秒延时子程序,占用R4、R5 DELAY500:MOV R4,#248DA222:MOV R5,#248DJNZ R5,$DJNZ R4,DA222RETEND。

相关文档
最新文档