找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1094|回复: 4
收起左侧

这个ds18b20的程序可以直接把提取出来的十六位的二进制转换到浮点数吗?

[复制链接]
ID:1055423 发表于 2023-1-31 15:11 | 显示全部楼层 |阅读模式
求助各位大佬  请问这样子的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;
}

回复

使用道具 举报

ID:332444 发表于 2023-1-31 17:26 | 显示全部楼层
可以,二进制数据也是采用位置计数法,其位权是以2为底的幂。看我帖子里面的Du_1302函数就是直接转化.
回复

使用道具 举报

ID:213173 发表于 2023-1-31 17:47 | 显示全部楼层
T=temp/16.0;转换成浮点数当然可以,但运算和显示浮点数未必方便。
回复

使用道具 举报

ID:1055423 发表于 2023-1-31 18:34 | 显示全部楼层
xianfajushi 发表于 2023-1-31 17:26
可以,二进制数据也是采用位置计数法,其位权是以2为底的幂。看我帖子里面的Du_1302函数就是直接转化.

好的万分感谢您
回复

使用道具 举报

ID:1055423 发表于 2023-1-31 18:35 | 显示全部楼层
wulin 发表于 2023-1-31 17:47
T=temp/16.0;转换成浮点数当然可以,但运算和显示浮点数未必方便。

感谢您
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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