最近在做国赛的题,有要求要用到需要获取温度小数点后两部分
使用方法:
- 要获取18B20小数点后部分的温度值,需要建立两个函数,一个获取整数的温度,一个函数获取小数部分的温度。两个函数不可干扰。
获取整数部分的温度值
uint Read_18B20()
{
uint temp;
uchar TH,TL;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
Delay_OneWire(100);
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
TL = Read_DS18B20();
TH = Read_DS18B20();
temp = (TH<<4)|(TL>>4);
return temp;
}
- 要注意的是用于获取温度小数部分的函数需要用flaot返回与赋值,因为我们处理的是小数部分的值
float Read_18B201()
{
uchar TH,TL;
uint temp;
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0x44);
Delay_OneWire(100);
init_ds18b20();
Write_DS18B20(0xcc);
Write_DS18B20(0xbe);
TL = Read_DS18B20();
TH = Read_DS18B20();
temp = (TL%16)*100/16;
return temp;
}
3.需要一提的是要注意使用flaot Read 18B20函数时要注意float型