18b20 温度转换

2019-07-15 19:36发布

void tmrtemp (void) //读取温度
{
unsigned char a,b;
tmreset (); //复位
dmsec (1); //延时
tmwbyte (0xcc); //跳过序列号命令
tmwbyte (0xbe); //发送读取命令
a = tmrbyte (); //读取低位温度
b = tmrbyte (); //读取高位温度
if(b>0x7f) //最高位为1 时温度是负
{
  a=~a; b=~b+1; //补码转换,取反加一
  fg=0; //读取温度为负时fg=0
}
sdata = a/16+b*16; //整数部分                     求解 这部分转换原理?
xiaoshu1 = (a&0x0f)*10/16; //小数第一位
xiaoshu2 = (a&0x0f)*100/16%10;//小数
xiaoshu=xiaoshu1*10+xiaoshu2; //小数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。