畢業(yè)設(shè)計(jì)-----基于單片機(jī)的數(shù)字溫控計(jì)_第1頁
已閱讀1頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  畢 業(yè) 論 文</b></p><p>  題 目 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)</p><p><b>  學(xué)生姓名 </b></p><p>  學(xué) 號 </p><p>  院 系 </p><p><

2、;b>  專 業(yè)  </b></p><p>  指導(dǎo)教師 </p><p>  目 錄</p><p><b>  一、引言4</b></p><p>  二、設(shè)計(jì)內(nèi)容及性能指標(biāo)5</p><p>  三、系統(tǒng)方案論證與比較5</

3、p><p><b> ?。ㄒ唬⒎桨敢?</b></p><p><b> ?。ǘ⒎桨付?</b></p><p>  四、系統(tǒng)器件選擇7</p><p> ?。ㄒ唬?、 單片機(jī)的選擇7</p><p>  1、89S51 引腳功能介紹8</p>&l

4、t;p>  (二)、溫度傳感器的選擇10</p><p>  1、DS18B20 簡單介紹:10</p><p>  2、DS18B20 使用中的注意事項(xiàng)12</p><p>  3、DS18B20 內(nèi)部結(jié)構(gòu)12</p><p>  4、DS18B20測溫原理16</p><p>  5、提高DS

5、1820測溫精度的途徑17</p><p>  (三)、顯示及報(bào)警模塊器件選擇18</p><p>  五、硬件設(shè)計(jì)電路18</p><p> ?。ㄒ唬?、主控制器19</p><p> ?。ǘ?、顯示電路19</p><p> ?。ㄈ?溫度檢測電路20</p><p> ?。ㄋ模?/p>

6、、溫度報(bào)警電路25</p><p>  六、 軟件設(shè)計(jì)26</p><p> ?。ㄒ唬?、 概述26</p><p> ?。ǘ⒅鞒绦蚰K26</p><p> ?。ㄈ⒏髂K流程設(shè)計(jì)27</p><p>  1、 溫度檢測流程28</p><p>  2、報(bào)警模塊流程28<

7、;/p><p>  3、 中斷設(shè)定流程29</p><p>  七、總結(jié)和體會31</p><p><b>  八、致謝31</b></p><p><b>  參考文獻(xiàn)32</b></p><p>  基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)</p><p> 

8、 摘要:隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活、工作、科研、各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù), 本文主要介紹了一個(gè)基于89S51單片機(jī)的測溫系統(tǒng),詳細(xì)描述了利用數(shù)字溫度傳感器DS18B20開發(fā)測溫系統(tǒng)的過程,重點(diǎn)對傳感器在單片機(jī)下的硬件連接,軟件編程以及各模塊系統(tǒng)流程進(jìn)行了詳盡分析,對各部分的電路也一一進(jìn)行了介紹,該系統(tǒng)可以方便的實(shí)現(xiàn)實(shí)現(xiàn)溫度采集和顯示,并可根據(jù)需要任意設(shè)定上下限報(bào)警溫度,它使用起來相當(dāng)方便,具有精度高、

9、量程寬、靈敏度高、體積小、功耗低等優(yōu)點(diǎn),適合于我們?nèi)粘I詈凸ぁ⑥r(nóng)業(yè)生產(chǎn)中的溫度測量,也可以當(dāng)作溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的輔助擴(kuò)展。DS18B20與AT89C51結(jié)合實(shí)現(xiàn)最簡溫度檢測系統(tǒng),該系統(tǒng)結(jié)構(gòu)簡單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場溫度測量,有廣泛的應(yīng)用前景。</p><p>  關(guān)鍵詞:單片機(jī);溫度檢測;AT89S51;DS18B20;</p><p>  T

10、he Design Of Digital Temperature Measurement Based On The Singlechip</p><p><b>  ABSTRACT:</b></p><p>  Along with the progress and development of the ages, single slice the machine

11、technique has already make widely available the life is to us,work,research,each realm, have already become the technique of a kind of comparison maturity. This paper mainly describes a temperature measurement system bas

12、ed on 89S51 singlechip, detailedly describing the development process use digital temperature sensor, the paper introduces the hardware connectivity and software programming of the DS18B20 based on the </p><p&

13、gt;  Key word : Singlechip ;temperature measurement;AT89S51; DS18B20</p><p><b>  一、引言</b></p><p>  隨著科技的不斷發(fā)展,現(xiàn)代社會對各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級的增長,而如何準(zhǔn)確而又迅速的獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息

14、采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會的每一個(gè)領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實(shí)時(shí)測量溫度,在農(nóng)業(yè)生產(chǎn)中也離不開溫度的測量,因此研究溫度的測量方法和裝置具有重要的意義。</p><p>  測量溫度的關(guān)鍵是溫度傳感器,溫度傳感器的發(fā)展經(jīng)歷了三個(gè)發(fā)展階段

15、:</p><p>  ①傳統(tǒng)的分立式溫度傳感器</p><p> ?、谀M集成溫度傳感器</p><p> ?、壑悄芗蓽囟葌鞲衅?。</p><p>  目前的智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀(jì)90年代中期問世的,它是微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動測試技術(shù)(ATE)的結(jié)晶,特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器

16、(MCU)。社會的發(fā)展使人們對傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機(jī)的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展,本文將介紹智能集成溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并對以此傳感器,89S51單片機(jī)為控制器構(gòu)成的數(shù)字溫度測量裝置的工作原理及程序設(shè)計(jì)作了詳細(xì)的介紹。與傳統(tǒng)的

