ds18b20学习及例程详解课件.ppt

上传人(卖家):晟晟文业 文档编号:4370983 上传时间:2022-12-03 格式:PPT 页数:64 大小:1.56MB
下载 相关 举报
ds18b20学习及例程详解课件.ppt_第1页
第1页 / 共64页
ds18b20学习及例程详解课件.ppt_第2页
第2页 / 共64页
ds18b20学习及例程详解课件.ppt_第3页
第3页 / 共64页
ds18b20学习及例程详解课件.ppt_第4页
第4页 / 共64页
ds18b20学习及例程详解课件.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、Ds18b20使用一、ds18b20介绍 温度传感器的种类众多,在应用于高精度、高可靠性的场合时 DALLAS(达拉斯)公司生产的 DS18B20 温度传感器当仁不让。超小的体积,超低的硬件开消,抗干扰能力强,精度高,附加功能强,使得 DS18B20 更受欢迎。二,ds18b20实物与示例图二,ds18b20特点 与主机相互通信,只需要一根导线;出厂时,任何一个ds18b20在其ROM中都有存储自己唯一的一个64位的serial code;Vcc接地时,可以只由信号线,获取能量,电压为3.3v-5v;温度转换范围为-55+125(67F to+257F);在-10+85之间,转换精确度为0.5

2、;转换分辨率,912位(用户可控);当转换分辨率为12位时,最大转换时间为750ms;用户可定义的,非易失性(及断电不消失)的高低警报温度设置;可选择的 8-pin SO(150mil),8-pin SOP,和 3-pin TO-92 封装;软件协议与ds1822兼容;在温度控制,工业系统,日常消费品,等领域广泛使用。三,特点详述 Ds18b20提供了912位精度的温度转换功能,以及非易失性的高低温度报警;Ds18b20与主机交换信息时最少只需要一根数据线(当然地线必须接地);-55+125转换,在-10+85之间精度为0.5 Ds18b20可以仅由数据线获取power(因为ds18b20内部

3、有一个寄生电容在数据线为3.3-5v时存储power,当数据线为低电平时为其供电)而不需要外接电源;任何一个ds18b20,都有仅属于自己的一个64位的识别码,这使得,可以有多个ds18b20通过一条数据线与主机相连并发挥功能,换句话说,也就是一个主机,可以通过一条数据线,同时控制多个ds18b20进行工作(可以在大范围,多地点温度采集控制中使用);四,ds18b20内部构造综述 Ds18b20内部构造框架图为:64位ROM存储了ds18b20的唯一的序列码:高速暂存寄存器包含了2byte的温度存储器,用来存储ds18b20温度转换得到的数据;非易失性的警报触发存储器,用来存储高低警报温度T_

4、high与T_low;configuration register:用户对其操作,可以控制ds18b20的转换精度;Ds18b20存在一个内部电容Cpp,起到寄生电源的作用;这使得,ds18b20的Vdd接地时,依然可以通过数据线,获取power,当DQ为高电平时,Cpp充电,当DQ为低电平时,Cpp放电,为ds18b20提供能量;五,温度寄存器 Ds18b20内部有一个2byte的高速暂存寄存器,用来存储ds18b20转换得到的温度数据;温度寄存器格式如图;其中高位字节中的bit11-bit15这五位用来表示温度的正负;即s=0时,表示温度为正值;S=1时,表示温度为负值;Ds18b20有用

5、户可控的9-12位转换精度;当转换精度为12位时,如图,由bit0-bit11存储(符号也算一位)。转换精度为11位时,bit0不再使用;转换精度为10位时,bit0,bit1不再使用;转换精度为9位时,bit0-bit2不再使用;12位转换精度时的存储示例图:12位转换精度时,即最小分辨率为0.0625 负数存储时采用补码方式;这里有一点需要主要的是:Ds18b20温度存储器是高速暂存,也就是说,ds18b20掉电时,这个数据将会丢失。Ds18b20上电复位时,温度存储器中内容,默认为+85。所以,使用ds18b20时,如果在温度显示之前,没有来的及进行一次转换完成,那么就会看到一个85的短

