簡(jiǎn)易數(shù)字溫度計(jì)的設(shè)計(jì)_第1頁(yè)
簡(jiǎn)易數(shù)字溫度計(jì)的設(shè)計(jì)_第2頁(yè)
簡(jiǎn)易數(shù)字溫度計(jì)的設(shè)計(jì)_第3頁(yè)
簡(jiǎn)易數(shù)字溫度計(jì)的設(shè)計(jì)_第4頁(yè)
簡(jiǎn)易數(shù)字溫度計(jì)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

目錄引言.............................................................................................................................................31功能要求…………..…...……42系統(tǒng)方案論證與比較………………..……..…………….…42.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證…………..…...42.1.1方案一……....………………..………………….…2.1.2方案二…....……….…….…………...………..…......2.2方案二的總體設(shè)計(jì)框圖………….……………..………..73系統(tǒng)主要元器件的選擇及介紹.............................................................................................83.1單片機(jī)的選用及功能介紹…..…………….….……………..…….…….83.1.1單片機(jī)簡(jiǎn)介..........................................................................................................3.1.2單片機(jī)的產(chǎn)生與發(fā)展……………….……………...………..…...…3.1.3單片機(jī)的應(yīng)用……….………………..…..………..13.1.4MCS-51單片機(jī)引腳及功能介紹.................................................................3.2溫度傳感器的選擇…………..………….………..……………..……...133.2.1DS18B20簡(jiǎn)單介紹………………….……..………………..….…..3.2.2DS18B20的性能特點(diǎn)和使用中的注意事項(xiàng)……….…..…..….…..13.2.3DS18B20的引腳及內(nèi)部結(jié)構(gòu)………...………...…3.2.4DS18B20的工作原理…….……………….……....3.2.5DS18B20的單線協(xié)議和命令…....………….………….……........3.2.6溫度數(shù)據(jù)的計(jì)算處理方法……...………….….......4系統(tǒng)硬件電路的設(shè)計(jì)…………….………..................................................324.1主板電路...........................................................................................................................324.2顯示電路………………….……….…….324.3DS18B20溫度傳感器與單片機(jī)的接口電路…………….…….………..335系統(tǒng)軟件算法分析………………..………..345.1主程序…………………...345.2讀出溫度子程序………..……………….355.3溫度轉(zhuǎn)換命令子程序………………….…….………….365.4計(jì)算溫度子程序…………..…………….375.5顯示數(shù)據(jù)刷新子程序…………..……….386調(diào)試及性能分析………………..………….39結(jié)論…………..……………….40致謝………………..………….41參考文獻(xiàn)…………..………….42附錄…………..……………….43附錄一原理圖……….………...……..…………...……44附錄二控制源程序清單……………..…………...……48基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)指導(dǎo)教師:宗文軍2006級(jí)機(jī)電專業(yè)學(xué)號(hào)20060279姓名胡雄飛摘要隨著時(shí)代的進(jìn)步和發(fā)展,人類不斷的需求,科技不斷的進(jìn)步。溫度計(jì)所給人類帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高。由于老式溫度計(jì)的精確度低,測(cè)量范圍小,無(wú)法滿足現(xiàn)代化生活:工業(yè)、教學(xué)、科研、旅游等等各個(gè)領(lǐng)域的需求。隨著集成電路技術(shù)的發(fā)展,單片微型計(jì)算機(jī)的功能也不斷增強(qiáng),由于單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機(jī)控制的數(shù)字溫度計(jì),它屬于多功能溫度計(jì)。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確等優(yōu)點(diǎn)。該溫度計(jì)以AT89S51為主控器,通過(guò)DS18B20來(lái)檢測(cè)溫度,并通過(guò)四位共陽(yáng)極LED數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示。同時(shí)可以設(shè)置上下線報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。數(shù)字溫度計(jì)是單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線上可以掛很多這樣的數(shù)字溫度計(jì),十分方便。關(guān)鍵詞:?jiǎn)纹瑱C(jī);數(shù)字控制;溫度計(jì);DS18B20;AT89S51BasedonthedesignofmicrocontrollerdigitalthermometerTutor:QinZhiGuangAuthor:JiaZhenAbstractAsthetimesprogressanddevelopment,humanconstantdemand,technologicalprogress.Thermometer,giventheconvenienceofmankindisundeniable,inwhichthedigitalthermometerisatypicalexample,butithavebecomeincreasinglydemanding.Duetothelowaccuracyofold-fashionedthermometer,measuringrangeissmall,doesnotmeetmodernlife:industry,teaching,research,andtourismdemandinvariousfields.Withtheintegratedcircuitstechnology,single-chipmicro-computerfeaturesarealsogrowing,duetomicrocontrollertechnologyhasspreadtoourlives,work,researchinvariousfieldshasbecomearelativelymaturetechnology,thisarticledescribesacontrolbasedonsinglechipdigitalthermometer,itbelongstomulti-functionthermometer.Thedesignpresentedindigitalthermometerwithatraditionalthermometer,comparedwithareadingconvenience,awiderangeoftemperaturemeasurement,temperaturemeasurementaccurate.ThethermometerinordertoAT89S51-basedcontroller,throughtheDS18B20todetectthetemperature,andthroughfourcommonanodeLEDdigitaltubes,serialtransmissionofdatatoachievetemperaturedisplay.Youcansetthealarmofftheassemblylineatthesametimethetemperatureissetwhenthetemperatureisnotwithinthescopewhenitcouldbereported.Digitalthermometerisasinglebusdevice,withasimplecircuit,smallsizeandcharacteristics.Therefore,useittoformatemperaturemeasurementsystemwithasimplecircuit,inacommunicationlinecancarrymanyofthesedigitalthermometerisveryconvenient.Keywords:SCM;digitalcontrol;thermometer;DS18B20;AT89S51引言在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要用到溫度的檢測(cè)與控制,而在傳統(tǒng)的溫度測(cè)量系統(tǒng)中,一般采用熱電偶或鉑電阻進(jìn)行溫度測(cè)量。在這些電路中,有這樣一些問(wèn)題必須解決:為了進(jìn)行準(zhǔn)確的溫度測(cè)量,必須給鉑電阻提供一個(gè)良好的恒流源;由于熱電偶出來(lái)的信號(hào)是模擬信號(hào),所以此信號(hào)在送給CPU之前必須先進(jìn)行A/D轉(zhuǎn)換,然后再送給CPU進(jìn)行處理;并且熱電偶的信號(hào)很微弱,只有十幾個(gè)mA,因此在A/D轉(zhuǎn)換之前通常還需要進(jìn)行增益放大,因此,采用熱電偶和鉑電阻進(jìn)行溫度測(cè)量,需要考慮很多問(wèn)題,構(gòu)成的系統(tǒng)也比較復(fù)雜。況且它們測(cè)出一般為電壓,再轉(zhuǎn)換成相應(yīng)的溫度,需要比較多的外部硬件來(lái)支持,這樣以來(lái)造成系統(tǒng)硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,并且制作成本高。DALLAS公司推出的數(shù)字式溫度傳感器DS18B20很好地解決了這樣一些問(wèn)題,DS18B20采用一線接口,只需占用單片機(jī)的一個(gè)I/O口位,其外圍電路也非常簡(jiǎn)單;并且DS18B20將測(cè)得的溫度信號(hào)轉(zhuǎn)換為數(shù)字量輸出,可以與單片機(jī)直接相連,而不需進(jìn)行信號(hào)放大和A/D轉(zhuǎn)換,大大簡(jiǎn)化了電路的設(shè)計(jì),因此本數(shù)字溫度計(jì)的設(shè)計(jì)采用了DS18B20作為溫度傳感器進(jìn)行溫度采集。單片機(jī)AT89S51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。顯示電路采用3位共陽(yáng)LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。本數(shù)字溫度計(jì)采用DS18B20作為檢測(cè)原件,控制器使用單片機(jī)AT89S51,用3位共陽(yáng)極LED數(shù)碼管實(shí)現(xiàn)溫度顯示,減少了外部硬件電路,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,低成本,易使用等特點(diǎn)。1功能要求1)以AT89S51單片機(jī)為核心器件,組成一個(gè)數(shù)字式溫度計(jì);2)采用數(shù)字式溫度計(jì)傳感器DS18B20為檢測(cè)器件,精度誤差小于0.5℃;3)溫度顯示采用3位LED數(shù)碼管顯示,三位整數(shù),一位小數(shù);4)具有鍵盤(pán)輸入上、下限功能,超過(guò)上、下限溫度時(shí),進(jìn)行聲音報(bào)警。2系統(tǒng)方案論證與比較2.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證一個(gè)典型的單片機(jī)自動(dòng)測(cè)溫系統(tǒng)由三大部分組成:測(cè)量放大電路、A/D轉(zhuǎn)換電路和顯示電路。它廣泛應(yīng)用于發(fā)電廠、化工廠的測(cè)溫和溫度控制系統(tǒng)中。2.1傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。熱電偶和熱電阻測(cè)出相應(yīng)的電壓值,再將電壓轉(zhuǎn)化成對(duì)應(yīng)的溫度。本方案硬件電路設(shè)計(jì)主要由熱電偶溫度傳感器、測(cè)量放大電路、A/D轉(zhuǎn)換電路、ICL與單片機(jī)的接口電路和顯示電路構(gòu)成;軟件設(shè)計(jì)主要由ICL模塊、WAVE數(shù)字濾波模塊、MODIFY模塊、YA查表模塊、查表法和DIR組成。需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試復(fù)雜,制作成本高。2.本數(shù)字溫度計(jì)設(shè)計(jì)采用溫度傳感器DS18B20作為檢測(cè)元件,測(cè)溫基本范圍為-50℃-110℃,最大分辨率可達(dá)0.0625℃。DS18B20可以讀出被測(cè)溫度值,而且采用3線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。2.2方案二的總體設(shè)計(jì)框圖按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由3個(gè)模塊組成:主控制器、測(cè)溫電路及顯示電路。數(shù)字溫度計(jì)總體電路結(jié)構(gòu)框圖如圖2-1所示。主控制器單片機(jī)AT89S51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。顯示電路顯示電路采用3位共陽(yáng)LED數(shù)碼管,從P3口RXD,TXD串口輸出段碼。圖2-1數(shù)字溫度計(jì)電路結(jié)構(gòu)框圖3系統(tǒng)主要元器件的選擇及介紹3.1單片機(jī)的選用及功能介紹3.1.1一、單片機(jī)的概念所謂的單片機(jī)就是在一塊半導(dǎo)體芯片上集成了CPU(中央處理器)、ROM(只讀存儲(chǔ)器)、RAM(靜態(tài)可讀/寫(xiě)存儲(chǔ)器)、I/O接口、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等功能部件的的微型計(jì)算機(jī)。單片機(jī)全稱叫單片微型計(jì)算機(jī),又稱微處理器或微控制器等。二、單片機(jī)的特點(diǎn)1、性價(jià)比高;2、集成度高、體積小、可靠性高;3、控制功能強(qiáng);4、低電壓、低功耗。3.1.2從1974年12月,仙童(Fairchild)公司首先推出8位單片機(jī)F8,采用:雙片形式F8(8位CPU+64RAM+2個(gè)并行I/O口)+3851(1KROM+定時(shí)器/計(jì)數(shù)器+2個(gè)并行I/O)。至今經(jīng)歷四代:第一代:1974~78,典型代表如Intel公司的MCS-48型8位單片機(jī),采用8位CPU、2個(gè)I/O口、8位定時(shí)器/計(jì)數(shù)器、64RAM/1KROM、簡(jiǎn)單中斷,尋址小于4K,且無(wú)串行口。第二代:1978~83,高檔8位單片機(jī),如MCS-51,MC6801,Zilog公司的Z8等。增加功能:串行I/O、多級(jí)中斷、16定時(shí)/計(jì)數(shù)器、片內(nèi)RAM/ROM增大,尋址64K,片內(nèi)帶A/D轉(zhuǎn)換器接口。第三代:1983~90年代初,16位單片機(jī)出現(xiàn),如MCS-96系列的8096、8098芯片。增加性能:16位CPU,RAM/ROM增大,中斷能力增強(qiáng)、A/D、HSIO等第四代:90年代至今,高檔16位產(chǎn)品和32位產(chǎn)品的出現(xiàn),如80196,MC8300等,性能、速度大大提高。3.1.31、測(cè)控系統(tǒng);2、智能儀表;3、機(jī)電一體化產(chǎn)品;4、智能接口;5、智能民用產(chǎn)品。3.1.4MCS-51單片機(jī)引腳及單片機(jī)引腳如圖3-1所示1.電源引腳VCC:電源端,單片機(jī)的工作電源,接+5V直流電;VSS:接地端;圖3-1MCS-51單片機(jī)引腳介紹2.控制信號(hào)引腳/EA:程序存儲(chǔ)器選擇控制端,/EA=0,選擇片外程序存儲(chǔ)器;/EA=1,選擇片內(nèi)程序存儲(chǔ)器RST:復(fù)位信號(hào)輸入,當(dāng)干引腳保持2個(gè)機(jī)器周期的高電平,就能使單片機(jī)復(fù)位。ALE(AddressLatchEnable):地址鎖存允許信號(hào)輸出端/PSEN(ProgramSelectEnable):外部程序存儲(chǔ)器輸出允許控制信號(hào)常用復(fù)位電路:圖3-2(a)上電復(fù)位電路圖3-2(b)上電復(fù)位和按鍵復(fù)位電路3.并行I/O接口引腳P0.0~P0.7:P0口,雙向輸入/輸出口。如系統(tǒng)接有外部存儲(chǔ)器,P0口可作為數(shù)據(jù)總線和低8位地址總線。當(dāng)作為普通I/O口使用時(shí),應(yīng)接上拉電阻。P1.0~P1.7:P1口,僅作為一般I/O口使用。P2.0~P2.7:P2口,準(zhǔn)雙向輸入/輸出口。如系統(tǒng)接有外部存儲(chǔ)器,P0口作為高8位地址總線。P3.0~P3.7:P3口,準(zhǔn)雙向輸入/輸出口。P3口具有第二功能。P3口的第二功能如表3-1所示。4.時(shí)鐘電路引腳XTAL1:內(nèi)部振蕩電路輸入端,外接晶體振蕩器的一個(gè)引腳;XTAL2:內(nèi)部振蕩電路輸出端,外接晶體振蕩器的另一個(gè)引腳,如圖3-3所示。表3-1P3口的第二功能I/O口第二功能I/O口第二功能P3.0串行數(shù)據(jù)接收端P3.4T/C0外部脈沖輸入端P3.1串行數(shù)據(jù)發(fā)送端P3.5T/C1外部脈沖輸入端P3.2外部中斷0輸入P3.6寫(xiě)片外數(shù)據(jù)存儲(chǔ)器P3.3外部中斷1輸入P3.7讀片外數(shù)據(jù)存儲(chǔ)器晶振可選擇4M-40MHZ晶振可選擇4M-40MHZ電容可選20-30PF圖3-3內(nèi)部振蕩方式3.2溫度傳感器的選擇3.2.1DSl8B20數(shù)字溫度計(jì)提供9位(二進(jìn)制)溫度讀數(shù),指示器件的溫度。信息經(jīng)過(guò)單線接口送入DSl8B20或從DSl8B20送出,因此從主機(jī)CPU到DSl8B20僅需一條線(和地線)。DSl8B20的電源可以由數(shù)據(jù)線本身提供而不需要外部電源。因?yàn)槊恳粋€(gè)DSl8B20在出廠時(shí)已經(jīng)給定了唯一的序號(hào),因此任意多個(gè)DSl8B20可以存放在同一條單線總線上。這允許在許多不同的地方放置溫度敏感器件。DSl8B20的測(cè)量范圍從-55°C到+125°C,增量值為0.5°C,可在ls(典型值)內(nèi)把溫度變換成數(shù)字。每一個(gè)DSl8B20包括一個(gè)唯一的64位長(zhǎng)的序號(hào),該序號(hào)值存放在DSl8B20內(nèi)部的ROM(只讀存貯器)中。開(kāi)始8位是產(chǎn)品類型編碼(DSl8B20編碼均為10H)。接著的48位是每個(gè)器件唯一的序號(hào)。最后8位是前面56位的CRC(循環(huán)冗余校驗(yàn))碼。DSl8B20中還有用于貯存測(cè)得的溫度值的兩個(gè)8位存貯器RAM,編號(hào)為0號(hào)和1號(hào)。1號(hào)存貯器存放溫度值的符號(hào),如果溫度為負(fù)°C,則1號(hào)存貯器8位全為1,否則全為0。0號(hào)存貯器用于存放溫度值的補(bǔ)碼,LSB(最低位)的1表示0.5°C。將存貯器中的二進(jìn)制數(shù)求補(bǔ)再轉(zhuǎn)換成十進(jìn)制數(shù)并除以2就得到被測(cè)溫度值。3.2.2DS18B20的性能特點(diǎn)1DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:(1)獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;(2)多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;(3)無(wú)須外部器件;(4)可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;(5)零待機(jī)功耗;(6)溫度以9或12位數(shù)字;(7)用戶可定義報(bào)警設(shè)置;(8)報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;(9)負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。2DS18B20溫度計(jì)還可以在高底溫報(bào)警、遠(yuǎn)距離多點(diǎn)測(cè)溫等方面進(jìn)行應(yīng)用開(kāi)發(fā),但在實(shí)際設(shè)計(jì)中應(yīng)注意一下問(wèn)題:(1)較小的硬件開(kāi)銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。(2)DS18B20工作時(shí)電流高達(dá)1.5mA,總線上掛接點(diǎn)數(shù)較多且同時(shí)進(jìn)行轉(zhuǎn)換時(shí),要考慮增加總線驅(qū)動(dòng),可用單片機(jī)端口在測(cè)溫轉(zhuǎn)換時(shí)導(dǎo)通一個(gè)MOSFET供電。(3)連接DS18B20的總線電纜是有長(zhǎng)度限制的,因此在用DS18B20進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí),要充分考慮總線分別電容和抗阻匹配等問(wèn)題。(4)在DS18B20測(cè)溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào),一旦某個(gè)DS18B20接觸不好或斷線,當(dāng)程序讀該DS18B20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán),這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)要給與一定的重視。3.2.3DS18B20的引腳及1DS18B20的引腳及功能圖3-4TO-92封裝的DS18B20的引腳排列表3-2DS18B20詳細(xì)引腳功能描述序號(hào)名稱引腳功能描述1GND地信號(hào)2DQ數(shù)據(jù)輸入/輸出引腳。開(kāi)漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。2DS18B20的內(nèi)部結(jié)構(gòu)及各部分功能DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3-5所示。主要由4部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。圖3-5DS18B20內(nèi)部結(jié)構(gòu)4.2.4DS18B20的工作原理64位ROM的結(jié)構(gòu)如圖3-6所示,開(kāi)始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。非易失性溫度報(bào)警觸發(fā)器TH和TL,可通過(guò)軟件寫(xiě)入戶報(bào)警上下限。圖3-664位ROM結(jié)構(gòu)圖DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3-7所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3-8所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率,定義方法見(jiàn)表3-3。圖3-7高速暫存RAM結(jié)構(gòu)圖TMR1R011111圖3-8配置寄存器表3-3DS18B20分辨率的定義規(guī)定R1R0分辨率/位溫度最大轉(zhuǎn)換時(shí)間/MS00993.750110187.510113751112750由表4-3可見(jiàn),DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB式表示,溫度值格式如圖3-9所示。當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表3-4是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。圖3-9溫度數(shù)據(jù)值格式表3-4DS18B20溫度與測(cè)得值對(duì)應(yīng)表溫度/℃二進(jìn)制表示十六進(jìn)制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90HDS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來(lái)計(jì)算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。DS18B20的測(cè)溫原理如圖3-10所示,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,減法計(jì)數(shù)器1的預(yù)置將重新被裝入,減法計(jì)數(shù)器1重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)2計(jì)數(shù)到0時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。圖4-10中的累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線形性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值達(dá)到被測(cè)溫度值。圖3-10DS18B20測(cè)溫原理圖3.2.5DS18B20由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫(xiě)時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。1、初始化通過(guò)單線總線的所有執(zhí)行(處理)都從一個(gè)初始化序列開(kāi)始。初始化序列包括一個(gè)由總線控制器發(fā)出的復(fù)位脈沖和跟有其后由從機(jī)發(fā)出的應(yīng)答脈沖。應(yīng)答脈沖讓總線控制器知道DS18B20在總線上且已準(zhǔn)備好操作。2、DS18B20的各個(gè)ROM操作命令一旦總線控制器探測(cè)到一個(gè)應(yīng)答脈沖,它就可以發(fā)出5個(gè)ROM命令中的任一個(gè)。所有ROM操作命令都是8位長(zhǎng)度。下面是這些命令:ReadROM[33h]這個(gè)命令允許總線控制器讀到DS18B20的8位系列編碼、唯一的序列號(hào)和8位CRC碼。只有在總線上存在單只DS18B20的時(shí)候才能使用這個(gè)命令。如果總線上有不止一個(gè)從機(jī),當(dāng)所有從機(jī)試圖同時(shí)傳送信號(hào)時(shí)就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路連在一起形成相“與”的效果)。MatchROM[55h]這是個(gè)匹配ROM命令,后跟64位ROM序列,讓總線控制器在多點(diǎn)總線上定位一只特定的DS18B20。只有和64位ROM序列完全匹配的DS18B20才能響應(yīng)隨后的存儲(chǔ)器操作命令。所有和64位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖。這條命令在總線上有單個(gè)或多個(gè)器件時(shí)都可以使用。SkipROM[0CCh]這條命令允許總線控制器不用提供64位ROM編碼就使用存儲(chǔ)器操作命令,在單點(diǎn)總線情況下右以節(jié)省時(shí)間。如果總線上不止一個(gè)從機(jī),在SkipROM命令之后跟著發(fā)一條讀命令,由于多個(gè)從機(jī)同時(shí)傳送信號(hào),總線上就會(huì)發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路下拉效果相當(dāng)于相與)。SearchROM[0F當(dāng)一個(gè)系統(tǒng)初次啟動(dòng)時(shí),總線控制器可能并不知道單線總線上有多少器件或它們的64位ROM編碼。搜索ROM命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的64位編碼。AlarmSearch[0ECh]這條命令的流程圖和SearchROM相同。然而,只有在最近一次測(cè)溫后遇到符合報(bào)警條件的情況,DS18B20才會(huì)響應(yīng)這條命令。報(bào)警條件定義為溫度高于TH或低于TL。只要DS18B20不掉電,報(bào)警狀態(tài)將一直保持,直到再一次測(cè)得的溫度值達(dá)不到報(bào)警條件。3、存儲(chǔ)器操作命令WriteScratchpad[4E]這個(gè)命令向DS18B20的暫存器中寫(xiě)入數(shù)據(jù),開(kāi)始位置在地址2。接下來(lái)寫(xiě)入的兩個(gè)字節(jié)將被存到暫存器中的地址位置2和3??梢栽谌魏螘r(shí)刻發(fā)出復(fù)位命令來(lái)中止寫(xiě)入。ReadScratchpad[0BEh]這個(gè)命令讀取暫存器的內(nèi)容。讀取將從字節(jié)0開(kāi)始,一直進(jìn)行下去,直到字節(jié)8(第9個(gè)字節(jié),CRC)。如果不想讀完所有字節(jié),控制器可以在任何時(shí)間發(fā)出復(fù)位命令來(lái)中止讀取。CopyScratchpad[48h]這條命令把暫存器的內(nèi)容拷貝到DS18B20的E2存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié)存入非易失性存儲(chǔ)器里。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又正在忙于把暫存器拷貝到E2存儲(chǔ)器,DS18B20就會(huì)輸出一個(gè)“0”,如果拷貝結(jié)束的話,DS18B20則輸出“1”。如果使用寄生電源,總線控制器必須在這條命令發(fā)出后立即起動(dòng)強(qiáng)上拉并最少保持10ms。ConvertT[44h]這條命令啟動(dòng)一次溫度轉(zhuǎn)換而無(wú)需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后DS18B20保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而DS18B20又忙于做時(shí)間轉(zhuǎn)換的話,DS18B20將在總線上輸出“0”,若溫度轉(zhuǎn)換完成,則輸出“1”。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動(dòng)強(qiáng)上拉,并保持500ms。RecallE2[0B8h]這條命令把報(bào)警觸發(fā)器里的值拷回暫存器。這種拷回操作在DS18B20上電時(shí)自動(dòng)執(zhí)行,這樣器件一上電暫存器里馬上就存在有效的數(shù)據(jù)了。若在這條命令發(fā)出之后發(fā)出讀時(shí)間隙,器件會(huì)輸出溫度轉(zhuǎn)換忙的標(biāo)識(shí):“0”=忙,“1”=完成。ReadPowerSupply[B4h]若把這條命令發(fā)給DS18B20后發(fā)出讀時(shí)間隙,器件會(huì)返回它的電源模式:“0”=寄生電源,“1”=外部電源。4、時(shí)序主機(jī)使用時(shí)間隙(timeslots)來(lái)讀寫(xiě)DSl820的數(shù)據(jù)位和寫(xiě)命令字的位(1)初始化時(shí)序見(jiàn)圖3-11。主機(jī)總線to時(shí)刻發(fā)送一復(fù)位脈沖(最短為480us的低電平信號(hào)),接著在tl時(shí)刻釋放總線并進(jìn)入接收狀態(tài),DSl820在檢測(cè)到總線的上升沿之后,等待15-60us,接著DS1820在t2時(shí)刻發(fā)出存在脈沖(低電平,持續(xù)60-240us),如圖中虛線所示。圖3-11初始化時(shí)序(2)寫(xiě)時(shí)間隙寫(xiě)時(shí)間隙如圖3-11(a)和3-11(b)所示,當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉到邏輯低電平的時(shí)候,寫(xiě)時(shí)間隙開(kāi)始。有兩種寫(xiě)時(shí)間隙:寫(xiě)1時(shí)間隙和寫(xiě)0時(shí)間隙。所有寫(xiě)時(shí)間隙必須最少持續(xù)60μs,包括兩個(gè)寫(xiě)周期間至少1μs的恢復(fù)時(shí)間。I/O線電平變低后,DS18B20在一個(gè)15μs到60μs的窗口內(nèi)對(duì)I/O線采樣。如果線上是高電平,就是寫(xiě)1,如果線上是低電平,就是寫(xiě)0。主機(jī)要生成一個(gè)寫(xiě)時(shí)間隙,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫(xiě)時(shí)間隙開(kāi)始后的15μs內(nèi)允許數(shù)據(jù)線拉到高電平。主機(jī)要生成一個(gè)寫(xiě)0時(shí)間隙,必須把數(shù)據(jù)線拉到低電平并保持60μs。(3)讀時(shí)間隙讀時(shí)間隙如圖3-12所示,當(dāng)從DS18B20讀取數(shù)據(jù)時(shí),主機(jī)生成讀時(shí)間隙。當(dāng)主機(jī)把數(shù)據(jù)線從高高平拉到低電平時(shí),寫(xiě)時(shí)間隙開(kāi)始。數(shù)據(jù)線必須保持至少1μs;從DS18B20輸出的數(shù)據(jù)在讀時(shí)間隙的下降沿出現(xiàn)后15μs內(nèi)有效。因此,主機(jī)在讀時(shí)間隙開(kāi)始后必須停止把DQ腳驅(qū)動(dòng)為低電平15μs,以讀取DQ腳狀態(tài)。在讀時(shí)間隙的結(jié)尾,DQ引腳將被外部上拉電阻拉到高電平。所有讀時(shí)間隙必須最少60μs,包括兩個(gè)讀周期間至少1μs的恢復(fù)時(shí)間。圖3-11(a)寫(xiě)0時(shí)序圖3-11(b)寫(xiě)1時(shí)序圖3-12DS18B20的讀時(shí)序3.2.6從DS18B20讀取出的二進(jìn)制必須先轉(zhuǎn)換成十進(jìn)制,才能用于字符的顯示。因?yàn)镈S18B20的轉(zhuǎn)換精度為9~12位可選的,為了提高精度采用12位。在采用12位精度轉(zhuǎn)換時(shí),溫度寄存器里的值以0.0625為步進(jìn)的,即溫度值為溫度寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。通過(guò)觀察表3-5可以發(fā)現(xiàn)一個(gè)十進(jìn)制和二進(jìn)制之間有很明顯的關(guān)系,就是二進(jìn)制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一個(gè)字節(jié),這個(gè)字節(jié)的二進(jìn)制值化為十進(jìn)制后,就是溫度值的百、十、個(gè)位值,而剩下的低字節(jié)的低半字節(jié)化成十進(jìn)制后,就是溫度值的小數(shù)部分。小數(shù)部分因?yàn)槭前雮€(gè)字節(jié),所以二進(jìn)制值范圍是0~F,轉(zhuǎn)換成十進(jìn)制小數(shù)就是0.0625的倍數(shù)(0~15倍)。這樣需要4位的數(shù)碼管來(lái)顯示小數(shù)部分,實(shí)際應(yīng)用不必有這么高的精度,采用1位數(shù)碼管來(lái)顯示小數(shù),可以精確到0.1℃。下表就是二進(jìn)制和十進(jìn)制的近似對(duì)應(yīng)關(guān)系表。表3-5小數(shù)部分二進(jìn)制和十進(jìn)制的近似對(duì)應(yīng)關(guān)系表小數(shù)部分二進(jìn)制值0123456789ABCDEF十進(jìn)制值00112334556678894系統(tǒng)硬件電路的設(shè)計(jì)4.1主板電路系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等,如圖4-1所示。圖4-1中有三個(gè)獨(dú)立式按鍵可以分別調(diào)整溫度計(jì)的上下限報(bào)警設(shè)置,圖中蜂鳴器可以在被測(cè)溫度不在上下限范圍內(nèi)時(shí),發(fā)出報(bào)警鳴叫聲音,同時(shí)LED數(shù)碼管將沒(méi)有被測(cè)溫度值顯示,這時(shí)可以調(diào)整報(bào)警上下限,從而測(cè)出被測(cè)的溫度值。圖4-1中的按健復(fù)位電路是上電復(fù)位加手動(dòng)復(fù)位,使用比較方便,在程序跑飛時(shí),可以手動(dòng)復(fù)位,這樣就不用在重起單片機(jī)電源,就可以實(shí)現(xiàn)復(fù)位。4.2顯示電路顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點(diǎn)就是使用口資源比較少,只用p3口的RXD,和TXD,串口的發(fā)送和接收,四只數(shù)碼管采用74LS164右移寄存器驅(qū)動(dòng),顯示比較清晰。如圖4-2所示。圖4-1單片機(jī)主板電路圖4-2溫度顯示電路4.3DS18B20溫度傳感器與單片機(jī)的接口電路DS18B20可以采用兩種方式供電,一種是寄生電源供電方式,如圖5-3所示,單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管來(lái)完成對(duì)總線的上拉。這個(gè)電路會(huì)在I/O或VDD引腳處于高電平時(shí)“偷”能量。當(dāng)有特定的時(shí)間和電壓需求時(shí),I/O要提供足夠的能量。寄生電源有兩個(gè)好處:進(jìn)行遠(yuǎn)距離測(cè)溫時(shí),無(wú)需本地電源;可以在沒(méi)有常規(guī)電源的條件下讀ROM。當(dāng)DS18B20處于寫(xiě)存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開(kāi)啟時(shí)間最大為10us。要想使DS18B20能夠進(jìn)行精確的溫度轉(zhuǎn)換,I/O線必須在轉(zhuǎn)換期間保證供電。由于DS18B20的工作電流達(dá)到1.5mA,所以僅靠5K上拉電阻提供電源是不行的,當(dāng)幾只DS18B20掛在同一根I/O線上并同時(shí)想進(jìn)行溫度轉(zhuǎn)換時(shí),這個(gè)問(wèn)題變得更加尖銳。有兩種方法能夠使DS18B20在動(dòng)態(tài)轉(zhuǎn)換周期中獲得足夠的電流供應(yīng)。第一種方法,當(dāng)進(jìn)行溫度轉(zhuǎn)換或拷貝到E2存儲(chǔ)器操作時(shí),給DQ線提供一個(gè)強(qiáng)上拉。用MOSFET把DQ線直接拉到電源上就可以實(shí)現(xiàn),見(jiàn)圖4-3。在發(fā)出任何涉及拷貝到E2存儲(chǔ)器或啟動(dòng)溫度轉(zhuǎn)換的協(xié)議之后,必須在最多10μs之內(nèi)把I/O線轉(zhuǎn)換到強(qiáng)上拉。采用寄生電源供電方式時(shí)VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖4-3DS18B20采用寄生電源的電路圖另一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。如圖4-4所示。這樣做的好處是DQ線上不需要加強(qiáng)上拉,而且總線控制器不用在溫度轉(zhuǎn)換期間總保持高電平。這樣在轉(zhuǎn)換期間可以允許在單線總線上進(jìn)行其他數(shù)據(jù)往來(lái)。另外,在單線總線上可以掛任意多片DS18B20,而且如果它們都使用外部電源的話,就可以先發(fā)一個(gè)SkipROM命令,再接一個(gè)ConvertT命令,讓它們同時(shí)進(jìn)行溫度轉(zhuǎn)換。注意當(dāng)加上外部電源時(shí),GND引腳不能懸空。圖4-4DS18B20采用電源供電的電路圖溫度高于100℃時(shí),不推薦使用寄生電源,因?yàn)镈S18B20在這種溫度下表現(xiàn)出的漏電流比較大,通訊可能無(wú)法進(jìn)行。在類似這種溫度的情況下,強(qiáng)烈推薦使用DS18B20的VDD引腳。對(duì)于總線控制器不知道總線上的DS18B20是用寄生電源還是用外部電源的情況,DS18B20預(yù)備了一種信號(hào)指示電源的使用意圖。總線控制器發(fā)出一個(gè)SkipROM協(xié)議,然后發(fā)出讀電源命令,這條命令發(fā)出后,控制器發(fā)出讀時(shí)間隙,如果是寄生電源,DS18B20在單線總線上發(fā)回“0”,如果是從VDD供電,則發(fā)回“1”,這樣總線控制器就能夠決定總線上是否有DS18B20需要強(qiáng)上拉。如果控制器接收到一個(gè)“0”,它就知道必須在溫度轉(zhuǎn)換期間給I/O線提供強(qiáng)上拉。5系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令轉(zhuǎn)子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序等。5.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)圖5-1所示。圖5-1DS18B20溫度計(jì)主程序流程圖5.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖5-2示。5.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖5-3所示。5.4計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖5-4所示。圖5-2讀出溫度子程序流程圖圖5-3溫度轉(zhuǎn)換命令子程序流程圖圖5-4計(jì)算溫度子程序流程圖5.5顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖5-5所示。圖5-5顯示數(shù)據(jù)刷新子程序流程圖6調(diào)試及性能分析1單片機(jī)測(cè)試判斷單片機(jī)芯片及時(shí)鐘系統(tǒng)是否正常工作有一個(gè)簡(jiǎn)單的辦法,就是用萬(wàn)用表測(cè)量單片機(jī)晶振引腳(18、19腳)的對(duì)地電壓,以正常工作的單片機(jī)用數(shù)字萬(wàn)用表測(cè)量為例:18腳對(duì)地約2.24V,19腳對(duì)地約2.09V。對(duì)于懷疑是復(fù)位電路故障而不能正常工作的單片機(jī)也可以采用模擬復(fù)位的方法來(lái)判斷,單片機(jī)正常工作時(shí)第9腳對(duì)地電壓為零,可以用導(dǎo)線短時(shí)間和+5V連接一下,模擬一下上電復(fù)位,如果單片機(jī)能正常工作了,說(shuō)明這個(gè)復(fù)位電路有問(wèn)題。2硬件及軟件調(diào)試系統(tǒng)調(diào)試以程序?yàn)橹?。硬件調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后用萬(wàn)用表測(cè)試或通電檢測(cè)。軟件調(diào)試先編寫(xiě)顯示程序并進(jìn)行硬件的正確性檢驗(yàn)。然后分別進(jìn)行主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序的編程及調(diào)試,由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對(duì)DS18B20進(jìn)行讀寫(xiě)編程時(shí)必須嚴(yán)格地保證讀寫(xiě)時(shí)序,軟件調(diào)試到能顯示溫度值,而且在溫度變化時(shí)(例如用手去接觸)顯示溫度能改變就基本完成。性能測(cè)試可用制作的溫度計(jì)和已有的成品溫度計(jì)來(lái)同時(shí)測(cè)量比較,由于DS18B20的精度很高,所以誤差指標(biāo)可以限制在0.1℃以內(nèi),另外-55℃~+125℃的測(cè)溫范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低電壓供電特性可做成用電池供電的手持電子溫度計(jì)。結(jié)論基于單片機(jī)和DS18B20的數(shù)字溫度傳感器以其線路簡(jiǎn)單、成本低廉、軟件設(shè)計(jì)簡(jiǎn)單優(yōu)勢(shì)有著無(wú)可比擬的應(yīng)用前景,能較好地解決傳統(tǒng)測(cè)溫裝置普遍存在的攜帶不便、易損壞、易受干擾等不足,可廣泛的應(yīng)用于工業(yè)控制中的各種溫度監(jiān)控。由于知識(shí)方面的欠缺,實(shí)際動(dòng)手能力較弱,本次畢業(yè)設(shè)計(jì)沒(méi)有完全達(dá)到設(shè)計(jì)要求,但從中我學(xué)到了不少東西,使我更深一步掌握了單片機(jī)電路,更深的了解設(shè)計(jì)中所用到本電路的工作原理,同時(shí)也掌握了單片機(jī)各引腳的功能及用途。在用Protel制作電路圖時(shí),我掌握了制圖的一些技巧及在畫(huà)圖時(shí)要注意的一些問(wèn)題,同時(shí)也使我更能熟練地操作此軟件。在用Proteus單片機(jī)仿真軟件和程序調(diào)試時(shí),使我切切實(shí)實(shí)掌握了很多東西,提高了自己分析和解決實(shí)際問(wèn)題的能力。論文的撰寫(xiě)需要大量的資料,在查找資料的過(guò)程中,又培養(yǎng)了我從文獻(xiàn)、科學(xué)實(shí)驗(yàn)和生產(chǎn)實(shí)踐中獲取知識(shí)的能力。從本次畢業(yè)設(shè)計(jì)中,我真真切切意識(shí)到要做好一件事,必須要有足夠的信心和耐心,要不怕吃苦、不怕失敗,同時(shí)也意識(shí)到自己知識(shí)的欠缺。通過(guò)這次畢業(yè)設(shè)計(jì),提高了我對(duì)相關(guān)知識(shí)的理解和運(yùn)用,也提高了我的認(rèn)識(shí)。為今后的工作打下了堅(jiān)實(shí)的基礎(chǔ)。致謝本文是在宗文軍老師的精心指導(dǎo)下完成的,在整個(gè)畢業(yè)設(shè)計(jì)過(guò)程中,宗老師一直對(duì)我們嚴(yán)格要求,他自始至終地給我們指點(diǎn)和建議,定期地召集我們討論畢業(yè)設(shè)計(jì)的問(wèn)題,并根據(jù)我們畢業(yè)設(shè)計(jì)的進(jìn)程情況及時(shí)地進(jìn)行試驗(yàn)指導(dǎo)檢查和指導(dǎo)論文的寫(xiě)作。是宗老師兢兢業(yè)業(yè)的教學(xué)精神和他細(xì)致耐心的教導(dǎo)使我有了完成本次畢業(yè)設(shè)計(jì)的信心與動(dòng)力,正是在宗老師的啟發(fā)引導(dǎo)和精心指導(dǎo)下,我才順利地完成了本次畢業(yè)設(shè)計(jì)。再次,我衷心的向他表示感謝。同時(shí),還要感謝給我指點(diǎn)和教我知識(shí)的每一位老師,是他們讓我擁有了完成畢業(yè)設(shè)計(jì)的資本,同時(shí)也給與了人生奮斗的資本;感謝給我建議和幫助我的同學(xué)們,感謝學(xué)院給我提供了完成本次畢業(yè)設(shè)計(jì)的設(shè)備和資料,感謝學(xué)院給我這次總結(jié)自我的機(jī)會(huì)。正是由于你們的幫助和支持,我才能順利完成本次畢業(yè)設(shè)計(jì)。參考文獻(xiàn)[1]俞志根.傳感器與檢測(cè)技術(shù).北京:科學(xué)出版社,2007.[2]黃劼,徐曉秋.單片機(jī)原理及接口技術(shù).北京:國(guó)防工業(yè)出版社,2008.[3]趙繼文.傳感器與應(yīng)用電路設(shè)計(jì).北京:科學(xué)出版社,2002.[4]何立民.MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì).北京航空航天大學(xué)出版社,2000.[5]閻石.數(shù)字電子技術(shù)基礎(chǔ).北京:高等教育出版社,1998.[6]廖常初.現(xiàn)場(chǎng)總線概述[J].電工技術(shù),1999.[7]楊翠南,楊碧石.數(shù)字電子技術(shù)與邏輯設(shè)計(jì)教程.北京:電子工業(yè)出版社,2003.[8]白駒珩,雷曉平.單片機(jī)原理與其應(yīng)用.成都:成都電子科技大學(xué)出版社,2000.[9]羅中華.數(shù)字電路與邏輯設(shè)計(jì)教程.北京:電子工業(yè)出版社,2006.附錄附錄一原理圖附錄二控制源程序清單S1OKEQU5FHTEMPUTEREQU39HTEMPHEQU5EHTEMPLEQU5DHMS50EQU5CHSIGNEQU5BH S1BITP1.0 S2BITP1.1 S3BITP1.2 S4BITP1.3 ORG0000H LJMPMAIN ORG000BH LJMPTOITORG0030HMAIN:MOVSP,#60HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBET0SETBTR0SETBEAMOVTEMPH,#30MOVTEMPL,#9MOVTEMPUTER,#15;溫度最始值MOVS1OK,#00HMOVSIGN,#00HMOV38H,#0BHMOV37H,#0CHMOV36H,#0BHACALLDISPACALLT1S;*****************************************;主程序START:JBS1,NET1ACALLT12MSJBS1,NET1JNBS1,$INCSIGNMOVA,SIGNCJNEA,#1,TIAOACALLTIAOTLTIAO:CJNEA,#2,NET1MOVSIGN,#0ACALLTIAOTH;*****************************************NET1:MOVA,S1OKCJNEA,#1,STARTMOVA,TEMPUTERSUBBA,TEMPHJNBACC.7,ALEMMOVA,TEMPUTERSUBBA,TEMPLJBACC.7,ALEMSETBP2.1ACALLWENDUACALLDISPMOVS1OK,#00HAJMPSTARTALEM:MOV36H,#0CHMOV37H,#0CHMOV38H,#0CHCLRP2.1ACALLDISPACALLT1SLCALLWENDULCALLDISPMOVS1OK,#00HSJMPSTART;*****************************************TIAOTL:MOV50H,TEMPUTERMOV37H,TEMPLACALLBIN_BCDACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSMOV36H,#0AHMOV37H,#0AHMOV38H,#0AHACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSJBS2,ADD1ACALLT12MSJBS2,ADD1JNBS2,$INCTEMPLMOVA,TEMPLCJNEA,#100,ADD1MOVTEMPL,#0ADD1:JBS3,ADD2ACALLT12MSJBS3,ADD2JNBS3,$DECTEMPLMOVA,TEMPLCJNEA,#00,ADD2MOVTEMPL,#100ADD2:JBS4,TIAOTLACALLT12MSJBS4,TIAOTLJNBS4,$MOVTEMPUTER,50HLJMPSTART;高位調(diào)整;*****************************************TIAOTH:MOV50H,TEMPUTERMOV37H,TEMPHACALLBIN_BCDACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSMOV36H,#0AHMOV37H,#0AHMOV38H,#0AHACALLDISPACALLT12MSACALLT12MSACALLT12MSACALLT12MSJBS2,ADD11ACALLT12MSJBS2,ADD11JNBS2,$INCTEMPHMOVA,TEMPHCJNEA,#100,ADD11MOVTEMPH,#0ADD11:JBS3,ADD22ACALLT12MSJBS3,ADD22JNBS3,$DECTEMPHMOVA,TEMPHCJNEA,#00,ADD22MOVTEMPH,#100ADD22:JBS4,TIAOTHACALLT12MSJBS4,TIAOTHJNBS4,$MOVTEMPUTER,50HLJMPSTART;一秒定時(shí)中段;*****************************************TOIT:PUSHPSWPUSHACCMOVTH0,#3CHMOVTL0,#0B0HINCMS50MOVA,MS50CJNEA,#14H,RETURNMOVS1OK,#1MOVMS50,#00HRETURN:POPACCPOPPSWRETI;*****************************************;溫度總子程序;*****************************************wendu:ACALLINIT_1820ACALLRE_CONFIGACALLGET_TEMPERACALLTEMPER_COVRET;*****************************************;DS18B20初始化程序;*****************************************INIT_1820:SETBP2.0NOPCLRP2.0MOVR0,#06BHMOVR1,#03HTSR1:DJNZR0,TSR1;延時(shí)MOVR0,#6BHDJNZR1,TSR1SETBP2.0NOPNOPNOPMOVR0,#25HTSR2:JNBP2.0,TSR3DJNZR0,TSR2LJMPTSR4;延時(shí)TSR3:SETB20H.1;置標(biāo)志位,表示DS1820存在LJMPTSR5TSR4:CLR20H.1;清標(biāo)志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#06BHMOVR1,#03HTSR6:DJNZR0,TSR6;延時(shí)MOVR0,#6BHDJNZR1,TSR6TSR7:SETBP2.0RET;*****************************************;重新寫(xiě)DS18B20暫存存儲(chǔ)器設(shè)定值;*****************************************RE_CONFIG:JB20H.1,RE_CONFIG1;若DS18B20存在,轉(zhuǎn)RE_CONFIG1RETRE_CONFIG1:MOVA,#0CCH;發(fā)SKIPROM命令LCALLWRITE_1820MOVA,#4EH;發(fā)寫(xiě)暫存存儲(chǔ)器命令LCALLWRITE_1820MOVA,#00H;TH(報(bào)警上限)中寫(xiě)入00HLCALLWRITE_1820MOVA,#00H;TL(報(bào)警下限)中寫(xiě)入00HLCALLWRITE_1820MOVA,#1FH;選擇9位溫度分辨率LCALLWRITE_1820RET;*****************************************;讀出轉(zhuǎn)換后的溫度值;*****************************************GET_TEMPER:SETBP2.0;定時(shí)入口LCALLINIT_1820JB20H.1,TSS2RET;若DS18B20不存在則返回TSS2:MOVA,#0CCH;跳過(guò)ROM匹配LCALLWRITE_1820MOVA,#44H;發(fā)出溫度轉(zhuǎn)換命令LCALLWRITE_1820LCALLINIT_1820MOVA,#0CCH;跳過(guò)ROM匹配LCALLWRITE_1820MOVA,#0BEH;發(fā)出讀溫度命令LCALLWRITE_1820LCALLREAD_18200MOV37H,A;將讀出的溫度數(shù)據(jù)保存RET;*****************************************;寫(xiě)DS18B20的程序;*****************************************WRITE_1820:MOVR2,#8CLRCWR1:CLRP2.0NOPNOPNOPNOPRRCAMOVP2.0,CMOVR3,#35DJNZR3,$SETBP2.0NOPDJNZR2,WR1SETBP2.0RET;*****************************************;讀DS18B20的程序,從DS18B20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù);*****************************************READ_18200:MOVR4,#2;將溫度高位和低位DS18B20中讀RE00:MOVR2,#8RE01:CLRCSETBP2.0NOPNOPCLRP2.0NOPNOPNOPSETBP2.0NOPNOPMOVC,P2.0MOVR3,#35RE20:DJNZR3,RE20RRCADJNZR2,RE01MOV@R1,ADECR1DJNZR4,RE00RET;*****************************************;將從DS18B20中讀出的溫度數(shù)據(jù)進(jìn)行轉(zhuǎn)換;*****************************************TEMPER_COV:MOVA,#0F0HANLA,36H;舍去溫度低位中小數(shù)點(diǎn)SWAPAMOV37H,AMOVA,36HJNBACC.3,TEMPER_COV1;四舍五入去溫度值INC37HTEMPER_COV1:MOVA,35HANLA,#07HSWAPAADDA,37HMOV37H,A;保存變換后的溫度數(shù)據(jù)LCALLBIN_BCDRET;*****************************************;將16進(jìn)制的溫度數(shù)據(jù)轉(zhuǎn)換成壓縮BCD碼;38H中放百位,37十位,36個(gè)位;*****************************************BIN_BCD:MOV39H,37HMOVA,37HMOVB,#100DIVABMOV38H,AMOV37H,BXCHA,BMOVB,#10DIVABMOV37H,AMOV36H,BRETDISP:SETBRS0MOVR0,#36HMOVR7,#3LOOPP:MOVA,@R0MOVDPTR,#TABMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIINCR0DJNZR7,LOOPPCLRRS0RETTAB:DB11H,0D7H,32H,92H,0D4H,98H,18H,0D1H,10H,90H,0FFH,070H,0FEH;延時(shí)子程序T12MS:SETBRS1MOVR7,#18HTM:MOVR6,#0FFHTM6:DJNZR6,TM6DJNZR7,TMCLRRS1RET;開(kāi)機(jī)延時(shí)程序T1S:SETBRS1MOVR6,#3LSP:ACALLT12MSDJNZR6,LSPCLRRS1RETEND基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營(yíng)養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開(kāi)發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開(kāi)發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開(kāi)發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開(kāi)發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測(cè)儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論