18B20应用手册
- 格式:doc
- 大小:142.00 KB
- 文档页数:7
18B20应⽤⼿册DoYoung 电⼦技术—创造独⽴资源!18B20温度传感器应⽤解析DoYoung 原创V2.0 2007.3.16DS18B20温度传感器的种类众多,在应⽤与⾼精度、⾼可靠性的场合时DALLAS(达拉斯)公司⽣产的DS18B20温度传感器当仁不让。
超⼩的体积,超低的硬件开消,抗⼲扰能⼒强,精度⾼,附加功能强,使得DS18B20更受欢迎。
对于我们普通的电⼦爱好者来说,DS18B20的优势更是我们学习单⽚机技术和开发温度相关的⼩产品的不⼆选择。
了解其⼯作原理和应⽤可以拓宽您对单⽚机开发的思路。
DS18B20的主要特征:.. 全数字温度转换及输出。
.. 先进的单总线数据通信。
.. 最⾼12位分辨率,精度可达⼟0.5摄⽒度。
.. 12位分辨率时的最⼤⼯作周期为750毫秒。
.. 可选择寄⽣⼯作⽅式。
.. 检测温度范围为–55°C ~+125°C (–67°F ~+257°F).. 内置EEPROM,限温报警功能。
.. 64位光刻ROM,内置产品序列号,⽅便多机挂接。
.. 多样封装形式,适应不同硬件系统。
DS18B20芯⽚封装结构:图1DS18B20引脚功能:·GND 电压地·DQ 单数据总线·VDD 电源电压·NC 空引脚DS18B20⼯作原理及应⽤:DS18B20的温度检测与数字数据输出全集成于⼀个芯⽚之上,从⽽抗⼲扰⼒更强。
其⼀个⼯作周期可分为两个部分,即温度检测和数据处理。
在讲解其⼯作流程之前我们有必要了解18B20的内部存储器资源。
18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,⽤于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后⾯48位是芯⽚唯⼀的序列号,最后8位是以上56的位的CRC码(冗余校验)。
数据在出产时设置不由⽤户更改。
DS18B20共64位ROM。
图1 DS18B20的封装图DS18B20的特点:1、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内2、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃3、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定4、工作电源: 3~5V/DC5、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温,测量结果以9~12位数字量方式串行传送6、在9位分辨率时最多在 93.75ms内把温度转换为数字量,12位分辨率时最多在750ms内把温度值转换为数字量,速度更快7、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力8、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作1)产品型号与规格型号测温范围安装螺纹电缆长度适用管道TS-18B20 -55~125 无 1.5 mTS-18B20A -55~125 M10X1 1.5m DN15~25TS-18B20B -55~125 1/2G 接线盒 DN40~60DS18B20测温原理如图2所示:图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
DS18B20部分说明DS18B20的特点:DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点:( 1 )采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
( 2 )测量温度范围宽,测量精度高DS18B20 的测量范围为-55 ℃~+ 125 ℃; 在-10~+ 85 C范围内,精度为±0.5°C 。
( 3 )在使用中不需要任何外围元件。
( 4 )持多点组网功能多个DS18B20 可以并联在惟一的单线上,实现多点测温。
( 5 )供电方式灵活DS18B20 可以通过内部寄生电路从数据线上获取电源。
因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而使系统结构更趋简单,可靠性更高。
( 6 )测量参数可配置DS18B20 的测量分辨率可通过程序设定9~12 位。
( 7 ) 负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
( 8 )掉电保护功能DS18B20 内部含有EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。
DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。
DS18B20内部结构:主要由4部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。
64位ROM的排的循环冗余校验码(CRC=X^8+X^5+X^4+1)。
ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
18B20操作方法:一、初始化18B20根据初始化时序图,编写初始化函数。
1.发送初始化脉冲,即DQ=0;延时486us。
2.释放总线,即DQ=1;延时57us。
3.读总线状态,检测是否收到存在脉冲。
即判断DQ是否为0,若为0则证明18B20存在。
4.释放总线,即DQ=1;延时57us。
二、向18B20写入ROM指令根据写0、1时序图,编写写“位”函数。
先判断写入数据为“1”还是“0”,可通过“按位与(&)、右移一位(>>1)”运算来实现。
若写入位数据为“1”,执行以下时序:1.发送时隙初始化脉冲,即DQ=0;延时2us。
2.释放总线,即DQ=1;延时45us。
若写入位数据为“0”,执行以下时序:1.发送时隙初始化脉冲,即DQ=0;延时57us。
2.释放总线,即DQ=1;延时2us。
按照以上时序规则,依次写入8个位(借助for循环),即可实现写入ROM指令的操作。
编写好写ROM指令函数后,依次执行写(0xCC)、写(0xBE)两条指令,便可进入下一步。
三、从18B20读出温度数据根据读0、1时序图,编写读“位”函数。
1.发送时隙初始化脉冲,即DQ=0;延时1us。
2.释放总线,即DQ=1;延时2us(要求15us内完成该操作,故延迟较小)。
3.单片机采样,即读取DQ值(temp=DQ);延时45us。
按照以上读时隙规则,依次读出8个位(借助for循环和左移7位(7<<)、右移1位(>>1)及按位与(&)的运算)便可形成一个字节的数据。
四、生成温度数据对读出的字节数据进行处理,转换成整数。
1.初始化18B20。
2.写入ROM指令(写(0xCC)、写(0xBE)两条指令)。
3.接收数据。
(先低字节,后高字节)4.处理数据。
(a、定义无符号整形变量(占2个字节);b、高字节左移8位(8<<)并赋值给无符号整形变量,并判断该数据的正负(制定数据并按位与(&)),例如判断(high&0xF8)==0xF8,根据情况添加正负标志位flag=1或flag=0。
1.DS18B20基本知识DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
1、DS18B20产品的特点(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
2、DS18B20的引脚介绍TO-92封装的DS18B20的引脚排列见图1,其引脚功能描述见表1。
(底视图)图1表1DS18B20详细引脚功能描述3.DS18B20的使用方法由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20的复位时序DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
DS18B20数据手册-中文版概述DS18B20数字温度传感器提供9-Bit 到12-Bit的摄氏温度测量精度和一个用户可编程的非易失性且具有过温和低温触发报警的报警功能。
DS18B20采用的1-Wire通信即仅采用一个数据线(以及地)与微控制器进行通信。
该传感器的温度检测围为-55℃至+125℃,并且在温度围超过-10℃至85℃之外时还具有+-0.5℃的精度。
此外,DS18B20可以直接由数据线供电而不需要外部电源供电。
每片DS18B20都有一个独一无二的64位序列号,所以一个1-Wire总线上可连接多个DS18B20设备。
因此,在一个分布式的大环境里用一个微控制器控制多个DS18B20是非常简单的。
这些特征使得其在HV AC环境控制,在建筑、设备及机械的温度监控系统,以及温度过程控制系统中有着很大的优势。
特性·独特的1-Wire总线接口仅需要一个管脚来通信。
·每个设备的部ROM上都烧写了一个独一无二的64位序列号。
·多路采集能力使得分布式温度采集应用更加简单。
·无需外围元件。
·能够采用数据线供电;供电围为 3.0V至5.5V。
·温度可测量围为:-55℃至+125℃(-67℉至+257℉)。
·温度围超过-10℃至85℃之外时具有+-0.5℃的精度。
·部温度采集精度可以由用户自定义为9-Bits 至12-Bits。
DS18B20 分辨率可编程1-Wire数字温度传感器·温度转换时间在转换精度为12-Bits时达到最大值750ms。
·用户自定义非易失性的的温度报警设置。
·定义了温度报警搜索命令和当温度超过用户自定义的设定值时。
·可选择的8-Pin SO (150 mils), 8-PinμSOP,及3-Pin TO-92封装。
·与DS1822程序兼容。
·应用于温度控制系统,工业系统,民用产品,温度传感器,或者任何温度检测系统中。
18b20程序及应用时间:2011-07-29 23:39:41 来源:作者:DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20产品的特点(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
TO-92封装的DS18B20的引脚排列见下图,其引脚功能描述见下:1.GND地信号2.DQ数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3.VDD可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
18b20应用电路图18B20控制命令字18B20的ROM命令指令说明读ROM(33H) 读18B20的序列号匹配ROM(55H) 继续读完64位序列号的命令,用于多个18B20时定位跳过ROM(CCH) 此命令执行后的在存储器打操作针对在线所有18B20 搜ROM(F0H) 识别总线上各器件的编码,为操作各器件做准备报警搜索(ECH) 公温度越限的器件对此命令作出响应18B20存储控制命令指令说明DJNZ R7,LOOP0RETTAB:DB 0C0H,0F9H,0A4H,0B0HDB 99H, 92H, 82H, 0F8HDB 80H, 90H, 88H, 83HDB 0C6H,0A1H,86H, 8EHDB 0FFHEND温度转换(44H) 启动在线ds18B20做温度AD转换读数据(BEH) 从高速暂存器读9位温度值和CRC值写数据(4EH) 将数据写入高速暂存的第3和第4字节中复制(48H) 将高速暂存器中第3和第4字节复制到EERAM读EERAM(B8H) 将EERAM内容写入高速暂存器中第3和第4字节读电源供电方式(B4H) 了解18B20的供电方式18b20程序WENDU_L EQU 29H;用于保存读出温度的低字节WENDU_H EQU 28H;用于保存读出温度的高字节XIAOSHU EQU 27H;用于保存温度的小数部分ZHENGSHU EQU 26H;用于保存整数部分BIAOZHI BIT 50H;18B20检查位1为存在,0为不存在ORG 0000HAJMP MAINORG 0030HMAIN:MOV SCON,#00HACALL DUWENACALL ZHENGHEACALL BCDACALL DISPACALL TIME1AJMP MAIN;-----------------------------------------------------------------------------------------------;读温度子程序;----------------------------------------------------------------------------------------------- DUWEN:SETB P2.0ACALL FUWEI ;读温度之前必须先复位JB BIAOZHI,CUNZAI;查看标志位看18B20是否存在,1为存在,0为不存在RET ;不存在则返回CUNZAI: ;存在则开始读温度MOV A,#0CCH ;跳过ROM匹配ACALL XIE ;调写子程序MOV A,#44H ;发出温度转换命令ACALL XIE ;调写子程序ACALL TIME1 ;调1秒延时,等等AD转换完成,现在分辨率为12位,温度最大转换时间为750MSACALL FUWEI ;读温前需要复位MOV A,#0CCH ;跳过ROM匹配ACALL XIEMOV A,#0BEH ;发读温度命令ACALL XIEACALL DUSHU ;将闱出数据读回CLR P1.2RET;----------------------------------------------------------------------------------------------- ;复位子程序;18B20复位需要将数据位拉低500us;18B20收到信号后要等待16-60us,然后发出60-240us的低脉冲;----------------------------------------------------------------------------------------------- FUWEI:SETB P2.0NOPCLR P2.0MOV R0,#3INTE:MOV R1,#107 ;设一个537us延时KK1: DJNZ R1,KK1DJNZ R0,INTESETB P2.0 ;拉高数据线,等待回应NOPNOPNOPMOV R0,#25 ;INTE1:JNB P2.0,INTE2 ;延时延时50us等待18B20回应,若返回低脉冲则说明18B20存在DJNZ R0 ,INTE1AJMP INTE3 ;经过反应时间而没检测到18B20的存在,则跳转去清零标志位INTE2:SETB BIAOZHI ;检测到18B20存在,置1标志位CLR P1.0AJMP INTE4INTE3:CLR BIAOZHI ;没检测到18B20,清零标志位AJMP INTE5INTE4:MOV R0,#120 ;延时240us,确定回应信号已发完KK: DJNZ R0,KKINTE5:SETB P2.0RET;----------------------------------------------------------------------------------------------------------------------------------------;写18B20子程序;-----------------------------------------------------------------------------------------------------------------------------------------XIE:MOV R2,#8 ;写计数寄存器,一共有8位数据CLR CLP:CLR P2.0MOV R3,#6 ;设一个延时LL1:DJNZ R3,LL1RRC A ;右循环,先输出低位MOV P2.0,CMOV R3,#23 ;设延时LL: DJNZ R3,LL ;SETB P2.0NOPNOPDJNZ R2,LP ;判断是否完成数据传送SETB P2.0 ;完成传送拉高数据位RET;-----------------------------------------------------------------------------------------------------------------------------------------;从18B20中读出温度数据子程序;-----------------------------------------------------------------------------------------------------------------------------------------DUSHU:MOV R4,#2 ;设读回数据个数指针MOV R1,#WENDU_L ;把温度数据低位存入29HRE: MOV R2,#8 ;设数据长度指针RE1: CLR CSETB P2.0NOPNOPCLR P2.0NOPNOPNOPSETB P2.0MOV R3,#9DJNZ R3,$MOV C,P2.0MOV R3,#23NN: DJNZ R3,NNRRC ADJNZ R2,RE1MOV @R1,ADEC R1 ;高位存入28HDJNZ R4,RERET;---------------------------------------------------------------------------------------------------------------------------------;数据整合子程序;温度源数据的整合,读出数据的高字节的低四位决定温度的整数部分;低字节的低四位决定小数部分;-----------------------------------------------------------------------------------------------------------------------------ZHENGHE:MOV A,#0FHANL A,WENDU_L ;低字节的低四位就是小数部分MOV XIAOSHU,A ;获得小数部分MOV A,WENDU_L ;将高字节的低四位移入低字节的高4位,MOV C,40H ;获得的新字节就是整数部分的数据RRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV ZHENGSHU,ARET;-----------------------------------------------------------------------------------------------------------------------------------------;显示数据拆解程序、显示程序、延时程序;----------------------------------------------------------------------------------------------------------------------------------------;数据拆解程序BCD:MOV A,ZHENGSHUMOV B,#10DIV ABMOV 50H,AMOV 51H,BMOV A,XIAOSHUMOV R0,#52HMOV R2,#4D0:MOV B,#10MUL ABMOV B,#16DIV ABMOV @R0,AINC R0MOV A,BDJNZ R2,D0RET;----------------------------------- ;显示程序;---------------------------------- DISP:ACALL TIMEMOV R7,#6MOV DPTR,#TAB MOV R0,#55HLP1:MOV A ,@R0;MOVC A,@A+DPTR CJNE R7,#2,NE1ANL A,#07FHNE1:MOV SBUF,AJNB TI ,$CLR TIDEC R0DJNZ R7,LP1RET;---------------------------------------- ;延时程序;---------------------------------------- TIME1:MOV R6,#4LOOP2:MOV R5,#250LOOP1:ACALL D1MSDJNZ R5,LOOP1DJNZ R6,LOOP2RETTIME:MOV R6,#200LOOP3:ACALL D1MSDJNZ R6,LOOP3RETD1MS:MOV R7,#250LOOP0:NOPNOPNOP。
DoYoung 电子技术—创造独立资源!18B20温度传感器应用解析DoYoung 原创V2.0 2007.3.16DS18B20温度传感器的种类众多,在应用与高精度、高可靠性的场合时DALLAS(达拉斯)公司生产的DS18B20温度传感器当仁不让。
超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得DS18B20更受欢迎。
对于我们普通的电子爱好者来说,DS18B20的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。
了解其工作原理和应用可以拓宽您对单片机开发的思路。
DS18B20的主要特征:.. 全数字温度转换及输出。
.. 先进的单总线数据通信。
.. 最高12位分辨率,精度可达土0.5摄氏度。
.. 12位分辨率时的最大工作周期为750毫秒。
.. 可选择寄生工作方式。
.. 检测温度范围为–55°C ~+125°C (–67°F ~+257°F).. 内置EEPROM,限温报警功能。
.. 64位光刻ROM,内置产品序列号,方便多机挂接。
.. 多样封装形式,适应不同硬件系统。
DS18B20芯片封装结构:图1DS18B20引脚功能:·GND 电压地·DQ 单数据总线·VDD 电源电压·NC 空引脚DS18B20工作原理及应用:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。
其一个工作周期可分为两个部分,即温度检测和数据处理。
在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。
18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。
数据在出产时设置不由用户更改。
DS18B20共64位ROM。
RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。
第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。
在上电复位时其值将被刷新。
第5个字节则是用户第3个EEPROM的镜像。
第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。
第9个字节为前8个字节的CRC码。
EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。
RAM及EEPROM结构图:图2我们在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。
控制器对18B20操作流程:1,复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20 单总线至少480uS的低电平信号。
当18B20接到此复位信号后则会在15~60uS后回发一个芯片的存在脉冲。
2,存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在15~60uS 后接收存在脉冲,存在脉冲为一个60~240uS的低电平信号。
至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。
如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。
3,控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。
ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。
其主要目的是为了分辨一条总线上挂接的多个器件并作处理。
诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。
ROM指令在下文有详细的介绍。
4,控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。
操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。
存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。
5,执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。
如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。
如执行数据读写指令则需要严格遵循18B20的读写时序来操作。
数据的读写方法将有下文有详细介绍。
若要读出当前的温度数据我们需要执行两次工作周期,第一个周期为复位、跳过ROM指令、执行温度转换存储器操作指令、等待500uS 温度转换时间。
紧接着执行第二个周期为复位、跳过ROM指令、执行读RAM的存储器操作指令、读数据(最多为9个字节,中途可停止,只读简单温度值则读前2个字节即可)。
其它的操作流程也大同小异,在此不多介绍。
DS18B20芯片与单片机的接口:图3图4如图所示,DS18B20只需要接到控制器(单片机)的一个I/O口上,由于单总线为开漏所以需要外接一个4.7K的上拉电阻。
如要采用寄生工作方式,只要将VDD电源引脚与单总线并联即可。
但在程序设计中,寄生工作方式将会对总线的状态有一些特殊的要求。
图5DS28B20芯片ROM指令表:Read ROM(读ROM)[33H] (方括号中的为16进制的命令字)这个命令允许总线控制器读到DS18B20的64位ROM。
只有当总线上只存在一个DS18B20的时候才可以使用此指令,如果挂接不只一个,当通信时将会发生数据冲突。
Match ROM(指定匹配芯片)[55H]这个指令后面紧跟着由控制器发出了64位序列号,当总线上有多只DS18B20时,只有与控制发出的序列号相同的芯片才可以做出反应,其它芯片将等待下一次复位。
这条指令适应单芯片和多芯片挂接。
Skip ROM(跳跃ROM指令)[CCH]这条指令使芯片不对ROM编码做出反应,在单总线的情况之下,为了节省时间则可以选用此指令。
如果在多芯片挂接时使用此指令将会出现数据冲突,导致错误出现。
Search ROM(搜索芯片)[F0H]在芯片初始化后,搜索指令允许总线上挂接多芯片时用排除法识别所有器件的64位ROM。
Alarm Search(报警芯片搜索)[ECH]在多芯片挂接的情况下,报警芯片搜索指令只对附合温度高于TH或小于TL报警条件的芯片做出反应。
只要芯片不掉电,报警状态将被保持,直到再一次测得温度什达不到报警条件为止。
DS28B20芯片存储器操作指令表:Write Scratchpad (向RAM中写数据)[4EH]这是向RAM中写入数据的指令,随后写入的两个字节的数据将会被存到地址2(报警RAM之TH)和地址3(报警RAM之TL)。
写入过程中可以用复位信号中止写入。
Read Scratchpad (从RAM中读数据)[BEH]此指令将从RAM中读数据,读地址从地址0开始,一直可以读到地址9,完成整个RAM数据的读出。
芯片允许在读过程中用复位信号中止读取,即可以不读后面不需要的字节以减少读取时间。
Copy Scratchpad (将RAM数据复制到EEPROM中)[48H]此指令将RAM中的数据存入EEPROM中,以使数据掉电不丢失。
此后由于芯片忙于EEPROM储存处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。
在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持10MS,来维持芯片工作。
Convert T(温度转换)[44H]收到此指令后芯片将进行一次温度转换,将转换的温度值放入RAM的第1、2地址。
此后由于芯片忙于温度转换处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。
在寄生工作方式时必须在发出此指令后立刻超用强上拉并至少保持500MS,来维持芯片工作。
Recall EEPROM(将EEPROM中的报警值复制到RAM)[B8H]此指令将EEPROM中的报警值复制到RAM中的第3、4个字节里。
由于芯片忙于复制处理,当控制器发一个读时间隙时,总线上输出“0”,当储存工作完成时,总线将输出“1”。
另外,此指令将在芯片上电复位时将被自动执行。
这样RAM中的两个报警字节位将始终为EEPROM中数据的镜像。
Read Power Supply(工作方式切换)[B4H]此指令发出后发出读时间隙,芯片会返回它的电源状态字,“0”为寄生电源状态,“1”为外部电源状态。
DS18B20复位及应答关系示意图:图6每一次通信之前必须进行复位,复位的时间、等待时间、回应时间应严格按时序编程。
DS18B20读写时间隙:DS18B20的数据读写是通过时间隙处理位和命令字来确认信息交换的。
写时间隙:图7写时间隙分为写“0”和写“1”,时序如图7。
在写数据时间隙的前15uS总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15~60uS,采样时间内如果控制器将总线拉高则表示写“1”,如果控制器将总线拉低则表示写“0”。
每一位的发送都应该有一个至少15uS的低电平起始位,随后的数据“0”或“1”应该在45uS内完成。
整个位的发送时间应该保持在60~120uS,否则不能保证通信的正常。
读时间隙:图8读时间隙时控制时的采样时间应该更加的精确才行,读时间隙时也是必须先由主机产生至少1uS的低电平,表示读时间的起始。
随后在总线被释放后的15uS中DS18B20会发送内部数据位,这时控制如果发现总线为高电平表示读出“1”,如果总线为低电平则表示读出数据“0”。
每一位的读取之前都由控制器加一个起始信号。
注意:如图8所示,必须在读间隙开始的15uS内读取数据位才可以保证通信的正确。
在通信时是以8位“0”或“1”为一个字节,字节的读或写是从高位开始的,即A7到A0.字节的读写顺序也是如图2自上而下的。