产品分类
您现在的位置: > 新利luck > ds18b20数据处理中为什么将读回来的高位和低位整合了以后乘以006

ds18b20数据处理中为什么将读回来的高位和低位整合了以后乘以006

时间:2019-06-27 14:22 来源:未知 作者:admin 点击:

  ds18b20数据管理中为什么将读回来的高位和低位整合了往后乘以0.0625结果便是十进制数了?

  ds18b20数据管理中为什么将读回来的高位和低位整合了往后乘以0.0625结果便是十进制数了?

  读回来的崎岖位不都是8位二进制数吗?若何整合成16位了乘以0.0625就酿成十进制数了??tem2是八位2进制数也能够直接和十进制数相乘吗?temperature=(tem2*256+tem1)*6.25;不清楚……...

  读回来的崎岖位不都是8位二进制数吗?若何整合成16位了乘以0.0625就酿成十进制数了??tem2是八位2进制数也能够直接和十进制数相乘吗?

  256即为2^8,tem2*256即为一个16位的二进制数,个中高八位为tem2,低八位为0,再加上tem1,即把两位八进制整合成一位十六进制,0.0625即为1/16,ds18b20的数据低四位为小数位,二进制乘以十进制,结果显示十进制感谢您的谜底,可是仍旧不行清楚其道理。这是将崎岖位的八位二进制数整合正在沿途变成一个16位二进制数的数据,不是两位八进制整合成一位16进制吧?再有,我不清楚的是这个16位二进制数的运算temperature=1*0.0625,那运算结果temperature等于众少?等于25.0625吗?1十进制是401,若何没有先将这个16位二进制数据先转换成为十进制401再乘以0.0625的呢?能够直接用二进制数乘以十进制数0.0625?

  张开齐备对单片机来说,不管任何进制的数字,正在单片机内部都是二进制示意的。以是能直接运算。

  就算你正在编程时用十进制写的100*0.0625,正在运算时,单片机仍旧要先把十进制转换为二进制再实行盘算,所以直接用二进制来实行盘算是一律能够的。

  跳过读序号列号的操作 ds18b20w_byte(0x44); // 启动温度转换 delayus(100然后将值乘以0.0625,那么得出的值便是温度的现实值。后9位000 1111 1111

  ds18b20读取数据的时分是一位一位读的,先读取低字节的数据,存放正在tem1变量中,那么tem1该当是八位2进制数对吧,比方10010001,高字节读回来的是00000001,高字节源委左移8位正在加上低字节就酿成了1,并将这个值赋给变量temm,那temm也是二进制的呀,若何参加运算?这个16位二进制数乘以0.0625就有十进制??能实行分歧进制之间的运算么?