藍橋杯DS18B20官方驅動的修改

2021-09-12 01:44:55 字數 1461 閱讀 6022

雖然我還沒有參加藍橋杯的比賽,但是聽很多人說比賽的時候官方會給出一些晶元的驅動程式,有ds18b20、ds1302、iic。

藍橋杯官方給出的驅動可以用是可以但是並不是那麼完善,還是需要我們稍加修改的。

下面我們看一下官方給的ds18b20的驅動程式:

/*

程式說明: 單匯流排驅動程式

軟體環境: keil uvision 4.10

硬體環境: ct107微控制器綜合實訓平台 8051 12mhz

日 期: 2011-8-9

*/#include "reg52.h"

sbit dq = p1^4; //單匯流排介面

//單匯流排延時函式

void delay_onewire(unsigned int t)

}//通過單匯流排向ds18b20寫乙個位元組

void write_ds18b20(unsigned char dat)

delay_onewire(5);

}//從ds18b20讀取乙個位元組

unsigned char read_ds18b20(void)

delay_onewire(5);

} return dat;

}//ds18b20裝置初始化

bit init_ds18b20(void)

從官方程式我們就可以看出,官方給了我們ds18b20的初始化子程式、向ds18b20寫乙個位元組的程式和從ds18b20讀取乙個位元組的程式,但是並沒有看到我們讀取出溫度的資料之後,對資料的處理函式,我覺得這個還是很重要的沒有資料的處理程式,你可能顯示不出來,也可能顯示的是亂碼。

還有就是這個初始化寫的太囉嗦,所以我修改了他們給的初始化程式,加上了資料的處理程式,下面看一下我修改之後的**:

#include#include#define uchar unsigned char

#define uint unsigned int

sbit dq=p1^4;

//ds18b20初始化

void dsinit()

//單匯流排延時函式

void delay_onewire(unsigned int t) //每乙個數值量大概13.5us

}//溫度處理函式

uchar date_handing()

//通過單匯流排向ds18b20寫乙個位元組

void write_ds18b20(unsigned char dat)

delay_onewire(5);

}//從ds18b20讀取乙個位元組

unsigned char read_ds18b20(void)

delay_onewire(5);

} return dat;

}

這樣我們就可以正確的顯示我們讀取出的溫度資料了。

藍橋杯 官方驅動 DS18B20 onewire

ifndef onewire h define onewire h include stc15f2k60s2.h include intrins.h define ow skip rom 0xcc define ds18b20 convert 0x44 define ds18b20 read 0xb...

藍橋杯溫度DS18b20的驅動直觀理解

對於藍橋杯比賽,很多人對於比賽官方給出的三個驅動不知道怎麼具體使用。其實官方給出的驅動是在原有的晶元基礎上做出的驅動,但是後來比賽官方對比賽專用版ct107d上使用了iap1f2k61s2轉接板,驅動的一些位置都相應的做出了該變。首先對於驅動,我們的看法是去建立乙個存在主函式的c 檔案去呼叫這個驅動...

ds18b20驅動配置

初始化時序 void ds18b20 rst void 返回1 沒有檢測到ds18b20的存在返回0 存在 u8 ds18b20 check void if retry 200 return1 else retry 0 while ds18b20 dq in retry 240 if retry 2...