17、溫度計(jì)相比,其具有讀數(shù)方便,測溫范圍廣,測溫準(zhǔn)確,輸出溫度采用數(shù)字顯示,主要用于對測溫要求比較準(zhǔn)確的場所,或科研實(shí)驗(yàn)室使用。該設(shè)計(jì)控制器使用ATMEL公司的AT89S51單片機(jī),測溫傳感器使用DALLAS公司DS18B20,用液晶來實(shí)現(xiàn)溫度顯示。</p><p>  二、設(shè)計(jì)內(nèi)容及性能指標(biāo)</p><p>  本設(shè)計(jì)主要是介紹了單片機(jī)控制下的溫度檢測系統(tǒng),詳細(xì)介紹了其硬件和軟件設(shè)計(jì),并對其

18、各功能模塊做了詳細(xì)介紹,其主要功能和指標(biāo)如下:</p><p>  ●利用溫度傳感器(DS18B20)測量某一點(diǎn)環(huán)境溫度</p><p>  ●測量范圍為-55℃~+99℃,精度為±0.5℃</p><p>  ●用液晶進(jìn)行實(shí)際溫度值顯示</p><p>  ●能夠根據(jù)需要方便設(shè)定上下限報(bào)警溫度</p><p&g

19、t;  三、系統(tǒng)方案論證與比較</p><p>  該系統(tǒng)主要由溫度測量和數(shù)據(jù)采集兩部分電路組成,實(shí)現(xiàn)的方法有很多種,下面將列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實(shí)現(xiàn)方案。</p><p><b>  (一)、方案一</b></p><p>  采用熱電偶溫差電路測溫,溫度檢測部分可以使用低溫?zé)崤?,熱電偶由兩個(gè)焊接在一起的異金屬導(dǎo)線所組成

20、(熱電偶的構(gòu)成如圖 3.1),熱電偶產(chǎn)生的熱電勢由兩種金屬的接觸電勢和單一導(dǎo)體的溫差電勢組成。通過將參考結(jié)點(diǎn)保持在已知溫度并測量該電壓,便可推斷出檢測結(jié)點(diǎn)的溫度。數(shù)據(jù)采集部分則使用帶有A/D 通道的單片機(jī),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優(yōu)點(diǎn)是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導(dǎo)線環(huán)路的噪聲影響以

21、及漂移較高的缺點(diǎn),并且這種設(shè)計(jì)需要用到A/D 轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p>  圖 3.1熱電偶電路圖</p><p>  系統(tǒng)主要包括對A/D0809 的數(shù)據(jù)采集,自動手動工作方式檢測,溫度的顯示等,這幾項(xiàng)功能的信號通過輸入輸出電路經(jīng)單片機(jī)處理。此外還有復(fù)位電路,晶振電路,啟動電路等。故現(xiàn)場輸入硬件有手動復(fù)位鍵、A/D 轉(zhuǎn)換芯片,處理芯片為51 芯片,執(zhí)行機(jī)構(gòu)有4 位數(shù)碼

22、管、報(bào)警器等。系統(tǒng)框圖如圖 3.2所示:</p><p>  圖 3.2熱電偶溫差電路測溫系統(tǒng)框圖</p><p><b>  (二)、方案二</b></p><p>  采用數(shù)字溫度芯片DS18B20 測量溫度,輸出信號全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線

23、形較好。在0—100 攝氏度時(shí),最大線形偏差小于1 攝氏度。DS18B20 的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器AT89S51構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號,可直接與計(jì)算機(jī)連接。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51 單片機(jī)控制,軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡單,安裝方便。既可以單獨(dú)對多DS18B20</p&g

24、t;<p>  控制工作,還可以與PC 機(jī)通信上傳數(shù)據(jù),另外AT89S51 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。</p><p>  該系統(tǒng)利用AT89S51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。該系統(tǒng)擴(kuò)展性非常強(qiáng),它可以在設(shè)計(jì)中加入時(shí)鐘芯片DS1302以獲取時(shí)間數(shù)據(jù),在數(shù)據(jù)處理同時(shí)顯示

25、時(shí)間,并可以利用AT24C16芯片作為存儲器件,以此來對某些時(shí)間點(diǎn)的溫度數(shù)據(jù)進(jìn)行存儲,利用鍵盤來進(jìn)行調(diào)時(shí)和溫度查詢,獲得的數(shù)據(jù)可以通過MAX232芯片與計(jì)算機(jī)的RS232接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)。</p><p>  系統(tǒng)框圖如圖 3.3所示</p><p>  圖 3.3 DS18B20溫度測溫系統(tǒng)框圖</p><p>  從以上兩種方案,容

26、易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實(shí)現(xiàn)方便、軟件設(shè)計(jì)也比較簡單,故本次設(shè)計(jì)采用了方案二。</p><p><b>  四、系統(tǒng)器件選擇</b></p><p> ?。ㄒ唬?、 單片機(jī)的選擇</p><p>  對于單片機(jī)的選擇,可以考慮使用8031與8051系列,由于8031沒有

27、內(nèi)部RAM,系統(tǒng)又需要大量內(nèi)存存儲數(shù)據(jù),因而不適用。AT89S51 是美國 ATMEL 公司生產(chǎn)的低功耗,高性能 CMOS8 位單片機(jī),片內(nèi)含 4kbytes 的可編程的 Flash 只讀程序存儲器,兼容標(biāo)準(zhǔn) 8051 指令系統(tǒng)及引腳。它集 Flash 程序存儲器既可在線編程(ISP),也可用傳統(tǒng)方法進(jìn)行編程,所以低價(jià)位 AT89S51單片機(jī)可為提供許多高性價(jià)比的應(yīng)用場合,可靈活應(yīng)用于各種控制領(lǐng)域,對于簡單的測溫系統(tǒng)已經(jīng)足夠。單片機(jī)AT

