1.基于DS1820 的数字温度计的毕业设计论文
基于DS18B20温度传感器的数字温度计设计 目 录 基于DS18B20温度传感器的数字温度计设计 1 基于DS18B20温度传感器的数字温度计设计 1 摘要: 1 关键字: 1 The conception of the numerical thermometer based on DS18B20 1 1 引言 2 2 总体设计 2 2.1 方案论证 2 2.2 总体设计 3 3 硬件设计 3 3.1 单片机系统 3 3.2 温度传感器模块 4 3.3 存储模块 7 3.4 液晶显示模块 9 3.5 串口通信模块 11 3.6 电源模块 12 4 软件设计 13 4.1 主程序流程 13 4.2 DS18B20模块程序设计 13 4.3 HS1602驱动程序设计 16 4.4 AT24C08存储模块程序设计 18 4.5 RS-232-C串口通信模块程序设计 19 5 测试及结果分析 22 6 附录 23 7 参考资料 24。
2.谁有《数字温度计毕业论文》
基于AT89S2051单片机的单总线数字温度计设计摘要】介绍了使用AT89S2051单片机及DS18B20的数字温度计的设计,以及如何用单片机和数字温度传感器构造一个小型的温度测量系统。
【关键词】单片机;温度传感器;温度控制温度是一种最基本的环境参数,人民的生活环境与温度息息相关,因此研究温度的测量方法和装置具有重要意义,测量温度的关键是温度传感器,本文将介绍新型的智能集成温度传感器DS18B20的使用方法,以及用单片机AT89C2051对DS18B20的编程实现温度测量。1单线数字温度计DS18B20介绍Dallas半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。
DS18B20数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入18B20或从18B20送出,因此从主机CPU到DS18B20仅需一条线(和地线)。
DS18B20的测量范围从-55℃到+125℃,增量值为0.5℃,在-10~+85°C范围内,精度为±0.5°C。可在1秒钟(典型值)内把温度变换成数字。
DS18B20的性能是新一代产品中最好的,性能价格比也非常出色。让我们可以构建适合自己的经济的测温系统。
2 DS18B20的内部结构及温度表示DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下:DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端。
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。
3用单片机AT89C2051及数字温度传感器DS18B20构建一个温度测量系统根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
对于DS18B20的读时序分为读0时序和读1时序两个过程: 在实际制作过程中考虑到芯片的体积(AT89C2051的大小仅为AT89C51的四分之一),及对一般的气温测量只需精确到一摄氏度,我们选用了AT89C2051和两位一体共阳极7段数码管,通过对DS18B20的编程(使用汇编语言),在KEIL软件中编译通过,用万能板制作成功,实现温度的测量,用单片机AT89C2051和DS18B20构成测温系统,用两位共阳数码管显示温度值,读取DS18B20及用两位共阳数码管显示温度的汇编语言程序如下:ORG0000H单片机内存分配申明TEMPER_LEQU29H;用于保存读出温度的低8位TEMPER_H EQU28H;用于保存读出温度的高8位FLAG1 EQU38H;是否检测到DS18B20标志位a_bit equ 20h;数码管个位数存放内存位置b_bit equ 21h;数码管十位数存放内存位置MAIN:LCALLGET_TEMPER;调用读温度子程序MOVA,29HMOVC,40H;将28H中的最低位移入CRRCAMOVC,41HRRCAMOVC,42HRRCAMOVC,43HRRCAMOV29H,ALCALLDISPLAY;调用数码管显示子程序AJMP MAIN;循环显示INIT_18B20:;这是DS18B20复位初始化子程序SETBP3.2NOPCLR P3.2MOVR1,#3;主机发出延时537微秒的复位低脉冲TSR1:MOVR0,#107DJNZR0,$ DJNZR1,TSR1SETBP3.2;然后拉高数据线NOPNOPNOPMOVR0,#25HTSR2:JNBP3.2,TSR3;等待DS18B20回应DJNZR0,TSR2LJMP TSR4;延时TSR3:SETBFLAG1;置标志位,表示DS18B20存在LJMP TSR5TSR4:CLR FLAG1;清标志位,表示DS18B20不存在LJMP TSR7TSR5:MOVR0,#117TSR6:DJNZR0,TSR6;时序要求延时一段时间TSR7:SETBP3.2RETGET_TEMPER:;读出转换后的温度值SETBP3.2LCALLINIT_18B20;先复位DS18B20JBFLAG1,TSS2RET;判断DS18B20是否存在?若DS18B20不存在则返回TSS2:;DS18B20已经被检测到!MOVA,#0CCH;跳过ROM匹配LCALLWRITE_18B20MOVA,#44H;发出温度转换命令LCALLWRITE_18B20这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒LCALLDISPLAYLCALLINIT_18B20;准备读温度前先复位MOVA,#0CCH;跳过ROM匹配LCALLWRITE_18B20MOVA,#0BEH;发出读温度命令LCALLWRITE_18B20LCALL READ_18B20;将读出的温度数据保存到35H/36HRETWRITE_18B20:;写DS18B20的子程序(有具体的时序。
3.温度传感器而做的电子温度计毕业论文
基于DS18B20温度传感器的数字温度计设计字数:9092,页数:26 论文编号:JD457 价格:120元基于DS18B20温度传感器的数字温度计设计摘要:本文介绍了一种基于DS18B20的数字温度计设计方案。
方案利用AT89S52单片机控制DS18B20进行数据采集并由HS1602液晶显示模块显示结果,另外,采集结果可由RS-232-C接口送入计算机显示并存储。按键控制实现过界报警温度设定和实时监控,利用AT24C08芯片进行存储,实现温度测量存储与再现。
关键字:温度采集,存储再现,过界报警,串行通信目 录摘要。
1关键字。
.11 引言。
.22 总体设计。
..22.1 方案论证。
..22.2 总体设计。
33 硬件设计。
..33.1 单片机系统 。
.33.2 温度传感器模块。
..43.3 存储模块。
.73.4 液晶显示模块 。
93.5 串口通信模块。
113.6 电源模块 。
124 软件设计。
134.1 主程序流程。
..134.2 DS18B20模块程序设计。
134.3 HS1602驱动程序设计。
.164.4 AT24C08存储模块程序设计。
184.5 RS-232-C串口通信模块程序设计。
.195 测试及结果分析 。
.226 附录 。
.237 参考资料。
.24以上回答来自: /42-2/2760.htm。
4.基于AT89S52和DS18B20的数字温度计的设计报告
#include <AT89X51.H>#include<intrins.h>unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, 0x00,0x40};unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,25, 28,31,34,38,41,44,48, 50,53,56,59,63,66,69, 72,75,78,81,84,88,91,94,97};unsigned char displaycount;unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};signed int timecount;unsigned char readdata[8];sbit DQ=P3^7;bit sflag;bit resetpulse(void){ unsigned char i; DQ=0; for(i=255;i>0;i--); DQ=1; for(i=60;i>0;i--); return(DQ); for(i=200;i>0;i--);}void writecommandtods18b20(unsigned char command) { unsigned char i; unsigned char j; for(i=0;i<8;i++) { if((command&0x01)==0) { DQ=0; for(j=35;j>0;j--); DQ=1; } else { DQ=0; for(j=2;j>0;j--); DQ=1; for(j=33;j>0;j--); } command=_cror_(command,1); } } unsigned char readdatafromds18b20(void) { unsigned char i; unsigned char j; unsigned char temp; temp=0; for(i=0;i<8;i++) { temp=_cror_(temp,1); DQ=0; _nop_(); _nop_(); DQ=1; for(j=10;j>0;j--); if(DQ==1) { temp=temp|0x80; } else { temp=temp|0x00; } for(j=200;j>0;j--); } return(temp); } void main(void) { TMOD=0x01; TH0=(65535-4000)/256; TL0=(65535-4000)%256; ET0=1; EA=1; while(resetpulse()); writecommandtods18b20(0xcc); writecommandtods18b20(0x44); TR0=1; while(1) { ; } } void t0 (void) interrupt 1 using 0 { unsigned char x; unsigned int result; TH0=(65535-4000)/256; TL0=(65535-4000)%256; if(displaycount==2) { P0=displaycode[displaybuf[displaycount]]|0x80; } else { P0=displaycode[displaybuf[displaycount]]; } P2=displaybit[displaycount]; displaycount++; if(displaycount==8) { displaycount=0; } timecount++; if(timecount==500) { timecount=0; while(resetpulse()); writecommandtods18b20(0xcc); writecommandtods18b20(0xbe); readdata[0]=readdatafromds18b20(); readdata[1]=readdatafromds18b20(); for(x=0;x<8;x++) { displaybuf[x]=16; } sflag=0; if((readdata[1]&0xf8)!=0x00) { sflag=1; readdata[1]=~readdata[1]; readdata[0]=~readdata[0]; result=readdata[0]+1; readdata[0]=result; if(result>255) { readdata[1]++; } } readdata[1]=readdata[1]<<4; readdata[1]=readdata[1]&0x70; x=readdata[0]; x=x>>4; x=x&0x0f; readdata[1]=readdata[1]|x; x=2; result=readdata[1]; while(result/10) { displaybuf[x]=result%10; result=result/10; x++; } displaybuf[x]=result; if(sflag==1) { displaybuf[x+1]=17; } x=readdata[0]&0x0f; x=x<<1; displaybuf[0]=(dotcode[x])%10; displaybuf[1]=(dotcode[x])/10; while(resetpulse()); writecommandtods18b20(0xcc); writecommandtods18b20(0x44); } } 好不好使不知道,也是摘抄的,错了别介意啊,呵呵。
5.数字温度计的设计(DS18B20)
提供参考/********************************************************* DS18B20温度传感器 ** C51 ** yajou 2008-06-28 无CRC *********************************************************/#include "reg51.h"#include "intrins.h"#include "DS18B20.h"/********************************************************* us延时程序 *********************************************************/void Delayus(uchar us) {while(us--); //12M,一次6us,加进入退出14us(8M晶振,一次9us) }/********************************************************* DS18B20初始化 *********************************************************/bit Ds18b20_Init(void) //存在返0,否则返1{bit temp = 1;uchar outtime = ReDetectTime; //超时时间while(outtime-- && temp){Delayus(10); //(250)1514us时间可以减小吗ReleaseDQ();Delay2us();PullDownDQ();Delayus(100); //614us(480-960)ReleaseDQ();Delayus(10); //73us(>60)temp = dq;Delayus(70); //us}return temp;}/********************************************************* 写bit2DS18B20 *********************************************************/void Ds18b20_WriteBit(bit bitdata){if(bitdata){PullDownDQ();Delay2us(); //2us(>1us)ReleaseDQ(); //(上述1-15)Delayus(12); //86us(45- x,总时间>60)}else{PullDownDQ();Delayus(12); //86us(60-120)}ReleaseDQ();Delay2us(); //2us(>1us)}/********************************************************* 写Byte DS18B20 *********************************************************/void Ds18b20_WriteByte(uchar chrdata){uchar ii;for(ii = 0; ii < 8; ii++){Ds18b20_WriteBit(chrdata & 0x01);chrdata >>= 1;}}/********************************************************* 写 DS18B20 *********************************************************///void Ds18b20_Write(uchar *p_readdata, uchar bytes)//{// while(bytes--)// {// Ds18b20_WriteByte(*p_readdata);// p_readdata++;// }//}/********************************************************* 读bit From DS18B20 *********************************************************/bit Ds18b20_ReadBit(void){bit bitdata;PullDownDQ();Delay2us(); //2us( >1us)ReleaseDQ();Delay8us(); //8us( <15us)bitdata = dq;Delayus(7); //86us(上述总时间要>60us)return bitdata;}/********************************************************* 读Byte DS18B20 *********************************************************/uchar Ds18b20_ReadByte(void){uchar ii,chardata;for(ii = 0; ii < 8; ii++){chardata >>= 1;if(Ds18b20_ReadBit()) chardata |= 0x80;}return chardata;}/********************************************************* 读 DS18B20 ROM *********************************************************/bit Ds18b20_ReadRom(uchar *p_readdata) //成功返0,失败返1{uchar ii = 8;if(Ds18b20_Init()) return 1;Ds18b20_WriteByte(ReadROM);while(ii--){*p_readdata = Ds18b20_ReadByte();p_readdata++;}return 0;}/********************************************************* 读 DS18B20 EE *********************************************************/bit Ds18b20_ReadEE(uchar *p_readdata) //成功返0,失败返1{uchar ii = 2;if(Ds18b20_Init()) return 1;Ds18b20_WriteByte(SkipROM);Ds18b20_WriteByte(ReadScr);while(ii--){*p_readdata = Ds18b20_ReadByte();p_readdata++;}return 0;}/********************************************************* 温度采集计算 *********************************************************/bit TempCal(float *p_wendu) //成功返0,失败返1 (温度范围-55 --- +128){uchar temp[9],ii;uint tmp;float tmpwendu;TR1 = 0;TR0 = 0;//读暂存器和CRC值-----------------------if(Ds18b20_ReadEE(temp)){TR1 = 1;TR0 = 1;return 1;}//------------------------------------- //CRC校验------------------------------////此处应加入CRC校验等//////-------------------------------------//使温度值写入相应的wendu[i]数组中-----for(ii = i; ii > 0; ii--) {p_wendu++;}i++;if(i > 4) i = 0;//-------------------------------------//温度正负数处理-----------------------////-------------------------------------//温度计算-----------------------------tmp = temp[1]; //tmp <<= 8; //tmp |= temp[0]; //组成温度的两字节合并tmpwendu = tmp;*p_wendu = tmpwendu / 16;//-------------------------------------//开始温度转换-------------------------if(Ds18b20_Init()){TR1 = 1;TR0 = 1;return 1;}Ds18b20_WriteByte(SkipROM);Ds18b20_WriteByte(Convert);ReleaseDQ(); //寄生电源时要拉高DQ//------------------------------------TR1 = 1;TR0 = 1;return 0;}//////////DS18B20.h//////////////////////////********************************************************* I/O口定义 *********************************************************/sbit dq = P1^3;sbit dv = P1^4; //DS18B20强上拉电源/********************************************************* 命令字定义 *********************************************************/#define uchar unsigned char#define uint unsigned int#define ReleaseDQ() dq = 1; //上拉/释放总线#define PullDownDQ() dq = 0; //下拉总线#define Delay2us() _nop_();_nop_(); //延时2us,每nop 1us#define Delay8us() _nop_();。
6.数字温度计论文怎么写啊
你好,我有你需要的设计!需要的联系回答者 目 录 一、引言 4 二、设计内容及性能指标 5 三、系统方案论证与比较 5 (一)、方案一 5 (二)、方案二 6 四、系统器件选择 7 (一)、单片机的选择 7 1、89S51 引脚功能介绍 8 (二)、温度传感器的选择 10 1、DS18B20 简单介绍: 10 2、DS18B20 使用中的注意事项 12 3、DS18B20 内部结构 12 4、DS18B20测温原理 16 5、提高DS1820测温精度的途径 17 (三)、显示及报警模块器件选择 18 五、硬件设计电路 18 (一)、主控制器 19 (二)、显示电路 19 (三)、温度检测电路 20 (四)、温度报警电路 25 六、软件设计 26 (一)、概述 26 (二)、主程序模块 26 (三)、各模块流程设计 27 1、温度检测流程 28 2、报警模块流程 28 3、中断设定流程 29 七、总结和体会 31 八、致谢 31 仪器简介 数字温度计是测温仪器类型的其中之一。
根据所用测温物质的不同和测温范围的不同,有煤油温度计、酒精温度计、水银温度计、气体温度计、电阻温度计、温差电偶温度计、辐射温度计和光测温度计、双金属温度计等。编辑本段仪器参数和适用范围 数字温度计采用进口芯片组装精度高、高稳定性,误差≤0.5%, 内电源、微功耗、不锈钢外壳,防护坚固,美观精致。
数字温度计采用进口高精度、低温漂、超低功耗集成电路和宽温型液晶显示器,内置高能量电池连续工作≥5年无需敷设供电电缆,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。是传统现场指针双金属温度计的理想替代产品,广泛应用于各类工矿企业,大专院校,科研院所。
温度数我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。 数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。
这样就完成了数字温度计的基本测温功能。 数字温度计根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。
数字温度计有手持式,盘装式,及医用的小体积的等等。仪器发展历史 最早的温度计是在1593年由意大利科学家伽利略(1564~1642)发明的。
他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。使用时先给玻璃泡加热,然后把玻璃管插入水中。
随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。温度计有热胀冷缩的作用所以这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。
后来伽利略的学生和其他科学家,在这个基础上反复改进,如把玻璃管倒过来,把液体放在管内,把玻璃管封闭等。比较突出的是法国人布利奥在1659年制造的温度计,他把玻璃泡的体积缩小,并把测温物质改为水银,这样的温度计已具备了现在温度计的雏形。
以后荷兰人华伦海特在1709年利用酒精,在1714年又利用水银作为测量物质,制造了更精确的温度计。他观察了水的沸腾温度、水和冰混合时的温度、盐水和冰混合时的温度;经过反复实验与核准,最后把一定浓度的盐水凝固时的温度定为0℉,把纯水凝固时的温度定为32℉,把标准大气压下水沸腾的温度定为212℉,用℉代表华氏温度,这就是华氏温度计。
在华氏温度计出现的同时,法国人列缪尔(1683~1757)也设计制造了一种温度计。他认为水银的膨胀系数太小,不宜做测温物质。
他专心研究用酒精作为测温物质的优点。他反复实践发现,含有1/5水的酒精,在水的结冰温度和沸腾温度之间,其体积的膨胀是从1000个体积单位增大到1080个体积单位。
因此他把冰点和沸点之间分成80份,定为自己温度计的温度分度,这就是列氏温度计。? 华氏温度计制成后又经过30多年,瑞典人摄尔修斯于1742年改进了华伦海特温度计的刻度,他把水的沸点定为0度,把水的冰点定为100度。
后来他的同事施勒默尔把两个温度点的数值又倒过来,就成了现在的百分温度,即摄氏温度,用℃表示。华氏温度与摄氏温度的关系为 ℉=9/5℃+32,或℃=5/9(℉-32)。
现在英、美国家多用华氏温度,德国多用列氏温度,而世界科技界和工农业生产中,以及我国、法国等大多数国家则多用摄氏温度。数字温度测量仪表的精度等级和分度值 仪表名称 精度等级 分度值,℃(摄氏度) 双金属温度计 1,1.5,2.5 0.5~20 压力式温度计 1,1.5,2.5 0.5~20 玻璃液体温。
7.单片机控制数字温度计设计论文怎么写
单片机控制的数字温度计 要求四点 1.测量范围0-100摄氏度 2.分辨率1摄氏度 3.采用3位数码管显示 4.温度上下限报警输出,即达到预先设定的温度上下限值时,可闪烁显示或蜂鸣器发声报警 说的不就是DS18B20.多去了,找不着再向我要. 你上论坛找的 多得是 都是现成的 不想回答了,已经三遍了 在知道里搜索DS18B20,就能找到答案 声明:以下的是我复制的 DS18B20 特点 独特的一线接口,只需要一条口线通信 多点能力,简化了分布式温度传感应用 无需外部元件 可用数据总线供电,电压范围为3.0 V至5.5 V 无需备用电源 测量温度范围为-55 ° C至 125 ℃ 。
华氏相当于是-67 ° F到257华氏度 -10 ° C至 85 ° C范围内精度为±0.5 ° C 温度传感器可编程的分辨率为9~12位 温度转换为12位数字格式最大值为750毫秒 用户可定义的非易失性温度报警设置 应用范围包括恒温控制,工业系统,消费电子产品温度计,或任何热敏感系统 描述该DS18B20的数字温度计提供9至12位(可编程设备温度读数。信息被发送到/从DS18B20 通过1线接口,所以中央微处理器与DS18B20只有一个一条口线连接。
为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。 因为每一个DS18B20的包含一个独特的序号,多个ds18b20s可以同时存在于一条总线。
这使得温度传感器放置在许多不同的地方。它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。
8引脚封装 TO-92封装 用途 描述 5 1 接地 接地 4 2 数字 信号输入输出,一线输出:源极开路 3 3 电源 可选电源管脚。见"寄生功率"一节细节方面。
电源必须接地,为行动中,寄生虫功率模式。 不在本表中所有管脚不须接线 。
概况框图图1显示的主要组成部分DS18B20的。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
该装置信号线高的时候,内部电容器 储存能量通由1线通信线路给片子供电,而且在低电平期间为片子供电直至下一个高电平的到来重新充电。 DS18B20的电源也可以从外部3V-5 .5V的电压得到。
DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。
主要首先提供以下功能命令之一: 1 )读ROM, 2 )ROM匹配, 3 )搜索ROM, 4 )跳过ROM, 5 )报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。
若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。
测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH和TL都有一字节EEPROM 的数据。
如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。
写TH,TL指令以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。
所有的数据都读,写都是从最低位开始。 DS18B20有4个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8 X5 X4 1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2) DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。 表1 DS18B20温度值格式表。
转载请注明出处众文网 » ds18b20数字温度计的毕业论文