标题: 这个ds18b20的程序可以直接把提取出来的十六位的二进制转换到浮点数吗? [打印本页]

作者: 小白大佬轻点喷    时间: 2023-1-31 15:11
标题: 这个ds18b20的程序可以直接把提取出来的十六位的二进制转换到浮点数吗?
求助各位大佬  请问这样子的ds18b20的程序可以直接把提取出来的十六位的二进制转换到浮点数吗?T是否是我想要的温度,如果不对,请问各位大佬该补充些许什么?

//读取温度
float DS18B20_READT()
{
        unsigned char Byte1,Byte2;
        int temp;//16位用于存储16位二进制数
        float T;
        bit DS18D20_init();//初始化检验
        onewire_sendbyte(0xcc);//skip rom跳过
        onewire_sendbyte(0xbe);//读取命令
        Byte1=onewire_receivebyte();//读取低八位
        Byte2=onewire_receivebyte();//读取高八位
        temp=(Byte2<<8)|Byte1;
        T=temp/16.0;
        
        return T;
}


作者: xianfajushi    时间: 2023-1-31 17:26
可以,二进制数据也是采用位置计数法,其位权是以2为底的幂。看我帖子里面的Du_1302函数就是直接转化.
作者: wulin    时间: 2023-1-31 17:47
T=temp/16.0;转换成浮点数当然可以,但运算和显示浮点数未必方便。
作者: 小白大佬轻点喷    时间: 2023-1-31 18:34
xianfajushi 发表于 2023-1-31 17:26
可以,二进制数据也是采用位置计数法,其位权是以2为底的幂。看我帖子里面的Du_1302函数就是直接转化.

好的万分感谢您
作者: 小白大佬轻点喷    时间: 2023-1-31 18:35
wulin 发表于 2023-1-31 17:47
T=temp/16.0;转换成浮点数当然可以,但运算和显示浮点数未必方便。

感谢您




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1