蓝桥决赛给的资源包的DS18B20的读取温度的写法
获取DB18B20的温度数据
s16 ds18b20_read(void)
{
u8 val[2];
u8 i = 0;
s16 x = 0;
ow_reset();
ow_byte_wr(OW_SKIP_ROM); //ow_byte_wr (0xcc)
ow_byte_wr(DS18B20_CONVERT); //ow_byte_wr(0x44)
Delay_Ms(75);
ow_reset();
ow_byte_wr( OW_SKIP_ROM ); //ow_byte_wr(0xcc)
ow_byte_wr ( DS18B20_READ ); //ow_byte_wr(0xbe)
for ( i=0 ;i<2; i++) {
val[i] = ow_byte_rd(); //读取单总线上数据
}
x = val[1]; //高位
x <<= 8;
x |= val[0]; //或上低位
return x; //返回16位数据
}
转换的数值对应要变成温度单位需要乘以0.0625
浮点数结果:x = z/16.0; 除以浮点数变为浮点数
整型(不保留小数结果)y = z/16;
保留两位小数的整型结果(放大100倍)y = z*100/16;