徐錦鋼++鄢妍
【摘 要】本文圍繞DS18B20溫度傳感器的工作原理展開論述,使用proteus仿真軟件設計和繪制了DS18B20的測溫電路圖,并通過1602液晶顯示器觀察DS18B20測得的溫度值,驗證了DS18B20測溫電路及程序設計的正確性,并給出了部分C程序代碼。
【關鍵詞】DS18B20;測溫;仿真
1.DS18B20溫度傳感器簡介
DS18B20是DALLAS公司生產(chǎn)的一種溫度傳感器,具有體積小、先進的單總線數(shù)據(jù)通信方式、全數(shù)字溫度轉換及輸出、測量精度可達土0.5℃、檢測溫度范圍寬(可達-55℃~+125℃)等優(yōu)點,因此使得DS18B20應用非常廣泛[1]。
2.電路連接
電路連接如上圖1所示,主要包括AT89S52單片機、DS18B20和1個1602型液晶顯示器。DS18B20組成的溫度測量系統(tǒng)線路非常簡單,只要求1個接口就可實現(xiàn)通信,圖中DS18B20的第2腳(DQ)即為數(shù)據(jù)通信端,接至單片機的P3.3口,傳輸命令字和溫度信號。DS18B20的第3腳(VCC)接5V電源,第1腳(GND)接地。1602液晶數(shù)據(jù)端(D0-D7)接至單片機P0口,控制端(RS、RW、EN)分別接至單片機P2.0、P2.1、P2.2口。
3.DS18B20單總線內(nèi)部構造介紹
3.DS18B20單總線內(nèi)部構造介紹
單總線系統(tǒng)只有1根數(shù)據(jù)線,主機或者從機設備通過1個漏極開路或三態(tài)接口連接至該數(shù)據(jù)線,這樣使得主機或者從機設備在不發(fā)送數(shù)據(jù)時可釋放數(shù)據(jù)總線,以便總線可被其他設備使用。圖2給出了DS18B20單總線開漏等效電路,單總線要求外接1個約為5K歐姆的上拉電阻,以保證總線閑置時為高電平,如圖1中的電阻R1所示[2]。
4.DS18B20溫 度傳感器程序設計
單總線器件要求嚴格遵守相應的通信協(xié)議,如此才能保證數(shù)據(jù)傳輸?shù)耐暾?,這種協(xié)議一般定義了若干種類型的信號,包括器件復位、讀數(shù)據(jù)、寫數(shù)據(jù),均由主機(即單片機)發(fā)出同步信號,所有的命令字和數(shù)據(jù)字都是低位在前,高位在后。
本文編寫了一個完整的DS18B20測量顯示程序,主要包括DS18b20初始化函數(shù)、主機寫字節(jié)數(shù)據(jù)函數(shù)、主機讀字節(jié)數(shù)據(jù)函數(shù)、開始溫度轉換、溫度獲取及數(shù)據(jù)修正函數(shù)。下面以其中的前4個函數(shù)示例,并給出注解。
4.1 DS18b20初始化函數(shù)
單總線的所有操作均是從1個初始化序列開始的,初始化序列包括1個由總線控制器發(fā)出的復位脈沖和隨后由從機回發(fā)的應答脈沖,函數(shù)程序代碼如下:
void Init_DS18B20()
{
uint i;
DQ=0;//拉低總線開始復位
i=103;
while(i>0)i--;//短暫延時
ds=1;//主機寫1,釋放總線
i=4;
while(i>0)i--;//短暫延時
}
4.2 主機寫字節(jié)數(shù)據(jù)函數(shù)
void write_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
DQ=0;//主機拉低DQ
dat>>=1;//待輸出位通過移位操作先進入PSW的CY位
DQ=CY;
delay(8);
DQ=1;
}
}
4.3 主機讀字節(jié)數(shù)據(jù)函數(shù)
void read_byte()
{
uchar i,dat=0;
for(i=0x01;i!=0;i<<=1)
{
DQ=0;_nop_();//主機拉低DQ,開始讀時隙
DQ=1;_nop_();//主機釋放DQ,準備讀
if(DQ)
{dat|=i;}//1us后主機開始讀取1位
delay(8);//實際延時77us
}
return dat;//將讀到的字節(jié)數(shù)返回
}
4.4 開始溫度轉換函數(shù)
void tempchang(void)
{
Init_DS18B20();//初始化
delay(1);
write_byte(0xcc);//寫命令字0xcc,跳過讀取ROM序列號
write_byte(0x44);//寫命令字0x44,啟動溫度轉換
}
5.電路功能測試
按照圖1搭好電路后,調(diào)節(jié)DS18B20器件上的溫度增減按鍵,模擬外界溫度的變化,單片機在獲取溫度值后,將溫度值顯示在1602液晶上,如圖中測得溫度為26℃時,液晶也顯示為26℃,見下圖3所示,說明電路連接及程序編寫均正確無誤。
6.結束語
本文采用單片機作為主控制器,設計了基于DS18B20的溫度測量顯示電路,論述了DS18B20的工作原理,給出了部分測試程序并注解。通過測試,DS18B20能夠正常測溫,電路工作正常。
參考文獻:
[1]DS18B20芯片手冊[DB/OL].百度文庫,2007-03.
[2]彭 偉.單片機C語言程序設計實訓100例[M].北京:電子工業(yè)出版社,2014-03.