28、89S51 具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。主要特性如下</p><p>  ●與MCS-51 兼容</p><p>  ●4K字節(jié)可編程閃爍存儲器</p><p>  ●壽命:1000寫/擦循環(huán)</p><p>  ●數(shù)據(jù)保留時(shí)間:10年<

29、;/p><p>  ●全靜態(tài)工作:0Hz-24Hz</p><p>  ●三級程序存儲器鎖定</p><p>  ●128*8位內(nèi)部RAM</p><p>  ●32可編程I/O線</p><p>  ●兩個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><b>  ●5個(gè)中斷源</b>

30、</p><p><b>  ●可編程串行通道</b></p><p>  ●低功耗的閑置和掉電模式</p><p>  ●片內(nèi)振蕩器和時(shí)鐘電路 </p><p>  圖 4.1 AT89S51單片機(jī)引腳圖</p><p>  89S51 引腳功能介紹

31、 </p><p>  AT89S51 單片機(jī)為40 引腳雙列直插式封裝。 </p><p>  其引腳排列和邏輯符號如圖4.1 所示。</p><p>  各引腳功能簡單介紹如下:</p><p>  ●VCC:供電電壓 </p><p>  

32、●GND:接地 </p><p>  ●P0口:P0口為一個(gè)8位漏級開路雙向I/O口,每個(gè)管腳可吸收8TTL門電流。當(dāng)P1口的管腳寫“1”時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FLASH編程時(shí),P0口作為原碼輸入口,當(dāng)FLASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部電位必須被拉高。</p&g

33、t;<p>  ●P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入“1”后,電位被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。</p><p>  ●P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,

34、當(dāng)P2口被寫“1”時(shí),其管腳電位被內(nèi)部上拉電阻拉高,且作為輸入。作為輸入時(shí),P2口的管腳電位被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉的優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。</p><p&g

35、t;  ●P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入時(shí),由于外部下拉為低電平,P3口將輸出電流(ILL),也是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口:</p><p>  P3.0 RXD(串行輸入口)</p><p>  ??P3.1 TXD(串行輸出口)<

36、;/p><p>  ??P3.2 INT0(外部中斷0)</p><p>  ??P3.3 INT1(外部中斷1)</p><p>  ??P3.4 T0(記時(shí)器0外部輸入)</p><p>  ??P3.5 T1(記時(shí)器1外部輸入)</p><p>  ??P3.6 WR (外部數(shù)據(jù)存儲器寫選通)</p>

37、<p>  ??P3.7 RD (外部數(shù)據(jù)存儲器讀選通)</p><p>  同時(shí)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。</p><p>  ●RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p>  ●ALE / PROG :當(dāng)訪問外部存儲器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH

38、編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令時(shí)ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p&g

39、t;  ●PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取址期間,每個(gè)機(jī)器周期PSEN兩次有效。但在訪問外部數(shù)據(jù)存儲器時(shí),這兩次有效的PSEN信號將不出現(xiàn)。</p><p>  ●EA/VPP:當(dāng)EA保持低電平時(shí),訪問外部ROM;注意加密方式1時(shí),EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時(shí),訪問內(nèi)部ROM。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><

40、;p>  ●XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p>  ●XTAL2:來自反向振蕩器的輸出。</p><p>  (二)、溫度傳感器的選擇</p><p>  由于傳統(tǒng)的熱敏電阻等測溫元件測出的一般都是電壓,再轉(zhuǎn)換成對應(yīng)的溫度,需要比較多的外部元件支持,且硬件電路復(fù)雜,制作成本相對較高。這里采用DALLAS公司的數(shù)字溫度傳感

41、器DS18B20作為測溫元件。</p><p>  DS18B20 簡單介紹:</p><p>  DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55~+125 攝氏度,可編程為9位~12

42、 位轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報(bào)警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個(gè)測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛

43、很多這樣的數(shù)字溫度計(jì),十分方便。</p><p>  DS18B20 的性能特點(diǎn)如下:</p><p>  ●獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊</p><p>  ●DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫</p><p&

44、gt;  ●DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)</p><p>  ●適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電</p><p>  ●溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃</p><p><b>  ●零待機(jī)功耗</

45、b></p><p>  ●可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測溫</p><p>  ●在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快</p><p>  ●用戶可定義報(bào)警設(shè)置</p><p&

46、gt;  ●報(bào)警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件</p><p>  ●測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力</p><p>  ●負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會因發(fā)熱而燒毀,但不能正常工作</p><p>  以上特點(diǎn)使DS18B20非常適

47、用與多點(diǎn)、遠(yuǎn)距離溫度檢測系統(tǒng)。</p><p>  DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列、各種封裝形式如圖 4.2 所示,DQ 為數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;GND為地信號;VDD為可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。其電路圖 4.3所

48、示.。 </p><p>  圖 4.2 外部封裝形式 圖4.3 傳感器電路圖</p><p>  DS18B20 使用中的注意事項(xiàng)</p><p>  DS18B20 雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:

49、</p><p>  ●DS18B20 從測溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時(shí)間,這是必須保證的,不然會出現(xiàn)轉(zhuǎn)換錯(cuò)誤的現(xiàn)象,使溫度輸出總是顯示85。</p><p>  ●在實(shí)際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5V 左右,若電源電壓過低,會使所測得的溫度精度降低。</p><p>  ●較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采

