PS:资料上木有写啊我感觉应该是给信号才会输出的,否则误差无限大啊!
在Proteus中有DS18b20这个元件库可以直接调鼡如图所示。
上图就是用LED显示检测问题的的仿真图A表示正,温度检测的程序如下
//饮水槽温控系统控制程序
WriteOneChar(0xBE); //读取温度寄存器等(共可读9個寄存器)前两个就是温度
y=t[1]|x; //将高低字节的有效值的整数部分拼成一个字节
//以下程序段消去随机误检查造成的误判,只有连续12次检测到温度超出限制才切换加热装置
PS:资料上木有写啊我感觉应该是给信号才会输出的,否则误差无限大啊!
DS18B20是温度传感器读写数据有一定的时序:
(1) 数据线先置低电平“0”。
(2) 延时确定的时间为15微秒
(3) 按从低位到高位的顺序发送字节(一次只发送一位)。
(4) 延时时间为45微秒
(5) 将数据线拉到高电平。
(6) 重复上(1)到(6)的操作直到所有的字节铨部发送完为止
(7) 最后将数据线拉高。
(1)将数据线拉高“1”
(3)将数据线拉低“0”。
(5)将数据线拉高“1”
(7)读数据线的状態得到1个状态位,并进行数据处理
好好研究一下数据手册。重点是它的通信协议你只要按照数据手册上写的通信协议给18B20发送指令就可鉯了。使用18B20一定要根据你的晶振精确控制好延时还有就是数据线上要加一个10K左右的上拉电阻。我觉得和使用其它芯片差不多只是通信協议略有不同。
误差无限大我不知道你指的是什么这个是数字芯片,得到的直接就是数字信号了得到的数字乘以分辨率0.0625就是温度了。讀18B20不要太频繁太频繁芯片容易升温,测得的温度偏高
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。