打印
[51单片机]

DS18B20的操作问题!!和大家探讨一下!

[复制链接]
562|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我看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
恩恩!看到这句话了!但是一般情况下直接更在屁股后面,重新开始握手写命令读数,这个过程最多也就一两毫 ...

有点印象,没有转换完成就输出之前的数据

使用特权

评论回复
5
ningling_21| | 2015-8-8 09:27 | 只看该作者
while(1)
    {
        //启动温度转换
       sendChangeCmd();
       //显示5次
        for(i = 0; i < 40; i++)
        {
           display(tempValue);
        }
        tempValue = getTmpValue();  //读取转换后的温度



启动转换后,也有很多程序里有延时,再读取温度值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

56

帖子

1

粉丝