藍橋杯嵌入式擴展板模塊之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度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章