我造輪子,你造車,創客一塊兒造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】 編程
本文介紹X-CTR100控制器 擴展DS18B20溫度傳感器。 函數
DS18B20 是美信公司的一款溫度傳感器,單片機能夠經過 1-Wire 協議與 DS18B20 進行通訊,最終將溫度讀出。1-Wire 總線的硬件接口很簡單,只須要把 DS18B20 的數據引腳和單片機的一個 IO 口接上就能夠了。硬件的簡單,隨之而來的,就是軟件時序的複雜。 ui
DS18B20 經過編程,能夠實現最高 12 位的溫度存儲值,在寄存器中,以補碼的格式存儲。 spa
一共 2 個字節,LSB 是低字節,MSB 是高字節,其中 MSb 是字節的高位,LSb 是字節的低位。你們能夠看出來,二進制數字,每一位表明的溫度的含義,都表示出來了。其中 S表示的是符號位,低 11 位都是 2 的冪,用來表示最終的溫度。DS18B20 的溫度測量範圍是從-55 度到+125 度,而溫度數據的表現形式,有正負溫度,寄存器中每一個數字如同卡尺的刻度同樣分佈。 blog
初始化DS18B20溫度傳感器,獲取溫度值並輸出顯示。 接口
硬件資源: 資源
硬件鏈接: get
模塊鏈接到LI接口,數據接口鏈接PA4,做爲普通GPIO口使用。 博客
X-SOFT軟件生態,X-API文件以下。 it
ax_ds18b20.c——X-CTR100 擴展DS18B20傳感器源文件
ax_ds18b20.h——X-CTR100 擴展DS18B20傳感器頭文件
操做函數以下:
uint8_t AX_DS18B20_Init(void); //DS18B20初始化 int16_t AX_DS18B20_ReadTemp(void); //DS18B20讀取溫度 |
主程序代碼以下。
int main(void) { int16_t temperature;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 DS18B20溫度傳感器例程***\r\n\r\n");
//DHT11初始化 while (AX_DS18B20_Init()) { printf("錯誤,請檢查DS18B20是否安裝正確!!\r\n"); AX_Delayms(500); }
while (1) { temperature = AX_DS18B20_ReadTemp(); //讀取溫度值
printf("溫度值X10:%d \r\n", temperature);
AX_Delayms(1000); } } |
運行效果以下圖所示。