關于DS18B20在溫度檢測系統(tǒng)中的應用
1.背景
在現代化的工業(yè)生產中人們需要對溫度進行檢測和控制。采用51單片機來對溫度進行控制,具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點;本論文設計方案根據實際經驗討論關于DS18B20數字溫度傳感器在溫度測量中的應用;其具有較高的測量精度,適合對溫度精度要求較高的化工生產、電力工程等行業(yè)。
2.溫度控制系統(tǒng)
美國DALLAS公司生產的DS18B20數字溫度傳感器,可以直接將被測溫度轉化為串行數字信號供微機處理,通過簡單的編程實現9位的溫度讀數。并且多個DS18B20可以并接到多個地址線上與單片機實現通信。
DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數據線實現數據的雙向傳輸,而對AT89S51單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。由于DS18B20是在一根I/O線上讀數據,因此,對讀寫的數據位有著嚴格的時序要求。
另外,由于DS18B20單線通信功能是分時完成的,即異步通信,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:
初始化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→ 發(fā)存儲器操作命令→ 處理數據DS18B20溫度傳感器的測溫誤差:在0--70°C范圍內,DS18B20的上下限誤差分別為+0.5°C和-0.5°C,而典型產品的誤差僅為士0.25°C.
3.系統(tǒng)的軟件設計
系統(tǒng)軟件設計在這里就是指單片機的軟件設計,本系統(tǒng)是采用C語言來進行程序設計的,主要包括顯示子程序,復位程序,寫程序讀程序,中斷響應等。
3.1 DS18B20的軟件設計
DS18B20的一線工作協(xié)議流程是:初始化→ROM操作指令→存儲器操作指令→數據傳輸。其工作時序包括初始化時序、寫時序和讀時序。故主機控制DS18B20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對DS18B20進行復位,復位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進行預定的操作。復位要求主CPU將數據線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復位成功。
3.2 往DS18B20寫數據
當主機把數據線從高邏輯電平拉至低邏輯電平時,產生寫時序。有兩種類型的寫時序:寫1時序和寫0時序。所有時序必須有最短為60微秒的持續(xù)期,在各寫周期之間必須有最短為1微秒的恢復時間。在1/0線由高電平變?yōu)榈碗娖街驞S18B20在15 s至60 s的窗口之間對1/0線采樣。如果線為高電平寫1就發(fā)生,如果線為低電平便發(fā)生寫0.對于DS18B20寫0時序和寫1時序的要求不同,當要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總線。
3.3 從DS18B20讀數據
當從DS18B20讀數據時,主機產生讀時序。當主機把數據線從邏輯高電平拉至低電平時產生讀時序。數據線必須保持在低邏輯電平至少1微秒;來自DS18B20的輸出數據在讀時間片下降沿之后15微秒有效。因此,為了讀出從讀時序開始算起15微秒的狀態(tài)主機必須停止把1/0引腳驅動至低電平,在讀時序結束時,1/0引腳經過外部的上拉電阻拉回至高電平。所有讀時序的最短持續(xù)期限為60微秒,各個讀時序之間必須有最短為1微秒的恢復時間。
3.4 中斷服務程序設計
CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生);CPU暫時中斷當前的工作,轉去處理事件B(中斷響應和中斷服務);待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷。
AT89C51單片機中斷處理過程:中斷響應條件和時間是中斷源有中斷請求;此中斷源的中斷允許位為1;CPU開中斷(即EA=1)。以上三條同時滿足時,CPU才有可能響應中斷。
定時器方式控制寄存器TMOD用于設置Tn的功能模式和工作方式以及門控制信號你,只能字節(jié)尋址,字節(jié)地址為89H,高四位用于定時器T1,低四位用于定時器T0.定時器/計數器方式控制寄存器TMOD不能進行位尋址,只能用于字節(jié)傳送指令設置定時器工作方式,低半字節(jié)定義為定時器0,高半字節(jié)定義為定時器1.復位時,TMOD所有位均為0.
3.5 主程序流程圖
程序開始先進行初始化,對系統(tǒng)進行復位操作,然后發(fā)送檢波信號,若系統(tǒng)檢測到采樣信號,則AT89C51單片機的P3.7口接收串行數據,然后調用子程序:DS18B2O的初始化、讀取數據、寫數據。在溫度轉換和讀取溫度前,首先要通過產生復位脈沖初始化DS18B20,然后DS18B20發(fā)出應答脈沖,當單片機接收到應答脈沖后才開始后續(xù)的操作。
程序應按照嚴格的時序進行,以保證數據的完整性。最后由數碼管顯示出采集的溫度。
4.結論
本文針對溫度檢測存在的問題將多種信息處理技術和單總線技術相結合,設計了一套實時、全面、科學的溫度檢測系統(tǒng)。在本系統(tǒng)中,采用模塊化、層次化設計。單片機與溫度傳感器之間采用單總線通信標準,用簡單、高效的通信電路實現檢測數據的讀取。本系統(tǒng)的優(yōu)良功能可實現對溫度的全面、實時、自動的檢測,及時發(fā)現問題,采取有效防護措施。
51單片機相關文章:51單片機教程
c語言相關文章:c語言教程
塵埃粒子計數器相關文章:塵埃粒子計數器原理 上拉電阻相關文章:上拉電阻原理
評論