基于DS18B20和89C2051組成的溫度顯示電路
由單總線數(shù)字溫度傳感器DS18B20和89C2051組成的經(jīng)濟型家庭用測溫系統(tǒng)。其溫度顯示為“-XXC”,精度±0.5℃,測溫范圍-55℃~+125℃。下面詳細(xì)分析系統(tǒng)構(gòu)成及匯編語言對DS18B20操作時序的實現(xiàn)方法。圖1為本系統(tǒng)電路圖,圖中DSP為四只數(shù)碼LED顯示器的簡化。
1.DS18B20的初始化與讀寫程序
DS18B20是“一總線”接口溫度傳感器,測溫范圍為-55℃~+125℃,在-10℃~+85℃范圍內(nèi)精度為±0.5℃。DS18B20可以程序設(shè)定9~12位的分辨率,在出廠時被設(shè)置為12位的分辨率。通過和單片機系統(tǒng)的結(jié)合,可以構(gòu)建經(jīng)濟的測溫系統(tǒng)。DS18B20的管腳排列如圖2所示,DQ為數(shù)字信號輸入,輸出端,與單片機系統(tǒng)接口時可通過5.1kΩ電阻上拉;GND為電源地;VDD為外接供電電源輸入端。
DS18B20內(nèi)含64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器等。可采取直接讀取DS18B20內(nèi)部暫存寄存器的方法,通過四舍五入顯示其整數(shù)溫度值。DS18B20內(nèi)部暫存寄存器包含九個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內(nèi)容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三和第四個字節(jié)是TH、TL的易失性拷貝,第五個字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝。第六、七、八個字節(jié)用于內(nèi)部計算。第九個字節(jié)是冗余檢驗字節(jié)。以12位轉(zhuǎn)化為例:溫度信息用16位符號擴展的二進制補碼形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位,對應(yīng)的換算關(guān)系參見附表。
由于DS18B20與微處理器間采用單總線數(shù)據(jù)傳送,因此,在對DS18B20進行讀寫編程時,必須嚴(yán)格遵守讀寫時序,否則將無法讀取測量結(jié)果。
DS18820的初始化程序如下。當(dāng)程序檢測到DS18820不存在的時候會設(shè)置不存在標(biāo)志,以防止系統(tǒng)鎖死。
INIT_1820:SETBDS18B20;DS18B20數(shù)據(jù)線設(shè)置為P3.4NOPCLRDS18B20;resetDSMOVR0,#250;發(fā)延時500μs的復(fù)位低脈沖DJNZR0,SSETBDS18B20:拉高數(shù)據(jù)線MOVR0,#10;等待20μsDJNZR0,SMOVR0,#37TSR2:JNBDS18B20,TSR3;在150μs內(nèi)等待DS18B20回應(yīng)DJNZR0,TSR2;延時LJMPTSR4TSR3:SETBFLAG1;置標(biāo)志位,DS1820存在LJMPTSR5TSR4:CLRFLAG1;清標(biāo)志位,DS1820不存在AJMPTSR7TSR5:MOVR0,#118DJNZR0,S;時序要求延時240μsTSR7:SETBDS18B20RETDS18B20的讀寫程序(略)。
2.數(shù)據(jù)轉(zhuǎn)換與顯示程序設(shè)計
由于不要求顯示小數(shù),所以可以舍棄溫度寄存器0(TEMPER_L)的低4位,而將溫度寄存器1(TEMPER_H)中的低4位移入TEMPER_L中的高4位,組成的新字節(jié),即實際測得的溫度。在實際應(yīng)用中,因為涉及到零度以下溫度的顯示,需要進行一定的數(shù)據(jù)轉(zhuǎn)換。
在顯示子程序中,因為百位和負(fù)號“-”要區(qū)別顯示,相應(yīng)流程如圖3所示。
3.系統(tǒng)制作
本系統(tǒng)四位一體的0.5英寸七段顯示器是共陽型的。其管腳排列見圖4。AT89C2051的P1.0和P1.1口是模擬比較器的輸入端,內(nèi)部無上拉電阻,所以在外部接10kΩ,上拉電阻后,接入CD4069作驅(qū)動,每段電流被限制在1mA左右,每段顯示時間為1ms,溫度刷新周期為1分鐘;晶振選擇12MHz的,每條指令周期正好為1μs的倍數(shù)。裝飾面板選用家裝剩下的“正泰CHNT”86型單鍵按鈕面板,將按鈕拆除,正好成顯示窗口。系統(tǒng)采用+5V直流電源。本人正好有現(xiàn)成的三基DC5V微型開關(guān)電源,將其嵌入在86開關(guān)框中,元件布局及面板效果參見圖5、圖6。
圖5左上端的引出線為外接DS18B20導(dǎo)線,以便于進行高低溫調(diào)試試驗,調(diào)試結(jié)束后可以直接焊接在申,路板上。焊接完成后,不需要進行調(diào)試就能直接顯示溫度數(shù)據(jù)。
4.其他
在不改動系統(tǒng)硬件的基礎(chǔ)上,通過計算方法的調(diào)整,DS18B20的測溫分辨率可以提高到±0.1℃以上,由四位LED顯示成“×××。×”格式。在本系統(tǒng)中,AT89C2051的P3.5、P3.7口未使用,可以調(diào)整程序增加控制繼電器或門鈴等應(yīng)用。本人利用P3.5在調(diào)試時驅(qū)動一個LED發(fā)光管。實際可改作它用。