page71

导航

蓝桥决赛给的资源包的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;

 

posted on 2021-06-04 17:11  page71  阅读(87)  评论(0编辑  收藏  举报