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