这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 给跪了:问个关于DS18B20的问题,显示85.0度,不变

共20条 2/2 1 2 跳转至
高工
2014-10-31 22:58:50     打赏
11楼
用示波器看主机发给18B20的信号是否正确,看18B20回的信号是否正确

院士
2014-10-31 23:30:42     打赏
12楼

一看你的延时就不专业。

出问题就再所难免。

延时要用定时器,这样才能产生精确延时


专家
2014-11-01 11:04:24     打赏
13楼
看延时吧,一般是延时出问题了。

高工
2014-11-01 12:50:53     打赏
14楼

同意楼上二位。

建议用逻辑分析仪测试下实际延时时间


助工
2014-11-01 18:37:12     打赏
15楼

这种情况十有八九是延时的问题,一般就算用软件计算出来的延时都要加个±几us才能达到合适的时序~

最准确的延时还是定时器和汇编


助工
2014-11-01 18:42:31     打赏
16楼

18B20只要时序不正确,基本显示就在哪儿了,给你分享个调试通过的!

Temp@12MHz.zip


高工
2014-11-05 11:16:31     打赏
17楼
时序图写的不对吧,看看是不是因为晶振原因导致的。我遇到过是因为该延时的地方延时的不准确,或者移植别人的程序的时候没有仔细修改过。郭天祥的那个程序我第一次用的时候貌似也有点问题。后来自己又写了写,小改了一下就好了。具体怎么搞的现在忘了。你仔细检查一下硬件和程序就好

工程师
2014-11-05 13:20:38     打赏
18楼
最近只能手机上网,不能给各位添加积分,改天一起添加积分

高工
2014-11-05 14:49:48     打赏
19楼
这个单总线通信,对于时序要求比较高,这个DS18B20本身不难,第一根据时序检查程序,延时部分重点检查,,然后就看硬件连接吧,就那么3个脚,仔细看看。  一般问题都是出现在时序上,如果确实没啥问题,就用proteus仿真试试吧

菜鸟
2014-12-03 18:18:52     打赏
20楼
  1. 好吧,大神给你解惑!读出初始85说明复位正确。用的STC是1T的吧,读的时候需要延时的时间不够。
  2. bit tempreadbit(void)   //读1位函数  
  3. {  
  4.    uint i;  
  5.    bit dat;  
  6.    ds=0;i++;          //i++ 起延时作用  
  7.    ds=1;i++;i++;  ---->这个时间不够!!加大
  8.    dat=ds;  
  9.    i=8;while(i>0)i--;  
  10.    return (dat);  
  11. 还有就是每次读取最少需要60us间隔。温度转换需要几百毫秒也得注意。

共20条 2/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]