热门关键词:

基于DS18820的温度测量设计

  • 该文件为pdf格式
  • 文件大小:533.89KB
  • 浏览次数
  • 发布时间:2014-11-21
文件介绍:

本资料包含pdf文件1个,下载需要1积分

高速寄存器 由9个字节的存储器构成。第 0字节和第 1字节为温度传感器在经过温度转换命令执行后,经转换所得到的温度值以二字节补码形式存放这里,存储格式如表 2。单片机可通过单线接口 (指令 0BEH)读到该数据,读取时低位在前,高位在后。

表 2 温度数值存储格式Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 BitO2 2 2 2。 2- 2- 2-。 2-Bit7 Bit6 Bit5 Bit4 8jt3 Bit2 Bit1 BitOS S S S S 2。 2 2第 3字节为高温阈值存储器;第 4字节为低温阈值存储器 第 5字节为配置寄存器存储器,其存储格式如图2。RO、R1用来设置分辨率,配置寄存器与分辨率关系见表 3。

图2 配置寄存器存储格式表3 配置寄存器与分辨率关系表温度分辨率/ 最大转换时间 / R0 R1bit msO O 9 93.75O 1 1O 187.51 O l1 3751 1 12 750这 3个字节可以更新,出厂时已设置,用户不用改动。

DS18B20配置寄存器出厂时被设置为 l2位,其中最高位为符号位,温度值 1 1位。单片机在读取数据时,-次读完2个字节共 16位,将低 11位的二进制数转化为十进制数后再乘以0.0625,就得到了所测得的实际温度值。

另外,还需要判断温度的正负,这只需根据表 2中的S值来判定,当符号位 S0时,温度为正值,当SI时,温度为负值,且测得数值需先将补码变为原码,再转成十进制值数乘以0.0625,得到实际的温度值。

w2。1w3年w第. m3期rs总t第a77期m迹ii/iWWW ITIrsta o1TI . y三、DS1 8B20的指令和指令功能(-)ROM指令 (见表 4)表4 ROM指令l指令名称 指令代码 指令功能读DS18B2OROld中的编码 (即读 64位 读 RoM 33I地址)发出此命令之后,接着发出64位 ROM代码,访问单总线上与编码相对应的 匹配 ROM 55HDSI8B20使之作出响应,为下-步核对该DS18B20的读写做准备用于确定挂在同-总线上 DSI8B20的搜索 ROM 0FOH 个数和识别 64位 ROM地址,为操作各器件做好准备忽略 64位 ROM地址,直接向DS18B20 跳过 RoM OCCH发温度变换命令,适用于单片机工作该指令执行后,只有温度超过设定值 警报搜索 OECH上限或下限的片子才做出响应(-)RAM指令 (见表 5)表5 RAM指令指令名称 指令代码 指令功能启动 DSI8B20进行温度转换,转换时温度变换 44H 间最长为 500ms(典型的为 200ms),结果存入内部 9字节 RAM中读暂存器 0BEH 读内部 RAM中9字节的内容发出向内部 RAM的第 3、4字节写入上、写暂存器 4EH 下限温度数据命令,命令后是传送两字节数据将 RAbt中第 3、4字节的内容复制到 复制暂存器 48HE2ROM中E2ROM中的内容恢复到 RAM中的第 3、 重调 E2ROM OB8H4字节读 DSI8B20的供电模式,寄生供电时 读供电方式 OB4HDSI8B20发送 0”,外接供电发送 I”四、DS18B20接线DSI8B20使用的是 单总线”技术,即它采用-根信号线。在这条线上即可传输时钟,又可传输数据,而且数据的传输是双向的。因此这种 单总线”技术具有线路简单、成本低廉、便于总线扩展和维护等优点。

单总线适用于单主机系统,能够控制-个或多个从机设备。实例中采用单片机MSP430F249为主机、挂接1个 DSI8B20芯片为例,如果需要控制多个 DS18B20芯片进行温度采集,只需要将它们的 DQ端全部连接在-起,接到主机的I/0端口就可以了。

41 DS18B20芯片与单片机MSP430F249的连线,如图3所示。

