ds18b20学习及例程详解教学讲义.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ds18b20学习及例程详解教学讲义.ppt

Ds18b20使用;二,ds18b20特点;当转换分辨率为12位时,最大转换时间为750ms; 用户可定义的,非易失性(及断电不消失)的高低警报温度设置; 可选择的 8-pin SO (150mil), 8-pin μSOP, 和 3-pin TO-92 封装; 软件协议与ds1822兼容; 在温度控制,工业系统,日常消费品,等领域广泛使用。;三,特点详述;任何一个ds18b20,都有仅属于自己的一个64位的识别码,这使得,可以有多个ds18b20通过一条数据线与主机相连并发挥功能,换句话说,也就是一个主机,可以通过一条数据线,同时控制多个ds18b20进行工作(可以在大范围,多地点温度采集控制中使用); ;四,ds18b20内部构造综述;64位ROM存储了ds18b20的唯一的序列码: 高速暂存寄存器包含了2byte的温度存储器,用来存储ds18b20温度转换得到的数据; ;非易失性的警报触发存储器,用来存储高低警报温度T_high与T_low; configuration register:用户对其操作,可以控制ds18b20的转换精度;;Ds18b20存在一个内部电容Cpp,起到寄生电源的作用; 这使得,ds18b20的Vdd接地时,依然可以通过数据线,获取power,当DQ为高电平时,Cpp充电,当DQ为低电平时,Cpp放电,为ds18b20提供能量;;五,温度寄存器;温度寄存器格式如图; 其中高位字节中的bit11-bit15这五位用来表示温度的正负; 即s=0时,表示温度为正值; S=1时,表示温度为负值;;Ds18b20有用户可控的9-12位转换精度; 当转换精度为12位时,如图,由bit0-bit11存储(符号也算一位)。 转换精度为11位时,bit0不再使用; 转换精度为10位时,bit0,bit1不再使用; 转换精度为9位时,bit0-bit2不再使用;;12位转换精度时的存储示例图: 12位转换精度时,即最小分辨率为0.0625 负数存储时采用补码方式;;这里有一点需要主要的是:Ds18b20温度存储器是高速暂存,也就是说,ds18b20掉电时,这个数据将会丢失。 Ds18b20上电复位时,温度存储器中内容,默认为+85℃。所以,使用ds18b20时,如果在温度显示之前,没有来的及进行一次转换完成,那么就会看到一个85℃的短暂显示。;六,警报信号;与TH(或TL)中的bit7-bit0,相对应的是温度存储器中的bit11-bit4,两者进行比较; 当温度TH或TL时,处于ds18b20内部中的警报标志将会置位。 每一次温度转换后,ds18b20中的警报标志位都会刷新。所以如果警报状况消失后,在接下来的一次温度转换中,这个标志位将清零。;主机可以通过[ECh]命令来查看警报标志位情况。(具体祥看datasheet);七,ds18b20供电;两种情况电路图:;;使用寄生电源时,具体注意事项,看datasheet 第5页 ;八,配置寄存器;九,信息控制交互顺序;操作时遵从这个顺序十分重要,因为这个顺序中任何一个步骤丢失或者不按规定执行,ds18b20将不会进行响应。 可以不按这个顺序进行的命令只有search rom【F0H】以及Alarm Search [ECh] commands,因为在以上两个命令进行后,必须紧随着进行的是step1,即初始化命令。;十,初始化;存在脉冲,使得主机知道,在数据线上,存在着ds18b20准备好了接受操作命令; 首先,主机将数据线,拉低480us以上,然后释放数据线(即使其变为高电平),15—60us等待后,ds18b20将数据线拉低60-240us作为应答,然后释放数据线,等待与应对整个过程应该480us以上.整个初始化完成。 ;初始化时序:;所对应的程序: 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() { uint i; //while(ds); //这行无用,反而容易出现错误,可注释掉 while(!ds); //检测到应答脉冲 i=60; while(i 0) i--; //延时,因为ds18b20会拉低dq约240us,切RX时间不小于480us };十一,ROM cmd;所有的rom cmd SEARCH ROM [F0h] READ ROM [33h] MATCH

文档评论(0)

yuzongxu123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档