ds18b20学习及例程详解.ppt_第1页
ds18b20学习及例程详解.ppt_第2页
ds18b20学习及例程详解.ppt_第3页
ds18b20学习及例程详解.ppt_第4页
ds18b20学习及例程详解.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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; 转换分辨率,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-5v时存储power,当数据线为低电平时为其供电)而不需要外接电源;,任何一个ds18b20,都有仅属于自己的一个64位的识别码,这使得,可以有多个ds18b20通过一条数据线与主机相连并发挥功能,换句话说,也就是一个主机,可以通过一条数据线,同时控制多个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提供能量;,五,温度寄存器,Ds18b20内部有一个2byte的高速暂存寄存器,用来存储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的短暂显示。,六,警报信号,每当ds18b20完成一次温度转换后,都会将得到的数据与两个警报存储器中的数据进行比较。,与TH(或TL)中的bit7-bit0,相对应的是温度存储器中的bit11-bit4,两者进行比较; 当温度TH或TL时,处于ds18b20内部中的警报标志将会置位。 每一次温度转换后,ds18b20中的警报标志位都会刷新。所以如果警报状况消失后,在接下来的一次温度转换中,这个标志位将清零。,主机可以通过ECh命令来查看警报标志位情况。(具体祥看datasheet),七,ds18b20供电,分为两种: Vdd接外部电源供电; Vdd与GND连接置地,由内部寄生电源供电;,两种情况电路图:,使用寄生电源时,具体注意事项,看datasheet 第5页,八,配置寄存器,用来控制ds18b20的转换精度;,九,信息控制交互顺序,Step 1. Initialization Step 2. ROM Command (followed by any required data exchange) Step 3. DS18B20 Function Command (followed by any required data exchange),操作时遵从这个顺序十分重要,因为这个顺序中任何一个步骤丢失或者不按规定执行,ds18b20将不会进行响应。 可以不按这个顺序进行的命令只有search rom【F0H】以及Alarm Search ECh commands,因为在以上两个命令进行后,必须紧随着进行的是step1,即初始化命令。,十,初始化,所有对ds18b20的处理都是由初始化开始的。 初始化过程,包含主机的reset 脉冲传递(reset pulse transmitted)和一个紧随其后的,ds18b20的存在脉冲传递(presence pulse(s) transmitted)。,存在脉冲,使得主机知道,在数据线上,存在着ds18b20准备好了接受操作命令; 首先,主机将数据线,拉低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; 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作为step2,是主机对ds18b20的64序列码的操作,保证在数据线上有一个以上ds18b20时,能找到选定其中的一个。 这些命令也可以使主机检测有多少或什么样的device在数据线上,以及是否有device处于了警报状态。 主机必须确保在进行ds18b20功能命令前,先进行一个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(0xcc); /skip rom cmd,十二,ds18b20功能命令,这些命令可以使主机对ds18b20的高速暂存寄存器中某些寄存器进行读写、开启一次温度转换以及检测电源供应方式。,所有的功能命令: CONVERT T 44h 温度转换命令 WRITE SCRATCHPAD 4Eh READ SCRATCHPAD BEh COPY SCRATCHPAD 48h RECALL E2 B8h READ POWER SUPPLY B4h,这里,我们只需要启动温度转换和读取结果两个命令; 程序中: writebyte(0x44); /convert T cmd writebyte(0xbe); /read scratchpad cmd,程序: 启动一次温度转换的完整程序 /向ds18b20发送温度转换指令 void sendchangecmd() dsinit(); /初始化ds18b20 dswait(); /等待da18b20回应 writebyte(0xcc); /skip rom cmd writebyte(0x44); /convert T cmd ,读取温度结果的命令顺序: /向ds18b20读取数据命令 void sendreadcmd() dsinit(); dswait(); writebyte(0xcc); /skip rom cmd writebyte(0xbe); /read scratchpad cmd ,其他操作顺序,可以详看datasheet,图11,讲解很详细。 我们这里只是最简单的应用。,十三,write time slot,主机在write time slot时对ds18b20进行写操作; 很显然,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后,在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 这使得b依次取到dat的八位(有低位到高位)这是因为,ds18b20读写时,均采取由低位到高位的顺序,十四,read time slots,只有主机开始read time slot时,ds18b20才能向主机传送信息; 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 是由主机拉低数据位开始的; 主机拉低数据位最少需要1us(即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 readbyte() uint i; uchar j,dat; dat = 0; for(i = 0;i 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() uint 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,dat; dat = 0; for(i = 0;i 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论