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

下載本文檔

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

文檔簡介

摘要洛陽理工學(xué)院畢業(yè)設(shè)計(jì)(論文)PAGEIVPAGE1基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)摘要在日常生活及工業(yè)生產(chǎn)過程中,經(jīng)常要用到溫度的檢測及控制,溫度是生產(chǎn)過程和科學(xué)實(shí)驗(yàn)中普遍而且重要的物理參數(shù)之一。傳統(tǒng)的測溫元件有熱電偶和二電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,這些方法相對(duì)比較復(fù)雜,需要比較多的外部硬件支持。我們用一種相對(duì)比較簡單的方式來測量。我們采用美國DALLAS半導(dǎo)體公司繼DS18B20之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測元件,溫度范圍為-55~125℃,最高分辨率可達(dá)0.0625℃。DS18B20可以直接讀出北側(cè)溫度值,而且采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。本文介紹一種基于AT89C52單片機(jī)的一種溫度測量及報(bào)警電路,該電路采用DS18B20作為溫度監(jiān)測元件,測量范圍0℃~+100℃,使用LCD模塊顯示,能設(shè)置溫度報(bào)警上下限。正文著重給出了軟硬件系統(tǒng)的各部分電路,介紹了集成溫度傳感器DS18B20的原理,AT89C52單片機(jī)功能和應(yīng)用。該電路設(shè)計(jì)新穎、功能強(qiáng)大、結(jié)構(gòu)簡單。關(guān)鍵詞:溫度測量,AT89C52,DS18B20,系統(tǒng)仿真DesignofDigitalThermometerBasedonSCMABSTRACTIndailylifeandindustrialproductionprocess,oftenusedinthedetectionandcontroloftemperature,temperatureistheproductionprocessandscientificexperimentsingeneralandoneoftheimportantphysicalparameter.Traditionalthermocoupleandtemperaturecomponentsarethesecondresistor.Thethermocoupleandthermalresistancearegenerallymeasuredvoltage,andthenreplacedbythecorrespondingtemperature,thesemethodsarerelativelycomplex,requiringarelativelylargenumberofexternalhardwaresupport.Weusearelativelysimplewaytomeasure.WeusetheUnitedStatesfollowingDALLASSemiconductorDS1820improvedaftertheintroductionofasmarttemperaturesensorDS18B20asthedetectionelement,atemperaturerangeof-55℃~125℃,uptoamaximumresolutionof0.0625℃.DS18B20canbedirectlyreadoutthetemperatureonthenorthside,andthree-wiresystemwithsingle-chipconnectedtoadecreaseoftheexternalhardwarecircuit,withlow-costandeasyuse.Theintroductionofacost-basedAT89C52SCMatemperaturemeasurementcircuits,thecircuitsusedDS18B20high-precisiontemperaturesensor,measuringscope0℃~+100℃,cansetthewarninglimitation,theuseofsevensegmentsLCDthatcanbedisplaythecurrenttemperature.Thepaperfocusesonprovidingasoftwareandhardwaresystemcomponentscircuit,introducedthetheoryofDS18B20,thefunctionsandapplicationsofAT89C52.Thiscircuitdesigninnovative,powerful,canbeexpansionarystrong.KEYWORDS:Temperaturemeasurement,AT89C52,DS18B20,Systemsimulation前言前言隨著科技的不斷發(fā)展,現(xiàn)代社會(huì)對(duì)各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級(jí)的增長,而如何準(zhǔn)確迅速的獲得這些參數(shù)就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)引用的非常廣泛,可以說是滲透到社會(huì)的每一個(gè)領(lǐng)域,人民的生活與環(huán)境的溫度息息相關(guān),在工、農(nóng)業(yè)生產(chǎn)過程中需要實(shí)時(shí)測量溫度,因此研究溫度的測量方法和裝置具有重要的意義。傳統(tǒng)的溫度傳感器大多以熱敏電阻作為溫度傳感器,但熱敏電阻的可靠性差,準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號(hào)才能由單片機(jī)進(jìn)行處理,而這需要比較多的外部的硬件的支持,硬件電路復(fù)雜(需要用到A/D轉(zhuǎn)換電路,感溫電路),軟件調(diào)試也復(fù)雜,制作成本也非常高。目前的數(shù)字溫度傳感器是在20世紀(jì)90年代中期問世的,它是微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)測試技術(shù)(ATE)的結(jié)晶,特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配微控制器(MCU)。社會(huì)的發(fā)展使人們對(duì)傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機(jī)的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片機(jī)測溫系統(tǒng)等高科技的方向迅速發(fā)展。本文將介紹智能集成溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并對(duì)以此傳感器,AT89C52單片機(jī)為控制器構(gòu)成的數(shù)字溫度測量裝置的工作原理及程序設(shè)計(jì)作了詳細(xì)的介紹。與傳統(tǒng)的溫度計(jì)相比,其具有讀數(shù)方便,測溫范圍廣,測溫準(zhǔn)確,輸出溫度采用數(shù)字顯示等優(yōu)點(diǎn)。第1章標(biāo)題第1章緒論1.1設(shè)計(jì)背景1.1.1溫度計(jì)的介紹隨著科學(xué)技術(shù)的發(fā)展和現(xiàn)代工業(yè)技術(shù)的需要,測溫技術(shù)也不斷地改進(jìn)和提高。由于測溫范圍越來越廣,根據(jù)不同的要求,又制造出不同需要的測溫儀器。下面介紹幾種常用的溫度計(jì)。氣體溫度計(jì):多用氫氣或氦氣作測溫物質(zhì),因?yàn)闅錃夂秃獾囊夯瘻囟群艿?,接近于絕對(duì)零度,故它的測溫范圍很廣。這種溫度計(jì)精確度很高,多用于精密測量。電阻溫度計(jì):分為金屬電阻溫度計(jì)和半導(dǎo)體電阻溫度計(jì),都是根據(jù)電阻值隨溫度的變化這一特性制成的。金屬溫度計(jì)主要有用鉑、金、銅、鎳等純金屬的及鐵、磷青銅合金的;半導(dǎo)體溫度計(jì)主要用碳、鍺等。電阻溫度計(jì)使用方便可靠,已廣泛應(yīng)用。電阻溫度計(jì)的測量范圍為-260℃~600℃左右。指針式溫度計(jì):是形如儀表盤的溫度計(jì),也稱寒暑表,用來測室溫,是用金屬的熱脹冷縮原理制成的。它是以雙金屬片作為感溫元件,用來控制指針。雙金屬片通常是用銅片和鐵片鉚在一起,且銅片在左,鐵片在右。由于銅的熱脹冷縮效果要比鐵明顯的多,因此當(dāng)溫度升高時(shí),銅片牽拉鐵片向右彎曲,指針在雙金屬片的帶動(dòng)下就向右偏轉(zhuǎn)(指向高溫);反之,溫度變低,指針在雙金屬片的帶動(dòng)下就向左偏轉(zhuǎn)(指向低溫)。壓力式溫度計(jì):壓力式溫度計(jì)是利用封閉容器內(nèi)的液體,氣體受熱后產(chǎn)生體積膨脹或壓力變化作為測信號(hào)。它的基本結(jié)構(gòu)是由溫包、毛細(xì)管和指示表三部分組成。壓力式溫度計(jì)的優(yōu)點(diǎn)是:結(jié)構(gòu)簡單,機(jī)械強(qiáng)度高,不怕震動(dòng)。價(jià)格低廉,不需要外部能源。缺點(diǎn)是:測溫范圍有限制,一般在-80~400℃;熱損失大響應(yīng)時(shí)間較慢。水銀溫度計(jì):水銀溫度計(jì)是膨脹式溫度計(jì)的一種,水銀的凝固點(diǎn)是-38.87℃,沸點(diǎn)是356.7℃,用來測量0~150℃或500℃以內(nèi)范圍的溫度,它只能作為就地監(jiān)督的儀表。用它來測量溫度,不僅比較簡單直觀,而且還可以避免外部遠(yuǎn)傳溫度計(jì)的誤差。1.1.2溫度傳感器的發(fā)展?fàn)顩r單片機(jī)在測控領(lǐng)域中具有十分廣泛的應(yīng)用,它既可以直接處理電信號(hào),也可以間接處理溫度、濕度、壓力等非電信號(hào)。由于該特點(diǎn),因而被廣泛應(yīng)用于工業(yè)控制領(lǐng)域[1]。由于單片機(jī)的接口信號(hào)是數(shù)字信號(hào),因此使用它來進(jìn)行溫度、濕度、壓力等這類非電信號(hào)的信息處理,必須使用對(duì)應(yīng)的傳感器進(jìn)行A/D或D/A轉(zhuǎn)換,最后再傳輸給單片機(jī)進(jìn)行最終的數(shù)據(jù)處理和顯示。在測溫領(lǐng)域,人們通常使用溫度傳感器,將溫度信息轉(zhuǎn)換為電流或電壓進(jìn)行輸出,進(jìn)而完成數(shù)據(jù)的處理和顯示[2]。本文正是基于溫度傳感器和單片機(jī)而構(gòu)建的電路,進(jìn)而完成溫度的測量和顯示。溫度傳感器的發(fā)展經(jīng)歷了三個(gè)發(fā)展階段:(1)傳統(tǒng)的分立式溫度傳感器。(2)模擬集成溫度傳感器。(3)智能集成溫度傳感器。目前使用最廣的是智能溫度傳感器(亦稱數(shù)字溫度傳感器),是在20世紀(jì)90年代中期問世的。它是微電子技術(shù)、計(jì)算機(jī)技術(shù)和自動(dòng)測試技術(shù)(ATE)的結(jié)晶,特點(diǎn)是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配于各種微控制器(MCU)[3]。社會(huì)的發(fā)展使人們對(duì)傳感器的要求也越來越高,現(xiàn)在的溫度傳感器正在基于單片機(jī)的基礎(chǔ)上從模擬式向數(shù)字式,從集成化向智能化、網(wǎng)絡(luò)化的方向飛速發(fā)展,并朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及安全性、開發(fā)虛擬傳感器和網(wǎng)絡(luò)傳感器、研制單片測溫系統(tǒng)等高科技的方向迅速發(fā)展[4]。本文將介紹溫度傳感器DS18B20的結(jié)構(gòu)特征及控制方法,并以此傳感器為測溫元件,AT89C52單片機(jī)為控制核心,構(gòu)成的數(shù)字溫度測量裝置,并對(duì)其工作原理及程序設(shè)計(jì)作詳細(xì)的介紹。1.2選題的目的和意義1.2.1選題的目的利用單片機(jī)AT89C52和溫度傳感器DS18B20設(shè)計(jì)一個(gè)設(shè)計(jì)溫度計(jì),能夠測量-20~80℃之間的溫度值,并且小于20℃和大于32℃時(shí)報(bào)警,用LCD液晶屏顯示,測量精度為0.1℃。通過本次設(shè)計(jì)能夠理解數(shù)字溫度計(jì)的工作原理和熟悉單片機(jī)的發(fā)展和應(yīng)用,鞏固所學(xué)的知識(shí)[5]。1.2.2選題的意義隨著電子技術(shù)的發(fā)展,人們的生活日趨數(shù)字化,多功能的數(shù)字溫度計(jì)可以給我們的生活帶來很大的方便;支持“一線總線”接口的溫度傳感器簡化了數(shù)字溫度計(jì)的設(shè)計(jì),降低了成本;以美國MAXIM/DALLAS半導(dǎo)體公司的單總線溫度傳感器DS18B20為核心,以ATMEL公司的AT89C52為控制器設(shè)計(jì)的DS18B20溫度控制器結(jié)構(gòu)簡單、測溫準(zhǔn)確、具有一定控制功能的智能溫度控制器[6]。本課題研究的重要意義在于生產(chǎn)過程中隨著科技的不斷發(fā)展,現(xiàn)代社會(huì)對(duì)各種信息參數(shù)的準(zhǔn)確度和精確度的要求都有了幾何級(jí)的增長,而如何準(zhǔn)確而又迅速的獲得這些參數(shù),就需要受制于現(xiàn)代信息基礎(chǔ)的發(fā)展水平[7]。在三大信息信息采集(即傳感器技術(shù))、信息傳輸(通信技術(shù))和信息處理(計(jì)算機(jī)技術(shù))中,傳感器屬于信息技術(shù)的前沿尖端產(chǎn)品,尤其是數(shù)字溫度傳感器技術(shù),在我國各領(lǐng)域已經(jīng)應(yīng)用的非常廣泛可以說是滲透到社會(huì)的每一個(gè)領(lǐng)域,與人民的生活和環(huán)境的溫度息息相關(guān)[8]。REF_Ref168484390\r\h錯(cuò)誤!未找到引用源。REF_Ref168484424\h錯(cuò)誤!未找到引用源。PAGE6PAGE6第2章系統(tǒng)概述2.1設(shè)計(jì)方案的選擇該系統(tǒng)主要由溫度測量和數(shù)據(jù)采集兩部分電路組成,實(shí)現(xiàn)的方法有很多種,下面將列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實(shí)現(xiàn)方案。2.1.1方案一采用熱電偶溫差電路測溫,溫度檢測部分可以使用低溫?zé)崤?,熱電偶由兩個(gè)焊接在一起的異金屬導(dǎo)線所組成,熱電偶產(chǎn)生的熱電勢由兩種金屬的接觸電勢和單一導(dǎo)體的溫差電勢組成[9]。數(shù)據(jù)采集部分則使用帶有A/D通道的單片機(jī),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)處理,通過顯示電路,就可以將被測溫度顯示出來。熱電偶的優(yōu)點(diǎn)是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點(diǎn),并且這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。系統(tǒng)主要包括對(duì)ADC0809的數(shù)據(jù)采集,溫度的測量,此外還有復(fù)位電路,晶振電路,啟動(dòng)電路等。處理芯片為51芯片,執(zhí)行機(jī)構(gòu)有4位數(shù)碼管、報(bào)警電路等。系統(tǒng)框圖如圖2-1所示。圖2-1熱電偶溫差電路測溫系統(tǒng)框圖2.1.2方案二采用數(shù)字溫度芯片DS18B20測量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測溫元件,此元件線形較好。在0~100℃時(shí),最大線形偏差小于1℃。DS18B20的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由溫度傳感器DS18B20和單片機(jī)AT89C52構(gòu)成的溫度測量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接[10]。這樣,測溫系統(tǒng)的結(jié)構(gòu)就比較簡單,體積也不大。采用51單片機(jī)控制,軟件編程的自由度大,可通過編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC機(jī)通信上傳數(shù)據(jù),另外,AT89C52在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。該系統(tǒng)利用AT89C52芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。該系統(tǒng)擴(kuò)展性非常強(qiáng),它可以在設(shè)計(jì)中加入時(shí)鐘芯片以獲取時(shí)間數(shù)據(jù),在數(shù)據(jù)處理同時(shí)顯示時(shí)間,并可以利用AT89C52芯片作為存儲(chǔ)器件,以此來對(duì)某些時(shí)間點(diǎn)的溫度數(shù)據(jù)進(jìn)行存儲(chǔ),利用鍵盤來進(jìn)行調(diào)時(shí)和溫度查詢,獲得的數(shù)據(jù)可以通過芯片與計(jì)算機(jī)的接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)[11]。從以上兩種方案中,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,但是線性誤差較大。方案二的測溫裝置電路簡單、精確度較高、實(shí)現(xiàn)方便、軟件設(shè)計(jì)也比較簡單,故本次設(shè)計(jì)采用了方案二。2.2系統(tǒng)設(shè)計(jì)原理本課題以是AT89C52單片機(jī)為核心設(shè)計(jì)的一種數(shù)字溫度控制系統(tǒng),系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等組成[12]。利用溫度傳感器DS18B20可以直接讀取被測溫度值,進(jìn)行轉(zhuǎn)換的特性,模擬溫度值經(jīng)過DS18B20處理后轉(zhuǎn)換為數(shù)字值,然后送到單片機(jī)中進(jìn)行數(shù)據(jù)處理,并與設(shè)置的溫度報(bào)警限比較,超過限度后通過揚(yáng)聲器報(bào)警[13]。同時(shí)處理后的數(shù)據(jù)送到LCD中顯示。系統(tǒng)框圖如圖2-2所示。圖2-2系統(tǒng)基本方框圖1.主控制器單片機(jī)AT89C52具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。2.溫度傳感器溫度傳感器采用美國DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20溫度傳感器。DS18B20輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,在0~100℃,時(shí),最大線形偏差小于1℃,采用單總線的數(shù)據(jù)傳輸,可直接與計(jì)算機(jī)連接。用單片機(jī)AT89C52芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測并顯示,能夠?qū)崿F(xiàn)快速測量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。獲得的數(shù)據(jù)可以通過芯片與計(jì)算機(jī)的接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)。3.顯示電路顯示電路采用LCD液晶顯示數(shù)碼管,從P3口RXD,TXD串口輸出段碼[14]。顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點(diǎn)就是使用資源比較少,只用P3口的RXD和TXD串口發(fā)送和接收,顯示比較清晰。第3章REF_Ref168484495\h錯(cuò)誤!未找到引用源。洛陽理工學(xué)院畢業(yè)設(shè)計(jì)(論文)PAGE23第3章系統(tǒng)硬件的設(shè)計(jì)3.1AT89C52的介紹1.AT89C52簡介AT89C52是一種帶8K字節(jié)閃速可編程可擦除只讀存儲(chǔ)器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)[15]。AT89C52是一種帶8KB的閃速可編程可擦除只讀存儲(chǔ)器的單片機(jī),AT89C52是一種高效微控制器。AT89C52單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C52引腳排列如圖3-1所示。圖3-1AT89C52的管腳排列圖2.主要特性:(1)與MCS-51兼容。(2)4K字節(jié)可編程閃爍存儲(chǔ)器。(3)壽命長:1000寫/擦循環(huán)。(4)數(shù)據(jù)保留時(shí)間:10年。(5)全靜態(tài)工作:0Hz-24MHz。(6)三級(jí)程序存儲(chǔ)器鎖定。(7)128×8位內(nèi)部RAM。(8)32可編程I/O線。(9)兩個(gè)16位定時(shí)器/計(jì)數(shù)器。(10)5個(gè)中斷源。(11)可編程串行通道。(12)低功耗的閑置和掉電模式。(13)片內(nèi)振蕩器和時(shí)鐘電路。3.管腳說明VCC:供電電壓。GND:接地。P0口:P0口為一個(gè)8位漏極開路雙向I/O口,每個(gè)管腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻抗輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是帶8個(gè)內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。P3口也可作為AT89C52的一些特殊功能口,如下表3-1所示。表3-1P3口的一些特殊功能口口管腳備選功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(記時(shí)器0外部輸入)P3.5T1(記時(shí)器1外部輸入)P3.6/WR(片外數(shù)據(jù)存儲(chǔ)器“寫選通控制”輸出)P3.7/RD(片外數(shù)據(jù)存儲(chǔ)器“讀選通控制”輸出)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí),ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指令時(shí),每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-0FFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平(接VCC端)時(shí),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的程序。在FLASHROM編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。3.2DS18B20的介紹Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。DS18B20測量溫度范圍為-55℃~+125℃,在-10~+85℃范圍內(nèi),精度為±0.5℃。DS18B20可以程序設(shè)定9~12位的分辨率,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在E2PROM中,掉電后依然保存。3.2.1DS18B20的引腳排列如圖3-2所示,DS18B20的外形如一只三極管,引腳名稱及作用如下:GND:接地端。DQ:數(shù)據(jù)輸入/輸出腳,與TTL電平兼容。VDD:可接電源,也可接地。因?yàn)槊恐籇S18B20都可以設(shè)置成兩種供電方式,即數(shù)據(jù)總線供電方式和外部供電方式。采用數(shù)據(jù)總線供電方式時(shí)VDD接地。圖3-2DS18B20引腳排列3.2.2DS18B20內(nèi)部結(jié)構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL及配置寄存器。DS18B20內(nèi)部結(jié)構(gòu)圖如3-3圖所示。圖3-3DS18B20內(nèi)部結(jié)構(gòu)圖1. 64位ROM。64位ROM是由廠家使用激光刻錄的一個(gè)64位二進(jìn)制ROM代碼,是該芯片的標(biāo)識(shí)號(hào),如表3-2所示。表3-264位ROM標(biāo)識(shí)8位循環(huán)冗余檢驗(yàn)48位序列號(hào)8位分類編號(hào)(10H)MSBLSBMSBLSBMSBLSB開始8位表示產(chǎn)品分類編號(hào),接著48位是該DS18B20自身的序列號(hào),最后8位為前56位的CRC循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。2.溫度傳感器。溫度傳感器是DS18B20的核心部分,該功能部件可完成對(duì)溫度的測量。通過軟件編程可將-55~125℃范圍內(nèi)的溫度值按9位、10位、11位、12位的分辨率進(jìn)行量化,以上的分辨率都包括一個(gè)符號(hào)位,因此對(duì)應(yīng)的溫度量化值分別為0.5℃、0.25℃、0.125℃、0.0625℃,即最高分辨率為0.0625℃。芯片出廠時(shí)默認(rèn)為12位的轉(zhuǎn)換精度。當(dāng)接收到溫度轉(zhuǎn)換命令后,開始轉(zhuǎn)換,轉(zhuǎn)換完成后的溫度以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式表示,存儲(chǔ)在高速緩存器RAM的第0,1字節(jié)中,二進(jìn)制數(shù)的前5位是符號(hào)位。如果測得的溫度大于0,這5位為0,只要將測得的數(shù)值乘上0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測得的數(shù)值需要取反加1再乘上0.0625即可得到實(shí)際溫度。溫度數(shù)據(jù)格式如表3-3所示。表3-3溫度數(shù)據(jù)格式232221202-12-22-32-4LSByteSSSSS262524MSByte其中“S”為符號(hào)位,對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),表示測得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表3-4是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。表3-4一部分溫度對(duì)應(yīng)值溫度/℃二進(jìn)制表示十六進(jìn)制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100000191H+10.125000000001010000100A2H+0.500000000000000100008H000000000000010000000H-0.51111111111110000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90HDS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的E2PROM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。高速暫存RAM包含了8個(gè)連續(xù)字節(jié),前2個(gè)字節(jié)是測得的溫度信息,第3和第4字節(jié)是TH和TL的易失性拷貝,第5個(gè)字節(jié)是結(jié)構(gòu)寄存器的易失性拷貝,這三個(gè)字節(jié)的內(nèi)容在每一次上電復(fù)位時(shí)被刷新。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。它的字節(jié)定義如表3-5所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式。表3-5DS18B20字節(jié)定義TMR1R011111DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率,詳見表3-6(DS18B20出廠時(shí)被設(shè)置為12位)。表3-6DS18B20分辨率設(shè)置R1R0分辨率/位溫度最大轉(zhuǎn)向時(shí)間/ms00993.750110187.510113751112750由表3-6可見,分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。3.溫度報(bào)警觸發(fā)器TH和TLDS18B20依靠一個(gè)單線端口通訊。在單線端口條件下,必須先建立ROM操作協(xié)議,才能進(jìn)行存儲(chǔ)器和控制操作。因此,控制器必須首先提供下面5個(gè)ROM操作命令之一:(1)讀ROM。(2)匹配ROM。(3)搜索ROM。(4)跳過ROM。(5)報(bào)警搜索。成功執(zhí)行完一條ROM操作序列后,即可進(jìn)行存儲(chǔ)器和控制操作,控制器可以提供6條存儲(chǔ)器和控制操作指令中的任一條。一條控制操作命令指示DS18B20完成一次溫度測量。測量結(jié)果放在DS18B20的暫存器里,用一條讀暫存器內(nèi)容的存儲(chǔ)器操作命令可以把暫存器中數(shù)據(jù)讀出。溫度報(bào)警觸發(fā)器TH和TL各由一個(gè)E2PROM字節(jié)構(gòu)成??梢杂靡粭l存儲(chǔ)器操作命令對(duì)TH和TL進(jìn)行寫入,對(duì)這些寄存器的讀出需要通過暫存器。所有數(shù)據(jù)都是以最低有效位在前的方式進(jìn)行讀寫。4.配置寄存器。配置寄存器的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換率。DS18B20工作是按此寄存器的分辨率將溫度轉(zhuǎn)換為相應(yīng)精度的數(shù)值,它是高速緩存器的第5個(gè)字節(jié)。3.2.3DS18B20的測溫原理如圖3-4所示,圖中低溫度系數(shù)振蕩器的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫度系數(shù)振蕩器隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。圖3-4DS18B20測溫原理圖圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55℃所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(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ù)置將重新被裝入,并重新開始對(duì)低溫度系數(shù)振蕩器產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù)。如此循環(huán),直到減法計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度計(jì)數(shù)器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測溫度值。圖中的斜率累加器用于補(bǔ)償和修正測溫過程的非線形性,直到溫度寄存器達(dá)到被測溫度值。另外,DS18B20單線通信功能是分時(shí)完成的,有嚴(yán)格的時(shí)隙概念,因此讀/寫時(shí)序很重要。根據(jù)DS18B20的通訊協(xié)議,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:(1)每一次讀寫之前都必須要對(duì)DS18B20進(jìn)行復(fù)位。(2)復(fù)位成功后發(fā)送一條ROM指令。(3)最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,DS18B20收到信號(hào)后等待15~60微秒左右后發(fā)出60~240微秒的低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。3.2.4DS18B20使用的注意事項(xiàng)DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、用線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:1.較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS18B20進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀/寫時(shí)序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級(jí)語言進(jìn)行程序設(shè)計(jì)時(shí),對(duì)DS18B20部分最好采用匯編語言實(shí)現(xiàn)。2.在DS18B20的有關(guān)資料中均未提及單總線上所掛DS18B20數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS18B20超過8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問題,這一點(diǎn)在進(jìn)行多點(diǎn)測溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。3.連接DS18B20的總線電纜是有長度限制的。當(dāng)采用普通信號(hào)電纜傳輸長度超過50m時(shí),讀取的測溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻摹R虼?,在用DS18B20進(jìn)行長距離測溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配問題。2.在DS18B20測溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào),一旦某個(gè)DS18B20接觸不好或斷線,當(dāng)程序讀該DS18B20時(shí),將沒有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。3.3數(shù)字溫度計(jì)電路設(shè)計(jì)3.3.1數(shù)字溫度計(jì)原理圖溫度計(jì)電路設(shè)計(jì)原理圖如圖3-5所示,控制器使用單片機(jī)AT89C52,溫度計(jì)傳感器使用DS18B20,用液晶實(shí)現(xiàn)溫度顯示。本溫度計(jì)大體分三個(gè)工作過程。首先,由DS18B20溫度傳感器芯片測量當(dāng)前的溫度,并將結(jié)果送入單片機(jī)。然后,通過AT89C52單片機(jī)芯片對(duì)送來的測量溫度讀數(shù)進(jìn)行計(jì)算和轉(zhuǎn)換,井將此結(jié)果送入液晶顯示模塊。最后,SMC1602A芯片將送來的值顯示于顯示屏上。其中,DS18B20溫度傳感器芯片采用“一線制”與單片機(jī)相連,它獨(dú)立地完成溫度測量以及將溫度測量結(jié)果送到單片機(jī)的工作。圖3-5溫度計(jì)電路設(shè)計(jì)原理圖3.3.2時(shí)鐘電路的設(shè)計(jì)圖3-6是時(shí)鐘電路的設(shè)計(jì)電路圖。圖3-6時(shí)鐘電路單片機(jī)允許的振蕩晶體可在1.2~24MHz之間選擇,一般為11.0592MHz。電容C2,C3的取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小及振蕩電路起振有一定的影響,可在20~100pF之間選擇,典型值為30pF。3.3.3復(fù)位電路的設(shè)計(jì)計(jì)算機(jī)每次開始工作,CPU和系統(tǒng)中的其他部件都必須要有一個(gè)確定的初值,即復(fù)位狀態(tài)。圖3-7是單片機(jī)復(fù)位電路圖。圖3-7復(fù)位電路單片機(jī)RST引腳是高電平有效。單片機(jī)在上電瞬間C3充電,RST引腳出現(xiàn)正脈沖,只要RST保持兩個(gè)機(jī)械周期(大約10ms)以上的高電平,單片機(jī)就能復(fù)位。在單片機(jī)工作后,如果還想再次復(fù)位,只需按下開關(guān),單片機(jī)就能重新變成復(fù)位狀態(tài)。當(dāng)晶體振蕩頻率為12MHz時(shí),RC的典型值為C=10μF,R=8.2KΩ。3.3.4接口電路的設(shè)計(jì)DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖3-8所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)MOSFET管完成對(duì)總線的上拉。當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖3-8DS18B20與單片機(jī)的接口電路3.3.5顯示電路的設(shè)計(jì)1.1602LCD液晶簡介1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊,它有若干個(gè)5X7或者5X11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因?yàn)槿绱耍运荒茱@示圖形。1602LCD是指顯示的內(nèi)容為16×2,即可以顯示兩行,每行16個(gè)字符液晶模塊(顯示字符和數(shù)字)。1602LCD引腳與功能如下表3-7所示。表3-7液晶1602引腳表引腳符號(hào)功能說明1VSS一般接地2VDD接電源(+5V)3V0液晶顯示器對(duì)比度調(diào)整段4RSRS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。5R/WR/W為讀寫信號(hào)線,高電平1時(shí)進(jìn)行讀操作,低電平0時(shí)進(jìn)行寫操作。6EE端為始能端,下降沿使用7DB0低4位三態(tài)、雙向數(shù)據(jù)總線0位(最低位)8DB1低4位三態(tài)、雙向數(shù)據(jù)總線1位9DB2低4位三態(tài)、雙向數(shù)據(jù)總線2位10DB3低4位三態(tài)、雙向數(shù)據(jù)總線3位11DB4低4位三態(tài)、雙向數(shù)據(jù)總線4位12DB5低4位三態(tài)、雙向數(shù)據(jù)總線5位13DB6低4位三態(tài)、雙向數(shù)據(jù)總線6位14DB7低4位三態(tài)、雙向數(shù)據(jù)總線7位(最高位)15BLA背光電源正極16BLK背光電源負(fù)極1602液晶模塊內(nèi)部的控制器共有11條控制指令,如下表3-8所示。1602LCD的特性如下:(1)+5V電壓,對(duì)比度可調(diào)。(2)內(nèi)含復(fù)位電路。(3)提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能。(4)有80字節(jié)顯示數(shù)據(jù)存儲(chǔ)器DDRAM。(5)內(nèi)建有160個(gè)5×7點(diǎn)陣的字型的字符發(fā)生器CGROM。(6)8個(gè)可由用戶自定義的5×7的字符發(fā)生器CGROM。表3-81602的控制指令序號(hào)指令RS/RWD7D6D5D4D3D2D1D01清零顯示00000000012光標(biāo)返回000000001—3置輸入模式00000001I/DS4先是開/關(guān)控制0000001DCB5光標(biāo)或字符移動(dòng)000001S/CR/L——6預(yù)置功能00001DLNF——7字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01計(jì)數(shù)器地址10寫數(shù)到CGRAM10讀寫的數(shù)據(jù)內(nèi)容11從CGRAM度數(shù)11讀出的數(shù)據(jù)內(nèi)容指令1:清零顯示,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置。I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移,S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開,低電平表示關(guān);C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo);B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位。S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。R/L,高向左,低向右。指令6:功能設(shè)置命令。DL:高電平時(shí)為8位總線,低電平時(shí)為4位總線。N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示。F:低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置,地址:字符地址*8+字符行數(shù)(將一個(gè)字符分成5*8點(diǎn)陣,一次寫入一行,8行就組成一個(gè)字符)。指令8:顯示地址,第一行為:80H——8FH,第二行為:C0H——CFH。指令9:讀忙信號(hào)和光標(biāo)地址。BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。3.3.6報(bào)警電路的設(shè)計(jì)本設(shè)計(jì)采用軟件處理報(bào)警,利用發(fā)光二級(jí)管報(bào)警電路,當(dāng)溫度超過設(shè)定范圍時(shí),則二極管發(fā)光報(bào)警。報(bào)警電路硬件連接如圖3-9。圖3-9報(bào)警電路連接圖第3章標(biāo)題PAGE8PAGE31第4章系統(tǒng)軟件的設(shè)計(jì)4.1軟件Proteus與Keil4.1.1Proteus軟件1.Proteus簡介Proteus軟件是英國LABCENTERelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍電路。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。Proteus軟件的特點(diǎn)是:(1)實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合,具有模擬電路仿真、數(shù)字電路仿真、各種單片機(jī)及其外圍電路組成的系統(tǒng)仿真。(2)提供了多種虛擬儀器。如示波器、邏輯分析儀、信號(hào)發(fā)生器等,調(diào)試非常方便。(3)提供軟件調(diào)試功能,同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil等軟件。(4)具有強(qiáng)大的原理圖繪制功能。Proteus與其它單片機(jī)仿真軟件不同的是,它不僅能仿真單片機(jī)CPU的工作情況,也能仿真單片機(jī)外圍電路或沒有單片機(jī)參與的其它電路的工作情況。2.四大功能模塊(1)智能原理圖設(shè)計(jì)(ISIS)豐富的器件庫:超過27000種元器件,可方便地創(chuàng)建新元件。智能的器件搜索:通過模糊搜索可以快速定位所需要的器件。智能化的連線功能:自動(dòng)連線功能使連接導(dǎo)線簡單快捷,大大縮短繪圖時(shí)間。支持總線結(jié)構(gòu):使用總線器件和總線布線使電路設(shè)計(jì)簡明清晰??奢敵龈哔|(zhì)量圖紙:通過個(gè)性化設(shè)置,可以生成印刷質(zhì)量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。(2)完善的電路仿真功能(PROSPICE)PROSPICE混合仿真:基于工業(yè)標(biāo)準(zhǔn)SPICE3F5,實(shí)現(xiàn)數(shù)字/模擬電路的混合仿真。超過27000個(gè)仿真器件:可以通過內(nèi)部原型或使用廠家的SPICE文件自行設(shè)計(jì)仿真器件,LABCENTER也在不斷地發(fā)布新的仿真器件,還可導(dǎo)入第三方發(fā)布的仿真器件。多樣的激勵(lì)源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數(shù)信號(hào)、單頻FM、數(shù)字時(shí)鐘和碼流,還支持文件形式的信號(hào)輸入。豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號(hào)發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計(jì)/計(jì)數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2C調(diào)試器等。生動(dòng)的仿真顯示:用色點(diǎn)顯示引腳的數(shù)字電平,導(dǎo)線以不同顏色表示其對(duì)地電壓大小,結(jié)合動(dòng)態(tài)器件(如電機(jī)、顯示器件、按鈕)的使用可以使仿真更加直觀、生動(dòng)。高級(jí)圖形仿真功能(ASF):基于圖標(biāo)的分析可以精確分析電路的多項(xiàng)指標(biāo),包括工作點(diǎn)、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等。(3)獨(dú)特的單片機(jī)協(xié)同仿真功能(VSM)支持主流的CPU類型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BASICSTAMP、8086、MSP430等,CPU類型隨著版本升級(jí)還在繼續(xù)增加,如即將支持CORTEX、DSP處理器。支持通用外設(shè)模型:如字符LCD模塊、圖形LCD模塊、LED點(diǎn)陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進(jìn)/伺服電機(jī)、RS232虛擬終端、電子溫度計(jì)等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機(jī)串口和外部電路實(shí)現(xiàn)雙向異步串行通信。實(shí)時(shí)仿真:支持UART/USART/EUSARTS仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。編譯及調(diào)試:支持單片機(jī)匯編語言的編輯/編譯/源碼仿真,內(nèi)帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環(huán)境(如IAR、KEIL和HITECH)結(jié)合,進(jìn)行高級(jí)語言的源碼仿真和調(diào)試。(4)實(shí)用的PCB設(shè)計(jì)平臺(tái)原理圖到PCB的快速通道:原理圖設(shè)計(jì)完成后,一鍵便可進(jìn)入ARES的PCB設(shè)計(jì)環(huán)境,實(shí)現(xiàn)從概念到產(chǎn)品的完整設(shè)計(jì)。先進(jìn)的自動(dòng)布局/布線功能:支持器件的自動(dòng)/人工布局;支持無網(wǎng)格自動(dòng)布線或人工布線;支持引腳交換/門交換功能使PCB設(shè)計(jì)更為合理。3. ISIS智能原理圖輸入系統(tǒng)ISIS是PROTEUS系統(tǒng)的中心,具有控制原理圖畫圖的外觀的超強(qiáng)的設(shè)計(jì)環(huán)境。無論用戶的要求是快速實(shí)現(xiàn)復(fù)雜設(shè)計(jì)的仿真以及PCB設(shè)計(jì),還是設(shè)計(jì)精美的原理圖供出版,ISIS都可以很好的完成。畫完圖可以以圖形文件輸出,或者拷貝到剪切板以便其他文件使用。這就使得ISIS成為制作技術(shù)文件,學(xué)術(shù)論文,項(xiàng)目報(bào)告的理想工具,也是PCB設(shè)計(jì)的一個(gè)出色的前端。畫圖的外形由風(fēng)格模板定義。4. Proteus的簡單應(yīng)用圖4-1Proteus界面圖(1)繪制原理圖:繪制原理圖要在原理圖編輯窗口中的藍(lán)色方框內(nèi)完成。原理圖編輯窗口的操作是不同于常用的WINDOWS應(yīng)用程序的,正確的操作是:用左鍵放置元件;右鍵選擇元件;雙擊右鍵刪除元件;右鍵選中多個(gè)元件;先右鍵后左鍵編輯元件屬性;先右鍵后左鍵拖動(dòng)元件;連線用左鍵,刪除用右鍵;改連接線:先右擊連線,再左鍵拖動(dòng);中鍵可以縮放原理圖。(2)定制自己的元件:有三個(gè)個(gè)實(shí)現(xiàn)途徑,一是用PROTEUSVSMSDK開發(fā)仿真模型,并制作元件;另一個(gè)是在已有的元件基礎(chǔ)上進(jìn)行改造,比如把元件改為bus接口的;還有一個(gè)是利用已制作好(別人的)的元件,我們可以到網(wǎng)上下載一些新元件并把它們添加到自己的元件庫里面。(3)Sub-Circuits應(yīng)用:用一個(gè)子電路可以把部分電路封裝起來,這樣可以節(jié)省原理圖窗口的空間。4.1.2Keil軟件1.Keil軟件簡介Keil軟件是美國KeilSoftware公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil軟件提供豐富的庫函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil軟件生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語言的優(yōu)勢。Keil提供包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,由以下幾部分組成:μVisionIDE集成開發(fā)環(huán)境C51編譯器、A51匯編器、LIB51庫管理器、BL51連接/定位器、OH51目標(biāo)文件生成器以及Monitor-51、RTX51實(shí)時(shí)操作系統(tǒng)。2.Keil軟件調(diào)試功能應(yīng)用Keil進(jìn)行軟件仿真開發(fā)的主要步驟為:編寫源程序并保存—建立工程并添加源文件—設(shè)置工程—編譯/匯編、連接,產(chǎn)生目標(biāo)文件—程序調(diào)試。工程的建立、設(shè)置、編譯/匯編及連接產(chǎn)生目標(biāo)文件的方法非常易于掌握。首先選擇菜單File-New…,在源程序編輯器中輸入?yún)R編語言或C語言源程序(或選擇File-Open…,直接打開已用其它編輯器編輯好的源程序文檔)并保存,注意保存時(shí)必須在文件名后加上擴(kuò)展名.asm(.a51)或.c;然后選擇菜單Project-NewProject…,建立新工程并保存;工程保存后會(huì)立即彈出一個(gè)設(shè)備選擇對(duì)話框,選擇CPU后點(diǎn)確定返回主界面。這時(shí)工程管理窗口的文件頁(Files)會(huì)出現(xiàn)“Target1”,將其前面+號(hào)展開,接著選擇SourceGroup1,右擊鼠標(biāo)彈出快捷菜單,選擇“AddFiletoGroup‘SourceGroup1’”,出現(xiàn)一個(gè)對(duì)話框,要求尋找并加入源文件。加入文件后點(diǎn)close返回主界面,展開“SourceGroup1”前面+號(hào),就會(huì)看到所加入的文件,雙擊文件名,即可打開該源程序文件。緊接著對(duì)工程進(jìn)行設(shè)置,選擇工程管理窗口的Target1,再選擇Project-OptionforTarget‘Target1’(或點(diǎn)右鍵彈出快捷菜單再選擇該選項(xiàng)),打開工程屬性設(shè)置對(duì)話框,共有8個(gè)選項(xiàng)卡,主要設(shè)置工作包括在Target選項(xiàng)卡中設(shè)置晶振頻率、在Debug選項(xiàng)卡中設(shè)置實(shí)驗(yàn)仿真板等,如要寫片,還必須在Output選項(xiàng)卡中選中“CreatHexFi”;其它選項(xiàng)卡一般可取默認(rèn)值。工程設(shè)置后按F7鍵(或點(diǎn)擊編譯工具欄上相應(yīng)圖標(biāo))進(jìn)行編譯/匯編、連接以及產(chǎn)生目標(biāo)文件。成功編譯/匯編、連接后,選擇菜單Debug-Start/StopDebugSession(或按Ctrl+F5鍵)進(jìn)入程序調(diào)試狀態(tài),Keil提供對(duì)程序的模擬調(diào)試功能,內(nèi)建一個(gè)功能強(qiáng)大的仿真CPU以模擬執(zhí)行程序。Keil能以單步執(zhí)行(按F11或選擇Debug-Step)、過程單步執(zhí)行(按F10或選擇Debug-StepOver)、全速執(zhí)行等多種運(yùn)行方式進(jìn)行程序調(diào)試。如果發(fā)現(xiàn)程序有錯(cuò),可采用在線匯編功能對(duì)程序進(jìn)行在線修改(Debug-InlineAssambly…),不必執(zhí)行先退出調(diào)試環(huán)境、修改源程序、對(duì)工程重新進(jìn)行編譯/匯編和連接、然后再次進(jìn)入調(diào)試狀態(tài)的步驟。對(duì)于一些必須滿足一定條件(如按鍵被按下等)才能被執(zhí)行的、難以用單步執(zhí)行方式進(jìn)行調(diào)試的程序行,可采用斷點(diǎn)設(shè)置的方法處理(Debug-Insert/RemoveBreakpoint或Debug-Breakpoints…等)。在模擬調(diào)試程序后,還須通過編程器將.hex目標(biāo)文件燒寫入單片機(jī)中才能觀察目標(biāo)樣機(jī)真實(shí)的運(yùn)行狀況。4.2系統(tǒng)主程序4.2.1主程序主程序主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出處理DS18B20的測量溫度值。整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來實(shí)現(xiàn)的。從軟件的功能不同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個(gè)控制系統(tǒng)的核心,專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來完成各種實(shí)質(zhì)性的功能如測量、計(jì)算、顯示、通訊等。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。主程序流程如圖4-2所示。圖4-2主程序流程圖4.2.2DS18B20初始化DS18B20初始化流程圖如圖4-3所示。圖4-3DS18B20初始化流程圖4.2.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí),轉(zhuǎn)換時(shí)間約為750ms。在本程序設(shè)計(jì)中,采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖4-4所示。圖4-4溫度轉(zhuǎn)換命令子程序流程圖4.2.4溫度數(shù)據(jù)的計(jì)算處理方法從DS18B20讀出的二進(jìn)制值轉(zhuǎn)換成十進(jìn)制值,才能用于字符的顯示。DS18B20的轉(zhuǎn)換精度為9~12位,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時(shí),溫度寄存器里的值是以0.0625為步進(jìn)的,即溫度值為寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。通過觀察表4-1可以發(fā)現(xiàn),一個(gè)十進(jìn)制與二進(jìn)制間有很明顯的關(guān)系,就是把二進(jìn)制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)字節(jié)的二進(jìn)制化為十進(jìn)制后,就是溫度值的百、十、個(gè)位字節(jié),所以二進(jìn)制值范圍是0~F,轉(zhuǎn)換成十進(jìn)制小數(shù)就是0.0625的倍數(shù)(0~15倍)。表4-1二進(jìn)制與十進(jìn)制的近似對(duì)應(yīng)關(guān)系表小數(shù)部分二進(jìn)制值0123456789ABCDEF十進(jìn)制值00112334556678894.3源程序系統(tǒng)源程序見附錄。REF_Ref168484640\r\h錯(cuò)誤!未找到引用源。REF_Ref168484646\h錯(cuò)誤!未找到引用源。PAGE34第5章仿真5.1仿真結(jié)果本設(shè)計(jì)各部分硬件電路連接完成后進(jìn)行檢查調(diào)試,然后運(yùn)用Proteus軟件和Keil軟件進(jìn)行仿真實(shí)驗(yàn)。正常溫度時(shí)仿真結(jié)果如圖5-1所示。圖5-1正常溫度仿真圖當(dāng)溫度小于設(shè)定值時(shí),燈亮,實(shí)現(xiàn)報(bào)警功能。低溫報(bào)警仿真圖如圖5-2所示。圖5-2低溫報(bào)警仿真圖當(dāng)溫度大于設(shè)定值時(shí),燈亮,實(shí)現(xiàn)報(bào)警功能。高溫報(bào)警仿真圖如圖5-3所示。圖5-3高溫報(bào)警仿真圖結(jié)論結(jié)論本論文在深入分析多點(diǎn)智能測溫系統(tǒng)的工作原理基礎(chǔ)上,完成了該系統(tǒng)設(shè)計(jì)和調(diào)試任務(wù),并且系統(tǒng)的性能誤差達(dá)到了任務(wù)書的要求,使之能達(dá)到現(xiàn)場運(yùn)行水平。通過本次畢業(yè)論文設(shè)計(jì),得到以下結(jié)論:1.針對(duì)現(xiàn)有測溫系統(tǒng)的特點(diǎn),提出了一套應(yīng)用數(shù)字式溫度傳感器DS81B20組建溫度測控網(wǎng)絡(luò)新型方案,該方案的突出特點(diǎn)是系統(tǒng)的數(shù)字化、快速化及其經(jīng)濟(jì)實(shí)用性。2.以單總線為基本結(jié)構(gòu),采用ATMEL公司的AT89C52單片機(jī)為總線命令,實(shí)現(xiàn)與DSl8B20的總線接口,并提供具體電路設(shè)計(jì)。3.軟件編程采用模塊化、結(jié)構(gòu)化設(shè)計(jì),易于修改和維護(hù)。由于時(shí)間和精力的限制,對(duì)后續(xù)的研究還應(yīng)在以下方面逐步完善:1.應(yīng)用軟件的完善。溫度采集方面,一次命令全部單總線上的DS18B20進(jìn)行溫度轉(zhuǎn)換,減少系統(tǒng)所需時(shí)間。2.進(jìn)一步完善系統(tǒng)的可靠性。由于實(shí)際經(jīng)驗(yàn)的欠缺,設(shè)計(jì)上難免有考慮不周之處。當(dāng)某一個(gè)傳感器出現(xiàn)故障時(shí),雖然系統(tǒng)能發(fā)現(xiàn)該測溫點(diǎn)故障,但是更換傳感器時(shí)涉及到其序列號(hào)的修改和應(yīng)用程序的修改,這些還需要在今后應(yīng)用時(shí)加以完善。3.可以增加控制部分,以后在該部分進(jìn)行PID算法控制,以提高控制精度??傊?,本論文在新型數(shù)字溫度測控系統(tǒng)方面做了一定的研究工作。該系統(tǒng)初步完成了溫度測控方案的預(yù)定目標(biāo),為今后實(shí)現(xiàn)數(shù)字化與網(wǎng)絡(luò)化的溫度測控系統(tǒng)工程提供了一種參考。致謝洛陽理工學(xué)院畢業(yè)設(shè)計(jì)論文16PAGE55謝辭本畢業(yè)設(shè)計(jì)論文是在我的指導(dǎo)老師張果老師的親切關(guān)懷與耐心指導(dǎo)下完成的。從課題的選擇到論文的最終完成,張老師像一位友善的朋友始終給予我細(xì)心的指導(dǎo)和不懈的支持。張老師平易近人,對(duì)學(xué)生認(rèn)真負(fù)責(zé),在她的身上我們可以感受到一個(gè)學(xué)者的嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、淵博的知識(shí)、無私的奉獻(xiàn)精神,讓我受益匪淺,并且將終生受用。希望借此機(jī)會(huì)向張老師表示最衷心的感謝!此外,本文最終得以順利完成,與老師和同學(xué)們的互相幫助是分不開的,雖然他們沒有親自參與我的論文指導(dǎo),但在開題時(shí)也給我提了一些意見和可行性的建議,再次向他們表示衷心的感謝!附錄PAGE16參考文獻(xiàn)[1] 孫育才.單片微型計(jì)算機(jī)及其應(yīng)用.南京:東南大學(xué)出版社.2004[2] 沈德金,陳粵初.單片機(jī)接口電路與應(yīng)用程序?qū)嵗?北京:北京航天航空大學(xué)出版社.1990[3] 潘新民.王燕芳.微型計(jì)算機(jī)控制技術(shù).北京:電子工業(yè)出版社2003[4] 李朝青.單片機(jī)原理及接口技術(shù)(簡明修訂版).北京:北京航空航天大學(xué)出版社,1998[5] 李廣弟.單片機(jī)基礎(chǔ)北京:北京航空航天大學(xué)出版社,1994[6] 楊素行.模擬電子技術(shù)基礎(chǔ)(第三版).北京:高等教育出版社,2006[7] 康華光.數(shù)字電子技術(shù)基礎(chǔ)(第五版).北京:高等教育出版社,2006[8] 譚浩強(qiáng).C語言程序設(shè)計(jì)教程.北京:清華大學(xué)出版社,2005[9] 譚浩強(qiáng).程序設(shè)計(jì)與開發(fā)技術(shù).北京:清華大學(xué)出版社,1991[10]于永,戴佳,常江著.51單片機(jī)C語言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講.北京:電子工業(yè)出版社,2007[11]李全利,仲偉峰,徐軍著.單片機(jī)原理及應(yīng)用.北京:清華大學(xué)社,2006[12]馬忠梅,籍順心,張凱等著.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)(第4版).北京:北京航天航空大學(xué)出版社,2007[13]許超,吳新杰,張丹.基于Proteus和Keil的單片機(jī)課程教學(xué)改革.遼寧大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,28(12):19-26[14]張?jiān)?張炎,趙延軍.基于DS18B20溫度傳感器的數(shù)字溫度計(jì),2011[15]陳海宴.51單片機(jī)原理及應(yīng)用.北京航空航天大學(xué)出版社,2010[16]LiWei-di,GuoQiang.ApplicationtechnologyofLCDdisplays.ChinaPublishingHouseofElectronicsIndustry,2000.[17]SuKai,LiuQing-guo,ChenGuo-ping.PrincipleanddesignofMCS-51Single-chipmicroprocessor.MetallurgicalIndustryPress,2003.[18]GJiangMZhang,XXie,SLi.ApplicationontemperaturecontrolofDS18B2.ControlEngineeringofChina,2003附錄系統(tǒng)原理圖系統(tǒng)源程序#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharucharcodetable[]="temperature:";uinttemp[7],wendu;//存放分解的7個(gè)ASCII碼溫度數(shù)據(jù)uinttemperature[2];//存放溫度數(shù)據(jù)sbitDS1820_DQ=P1^4;sbitlcdrw=P2^5;sbitlcdrs=P2^4;sbitlcden=P2^6;sbitbuzzer=P1^0;ucharnum;voidinit_chuankou(){ TMOD=0x20;//設(shè)置定時(shí)器1為工作方式2 TH1=0xfd;//設(shè)置波特率為9600 TL1=0xfd; TR1=1;//打開定時(shí)器1 REN=1;//允許串口接收 SM0=0; SM1=1;//串口方式1}voidPC_get(){ ES=0; SBUF=wendu; while(!TI); //是否接收完數(shù)據(jù) TI=0; ES=1;}voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidwrite_com(uintcom){ lcdrs=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;}voidwrite_data(uintdate){ lcdrs=1; P0=date; delay(5); lcden=1; delay(5); lcden=0;}voidlcd_init(){ lcdrw=0; lcden=0; write_com(0x38);//設(shè)置16X2顯示,5X7點(diǎn)陣,8位數(shù)據(jù)接口 write_com(0x0e);//開顯示,顯示光標(biāo),光標(biāo)閃爍 write_com(0x06);//指針加一且光標(biāo)加一,不移屏 write_com(0x01);//清屏}voiddelay_18B20(unsignedinti){ while(i--);}uintDS1820_Reset(){bitflag;DS1820_DQ=1;delay_18B20(8);DS1820_DQ=0;//拉低總線delay_18B20(48);//延時(shí)480微秒,產(chǎn)生復(fù)位脈沖DS1820_DQ=1;//釋放總線delay_18B20(8);//延時(shí)80微秒對(duì)總線采樣flag=DS1820_DQ;//對(duì)數(shù)據(jù)腳采樣delay_18B20(40);//延時(shí)400微秒等待總線恢復(fù)return(flag);//根據(jù)flag的值可知DS1820是否存在或損壞,可加聲音報(bào)警提示DS1820故障}voidDS1820_WriteData(uintwData){ uinti; for(i=8;i>0;i--) { DS1820_DQ=0;//拉低總線,產(chǎn)生寫信號(hào) //delay(1);//延時(shí)4us DS1820_DQ=wData&0x01;//發(fā)送1位 delay_18B20(6);//延時(shí)60us,寫時(shí)序至少要60us DS1820_DQ=1;//釋放總線,等待總線恢復(fù) delay_18B20(1); wData>>=1;//準(zhǔn)備下一位數(shù)據(jù)的傳送 }}uintDS1820_ReadData(){ uinti,TmepData; for(i=8;i>0;i--) { DS1820_DQ=0;//拉低總線,產(chǎn)生讀信號(hào) TmepData>>=1; //delay_18B20(1);//延時(shí)4us DS1820_DQ=1;//釋放總線,準(zhǔn)備讀數(shù)據(jù) delay_18B20(1);//延時(shí)8微秒讀數(shù)據(jù) if(DS1820_DQ==1) TmepData|=0x80; delay_18B20(6);//延時(shí)60us DS1820_DQ=1;//拉高總線,準(zhǔn)備下一位數(shù)據(jù)的讀取 } return(TmepData);//返回讀到的數(shù)據(jù)}voidDS18B20_Init(){ DS1820_Reset(); DS1820_WriteData(0xCC);//跳過ROM DS1820_WriteData(0x4E);//寫暫存器// DS1820_WriteData(0x20);//往暫存器的第三字節(jié)中寫上限值// DS1820_WriteData(0x00);//往暫存器的第四字節(jié)中寫下限值 DS1820_WriteData(0x7F);//將配置寄存器配置為12位精度 DS1820_Reset();}voiddisplay();voidmain(){ uchari; init_chuankou(); lcd_init(); DS18B20_Init(); write_com(0x80);//開始地址 for(num=0;num<12;num++) { write_data(table[num]); } delay(50); while(1) { DS1820_Reset();//復(fù)位 DS1820_WriteData(0xcc);//跳過ROM命令 DS1820_WriteData(0x44);//溫度轉(zhuǎn)換命令 delay_18B20(100); DS1820_Reset();//復(fù)位 DS1820_WriteData(0xcc);//跳過ROM命令 DS1820_WriteData(0xbe);//讀DS1820溫度暫存器命令 delay_18B20(100); for(i=0;i<2;i++) temperature[i]=DS1820_ReadData();//采集溫度 DS1820_Reset(); display(); if(wendu>=0x20)//當(dāng)大于32度報(bào)警時(shí) { write_data(0x48); buzzer=0;delay(100); } if(wendu<=0x14)//或小于20度報(bào)警 { write_data(0x4c); buzzer=0;delay(100); } if(wendu<0x20||wendu>0x14) { write_data(0x20); buzzer=1; } PC_get(); }}voiddisplay(){ uinttemp_data1,temp_data2,m; uintXiaoShu;//用來存放4位小數(shù) temp_data1=temperature[1]; temp_data1&=0xf0;//取高4位 m=temp_data1; if(temp_data1==0xf0)//判斷是正溫度還是負(fù)溫度讀數(shù) { temp_data1=0x00; //負(fù)溫度讀數(shù)求補(bǔ),取反加1,判斷低8位是否有進(jìn)位 if(temperature[0]==0)//有進(jìn)位,高8位取反加1 { temperature[0]=~temperature[0]+1; temperature[1]=~temperature[1]+1; } else//沒進(jìn)位,高8位不加1 { temperature[0]=~temperature[0]+1; temperature[1]=~temperature[1]; }` } temp_data1=temperature[1]<<4; temp_data2=temperature[0]>>4; temp_data1=temp_data1|temp_data2; temp[0]=temp_data1/100+0x30;//加0x30是把轉(zhuǎn)換成字符庫代碼 temp[1]=temp_data1%100/10+0x30; temp[2]=temp_data1%100%10+0x30;//整數(shù)部分 temperature[0]&=0x0f;//小數(shù)部分 XiaoShu=temperature[0]*625; temp[3]=XiaoShu/1000+0x30; temp[4]=(XiaoShu%1000)/100+0x30; temp[5]=((XiaoShu%1000)%100)/10+0x30; temp[6]=((XiaoShu%1000)%100)%10+0x30; wendu=(temp[1]-0x30)*10+(temp[2]-0x30); if(m==0xf0) { m=0; write_com(0x80+0x44); write_data(0xb0); write_data(temp[1]-2); write_data(temp[2]); write_data(0x2e); write_data(temp[3]); write_data(temp[4]);

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論