小弟 学习18b20 不会读数

2020-02-04 09:10发布

小弟 想用12864显示18b20温度  可是对 18b20读数不了解  在网上找的程序 没有解释 看不太懂  求 哪位前辈  传个以前做过的程序  或指点一下思路   小弟 万分感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
唯诚hhw2
1楼-- · 2020-02-04 12:33
void ds_init()
{
  uchar x=0;
   ds=1;
   _nop_();_nop_();
   ds=0;
   tempdelay(85);
   ds=1;
   tempdelay(16);
  
  
}

void tempwrite(uchar dat)
{
   uchar i;
   for(i=0;i<8;i++)
     {
            ds=0;
                _nop_();
                ds=dat&0x01;
                tempdelay(5);
                _nop_();
            _nop_();
                ds=1;
                dat=dat>>1;
         }
         delayms(3);
}
uchar tempread()
{
    uchar i,dat;
        for(i=0;i<8;i++)
        {
          ds=0;
          _nop_();
          _nop_();
          dat=dat>>1;
          ds=1;
          _nop_();
          _nop_();
          if(ds==1)
          dat=dat|0x80;
          tempdelay(5);
        }
        return(dat);
}


uint get_temp()
{
  uchar a,b;
  ds_init();
  tempwrite(0xcc);     //写跳过读rom指令
  tempwrite(0x44);     //写温度转换指令
  tempdelay(10);
  ds_init();
  tempwrite(0xcc);
  tempwrite(0xbe);

  a=tempread();
  b=tempread();
  temp=(b<<4)|(a>>4);
  if(temp>128)
  {temp=~temp+1;}
   return temp;
}
Edward3121
2楼-- · 2020-02-04 12:46
楼主应该仔细钻研一下PDF中的时序和命令,然后再对照正规例程来学习。不然总是一知半解的。
tepaiyuan
3楼-- · 2020-02-04 17:26
Edward3121 发表于 2012-4-12 11:47
楼主应该仔细钻研一下PDF中的时序和命令,然后再对照正规例程来学习。不然总是一知半解的。 ...

敢问哪里有正规例程?
Arachne29
4楼-- · 2020-02-04 19:31
 精彩回答 2  元偷偷看……
xiaoziwen
5楼-- · 2020-02-04 22:51
ds18b20.rar (6.86 KB, 下载次数: 11) 2012-4-12 16:02 上传 点击文件名下载附件 这个绝对没问题 讲的也很细致
xiaoziwen
6楼-- · 2020-02-05 00:19
唉 没穿上来
ds18b20.rar (6.86 KB, 下载次数: 6) 2012-4-12 16:03 上传 点击文件名下载附件

一周热门 更多>