[51单片机] DS18B20的操作问题!!和大家探讨一下!

[复制链接]
966|4
 楼主| 星夜之北 发表于 2015-8-7 15:43 | 显示全部楼层 |阅读模式
我看18B20的数据手册上面写到,在启动温度转换后,转换需要几百毫秒,在这期间总线是被18B20拉低的以表示他正在忙于转换,转换完成以后才将总线释放。但是我看几乎所有人在使用18B20时都是在写完转换指令(0x44)以后,立即有重新握手,开始读数!这时候不是总线被忙占用吗!怎么可能成功呢??但是他就是成功了!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ayb_ice 发表于 2015-8-7 16:23 | 显示全部楼层
看清楚了,
“如果总线控制。。。。”

是发完整的读命令后才在输出数据时输出0,操作还是可以的,只是数据为0而已,可以通过这个来判断是否结束,一般不是老实等待一段时间吧
 楼主| 星夜之北 发表于 2015-8-7 16:42 | 显示全部楼层
ayb_ice 发表于 2015-8-7 16:23
看清楚了,
“如果总线控制。。。。”

恩恩!看到这句话了!但是一般情况下直接更在屁股后面,重新开始握手写命令读数,这个过程最多也就一两毫秒吧,那这么说咱们平时操作时,读到的数据并不是咱们本次启动转换所转换出来的数据,而是上一次或更早时间前 转换的数据,因为这么短的时间间隔根本转换不出来啊!
ayb_ice 发表于 2015-8-7 17:22 | 显示全部楼层
星夜之北 发表于 2015-8-7 16:42
恩恩!看到这句话了!但是一般情况下直接更在屁股后面,重新开始握手写命令读数,这个过程最多也就一两毫 ...

有点印象,没有转换完成就输出之前的数据
ningling_21 发表于 2015-8-8 09:27 | 显示全部楼层
  1. while(1)
  2.     {
  3.         //启动温度转换
  4.        sendChangeCmd();
  5.        //显示5次
  6.         for(i = 0; i < 40; i++)
  7.         {
  8.            display(tempValue);
  9.         }
  10.         tempValue = getTmpValue();  //读取转换后的温度



启动转换后,也有很多程序里有延时,再读取温度值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

56

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部