求一个ds18b20例案,正负数都可以显示,精度到0.1的

2020-02-01 16:34发布

最简单的skip rom方案 或者给我讲一下最后接收到的两个byte的数据怎么处理就行了
谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
liudaolunhui
1楼-- · 2020-02-02 22:56
对了,14楼的帖子也不错
yiyeguzhou
2楼-- · 2020-02-03 04:42
主要给获取温度的代码吧:
         void gettemperature()
{
        uchar temp1,temp2,temp,tflag ;
    reset();
        writebyte(0xcc);
        writebyte(0x44);
        reset();
    writebyte(0xcc);
        writebyte(0xbe);
        temp1=readchar();
        temp2=readchar();
        temp=(temp2<<8)|temp1;

        if(temp<0x0fff)
             tflag=1;
         else
         {
            tflag=0;
            temp=~temp+1;//负温度时,使其取反加一
         }
          d_temp=temp*(0.625);//正温度
          tempshi=d_temp/100;
          tempge=d_temp%100/10;
          tempxiaoshu=d_temp%10;
}
jdlu
3楼-- · 2020-02-03 05:43
 精彩回答 2  元偷偷看……
jdlu
4楼-- · 2020-02-03 10:03
是十四楼啊?!刚才看错了。
wxty
5楼-- · 2020-02-03 13:24
yao1 发表于 2011-10-27 09:24
回复【4楼】Ilove51andAVR  
-----------------------------------------------------------------------
...

xiexie !         
vagrand
6楼-- · 2020-02-03 14:13
yao1 发表于 2011-10-27 19:45
//初学者先理解算法了 再用移位法 理解是关键
//移位原理:
//用10进制来理解,如果把123456这个数右移4位 ...

“Temp =    TempDat >> 4; // (TempDat * 0.0625  )  浮点数运算很慢,效率不高,改成移位”
这一句中右移四位小数位就没有了吧,后面一句乘以10还有用吗?

一周热门 更多>