50、用串行數(shù)據(jù)傳送,因此,在對DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級語言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對DS1820操作部分最好采用匯編語言實(shí)現(xiàn)。</p><p>  ●在DS18B20的有關(guān)資料中均未提及單總線上所掛DS18B20 數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中并非如此,當(dāng)單總線上所掛DS18B20 超過8 個(gè)時(shí),就需要解決微處

51、理器的總線驅(qū)動問題,這一點(diǎn)在進(jìn)行多點(diǎn)測溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。</p><p>  ●在DS18B20測溫程序設(shè)計(jì)中,向DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號,一旦某個(gè)DS18B20 接觸不好或斷線,當(dāng)程序讀該DS18B20 時(shí),將沒有返回信號,程序進(jìn)入死循環(huán),這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。</p><p>  DS18

52、B20 內(nèi)部結(jié)構(gòu)</p><p>  圖為DS1820的內(nèi)部框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM),用于存儲用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等七部分。</p><p>  DS18B20采用3腳PR-35 封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖 4.4所示&l

53、t;/p><p>  圖 4.4 DS18B20內(nèi)部結(jié)構(gòu)框圖</p><p>  64 b閃速ROM的結(jié)構(gòu)如下:</p><p>  開始8位是產(chǎn)品類型的編號,接著是每個(gè)器件的惟一的序號,共有48 位,最后8位是前面56 位的CRC 檢驗(yàn)碼,這也是多個(gè)DS18B20 可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。主機(jī)操作ROM的命令

54、有五種,如表所列</p><p>  DS18B20 溫度傳感器的內(nèi)部存儲器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM 的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖 4.5所示。 </p><p>  圖 4.5 高速暫存RAM結(jié)構(gòu)圖</p><p>  前2個(gè)字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷

55、貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。</p><p>  LSB MSB</p><p>  當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。

56、轉(zhuǎn)換完成后的溫度值就以16位帶符號擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲在高速暫存存儲器的第1,2字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.062 5 ℃/LSB形式表示。溫度值格式如下:</p><p>  這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實(shí)際溫

57、度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。圖中,S表示位。對應(yīng)的溫度計(jì)算:當(dāng)符號位S=0時(shí),表示測得的溫度植為正值,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),表示測得的溫度植為負(fù)值,先將補(bǔ)碼變換為原碼,再計(jì)算十進(jìn)制值。例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。</p>

58、<p>  DS18B20溫度傳感器主要用于對溫度進(jìn)行測量,數(shù)據(jù)可用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,并以0.0625℃/LSB形式表示。表2是部分溫度值對應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)。</p><p><b>  表2 部分溫度值</b></p><p>  DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較,若T>

59、;TH或T<TL,則將該器件內(nèi)的告警標(biāo)志置位,并對主機(jī)發(fā)出的告警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測量溫度并進(jìn)行告警搜索。</p><p>  在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前 56位來計(jì)算CRC值,并和存入DS18B20中的CRC值做比較,以判斷主機(jī)收到的ROM數(shù) 據(jù)是否正確。</p><p>  4、DS18B20

60、測溫原理</p><p>  DS18B20的測溫原理如圖2所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測量.計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-5

61、5 ℃所對應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55 ℃所對應(yīng)的一個(gè)基數(shù)值。</p><p>  減法計(jì)數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí)溫度寄存器的值將加1,減法計(jì)數(shù)器 1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中

62、的數(shù)值即為所測溫圖2中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性其輸出用,于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達(dá)到被測溫度值,這就是DS18B20的測溫原理。</p><p>  另外,由于DS18B20單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí) 序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20 (發(fā)復(fù)位脈沖

63、)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p>  圖(2) DS18B20測溫原理圖</p><p>  在正常測溫情況下,DS1820的測溫分辨力為0.5℃,可采用下述方法獲得高分辨率的溫度測量結(jié)果:首先用DS1820提供的讀暫存器指令(BEH)讀出以0.5℃為分辨率的溫度測量結(jié)果,然后切去測量結(jié)果中的最低有效位(LSB),得到所測實(shí)際溫度的整數(shù)部分Tz,然后再用B

64、EH指令取計(jì)數(shù)器1的計(jì)數(shù)剩余值Cs和每度計(jì)數(shù)值CD。考慮到DS1820測量溫度的整數(shù)部分以0.25℃、0.75℃為進(jìn)位界限的關(guān)系,實(shí)際溫度Ts可用下式計(jì)算:</p><p>  Ts=(Tz-0.25℃)+(CD-Cs)/CD </p><p>  5、提高DS1820測溫精度的途徑</p><p> ?。?)、DS1820高精度測溫的理論依據(jù)</p>

65、<p>  DS1820正常使用時(shí)的測溫分辨率為0.5℃,這對于水輪發(fā)電機(jī)組軸瓦溫度監(jiān)測來講略顯不足,在對DS1820測溫原理詳細(xì)分析的基礎(chǔ)上,我們采取直接讀取DS1820內(nèi)部暫存寄存器的方法,將DS1820的測溫分辨率提高到0.1℃~0.01℃.</p><p>  DS1820內(nèi)部暫存寄存器的分布如表1所示,其中第7字節(jié)存放的是當(dāng)溫度寄存器停止增值時(shí)計(jì)數(shù)器1的計(jì)數(shù)剩余值,第8字節(jié)存放的是每度所對應(yīng)

