tvalue=tvalue*(0.0625);
uint get_temper()//获取温度
{
uchar a,b;
float wendu;
ds1820rst(4);
delay_18B20(4); //延时
ds1820wr(0xcc); //跳过读序列号
ds1820wr(0x44); //启动温度转换
ds1820rst(4);
ds1820wr(0xcc); //跳过读序列号
ds1820wr(0xbe); //读取温度
a=ds1820rd();
b=ds1820rd();
tvalue=b;
tvalue<<=8;
tvalue=tvalue|a;
if(tvalue<0x0fff)
{
tflag=0; //温度正负标志=0为正
}
else
{
tvalue=~tvalue+1;
tflag=1; //温度正负标志=0为正
}
tvalue=tvalue*(0.0625); //温度值扩大10倍,精确到1位小数
temp=tvalue;
return temp;
}
这两句什么意思 具体为什么这么写 , 是怎么也能算的 可以直接用二进制数字成一个0.0625?
|