蓝桥杯嵌入式扩展板模块之DS18b20(温度传感器)

蓝桥杯嵌入式扩展板模块之温度传感器

硬件介绍

蓝桥杯嵌入式拓展版提供的温度传感器是DS18B20。关于他的驱动文件比赛的的时候是提供的,但是以防万一,自己还是要会写读写文件。

DS18B20

float ds18b20_GetVal(void)
{
	float Val=0;
	u8 val[2];
	u8 i = 0;
	u16 x = 0;	

	ow_reset();
	ow_byte_wr(0xCC);
	ow_byte_wr(0x44);
	delay_us(750000);

	ow_reset();
	ow_byte_wr( 0xCC );
	ow_byte_wr ( 0xbe );

	for ( i=0 ;i<2; i++) {
		val[i] = ow_byte_rd();
	}

	x = val[1];
	x <<= 8;   
	x |= val[0];
	
	x = x&0x07ff;
	Val = x/16.0;
	return Val;
}

我把这个函数改了一下,在最后三行我讲解一下。

首先DS18B20采集到的温度是16位的,如果说高5位都是1则是负温度,需要对采集到的数值进行取反并且加一才是真实温度,但是我相信比赛的时候是不可能存在这个现象的。如果是0,则直接将16进制转换为10进制就可以了。因此在这里我是直接进行与操作0x07ff默认它是零上温度。

然后后面进行除以16这里可不是进制转换,而是测量值到实际温度的转换,DS18B20的精度为0.0625度,即读回数据的最低位代表0.0625度,实际测量值t×0.0625就转换为实际温度值。

比如 读回的数据为: 0000 0001 1001 0000,十六进制为0x190,十进制400,乘以0.0625后得25,即实际温度是25度。

发布了19 篇原创文章 · 获赞 17 · 访问量 4087

猜你喜欢

转载自blog.csdn.net/qq_43605009/article/details/105032278