6、暂显示。六,警报信号 每当ds18b20完成一次温度转换后,都会将得到的数据与两个警报存储器中的数据进行比较。与TH(或TL)中的bit7-bit0,相对应的是温度存储器中的bit11-bit4,两者进行比较;当温度TH或480us以上,然后释放数据线(即使其变为高电平),1560us等待后,ds18b20将数据线拉低60-240us作为应答,然后释放数据线,等待与应对整个过程应该480us以上.整个初始化完成。初始化时序:所对应的程序:void dsinit()uint i;ds=0;i=60;while(i 0)i-;/延时523us(datasheet要求480us)ds=1;i=4;w

7、hile(i 0)i-;/*ds18b20wait函数void dswait()uint i;/while(ds);/这行无用,反而容易出现错误,可注释掉 while(!ds);/检测到应答脉冲 i=60;while(i 0)i-;/延时,因为ds18b20会拉低dq约240us,切RX时间不小于480us十一,ROM cmd ROM CMD作为step2,是主机对ds18b20的64序列码的操作,保证在数据线上有一个以上ds18b20时,能找到选定其中的一个。这些命令也可以使主机检测有多少或什么样的device在数据线上,以及是否有device处于了警报状态。主机必须确保在进行ds18b20

8、功能命令前,先进行一个rom cmd。所有的rom cmd SEARCH ROM F0h READ ROM 33h MATCH ROM 55h SKIP ROM CCh ALARM SEARCH ECh 具体各命令作用祥看datasheet。因为这里,我们只外接一个ds18b20,不需要进行64位序列码确认。也没有警报功能。所以,只需要进行skip ROMcch命令即可。程序中该语句为 writebyte(0 xcc);/skip rom cmd十二,ds18b20功能命令 这些命令可以使主机对ds18b20的高速暂存寄存器中某些寄存器进行读写、开启一次温度转换以及检测电源供应方式。所有的功能

9、命令:CONVERT T 44h 温度转换命令 WRITE SCRATCHPAD 4Eh READ SCRATCHPAD BEh COPY SCRATCHPAD 48h RECALL E2 B8h READ POWER SUPPLY B4h 这里,我们只需要启动温度转换和读取结果两个命令;程序中:writebyte(0 x44);/convert T cmd writebyte(0 xbe);/read scratchpad cmd 程序:启动一次温度转换的完整程序/向ds18b20发送温度转换指令void sendchangecmd()dsinit();/初始化ds18b20 dswait(

10、);/等待da18b20回应 writebyte(0 xcc);/skip rom cmd writebyte(0 x44);/convert T cmd 读取温度结果的命令顺序:/向ds18b20读取数据命令void sendreadcmd()dsinit();dswait();writebyte(0 xcc);/skip rom cmd writebyte(0 xbe);/read scratchpad cmd 其他操作顺序,可以详看datasheet,图11,讲解很详细。我们这里只是最简单的应用。十三,write time slot 主机在write time slot时对ds18b20

11、进行写操作;很显然,write有两种情况:Write 1 and write 0;无论是write 1 or write 0,write slot 最少持续60us。而且,两次write 之间,间隔必须大于1us,作为recover time;Write 1:首先,主机将数据线拉低,并在15us之内释放数据线;当释放数据先后,主机将数据线拉高保持45us Write 0:很简单,只需要主机,将数据线拉低,并保存60us以上即可;程序:void writebyte(uchar dat)uint i;uchar j;bit b;for(j=0;j=1;if(b)/写“1”,将ds拉低15us后,在

12、15us60us内将ds拉高,即完成写1 ds=0;i+;i+;/拉低约6us,符合 0)i-;/延时约64us,与前6us相加60us else /写“0”,将ds拉低60us-120us ds=0;i=8;while(i 0)i-;/延时约72us ds=1;i+;i+;/整个写“0”过程已经超过60us,这里就不需要延时太长了 这里要注意一下 b=dat&0 x01;dat=1;这使得b依次取到dat的八位(有低位到高位)这是因为,ds18b20读写时,均采取由低位到高位的顺序十四,read time slots 只有主机开始read time slot时,ds18b20才能向主机传送信

13、息;Therefore,the master must generate read time slots immediately after issuing a Read Scratchpad BEh or Read Power Supply B4h command,so that the DS18B20 can provide the requested data;与write 一样,read time slots 最少需要持续60us以上,而且两次read之间最少需要1us的间隔即recover time;一个read time slot 是由主机拉低数据位开始的;主机拉低数据位最少需要1

14、us(即1us;Ds18b20传输出来的数据,在主机拉低数据线后15us时有效,所以,主机必须在拉低数据线后15us以内释放数据线,并在即将到15us时,对数据线上的值进行采集;看15,16图,也就是说,主机采集数据线上数据时,最好尽量靠近15us末尾时;程序:bit readbit()uint i;bit b;ds=0;i+;/延时约8us 符合至少1us ds=1;i+;i+;/延时6us 符合在15us内取样 b=ds;i=8;while(i 0)i-;/延时约64us 符合读时隙不小于60us return b;在readbit基础上得到readbyte的程序:uchar readby

15、te()uint i;uchar j,dat;dat=0;for(i=0;i 8;i+)j=readbit();/最先读出的为低位dat=(j 1);return dat;注意 j=readbit();/最先读出的为低位dat=(j 1);通过移位和或操作,将得到的bit,按照先低位后高位的顺序组成一个byte;附录:程序:/*ds18b20init函数void dsinit()uint i;ds=0;i=60;while(i 0)i-;/延时523us(datasheet要求480us)ds=1;i=4;while(i 0)i-;/*ds18b20wait函数 void dswait()ui

16、nt i;/while(ds);/while(!ds);/检测到应答脉冲 i=60;while(i 0)i-;/延时,因为ds18b20会拉低dq约240us,切RX时间不小于480us/*向DS18B20读取一位数bit readbit()uint i;bit b;ds=0;i+;/延时约8us 符合至少1us ds=1;i+;i+;/延时6us 符合在15us内取样 b=ds;i=8;while(i 0)i-;/延时约64us 符合读时隙不小于60us return b;/*向ds18b20读取一个字节,使用readbit()uchar readbyte()uint i;uchar j,d

17、at;dat=0;for(i=0;i 8;i+)j=readbit();/最先读出的为低位dat=(j 1);return dat;/*向ds18b20写一字节数据void writebyte(uchar dat)uint i;uchar j;bit b;for(j=0;j=1;if(b)/写“1”,将ds拉低15us后,在15us60us内将ds拉高,即完成写1 ds=0;i+;i+;/拉低约6us,符合 0)i-;/延时约64us,与前6us相加60uselse /写“0”,将ds拉低60us-120us ds=0;i=8;while(i 0)i-;/延时约72us ds=1;i+;i+;

18、/整个写“0”过程已经超过60us,这里就不需要延时太长了 /*向ds18b20发送温度转换指令 void sendchangecmd()dsinit();/初始化ds18b20 dswait();/等待da18b20回应 writebyte(0 xcc);/skip rom cmd writebyte(0 x44);/convert T cmd /*向ds18b20读取数据命令 void sendreadcmd()dsinit();dswait();writebyte(0 xcc);/skip rom cmd writebyte(0 xbe);/read scratchpad cmd/*获取当前温度int gettmpvalue()uint tmpvalue;int value;float t;uchar low,high;sendreadcmd();/读取两个字节温度数据 low=readbyte();high=readbyte();/合并为一个整形变量 tmpvalue=high;tmpvalue 0?0.5:-0.5);return value;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(ds18b20学习及例程详解课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|