新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)·DS18B20溫度傳感器

單片機(jī)·DS18B20溫度傳感器

作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
一、DS18B20的特點(diǎn)
1.“一線總線”數(shù)字化溫度傳感器。(一線掌握好時(shí)序,比較簡單)
2. 3~5V寬電壓工作范圍
3. 分辨9-12位可調(diào)
二、DS18B20的正確接線




面對著扁平的那一面,左負(fù)右正,一旦接反就有可能燒毀,也是溫度顯示85°C的原因。
且只有一根I/O線,注意讀寫時(shí)序 。
三、DS18B20時(shí)序介紹
1)復(fù)位

輸入
t0-t1時(shí)刻:復(fù)位脈沖 480-960us ;
t1-t2時(shí)刻:釋放總線 15-60us ;
檢測
t2-t3時(shí)刻:虛線部分由DS18B20控制,60-240us低電平則表示復(fù)位成功,否則失敗 ;
t3-t4時(shí)刻:釋放總線
2)寫操作

寫0時(shí)序
輸入
t0-15us:保持低電平,輸入0;
檢測
15-60us:檢測i/o是否為低電平 ;
輸入間隔>1us
寫1時(shí)序
輸入
t0-15us:拉高電平,輸入1;
檢測
15-60us:檢測i/o是否為高電平
輸入間隔>1us
3)讀操作

t0-t1:保持4us低電平
t1-15us:DS18B20或者上拉電阻起作用,低電平或者高電平讀出
15us-60us:釋放總線
三、DS18B20的溫度
1.DS18B20的溫度格式表
一共是16位,我們用前5位表示符號位,后11位表示數(shù)值
2.DS18B20的溫度數(shù)據(jù)表


125℃/2000 = 0.0625
當(dāng)符號位為0時(shí),表示正數(shù),0.0625*hex得到溫度的值 ;
當(dāng)符號位為1時(shí),表示負(fù)數(shù),將所得到的(數(shù)值取反+1)*0.0625得到溫度的值;
四、程序
1.啟動(dòng)溫度轉(zhuǎn)換
1)復(fù)位DS18B20;
2)發(fā)出Skip Rom命令(CCH)【僅適用于只有一個(gè)DS18B20】 ;
3)發(fā)出convert命令(44H)
2.讀取溫度
1)復(fù)位DS18B20;
2)發(fā)出Skip Rom命令(CCH);
3)發(fā)出convert命令(BEH);
4)讀2字節(jié)的溫度 ;
5)溫度格式轉(zhuǎn)換 ;
程序
main.h
# ifndef _MAIN_H_
# define _MAIN_H_
# include
# include
sbit DQ = P3^2 ;
sbit RS = P1^0 ;
sbit RW = P1^1 ;
sbit EN = P1^5 ;
sbit BUSY = P0^7;
typedef unsigned char uint8 ;
typedef unsigned int uint16 ;
typedef int int16 ;
#define nops() {_nop_();_nop_();_nop_();_nop_();}
#endif
main.c
# include "main.h"
void delay(uint16 n)
{
while(n--) ;
}
上一頁 1 2 下一頁

評論


技術(shù)專區(qū)

關(guān)閉