图3 MSP430F249单片机与DS1 8B20连接原理图五、DS1 8B20的工作原理和时序图测量温度开始时,主机 MSP430F249需要对多个在线DS18B20中的某-个进行采集温度,首先需要确定这个 DS18B20芯片的序列号,以确定在-线上读取到该DS18B20芯片的温度值。方法是将主机逐个与 DS18B20连接,读出其序列号;然后再将所有的 DS18B20芯片连接到-总线上。MSP430F249发 出匹配 ROM 指令(055H),并紧接着发出该 DS18B20芯片的序列码,其后操作就是对这个 DS18B20芯片的了。如果只使用了-个 DS18B20芯片,就不需要读出其序列码和匹配ROM指令,只需要用跳过ROM (0CCH)指令即可,然后用 RAM 指令对该 DS18B20芯片进行温度转换和读取温度等操作。

DS18B20的单 总 线工 作 协 议 流程 是:初始 化- ROM操作指令-RAM 操作指令-数据传输。

其工作时序主要包括初始化时序、写时序和读时序,分述如下。

1.初始化时序初始化时序为 DS18B20启用工作时序,用来复位DS18B20芯片。复位时,单片机MSP430通过单总线数据输入 /输出口,按照初始化时序图,向DS18B20芯片发出初始化复位信号。复位以后,DS18B20芯片就进入准备工作状态,等待下-步工作指令。初始化时序图见图4。

42-480 s最小值 480 u s最小值 -960 u 5最小值 D 5l82O D31820'Ix等待 l 存在脉冲 l1%60 60- 240 s 。

l ff图4 初始化时序图2.写时序写时序为单片机MSP430向DS18B20发出指令时序。

DS18B20得到指令,按照指令要求进行相应的操作,准备好数据,等待下-步读取数据。写数据时序图见图5。

l DS18 20-e4 'H 墅 l il ; l I Is 扣 斗 ∞№-. 如 so -.I图5 写数据时序图3.读时序单片机 MSP430读取温度时,按照读数据时序将温度值 (两个字节)读到单片机中,格式如表 2 温度数值存储格式。经过计算,最终将测得的温度值存储到Temperature变量中。具体操作见下面实例程序。读数据时序图见图61Its< PilE<-图6 读数据时序图六、实例讲解1.温度采集程序 DS1 8B20.C”#include ”msp430f249.h”#include”DS18B20-H.h”void DSI8B20-DELAY(unsigned int DSI8B20-DELAYj)//延时约 1us while(DS18B20DELAYj--)-NOP;unsigned char DS1 8B20-RESET(void)//初始化复位程序见初始化时序图unsigned char al;DS18B20- OUT; DS18B20-LOW ; DS18B20-DELAY(800);DS1 8B20-HIGH;DS1 8B20DELAY(100);日 DS18B20IN;DS18B20DELAY(80);a1 (unsigned char)(DS18B20-PORT-IN &DS1 8B20PIN);DS18B20-DELAY(620);return(a1);unsigned char DS18B20-READBYTE(void、 ,,读-字节程序见读数据时序图unsigned char DS1 8B20READBYTE i;unsigned char DS1 8B2O-READBYTE-value lunsigned char al;DS1 8B20READBYTE-value 0;for(DSl 8B20-READBYTE-i8;DS1 8B20-READBYTE-i>O;DS1 8B2O-READBYTEj--)DS1 8B20-READBYTEvalue>> l;DS1 8B20-OUT; DS18B20-LOW ; DS1 8B20-DELAY(5)lDS18B20-IN;DS18B20-DELAY(2);a 1 (unsigned char)(DS 1 8B20-PORT-IN &DS18B20-PIN);if(a1>0)DS1 8B20-READBYTE-value I0x80;DS 1 8B20-DELAY(60);DS1 8B20-OUT; DS18B20-HIGH ; DSl8B20-DELAY(5);return DS1 8B20LREADBYTEvalue;void DS18B20-WRITEBYTE(unsigned charvalue)//写-字节程序见写数据时序图unsigned char DS1 8B20WRITEBYTEiunsigned char nBit,DS18B20-oUT;DS18B20HIGH ;for(DS1 8B20-WRITEBYTE-i8;DSl 8B20-WRITEBYTE-i>0;DS1 8B20WRITEBYTEj--)DSl8B20LOW;DS18B20-DELAY(15);nBit value& BIT0tif(nBit)DS18B20-HIGH;elseDS18B20LOW;DSl8B20-DELAY(50);DS18B20-HIGH;DS18B20-DELAY(10);value>> 1;DS 1 8B20DELAY(500);void DS 18B20CONVSTART(void)//发送温度转换程序2叭3年第 3期总掰 77期 l W .ITI r sta co胛 ◇unsigned DSI 8B20-CONV-STARTi;DS18B20-CONV- .STARTj 0 lDS1 8B20-CONV-START-i DSl 8B20- RESET;if(DS1 8B20-CONV-sTARTi0)DS 1 8B20-WRITEBYTE(0xcc);DS 1 8B20-WRITEBYTE(0x44);int DS 1 8B20- READTEMP(void)//读温度值unsigned DS1 8B20-READTEMPi;unsigned char DS18B20-READ-TEMP[2;int DS1 8B20- READ TEMP-t;DS 1 8B20-READ-TEMP-t 0 l DS 1 8B20- READ-TEMP-i 0;DS1 8B20-READ-TEM P-i DS1 8B20-RESET;if(DS l 8B20READ-TEMPj0)Ds 1 8B20-WRITEBYTE(0xcc);DS 1 8B20-WRITEBYTE(0xbe);DS18B20-READ-TEMPtemp[0 DS18B20-READBYTE;//温度数值低字节DS 1 8B20- READ-TEMP-temp[1] DS 1 8B20-READBYTE;//温度数值高字节DS 1 8B20READ-TEMPj DS 1 8B20READ-TEMP[1;DS1 8B20- READ.,rEMP-t DS1 8B20-READ-TEMPt<< 8tDS18B20READ-TEMPt DS18B20READ-TEMPt l DSt8B20READTEMP[o0;DS18B20 TIME-COUNT 0;return DS1 8B20READ-TEMP-t;//返回温度l0进制温度代码,整型值。