66、的計(jì)數(shù)值,這樣,我們就可以通過下面的方法獲得高分辨率的溫度測量結(jié)果。首先用DS1820提供的讀暫存寄存器指令(BEH)讀出以0.5℃為分辨率的溫度測量結(jié)果,然后切去測量結(jié)果中的最低有效位(LSB),得到所測實(shí)際溫度整數(shù)部分T整數(shù),然后再用BEH指令讀取計(jì)數(shù)器1的計(jì)數(shù)剩余值M剩余和每度計(jì)數(shù)值M每度,考慮到DS1820測量溫度的整數(shù)部分以0.25℃、0.75℃為進(jìn)位界限的關(guān)系,實(shí)際溫度T實(shí)際可用下式計(jì)算得到:T實(shí)際=(T整數(shù)-0.25℃)+

67、(M每度-M剩余)/M每度。</p><p>  表1 DS18B20暫存寄存器分布</p><p>  該字節(jié)各位的定義如下:</p><p>  低5位一直都是1,TM是測試模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),即是來設(shè)置分辨率,如表1所示(DS18B20出

68、廠時(shí)被設(shè)置為12位)。</p><p>  表1 R1和R2模式表</p><p>  由表1可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長。因此,在實(shí)際應(yīng)用中要在分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存存儲器除了配置寄存器外,還有其他8個(gè)字節(jié)組成,其分配如下所示。其中溫度信息(第1,2字節(jié))、TH和TL值第3,4字節(jié)、第6~8字節(jié)未用,表現(xiàn)為全邏輯1;第9字節(jié)讀出的是前面所有8個(gè)字節(jié)

69、的CRC碼,可用來保證通信正確。</p><p>  根據(jù)DS18B20的通訊協(xié)議,主機(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微秒的存在低脈沖

70、,主CPU收到此信號表示復(fù)位成功。</p><p>  (2)、 測量數(shù)據(jù)比較</p><p>  表2為采用直接讀取測溫結(jié)果方法和采用計(jì)算方法得到的測溫?cái)?shù)據(jù)比較,通過比較可以看出,計(jì)算方法在DS1820測溫中不僅是可行的,也可以大大的提高DS1820的測溫分辨率。</p><p>  表2 DS18B20 直度測溫結(jié)果與計(jì)算測溫結(jié)果數(shù)據(jù)比較</p>

71、<p> ?。ㄈ@示及報(bào)警模塊器件選擇</p><p>  在本設(shè)計(jì)中溫度測量范圍為0℃~+125℃,精度為±0.5℃,因此只需要液晶就可以完成相關(guān)的顯示功能,報(bào)警器可以用有源蜂鳴器配合三極管來代替。</p><p><b>  五、硬件設(shè)計(jì)電路</b></p><p>  溫度計(jì)電路設(shè)計(jì)原理圖如圖5.1所示,控制器使用

72、單片機(jī)AT89C2051,溫度計(jì)傳感器使用DS18B20,用液晶實(shí)現(xiàn)溫度顯示。</p><p>  本溫度計(jì)大體分三個(gè)工作過程。首先,由DS18820溫度傳感器芯片測量當(dāng)前的溫度,并將結(jié)果送入單片機(jī)。然后,通過89C205I單片機(jī)芯片對送來的測量溫度讀數(shù)進(jìn)行計(jì)算和轉(zhuǎn)換,井將此結(jié)果送入液晶顯示模塊。最后,SMC1602A芯片將送來的值顯示于顯示屏上。 由圖1可看到,本電路主要由DSl8820溫度傳感器芯片

73、、SMCl602A液晶顯示模塊芯片和89C2051單片機(jī)芯片組成。其中,DSI8B20溫度傳感器芯片采用“一線制”與單片機(jī)相連,它獨(dú)立地完成溫度測量以及將溫度測量結(jié)果送到單片機(jī)的工作。</p><p>  圖5.1 溫度計(jì)電路設(shè)計(jì)原理圖</p><p><b>  (一)、主控制器</b></p><p>  單片機(jī)AT89C2051具有低電

74、壓供電和小體積等特點(diǎn),兩個(gè)端口剛好滿足電路系統(tǒng)的設(shè)計(jì)需要,很合適攜手特式產(chǎn)品的使用。主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:初始化、ROM操作指令、存儲器操作指令。必須先啟動DS18B20開始轉(zhuǎn)換,再讀出溫度轉(zhuǎn)換值。</p><p><b> ?。ǘ?、顯示電路</b></p><p>  顯示電路采用SMCI602A液晶顯示模塊芯片該芯片可顯示16

75、15;2個(gè)字符,比以前的七段數(shù)碼管LED顯示器在顯示字符的數(shù)量上要多得多。另外,由于SMCl602芯片編程比較簡單,界面直觀,因此更加易于使用者操作和觀測。SMCl602A芯片的接口信號說明如表1所列。</p><p>  表1 SMCl602A芯片的接口信號說明</p><p>  (三)、 溫度檢測電路</p><p>  DS18B20 最大的特點(diǎn)是單總線數(shù)

76、據(jù)傳輸方式,DS18B20 的數(shù)據(jù)I/O 均由同一條線來完成。DS18B20 的電源供電方式有2 種: 外部供電方式和寄生電源方式。工作于寄生電源方式時(shí), VDD 和GND 均接地, 他在需要遠(yuǎn)程溫度探測和空間受限的場合特別有用, 原理是當(dāng)1 W ire 總線的信號線DQ 為高電平時(shí), 竊取信號能量給DS18B20 供電, 同時(shí)一部分能量給內(nèi)部電容充電, 當(dāng)DQ為低電平時(shí)釋放能量為DS18B20 供電。但寄生電源方式需要強(qiáng)上拉電路, 軟

