低电平延时2us,然后主机转入输入模式延时12us,然后读取总线当前电平,然后延时50us[4]
3.2.2 ROM操作命令
当主机收到DSl8B20 的响应信号后,便可以发出ROM 操作命令之一,这些命令如表
2.2:ROM操作命令。
3.3 DS18B20的测温原理
3.3.1 DS18B20的测温原理:
每一片DSl8B20在其ROM中都存有其唯一的48位序列号,在出厂前已写入片内ROM 中。主机在进入操作程序前必须用读ROM(33H)命令将该DSl8B20的序列号读出。
程序可以先跳过ROM,启动所有DSl8B20进行温度变换,之后通过匹配ROM,再逐一地读回每个DSl8B20的温度数据。
DS18B20的测温原理如图2.4所示,图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值.
表3-1 ROM操作命令
指令
读ROM
符合ROM 约定代码 33H 55H 功 能 读DS18B20 ROM中的编码 发出此命令之后,接着发出64位ROM编码,访问单线总线上与该编码相对应的DS18B20 使之作出响应,为下一
步对该DS18B20的读写作准备
搜索ROM 0F0H 用于确定挂接在同一总线上DS18B20的个数和识别64位
ROM地址,为操作各器件作好准备
跳过ROM 0CCH 忽略64位ROM地址,直接向DS18B20发温度变换命令,
适用于单片工作。