关于18B20温度计算

[复制链接]
4892|8
 楼主| guyan1987 发表于 2011-4-25 20:17 | 显示全部楼层 |阅读模式
//--------温度处理---------  
temp1=high;
  temp2=low;
  temp1=temp1<<4;
  temp2=temp2>>4;
  temp3=temp1|temp2;
  high=temp3;
  low=low&0x0f;
// ----------温度计算--------正数

zhen_temp[0]=high/100;  //+'0';//百
  zhen_temp[1]=high%100/10;  //+'0'; 十
  zhen_temp[2]=high%10;   //+'0';  个
   temp1=low*625;
  xiaoshu_temp[0]=temp1/1000;//+'0';  小数
18B20 对应温度显示:ssss sXXX 高8位
                              XXXX .XXXX 低8位
现在实际温度 15.5℃,那各个对应值是多少?求解答
 楼主| guyan1987 发表于 2011-4-25 20:18 | 显示全部楼层
15.5℃ 是怎么计算出来的:L
zxx6176 发表于 2011-4-25 22:02 | 显示全部楼层
假设是15.5℃,
zhen_temp[0]=high/100;  //+'0';//百
用15.5除以100 取整 为零  所以百位为零
zhen_temp[1]=high%100/10;  //+'0'; 十
15.5除以100 取余 得1  所以十位是1
zhen_temp[2]=high%10;   //+'0';  个
15.5除以10 取余 得 5
xiaoshu_temp[0]=temp1/1000;//+'0';  小数
15.5除以1000取余 得 5
zxx6176 发表于 2011-4-25 22:02 | 显示全部楼层
假设是15.5℃,
zhen_temp[0]=high/100;  //+'0';//百
用15.5除以100 取整 为零  所以百位为零
zhen_temp[1]=high%100/10;  //+'0'; 十
15.5除以100 取余 得1  所以十位是1
zhen_temp[2]=high%10;   //+'0';  个
15.5除以10 取余 得 5
xiaoshu_temp[0]=temp1/1000;//+'0';  小数
15.5除以1000取余 得 5
zxx6176 发表于 2011-4-25 22:03 | 显示全部楼层
假设是15.5℃,
zhen_temp[0]=high/100;  //+'0';//百
用15.5除以100 取整 为零  所以百位为零
zhen_temp[1]=high%100/10;  //+'0'; 十
15.5除以100 取余 得1  所以十位是1
zhen_temp[2]=high%10;   //+'0';  个
15.5除以10 取余 得 5
xiaoshu_temp[0]=temp1/1000;//+'0';  小数
15.5除以1000取余 得 5
 楼主| guyan1987 发表于 2011-4-26 11:22 | 显示全部楼层
实际15.5度,但在18B20对应的是15.5/0.0625=248=F8;
这F8到15.5度 是怎么计算出来的?
 楼主| guyan1987 发表于 2011-4-26 11:26 | 显示全部楼层
18B20读出来的 都是16进制? 就直接
zhen_temp[0]=high/100;  //+'0';//百
  zhen_temp[1]=high%100/10;  //+'0'; 十
  zhen_temp[2]=high%10;   //+'0';  个
难道18B20内部 自己运算的:F8转10进制248,在乘0.0625?
 楼主| guyan1987 发表于 2011-4-27 10:46 | 显示全部楼层
没人回答吗,其实我就是想知道:18B20读出来的是16进制,通过什么样的转换变成对应的十进制数!
helongdm 发表于 2011-4-27 10:52 | 显示全部楼层
16进制数先转换成10进制然后对应ASCII码表显示   比如a    a%10就得到a这个数的个位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

133

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部