77、件控制變得復(fù)雜(特別是在完成溫度轉(zhuǎn)換和拷貝數(shù)據(jù)到E2PROM 時(shí)) , 同時(shí)芯片的性能也有所降低。因此, 在條件允許的場合, 盡量采用外供電方式。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電。在這里采用前者方式供電。DS18B20與芯片連接電路如圖 5.2所示:</p><p>  圖 5.2 DS18B20與單片機(jī)的連接</p><p>  外部電源供電方式是DS18

78、B20最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點(diǎn)溫度監(jiān)控系統(tǒng)。站長推薦大家在開發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根VCC引線。在外接電源方式下,可以充分發(fā)揮DS18B20寬電源電壓范圍的優(yōu)點(diǎn),即使電源電壓VCC 降到3V 時(shí),依然能夠保證溫度量精度。</p><p>  由于DS18B20 只有一根數(shù)據(jù)線,因此它和主機(jī)(單片機(jī))通信是需要串行通信,而

79、AT89S51 有兩個(gè)串行端口,所以可以不用軟件來模擬實(shí)現(xiàn)。經(jīng)過單線接口訪問DC18B20 必須遵循如下協(xié)議:初始化、ROM 操作命令、存儲器操作命令和控制操作。要使傳感器工作,一切處理均嚴(yán)格按照時(shí)序。</p><p>  主機(jī)發(fā)送(Tx)--復(fù)位脈沖(最短為480μs 的低電平信號)。接著主機(jī)便釋放此線并進(jìn)入接收方式(Rx)??偩€經(jīng)過4.7K的上拉電阻被拉至高電平狀態(tài)。在檢測到I/O 引腳上的上升沿之后,DS1

80、8B20 等待15~60μs,并且接著發(fā)送脈沖(60~240μs 的低電平信號)。然后以存在復(fù)位脈沖表示DS18B20 已經(jīng)準(zhǔn)備好發(fā)送或接收,然后給出正確的ROM 命令和存儲操作命令的數(shù)據(jù)。DS18B20 通過使用時(shí)間片來讀出和寫入數(shù)據(jù),時(shí)間片用于處理數(shù)據(jù)位和進(jìn)行何種指定操作的命令。它有寫時(shí)間片和讀時(shí)間片兩種:</p><p>  寫時(shí)間片:當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時(shí),產(chǎn)生寫時(shí)間片。有兩種類型的寫

81、時(shí)間片:寫1 時(shí)間片和寫0 時(shí)間片。所有時(shí)間片必須有60 微秒的持續(xù)期,在各寫周期之間必須有最短為1微秒的恢復(fù)時(shí)間.</p><p>  讀時(shí)間片:從DS18B20 讀數(shù)據(jù)時(shí),使用讀時(shí)間片。當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉至邏輯低電平時(shí)產(chǎn)生讀時(shí)間片。數(shù)據(jù)線在邏輯低電平必須保持至少1 微秒;來自DS18B20 的輸出數(shù)據(jù)在時(shí)間下降沿之后的15 微秒內(nèi)有效。為了讀出從讀時(shí)間片開始算起15微秒的狀態(tài),主機(jī)必須停止把引腳驅(qū)動

82、拉至低電平。在時(shí)間片結(jié)束時(shí),I/O 引腳經(jīng)過外部的上_鱯__9L_€%拉電阻拉回高電平,所有讀時(shí)間片的最短持續(xù)期為60 微秒,包括兩個(gè)讀周期間至少1μs 的恢復(fù)時(shí)間。</p><p>  一旦主機(jī)檢測到DS18B20 的存在,它便可以發(fā)送一個(gè)器件ROM 操作命令。所有ROM 操作命令均為8位長。</p><p>  所有的串行通訊,讀寫每一個(gè)bit 位數(shù)據(jù)都必須嚴(yán)格遵守器件的時(shí)序邏輯來編程

83、,同時(shí)還必須遵守總線命令序列,對單總線的DS18B20 芯片來說,訪問每個(gè)器件都要遵守下列命令序列:首先是初始化;其次執(zhí)行ROM 命令;最后就是執(zhí)行功能命令(ROM 命令和功能命令后面以表格形式給出)。如果出現(xiàn)序列混亂,則單總線器件不會響應(yīng)主機(jī)。當(dāng)然,搜索ROM命令和報(bào)警搜索命令,在執(zhí)行兩者中任何一條命令之后,要返回初始化。</p><p>  基于單總線上的所有傳輸過程都是以初始化開始的,初始化過程由主機(jī)發(fā)出的

84、復(fù)位脈沖和從機(jī)響應(yīng)的應(yīng)答脈沖組成。應(yīng)答脈沖使主機(jī)知道,總線上有從機(jī),且準(zhǔn)備就緒。</p><p>  在主機(jī)檢測到應(yīng)答脈沖后,就可以發(fā)出ROM 命令。這些命令與各個(gè)從機(jī)設(shè)備的唯一64 位ROM 代碼相關(guān)。在主機(jī)發(fā)出ROM命令,以訪問某個(gè)指定的DS18B20,接著就可以發(fā)出DS18B20支持的某個(gè)功能命令。這些命令允許主機(jī)寫入或讀出DS18B20便箋式RAM、啟動溫度轉(zhuǎn)換。軟件實(shí)現(xiàn)DS18B20的工作嚴(yán)格遵守單總線

85、協(xié)議:</p><p>  (1)主機(jī)首先發(fā)出一個(gè)復(fù)位脈沖,信號線上的DS18B20 器件被復(fù)位。</p><p>  (2)接著主機(jī)發(fā)送ROM命令,程序開始讀取單個(gè)在線的芯片ROM編碼并保存在單片機(jī)數(shù)據(jù)存儲器中,把用到的DS18B20 的ROM 編碼離線讀出,最后用一個(gè)二維數(shù)組保存ROM 編碼,數(shù)據(jù)保存在X25043中。</p><p>  (3)系統(tǒng)工作時(shí),把讀