说明:此温度采集程序 DS18B20.C”开发使用的单片机是MSP430F249,程序是用来对其他产品进行温度补偿计算用的。系统时钟采用 16M,程序调试过程要按照上述时序图时间要求进行调试,不难达到目的。

2.配置文件 DS1 8B20-H.h”#ifndef DS18B20H#define DS18B20H//DS18B20用管脚 P1.5#define DS18B20 ORT OUT P1OUT //输出43 #define DS18B20PORTIN PIIN //输入#define DS18B20PORTj)IR PlDIR //方向#define DS18B20PIN BIT5 //接口#define DS18B20-OUT (DS18B20PORTj)IRfDS18B20PIN)//输出数据#define DS18B20-IN (DS18B20~PORT-DIR& DS1 8B20PIN)//输人数据#define DS18B20HIGH (DS18B20PORT-OUTIDS18B20PIN)//输出 l”#define DS l 8B20~LOW (DS 1 8B20-PORT-OUT & DS18B20LPIN)//输出 0”//函数声明void DS1 8B20-CONVSTART(void);//发送温度转换程序int DS18B20JREAD-]、EMP(void);//读温度值程序#endif说 明:程序 2是程序 1的配置文件,用来设 置DS18B20数据线对应的单片机管脚的I/O定义和函数声明。

3.主程序#include ”msp430f249.h”#include ”DS18B20.C”Float Temperature;void main(void)WDTCTL IT-Basic Clock(void);//系统初始化DS1 8B20-CONVSTART;//启动温度转换TIME- DELAY;//延时 1秒T em P e rat U r e DS 1 8B 2 0- R EAD-TEMP00.0625;//读取温度代码并换算。

DISPLAY 0;//调用显示程序说明:程序 3是主程序,用来调用程序 1采集温度值,由于原程序显示采用的是液晶屏,程序太大,在此不再加入显示程序,仅把温度数值存储到Temperature变量中,同行们自己编程时使用就可以了。程序在进行温度采集时,首先需要调用DS1 8B20-C0NVSTART启动温度转换,然后判断延时约 1秒钟后,再来读取温度值Temperature DS18B20READTEMP0。注意延迟时间判断不能等待,时间到读取温度数据,时间不到程序去服务别的工作。最好设定在转换结束时,加转换结束标志,这样就不需要等时间了。

七、结束语主要介绍了DS I 8B20温度传感器,并通过实例程序详解了单片机 MSP430利用单总线读取温度值的方法。

该程序已经调试通过并应用在产品中。由于DS18B20体积孝安装灵活、易于维护、成本低廉,能够满足大部分温度测量的要求。所以DS18B20的应用前景广阔,具有-定的市常

正在加载...请等待或刷新页面...
发表评论
验证码 验证码加载失败