基于DS18B20的溫度測量和顯示系統(tǒng)設(shè)計(jì)與仿真
引言
傳統(tǒng)的溫度檢測大多以熱敏電阻為溫度傳感器,而熱敏電阻的可靠性差,測量溫度準(zhǔn)確率低,且必須轉(zhuǎn)換為數(shù)字信號(hào)后才能由單片機(jī)進(jìn)行處理,在高精度要求的溫度檢測應(yīng)用中,熱敏電阻已經(jīng)被精度高、準(zhǔn)確性好的集成溫度釆集設(shè)備所代替。DS18B20是美國DALLAS半導(dǎo)體公司推出的一種改進(jìn)型數(shù)字溫度傳感器。它在溫度精度、轉(zhuǎn)換時(shí)間、傳輸距離、分辨率等方面有很大改進(jìn),因而被廣泛應(yīng)用于溫度釆集與處理、數(shù)字溫度計(jì)及各種溫控系統(tǒng)中。本文釆用DS18B20設(shè)計(jì)的溫度測量與顯示系統(tǒng),可以實(shí)時(shí)測量并顯示的溫度范圍為-55?125C系統(tǒng)可設(shè)置溫度上限和溫度下限,當(dāng)測量溫度高于上限或者低于下限溫度時(shí),系統(tǒng)將發(fā)岀報(bào)警。
1溫度傳感器DS18B20
DS18B20是美國DALLAS半導(dǎo)體公司推出的一種改進(jìn)型智能溫度傳感器,該傳感器的可測溫度范圍為-55?125C,可編程分辨率為9~12位,對(duì)應(yīng)的可分辨溫度為0.5C、0.25C、0.125°C和0.0625GDS18B20的測量輸出為數(shù)字信號(hào),并可單線串行發(fā)送給CPU,并支持多點(diǎn)組網(wǎng)。DS18B20有3腳和8腳兩種結(jié)構(gòu),而8腳的結(jié)構(gòu)又有不同的封裝形式,圖1所示是DS18B20的引腳圖。本文釆用三極管形狀的3腳DS18B20。事實(shí)上,無論是3腳結(jié)構(gòu)還是8腳的結(jié)構(gòu),DS18B20在實(shí)際電路中都只有3個(gè)引腳參與連接,即電源(VDD)、地(GND)和信號(hào)輸入輸出(DQ)。
2系統(tǒng)仿真電路
基于DS18B20的溫度測量與顯示系統(tǒng)仿真電路圖如圖2所示。
電路中的單片機(jī)采用AT89C52,DS18B20采用外部電源供電方式,其DQ端子與單片機(jī)的P3.7相連。采用兩個(gè)4連排共陽極數(shù)碼管顯示實(shí)時(shí)溫度,分別用于顯示整數(shù)部分和小數(shù)部分。數(shù)碼管的段選線與單片機(jī)的P1口相連,位選線與P2口相連。圖中顯示的正是最高溫度125C由于在proteus軟件中DS18B20無法設(shè)置小數(shù),所以小數(shù)部分只能顯示零了。DS18B20的最高分辨率為0.0625°C,所以理論上應(yīng)該能顯示4位小數(shù)。
3軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)主要包括三部分,一是溫度測量部分,二是溫度顯示部分,還有一個(gè)是報(bào)警部分。
DS18B20通過嚴(yán)格的單線通信協(xié)議來保證數(shù)據(jù)完整。該協(xié)議中定義了復(fù)位脈沖、存在脈沖、寫0、寫1、讀0、讀1等幾種信號(hào)形式。其中,只有存在脈沖是由總線受控(即DS18B20)發(fā)出,其他的全部由總線主控(即單片機(jī))發(fā)出。
3.1初始化
DS18B20的初始化包括來自單片機(jī)的復(fù)位脈沖和接下來由DS18B20發(fā)出的存在脈沖。其初始化時(shí)序圖如圖3所示。當(dāng)DS18B20響應(yīng)單片機(jī)的復(fù)位而發(fā)出存在脈沖時(shí),單片機(jī)便知道DS18B20在線上并已準(zhǔn)備好。單片機(jī)發(fā)送復(fù)位脈沖,即拉低總線至少480卜,然后單片機(jī)釋放總線并進(jìn)入接收模式。當(dāng)DS18B20檢測到復(fù)位脈沖后,等待15~60卜,然后發(fā)送存在脈沖,即拉低總線60~240卜。由于DS18B20的DQ弓腳接了一個(gè)上拉電阻,所以,總線的空閑狀態(tài)為高電平,存在脈沖結(jié)束后,總線自動(dòng)恢復(fù)到高電平狀態(tài)。單片機(jī)所要做的就是發(fā)出復(fù)位脈沖并檢測DS18B20的存在脈沖,其參考程序如下:
voidreset()
{
DQ=1;//DQ復(fù)位
delay(5);//稍做延時(shí)
DQ=0;//單片機(jī)將DQ拉低
delay(60);//精確延時(shí)大于480μs
DQ=1;//拉高總線
delay(8);
while(DQ);
while(~DQ)//檢測到應(yīng)答脈沖
delay(4);
}
圖2溫度測量與顯示系統(tǒng)仿真電路圖
3.2寫時(shí)序
單片機(jī)可在寫時(shí)隙向DS18B20寫入數(shù)據(jù),在讀時(shí)隙從DS18B20讀出數(shù)據(jù),每個(gè)時(shí)隙總線上只傳送一位數(shù)據(jù)。寫時(shí)隙有“寫1”時(shí)隙和“寫0”時(shí)隙兩種。單片機(jī)通過寫1時(shí)隙向DS18B20寫入一個(gè)邏輯1,并通過寫0時(shí)隙向DS18B20寫入一個(gè)邏輯0。所有的寫時(shí)隙必須至少持續(xù)60us,并在每個(gè)獨(dú)立的寫時(shí)隙之間至少有1us的恢復(fù)時(shí)間。兩種寫時(shí)隙都是由單片機(jī)拉低總線開始的,如圖3所示。
圖3DS18B20的初始化時(shí)序、寫時(shí)序和讀時(shí)序
要產(chǎn)生寫1時(shí)隙,單片機(jī)在拉低總線后必須在15μs之內(nèi)釋放總線。總線被釋放后,上拉電阻將把總線拉高。要產(chǎn)生寫0時(shí)隙,單片機(jī)在拉低總線后必須繼續(xù)保持總線低電平使時(shí)隙至少60μs。DS18B20在時(shí)隙開始后15~60μs之間的時(shí)間段內(nèi)對(duì)總線進(jìn)行采樣,如果總線是高電平,則向DS18B20寫入一個(gè)1,如果總線是低電平,則向DS18B20寫入一個(gè)0。
下面是向DS18B20寫入一個(gè)字節(jié)數(shù)據(jù)的程序代碼:
tempwrite(unsignedchardat)
{
uchari=0;
for(i=8;i>0;i--)
{
DQ=0;
DQ=dat&0x01;
delay(10);
DQ=1;
dat>>=1;
}
delay(8);
}
3.3讀時(shí)序
所有的讀時(shí)隙必須至少持續(xù)60卜,并在每個(gè)獨(dú)立的讀時(shí)隙之間至少有13的恢復(fù)時(shí)間。讀時(shí)隙開始后,先由單片機(jī)拉低總線至少13,然后單片機(jī)釋放總線。讀時(shí)隙開始后,DS18B20將開始向總線發(fā)送1或0。發(fā)送0時(shí),DS18B20釋放總線直到時(shí)隙結(jié)束,此后上拉電阻將把總線拉回到高電平的空閑狀態(tài)。DS18B20的數(shù)據(jù)在讀時(shí)隙開始之后15卜之內(nèi)有效,因此,單片機(jī)在時(shí)隙開始后,必須釋放總線,然后在153之內(nèi)對(duì)總線進(jìn)行采樣。下面是從DS18B20讀出一個(gè)字節(jié)數(shù)據(jù)的程序:
tempREAD(void)
{
uchari=0;
uchardat=0;
for(i=8;i>0;i--)
{
DQ=0;//給脈沖信號(hào)
dat>>=1;
DQ=1;//給脈沖信號(hào)
if(DQ)
dat|=0x80;
delay(8);
}
return(dat);
}
3.4主要命令
DS18B20有5個(gè)ROM操作命令,6個(gè)存儲(chǔ)器操作命令,表1所列是DS18B20的操作命令。
本系統(tǒng)主要使用了表1中的3個(gè)命令,即跳過ROM、溫度變換和讀暫存器命令。
3.5顯示程序
DS18B20提供的溫度數(shù)據(jù)有兩個(gè)字節(jié),其中低8位的末4位是小數(shù)部分,因此,程序中對(duì)溫度數(shù)據(jù)的整數(shù)部分和小數(shù)部分要分別進(jìn)行處理。如t=t>>4;即得到溫度值的整數(shù)部分,t=t&0x0f;則得到溫度值的小數(shù)部分,然后分別在數(shù)碼管上進(jìn)行顯示。
3.6報(bào)警部分
在程序中設(shè)置溫度上限和溫度下限后,測量溫度將與門限值進(jìn)行比較。如果測量溫度高于溫度上限或者低于溫度下限,系統(tǒng)就發(fā)出報(bào)警。
4結(jié)語
本文基于數(shù)字溫度傳感器DS18B20設(shè)計(jì)并仿真了一個(gè)溫度測量與顯示系統(tǒng),同時(shí),系統(tǒng)設(shè)置了溫度上限和溫度下限,當(dāng)測量溫度超出溫度門限值時(shí),系統(tǒng)便會(huì)報(bào)警。事實(shí)上,具有顯示與報(bào)警功能的溫度測量系統(tǒng)的應(yīng)用非常廣泛,而且DS18B20可以支持多點(diǎn)組網(wǎng),因此可以同時(shí)測量多點(diǎn)溫度。
20210923_614c18263b821__基于DS18B20的溫度測量和顯示系統(tǒng)設(shè)計(jì)與仿真