求助DS18B20多点测温为何不能统一转换,依次读取? 点击:1317 | 回复:2



gmsyxf

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:7
  • 注册:2004年4月14日
发表于:2004-04-14 19:32:00
楼主
求助DS18B20多点测温为何不能统一转换,依次读取?    本人编写的DS18B20多点测温程序,AT89C51的P1.0接DQ,VCC接+5V,三线测量,DQ通过4.7K电阻上拉到VCC,GND接到电源地。共有2个DS18B20,测温电缆为屏蔽双绞线20米,当两个DS18B20分别匹配转换测量时结果正常,流程如下:复位->跳过匹配(0CCH)->发出温度转换命令(44H)->延时1妙->复位->匹配1号DS18B20(55H)->读取1号温度-> 复位->跳过匹配(0CCH)->发出温度转换命令(44H)->延时1妙->复位->匹配2号DS18B20(55H)->读取2号温度。这样测得两个DS18B20的温度都是正确的。问题是现在每采集一个温度都要进行一次转换操作,要延时1妙,这样要耗费大量的时间,速度就极慢了无法忍受。当采用统一转换,连续读取的方法时,仅能读取到第一个匹配的DS18B20的温度,第二个匹配的DS18B20温度无法读取,只显示0.0625度,流程如下:复位->跳过匹配(0CCH)->发出温度转换命令(44H)->延时1妙->复位->匹配1号DS18B20(55H)->读取1号温度->复位->匹配2号DS18B20(55H)->读取2号温度。不知是否这个读取流程有错,为何仅读到第一个温度,请各位帮助分析一下原因。



bsb0217

  • 精华:0帖
  • 求助:0帖
  • 帖子:14帖 | 6回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2004年7月13日
发表于:2004-11-08 15:17:00
1楼
to 51MCU: 你后面的流程没有错,我试过了,我接了3个DS18B20(B6版)的,可以正确读取温度。唯一与你有差别的就是我的3个挨得很近,和单片机的距离也很近。

sjh600ck

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2010-06-05 10:15:51
2楼

你好,我也在做DS18B20的匹配,复位之后是不是要等待一下1820的应答,我的还没调通,我的邮箱是sjh600ck@126.comQQ:493477606关照一下小弟,谢谢


热门招聘
相关主题

官方公众号

智造工程师