86、取了編碼的DS18B20 掛在總線上。發(fā)溫度轉(zhuǎn)換命令,再總線復(fù)位。</p><p>  (4)然后就可以從剛才的二維數(shù)組匹配在線的溫度傳感器,隨后發(fā)溫度讀取命令就可以獲得對應(yīng)的度值了。</p><p>  在主機(jī)初始化過程,主機(jī)通過拉低單總線至少480us,來產(chǎn)生復(fù)位脈沖。接著,主機(jī)釋放總線,并進(jìn)入接收模式。當(dāng)總線被釋放后,上拉電阻將單總線拉高。在單總線器件檢測到上升沿后,延時(shí)15~60u

87、s,接著通過拉低總線60~240us,以產(chǎn)生應(yīng)答脈沖。</p><p>  寫時(shí)序均起始于主機(jī)拉低總線,產(chǎn)生寫1 時(shí)序的方式:主機(jī)在拉低總線后,接著必須在15us之內(nèi)釋放總線。產(chǎn)生寫0 時(shí)序的方式:在主機(jī)拉低總線后,只需在整個(gè)時(shí)序期間保持低電平即可(至少60us)。在寫字節(jié)程序中的寫一個(gè)bit 位的時(shí)候,沒有按照通常的分別寫0時(shí)序和寫1 時(shí)序,而是把兩者結(jié)合起來,當(dāng)主機(jī)拉低總線后在15us 之內(nèi)將要寫的位c 給D

88、O:如果c 是高電平滿足15us 內(nèi)釋放總線的要求,如果c是低電平,則DO=c這條語句仍然是把總線拉在低電平,最后都通過延時(shí)58us 完成一個(gè)寫時(shí)序(寫時(shí)序0或?qū)憰r(shí)序1)過程。</p><p>  寫時(shí)間時(shí)序:當(dāng)主機(jī)把數(shù)據(jù)從邏輯高電平拉到邏輯低電平的時(shí)候,寫時(shí)間隙開始。有兩種寫時(shí)間隙,寫1 時(shí)間隙和寫0 時(shí)間隙。所有寫時(shí)間隙必須最少持續(xù)60μs,包括兩個(gè)寫周期至少1μs 的恢復(fù)時(shí)間。I/O線電平變低后,DS18B

89、20 在一個(gè)15μs 到60μs 的窗口內(nèi)對I/O 線采樣。如果線上事高電平,就是寫1,如果是低電平,就是寫0。主機(jī)要生成一個(gè)寫時(shí)間隙,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時(shí)間隙開始后的15μs 內(nèi)允許數(shù)據(jù)線拉到高電平。主機(jī)要生成一個(gè)寫0 時(shí)間隙,必須把數(shù)據(jù)線拉到低電平并保存60μs。</p><p>  每個(gè)讀時(shí)隙都由主機(jī)發(fā)起,至少拉低總線1us,在主機(jī)發(fā)起讀時(shí)序之后,單總線器件才開始在總線上發(fā)送0 或1。所有

90、讀時(shí)序至少需要60us。</p><p>  源程序: 假設(shè)要寫1 B 的數(shù)據(jù), 且數(shù)據(jù)放在A 中。</p><p>  SETB TEM PDN</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  WRITEDS182

91、0LOP: CLR TEM PD IN</p><p>  MOV R6, # 08H ; 延時(shí)15 Ls</p><p>  DJN Z  R6, $</p><p>  RRC  A ; 將要寫數(shù)據(jù)存入C</p><p>  MOV TEM PD IN , C

92、 ; 將數(shù)據(jù)寫入總線</p><p>  MOV  R6, # 14H ; 延時(shí)40 Ls</p><p>  DJN Z R6, $</p><p>  SETB TEM PD IN ; 釋放總線</p><p>  DJN Z  R7,WR ITEDS1820L

93、O P ; 寫8 位</p><p><b>  RET</b></p><p>  讀時(shí)間時(shí)序:當(dāng)從DS18B20 讀數(shù)據(jù)時(shí),主機(jī)生成讀時(shí)間隙。當(dāng)主機(jī)把數(shù)據(jù)從高電平拉到低電平時(shí),寫時(shí)間隙開始,數(shù)據(jù)線必須保持至少1μs;從DS18B20輸出的數(shù)據(jù)在讀時(shí)間隙的下降沿出現(xiàn)后15μs 內(nèi)有效。</p><p>  因此,主機(jī)在讀時(shí)間隙開始后必須把

94、I/O 腳驅(qū)動拉為的電平保持15μs,以讀取I/O 腳狀態(tài)。在讀時(shí)間隙的結(jié)尾,I/O 引腳將被外部上拉電阻拉到高電平。所有讀時(shí)間隙必須最少60μs,包括兩個(gè)讀周期至少1μs的恢復(fù)時(shí)間。</p><p>  源程序: 假設(shè)要讀1B 的數(shù)據(jù), 且數(shù)據(jù)放在A 中。</p><p>  READDS1820:MOV  R7, # 08H ; 1 個(gè)字節(jié)8

95、位</p><p>  SETB  TEM PD IN</p><p><b>  NO P</b></p><p><b>  NO P</b></p><p>  READDS1820LOO P: CLR TEM PD IN</p><p><b>  NO P

96、</b></p><p>  SETB TEM PD IN ; 釋放總線</p><p>  MOV   R6, # 05H ; 延時(shí)10 Ls</p><p>  DJN Z  R6, $</p><p>  MOV   C, TEM PD N ; 采樣總

