ds18b20数据处理中为什么将读回来的高位和低位整合了以后乘以0.0625结果就是十进制数了?读回来的高低位不都是8位二进制数吗?怎么整合成16位了乘以0.0625就变成十进制数了?tem2是八位2进制数
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/09 07:20:27
ds18b20数据处理中为什么将读回来的高位和低位整合了以后乘以0.0625结果就是十进制数了?读回来的高低位不都是8位二进制数吗?怎么整合成16位了乘以0.0625就变成十进制数了?tem2是八位2进制数
ds18b20数据处理中为什么将读回来的高位和低位整合了以后乘以0.0625结果就是十进制数了?
读回来的高低位不都是8位二进制数吗?怎么整合成16位了乘以0.0625就变成十进制数了?tem2是八位2进制数也可以直接和十进制数相乘吗?
temperature=(tem2*256+tem1)*6.25 ;
不理解……
ds18b20数据处理中为什么将读回来的高位和低位整合了以后乘以0.0625结果就是十进制数了?读回来的高低位不都是8位二进制数吗?怎么整合成16位了乘以0.0625就变成十进制数了?tem2是八位2进制数
对单片机来说,不管任何进制的数字,在单片机内部都是二进制表示的.所以能直接运算.
就算你在编程时用十进制写的100*0.0625,在运算时,单片机还是要先把十进制转换为二进制再进行计算,因此直接用二进制来进行计算是完全可以的.
256即为2^8,tem2*256即为一个16位的二进制数,其中高八位为tem2,低八位为0,再加上tem1,即把两位八进制整合成一位十六进制,0.0625即为1/16,ds18b20的数据低四位为小数位,二进制乘以十进制,结果显示十进制谢谢您的答案,不过还是不能理解其原理。这是将高低位的八位二进制数整合在一起形成一个16位二进制数的数据,不是两位八进制整合成一位16进制吧?还有,我不理解的是这个...
全部展开
256即为2^8,tem2*256即为一个16位的二进制数,其中高八位为tem2,低八位为0,再加上tem1,即把两位八进制整合成一位十六进制,0.0625即为1/16,ds18b20的数据低四位为小数位,二进制乘以十进制,结果显示十进制
收起
跳过读序号列号的操作 ds18b20w_byte(0x44); // 启动温度转换 delayus(100然后将值乘以0.0625,那么得出的值就是温度的实际值。后9位000 1111 1111ds18b20读取数据的时候是一位一位读的,先读取低字节的数据,存放在tem1变量中,那么tem1应该是八位2进制数对吧,例如10010001,高字节读回来的是00000001,高字节经过左移8位在加上低字...
全部展开
跳过读序号列号的操作 ds18b20w_byte(0x44); // 启动温度转换 delayus(100然后将值乘以0.0625,那么得出的值就是温度的实际值。后9位000 1111 1111
收起