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