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