雖然我還沒有參加藍橋杯的比賽,但是聽很多人說比賽的時候官方會給出一些晶元的驅動程式,有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...