搜索
bottom↓
回复: 12

求助:DS18B20读温度失败,请大神相助。附上部分代码。

[复制链接]

出0入0汤圆

发表于 2015-10-12 20:38:53 | 显示全部楼层 |阅读模式
本帖最后由 无心星矢 于 2015-10-12 20:40 编辑

单片机读取DS18B20温度失败,显示“0001”。
图片如下:

2.5ms的定时时标,2.5ms调用一次以下代码及刷新一次显示,代码如下:
  1. tWord v_Ds18b20ReadTemp_f( void )
  2. {
  3.         tWord TempH, TempL ;
  4.         tWord ReturnTemp ;
  5.         tByte Temp_G=0;
  6.                
  7.         if (++Temp_G == 6)
  8.       {
  9.       Temp_G = 0;
  10.       }

  11.    switch (Temp_G)
  12.       {
  13.       case 0:
  14.          {      
  15.          v_Ds18b20Init_f() ;
  16.          break;
  17.          }

  18.       case 1:
  19.          {
  20.                  _nop_();      
  21.          v_Ds18b20Write_f( 0xcc ) ; //Ìø¹ýROM
  22.          break;
  23.          }

  24.       case 2:
  25.          {      
  26.          v_Ds18b20Write_f( 0x44 ) ;
  27.          break;
  28.          }

  29.       case 3:
  30.          {      
  31.          v_Ds18b20Init_f() ;
  32.                  break;
  33.          }
  34.           case 4:
  35.                   {
  36.                 _nop_();
  37.                   v_Ds18b20Write_f( 0xcc ) ;
  38.                 break;
  39.                  }
  40.           case 5:
  41.            {
  42.            v_Ds18b20Write_f( 0xbe ) ;
  43.            }
  44.       }
  45.         TempL = v_Ds18b20Read_f() ;
  46.         TempH = v_Ds18b20Read_f() ;
  47.         ReturnTemp = TempH ;
  48.         ReturnTemp <<= 8 ;
  49.         ReturnTemp |= TempL ;
  50.         return ReturnTemp ;
  51. }
复制代码
  1. void v_TemperatureUpdate_f( void )
  2. {
  3.         tWord Tflag = 0 ;
  4.         tWord TempDat ,a,b,c;
  5.         float Temp ;
  6.         TempDat = v_Ds18b20ReadTemp_f() ;
  7.         if( TempDat & 0xf000 )
  8.         {
  9.                 Tflag = 1 ;
  10.                 TempDat = ~TempDat + 1 ;
  11.         }
  12.         Temp = TempDat *0.0625;
  13.         TempDat = Temp * 10+0.5 ;
  14.          a=TempDat / 100;
  15.          b=TempDat % 100 ;
  16.          b=b/ 10 ;
  17.          c=TempDat% 10 ;
  18.         Temperature[ 3 ] = 0x3F ;
  19.         Temperature[ 2 ] = LED_Table_G[a] ;
  20.         Temperature[ 1 ] = LED_Table_G[b] ;
  21.         Temperature[ 0 ] = LED_Table_G[c] ;
  22. }
复制代码

坐等解决。谢谢!

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2015-10-12 21:38:40 | 显示全部楼层
你这是一次性挂几个B20?还是就一个?

出0入0汤圆

发表于 2015-10-12 21:44:55 | 显示全部楼层
多读几次嘛~~~~~~~~~~~~~~~~

出0入0汤圆

 楼主| 发表于 2015-10-12 21:52:12 | 显示全部楼层
lcl 发表于 2015-10-12 21:38
你这是一次性挂几个B20?还是就一个?

图片中的就一个。

出0入0汤圆

 楼主| 发表于 2015-10-12 21:54:02 | 显示全部楼层
lxa0 发表于 2015-10-12 21:44
多读几次嘛~~~~~~~~~~~~~~~~

不明白,我是每2.5ms调一次void v_TemperatureUpdate_f( void )。只要不断电,就一直读。

出0入0汤圆

发表于 2015-10-12 21:58:06 来自手机 | 显示全部楼层
别读那么快

出20入70汤圆

发表于 2015-10-12 22:02:25 | 显示全部楼层
记得读一次温度大概几百ms吧,你这时序根本就不对嘛!

出0入0汤圆

 楼主| 发表于 2015-10-12 22:04:55 | 显示全部楼层

为什么?我是长任务按多级任务处理的,2.5ms初始化一下,2.5ms忽略ROM,2.5ms温度转换,2.5ms初始化一下,2.5ms忽略ROM,2.5ms读温度,如此循环。

出0入0汤圆

 楼主| 发表于 2015-10-12 22:08:50 | 显示全部楼层
techbaby 发表于 2015-10-12 22:02
记得读一次温度大概几百ms吧,你这时序根本就不对嘛!

分为多级任务处理的标记“Temp_G”,每次只作初始化或读温度或温度转换或忽略ROM。请大神看看我的对吗?

出0入0汤圆

发表于 2015-10-12 22:17:43 | 显示全部楼层
本帖最后由 lcl 于 2015-10-12 22:19 编辑


刚看了下个阶段转换时间  楼主参考下

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2015-10-12 22:19:44 | 显示全部楼层
lcl 发表于 2015-10-12 22:17
刚看了下个阶段转换时间  楼主参考下

谢谢呀!这么晚了还给回贴子,不孤单了。

出0入0汤圆

发表于 2015-10-12 22:21:56 | 显示全部楼层
记得感觉你的时间有点紧,读的纸估计不准    记得当初用51的时候,转换好像有个步骤不能被打断,要把中断触发关了  我只记得这么多了  当时做的温度报警,几年了忘了

出0入0汤圆

 楼主| 发表于 2015-10-12 22:24:29 | 显示全部楼层
lcl 发表于 2015-10-12 22:21
记得感觉你的时间有点紧,读的纸估计不准    记得当初用51的时候,转换好像有个步骤不能被打断,要把中断触 ...

有道理,我的程度在转换时就会初始化,我再试试,谢了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-6 02:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表