根据DSl8B20的通讯协议,主机控制DSl8B20完成温度转换必须经过三个步骤:每一次读写之前都要对DSl8B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DSl8B20进行预定的操作。复位要求主CPU将数掘线下拉500微秒,然后释放,DSl8B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位。
在DSl8B20内部存储器结构图中,包括一个暂存RAM和一个非易失性电可擦除EEPROM,暂存存储器作用是在单线通信时确保数据的完整性,它包括9个字节,头两个字节表示测得的温度数,温度/数据对应关系如表4—1所示。用户可自设定非易失性温度报警上下限值TH和TL(掉电后依然存在),DSl8B20在完成温度变换后,所测温度值将自动与贮存在TH和TL内的报警值相比较,如果高于TH或低于TL,DSl8B20内部的告警标志就会被置位。DSl8B20内部暂存存储器的第5个字节是结构寄存器,它的第5位R0和第6位R1主要用于确定温度值的数字转换分辨率,如表4—2。
DSl8B20与单片机的接口极其简单,只需将DSl8B20的信号线与单片机的一位双向端口相连即可。应注意将三线焊接牢固。另外也可用两个端口,即接收口与发送口分开,这样读写操作就分开了,不会出现信号竞争的问题。还可采用寄生电源方式,将DSl8B20的VDD与GND接在一起。如若VDD脱开未接好,传感器将只送+85.0℃的温度值。一般测温电缆线采用屏蔽4芯双绞线,其中一对接地线与信号线,另一对接VDD和地线,屏蔽层在源端单点接地。
表4-1 DSl8B20分辨率设置表
R1 R0 温度分辨率 最大转换时间
0 0 9 93.75ms
0 1 10 187.5ms
1 0 11 375ms
1 1 12 750ms
表4-2 DS18B20温度/数据对应关系表
温度( )
输出的二进制码 对应的十优尔进制码
+125 0000 0111 1101 0000 0700H
+85 0000 0101 0101 0000 0550H
+25.0625 0000 0001 1001 0001 0191H
+10.125 0000 0000 1010 0010 00A2H
+0.5 0000 0000 0000 1000 0008H
0 0000 0000 0000 0000 0000H
-0.5 1111 1111 1111 1000 FFF8H
-10.125 1111 1111 0101 1110 FF5EH
-25.0625 1111 1110 0110 1111 FF6FH
-55 1111 1100 1001 0000 FC90H
4.3.2 可调电阻x9313w
x9313w器件是数字控制电位计,器件主要由计数器,译码部分、电阻阵列、触点开关、控制部分、非挥发存贮器几部分组成。
当Cs为低电平时,选中器件,在INC下降沿时若U/O为低,则5位计数器减1,若U/D为高,则计数器加l。每来一个INC下降沿进行一次计数操作,并可将结果存进存贮器。电阻阵列由31个串连电阻元件和一个触点开关网络组成。每一个电阻元件的两端通过触点与滑动端Rw相连。RH、Rl相当于可调电阻的两端(选择型号为x9313w的数字控制电位计,其RH、Rl两端电阻的阻值为lOkQ),RW相当于可调电阻的滑头,通过编程改变RⅣ与RH、Rl问的电阻值,就像移动可调电阻的滑头使阻值改变一样。正常工作下5位计数器的译码输出用于驱动触点的闭合,从而使触点合上的位置与存贮器的值保持匹配,即当计数器加l时,触点合上的位簧往上移动一位(原来合上的触点就放开了)。当INC在Cs上升沿时保持低电平,触点在相应的位置闭合后存贮器将自动放弃存贮功能。 STM32单片机超声波测距系统的设计与实现+源程序(12):http://www.youerw.com/tongxin/lunwen_341.html