97、線數(shù)據(jù)</p><p>  MOV   R6, # 14H ; 延時(shí)40 Ls</p><p>  DJN Z  R6, $</p><p>  RRC  A ; 采樣數(shù)據(jù)存入A</p><p>  SETB TEM PD IN ; 釋放總線&

98、lt;/p><p>  DJN Z R7, READDS1820LOO P ; 采樣下一位</p><p>  MOV R6, # 14H ; 延時(shí)40 Ls</p><p>  DJN Z  R6, $</p><p><b>  RET</b></p><p&

99、gt;  讀/寫時(shí)序如圖 5.3如下:</p><p>  圖 5.3 DS18B20的讀寫時(shí)序圖</p><p>  復(fù)位時(shí)序:復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號后等待16~60 微秒左右,后發(fā)出60~240 微秒的存在低脈沖,主CPU 收到此信號表示復(fù)位成功。</p><p>  源程序: 其中TEM PD IN 定義為DS

100、18B20 的數(shù)據(jù)管腳, 主機(jī)為A T89C2051。</p><p>  N ITDS1820: SETB TEM PD N</p><p><b>  NO P</b></p><p><b>  NO P</b></p><p>  CLR TEM PD N</p><p&

101、gt;  MOV  R6, # 0A 0H ; 延時(shí)640 Ls</p><p>  DJN Z R6, $</p><p>  MOV  R6, # 0A 0H</p><p>  DJN Z R6, $</p><p>  SETB TEM PD N ; 釋放總

102、線</p><p>  MOV  R6, # 32H ; 延時(shí)100 Ls, 等待回應(yīng)</p><p>  DJN Z R6, $</p><p>  MOV  R6, # 3CH</p><p>  LOO P1820: MOV  C, TEM PD N ; 采樣

103、總線信號</p><p>  JC  N ITDS1820OU T</p><p>  DJN Z  R6,LOO P1820</p><p>  MOV   R6, # 064H</p><p>  DJN Z  R6, $</p><p>  SJM P  N ITDS1820</p><p&g

104、t;<b>  RET</b></p><p>  IN ITDS1820OU T: SETB TEM PD N</p><p><b>  RET</b></p><p>  復(fù)位時(shí)序如圖 5.3所示:</p><p> ?。ㄋ模囟葓?bào)警電路</p><p>  本設(shè)計(jì)采

105、軟件處理報(bào)警,利用有源蜂鳴器進(jìn)行報(bào)警輸出,采用直流供電。當(dāng)所測溫度超過獲低于所預(yù)設(shè)的溫度時(shí),數(shù)據(jù)口相應(yīng)拉高電平,報(bào)警輸出。(也可采用發(fā)光二級管報(bào)警電路,如過需要報(bào)警,則只需將相應(yīng)位置1,當(dāng)參數(shù)判斷完畢后,再看報(bào)警模型單元ALARM 的內(nèi)容是否與預(yù)設(shè)一樣,如不一樣,則發(fā)光報(bào)警)報(bào)警電路硬件連接見圖 5.10。</p><p>  圖 5.10蜂鳴器電路連接圖</p><p><b>

106、;  六、 軟件設(shè)計(jì)</b></p><p><b>  (一)、 概述</b></p><p>  整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來了。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個(gè)控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實(shí)質(zhì)性的功

107、能如測量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。</p><p><b>  (二)、主程序模塊</b></p><p

108、>  主程序需要調(diào)用4 個(gè)子程序,分別為數(shù)碼管顯示程序,溫度測試及處理子程序,報(bào)警子程序,中斷設(shè)定子程序。各模塊程序功能如下:</p><p>  ●數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。</p><p>  ●溫度測試及處理程序:對溫度芯片送過來的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。</p><p>  ●報(bào)警子程序:進(jìn)行溫度上下限判斷及報(bào)警輸出。

109、</p><p>  ●中斷設(shè)定程序:實(shí)現(xiàn)設(shè)定上下限報(bào)警功能。</p><p>  主程序流程見圖6.1:</p><p>  圖 6.1 DS18B20初始化流程圖 圖 6.2主程序流程圖</p><p> ?。ㄈ?、各模塊流程設(shè)計(jì)</p><p>  下面對主要子程序

110、的流程圖做介紹</p><p><b>  1、 溫度檢測流程</b></p><p>  DS18B20在單片機(jī)控制下分三個(gè)階段:</p><p>  ●18B20 初始化:初始化流程圖見</p><p>  ●讀18B20時(shí)序:讀DS18B20流程見圖 6.3:</p><p>  ●寫18B

111、20時(shí)序:寫18B20 流程見圖6.4</p><p>  圖 6.3讀DS18B20流程圖 圖 6.4寫DS18B20流程圖</p><p><b>  2、報(bào)警模塊流程</b></p><p>  流程見圖6.5 </p><p&g

112、t;  圖 6.5 報(bào)警模塊子程序流程圖</p><p><b>  3、 中斷設(shè)定流程</b></p><p>  中斷模塊采用了外中斷和內(nèi)中斷套用方法。當(dāng)設(shè)計(jì)需要實(shí)現(xiàn)上下限報(bào)警時(shí),利用INT0口進(jìn)行中斷,set 鍵進(jìn)行上下限報(bào)警溫度設(shè)定,進(jìn)入溫度設(shè)定狀態(tài)后(按一下溫度設(shè)定鍵),首先會提示顯示“UP”字母,表示要用戶設(shè)定高溫報(bào)警溫度,按S3 鍵 ,表示本位數(shù)字+1,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論