歡迎您光臨本站 登入註冊首頁

概述

  1.DS18B20的初始化與讀寫程序  DS18B20內含64位光刻ROM、溫度感測器、非揮發的溫度報警觸發器TH和TL、配置寄存器等。可採取直接讀取DS18B20內部暫存寄存器的方法,通過四舍五……


  1.DS18B20的初始化與讀寫程序

  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發光管。實際可改作它用。

[admin via 研發互助社區 ] 基於DS18B20和89C2051組成的溫度顯示電路已經有4744次圍觀

http://cocdig.com/docs/show-post-15508.html