基于單片機AT89S52的溫度控制儀表_第1頁
基于單片機AT89S52的溫度控制儀表_第2頁
基于單片機AT89S52的溫度控制儀表_第3頁
基于單片機AT89S52的溫度控制儀表_第4頁
基于單片機AT89S52的溫度控制儀表_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

[題目:基于單片機AT89S52的溫度控制儀表太原科技大學(xué)畢業(yè)設(shè)計目錄TOC\o"1-3"\u太原科技大學(xué)畢業(yè)設(shè)計(論文)任務(wù)書 1基于單片機AT89S52的溫度控制儀表 4摘要 4第一章引言 6第二章設(shè)計內(nèi)容及性能指標 8第三章系統(tǒng)方案比較、設(shè)計與論證 93.1主控制器模塊的選擇 93.2溫度信息收集器件的選擇 93.3按鍵方案的選擇 103.4顯示方案的選擇 113.5電源方案的選擇 11第四章系統(tǒng)總體方案 12第五章主控芯片的設(shè)計與介紹 135.1單片機的簡介 135.2最小系統(tǒng) 145.3溫度傳感器的選擇 15第六章硬件實現(xiàn)及單元電路設(shè)計 176.1主控制模塊 176.2顯示模塊電路 196.3數(shù)碼管顯示驅(qū)動電路 196.4溫度傳感器(DS18B20)電路 206.5蜂鳴器、發(fā)光二極管報警電路 21第七章系統(tǒng)軟件設(shè)計 227.1程序結(jié)構(gòu)分析 227.2.1DS18B20初始化程序流程圖 247.2.2讀溫度子程序流程圖 24第八章系統(tǒng)的安裝與調(diào)試 258.1安裝步驟 258.2電路的調(diào)試 25結(jié)論 26參考文獻 27致謝 28附錄1整體電路原理圖 29附錄2元器件清單 30附錄3部分源程序 31基于單片機AT89S52的溫度控制儀表摘要光陰似箭,隨著時代的變遷,在我們的工作、科研、甚至生活等諸多領(lǐng)域,單片機技術(shù)扮演著越來越重要的角色,更是一門愈成熟的技術(shù)。本次論文主要介紹的溫度報警系統(tǒng),就是基于AT89S52單片機的。本文詳細描述了開發(fā)溫度測量儀表是如何運用單片機的,重點對在單片機下的各種傳感器的硬件連接,C語言軟件編譯程序,以及每一個模塊的系統(tǒng)流程,乃至對各部分的電路也進行了詳盡的介紹。本溫度控制儀表就是由單片機AT89S52與溫度傳感器DS18B20相結(jié)合的,體積小,硬件開銷低,抗干擾能力強,系統(tǒng)可以在溫度條件復(fù)雜的環(huán)境中工作,同時與單片機的接口簡單,設(shè)計方便。本溫度控制儀表的主要功能:首先它可以實時采集并精確地顯示溫度,同時使用者可以設(shè)置一個溫度報警范圍,即一個溫度上限和一個溫度下限,當檢測溫度超出所設(shè)的溫度范圍(即檢測溫度高于溫度上限或低于溫度下限)時,便能立刻以聲,光兩種形式報警,反應(yīng)迅速。它使用起來非常簡單,而且測量范圍廣,可達-55攝氏度~125攝氏度,足夠人們的生活工作所用;同時測量精度高,可以達到0.1攝氏度;而且靈敏度高,功耗也很低。在我們的日常生活中,甚至工、農(nóng)業(yè)生產(chǎn)中,它都完全能夠勝任溫控工作,當然,它也可以作為其他系統(tǒng)的子模塊,幫助主系統(tǒng)起到擴展并且輔助的作用。關(guān)鍵詞:單片機,溫度傳感器,AT89S52,DS18B20TemperaturecontrolinstrumentbasedonsinglechipmicrocomputerAT89S52Abstract Timeflies,withthechangesofthetimes,inourwork,scientificresearch,evenlifeinmanyfields,single-chiptechnologyplaysmoreandmoreimportantrole,itisamorematuretechnology.Thispapermainlyintroducesthetemperaturealarmsystem,whichisbasedontheAT89S52mcu.Isdescribedindetailinthispaperthedevelopmentoftemperaturemeasurementinstrumentishowtousesinglechipmicrocomputer,focusonvariousofsensorsinsingle-chipmicrocomputerhardwareconnection,softwareClanguagecompiler,andeachmoduleofthesystemprocesses,andpartofthecircuitwerealsodetailedintroduction.ThetemperaturecontrolinstrumentisbyAT89S52SCMandtemperaturesensorDS18B20combination,smallvolume,thehardwareoverheadislow,stronganti-interferenceability,thesystemcanworkintheenvironmenttemperatureconditioniscomplex,andinterfacewithMCUissimpleandconvenientdesign.Themainfunctionofthetemperaturecontrolinstrument:firstofall,itcanreal-timeacquisitionandaccuratelydisplaytemperature,atthesametime,theusercansetatemperaturealarmrange,namelyatemperatureupperlimitandalowerlimitoftemperature,whenthetemperaturedetectionbeyondthedesigntemperaturerange(i.e.,thedetectedtemperatureishigherthantheupperlimittemperatureorthetemperatureisbelowthelimit),willbeabletoimmediatelytothesoundandlighttwoformsalarm.Itisverysimple,andwidemeasurementrange,upto-55degreesCelsius7.3Celsiusdegree,enoughforpeople'slifeandwork;andhighmeasuringaccuracy,canreach0.1degreesCelsius;andthesensitivityishigh,powerconsumptionisverylow.Inourdailylife,evenintheindustryandagriculture,itcancompletelybecompetentforthejoboftemperaturecontrol,ofcourse,itcanalsoasasubmoduleinothersystemstohelpsystemtoextendandauxiliaryrole.Keywords:microcontroller,temperaturesensor,AT89S52,DS18B20第一章引言時代日新月異,科技更是不斷發(fā)展,各種信息的參數(shù)只有擁有更高的準確度和精確度才能在現(xiàn)代社會中立足生存,才能有競爭力,然而這里就出現(xiàn)了一個問題,現(xiàn)代信息技術(shù)的發(fā)展水平往往會限制提高信息參數(shù)的準確度和精確度手段,就會限制它們本身,因此信息采集技術(shù)水平的提高已是迫在眉睫。當今世界主流三大信息技術(shù),它們分別是信息采集技術(shù)、信息傳輸技術(shù)以及信息處理技術(shù),亦可分別稱之為傳感器技術(shù)、通信技術(shù)以及計算機技術(shù),而其中,有一種前沿尖端產(chǎn)品,就是傳感器,尤其是溫度傳感器,以及溫度傳感器技術(shù),在我國乃至全世界都有了非常廣泛的應(yīng)用,因為人們的生活條件,或者說生活要求與環(huán)境的溫度息息相關(guān)的,溫度傳感器順理成章地滲透到人們生產(chǎn)生活的各個領(lǐng)域,首先,為了提高生產(chǎn)效率,工業(yè)生產(chǎn)必須實時監(jiān)控并調(diào)節(jié)溫度:農(nóng)業(yè)的瓜果蔬菜以及動物的養(yǎng)殖也需要以適宜溫度為前提,故此,研究溫度的測量以及設(shè)計溫度控制儀表裝置具有很重要的意義。溫度傳感器元件是大多數(shù)溫度探測器件的關(guān)鍵部分,是感知溫度靈敏的感官。而溫度傳感器大致有如下三個歷程:1、分立式溫度傳感器2、模擬集成溫度傳感器3、智能集成溫度傳感器。隨著科技的不斷發(fā)展,人們對生活質(zhì)量的要求不斷提高,對溫度的要求也愈發(fā)嚴格,所以從上世紀90年代,精確靈敏的數(shù)字式溫度傳感器,也就是智能集成溫度傳感器問世。社會飛速發(fā)展,人們的生活質(zhì)量提高了,對溫度傳感器各方面的要求也越來越高,1、它的集成智能化程度更高,這樣可以更多的省去人力,同時減小體積與成本;2、它的精度更高,從而提高生活質(zhì)量與工業(yè)生產(chǎn)水平;3、它的可靠性與安全性更高,可以給人提供堅實的保障。本文將介紹基于單片機AT89S52的溫度控制儀表的設(shè)計思路與設(shè)計原理,還包括智能溫度傳感器DS18B20的結(jié)構(gòu)和控制。對其工作原理和程序的設(shè)計作詳細的介紹。本溫度控制儀表操作簡單,讀數(shù)方便,示數(shù)靈敏,適應(yīng)環(huán)境廣泛,精確度可達0.1攝氏度,可以用于對溫度控制要求比較精確的場所,或科研實驗室使用。本溫度控制儀表的控制器采用AT89S52單片機,用數(shù)碼管來實現(xiàn)溫度顯示,報警裝置由發(fā)光二極管和蜂鳴器共同實現(xiàn)。第二章設(shè)計內(nèi)容及性能指標 本文主要介紹了基于AT89S52單片機的溫度控制儀表的設(shè)計,包括硬件的選擇連接和軟件的設(shè)計,同時將總電路分成幾個子模塊做進一步分析。本溫度控制儀表的主要功能如下: 溫度傳感器DS18B20可以對溫度進行實時監(jiān)測,并立即將溫度信號轉(zhuǎn)化為數(shù)字信號,單片機上電后依照程序?qū)囟葌鞲衅鲗崟r狀態(tài)監(jiān)測,收集溫度數(shù)字信號并處理,它將轉(zhuǎn)變后的信號傳遞給數(shù)碼管,數(shù)碼管立即顯示溫度信息,并可精確到小數(shù)點后1位。儀表上附有4個按鍵,其中1個復(fù)位按鈕,防止程序跑飛,3個溫度上下限設(shè)置按鈕,可以設(shè)置報警溫度的高低值,當檢測到的溫度高于設(shè)定報警的高溫值或者低于設(shè)定的低溫值時,蜂鳴器發(fā)聲報警,報警指示燈同時閃爍。該儀表同時具有斷電保存功能,所以即使斷電,設(shè)置好的溫度上下限值在下次通電后依然保留在單片機內(nèi)部的EEPOM中。另外,為了防止誤操作,進入設(shè)置界面,如果沒有按下鍵任意,系統(tǒng)將在在15秒后自動退出設(shè)置,提高儀表的可靠性。第三章系統(tǒng)方案比較、設(shè)計與論證該系統(tǒng)包含五個子模塊,分別是主控制器模塊、溫度檢測模塊、按鍵模塊、顯示模塊、電源模塊。下面將對各個模塊及其器件的選擇進行詳細的分析。3.1主控制器模塊的選擇方案1:系統(tǒng)主控制器模塊采用可編程邏輯器件CPLD。CPLD具有各種復(fù)雜的邏輯功能,同時兼?zhèn)湟?guī)模大、體積小、穩(wěn)定性高、密度高、IO資源豐富、易于進行功能擴展的優(yōu)點。其通過采用并行的輸入輸出方式,可以提高系統(tǒng)的處理運算速度,屬于大規(guī)模集成電路范圍,被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計和產(chǎn)品生產(chǎn)之中。但本設(shè)計對單片機的功能需求較低,對數(shù)據(jù)的處理速度也沒有很高的要求,所以我最終放棄了這個方案。方案2:AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K系統(tǒng)可編程Flash存儲器,整個系統(tǒng)的核心采用AT89S52單片機,其優(yōu)勢便立刻顯露了出來,它控制簡單,方便快捷。這樣,單片機就可以充分利用其豐富的資源,發(fā)揮具有更強大的控制功能和可位尋址的操作功能,價格低廉等優(yōu)點。AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K系統(tǒng)可編程Flash存儲器,所以它完全可以勝任本次設(shè)計的核心,同時AT89S52單片機價格低廉,更加經(jīng)濟。綜合考慮后,主控制器模塊我使用AT89S52。3.2溫度信息收集器件的選擇方案1:DS18B20是一種可編程分辨率的單總線數(shù)字溫度計,通過DS18B20來測量實際溫度,并將溫度信號轉(zhuǎn)變?yōu)閿?shù)字信號通過通信引腳進行輸出,再由單片機對信號進行處理和控制,這樣就完成的溫度信息的收集和利用,同時簡化溫度測試模塊的電路,節(jié)約成本。同時可圈可點的是,該溫度傳感器的物理性質(zhì)和化學(xué)性質(zhì)很穩(wěn)定,所以變化線性比較好,在0-100攝氏度范圍內(nèi),最大線性偏差小于1攝氏度。DS18B20單線接口僅需一個端口引腳,直接輸出數(shù)字信號,同時能直接從單線通訊線上獲得能量,不需外部電源另行供電。這樣,簡化了溫度檢測模塊的結(jié)構(gòu)。采用51單片機控制還有一個優(yōu)點,就是軟件語言編程的空間大,可通過改變程序讓它完成更多的任務(wù)。所以溫度采集模塊的溫度傳感器,DS18B20是很不錯的選擇。方案2:我想到的另一種測量溫度的電子器件是鉑熱電阻PT100,如同名字,它的主要材料是鉑,也就是咱們平時所說的“白金”,這是一種貴重金屬,經(jīng)常被用來制成各種首飾,價格比黃金還要貴重,所以這會大大提高成本。同時它利用鉑阻值隨溫度變化而變化這樣的原理設(shè)計,但是這個變化不是正比變化,變化曲線更加接近拋物線,會給計算和我后面的編程帶來不小的麻煩。所以后來我放棄了它。綜合考慮后,溫度傳感器我選擇DS18B20。3.3按鍵方案的選擇方案1:本儀表按鍵采用矩陣式鍵盤,此類鍵盤的原理是通過矩陣式行列掃描方式收集按鍵信息,從而做出信息輸出。其優(yōu)點是當按鍵較多時可降低占用單片機的I/O口數(shù)目,但電路比較復(fù)雜,也會加大編程難度,本儀表不需要太多的按鍵,所以我決定放棄該方案。方案2:本儀表設(shè)計亦可采用獨立按鍵電路,此類鍵盤的工作原理是采用直接掃描端口的方式,每個按鍵單獨占據(jù)一根I/O接口線,當有按鍵按下時,對應(yīng)的端口就可立即檢測電平的變化,從而將信號傳遞給單片機,反應(yīng)迅速,同時所有按鍵相互獨立,互不影響。本設(shè)計按鍵較少,單片機的I/O口數(shù)目足以支持此方法,電路設(shè)計很簡便,編程也很容易。所以綜合題目要求及兩種方案,我選擇了獨立按鍵方法。3.4顯示方案的選擇方案1:根據(jù)本設(shè)計的需求,顯示方案可以采用4位數(shù)碼管。它一共有12個引腳,其中包括4個位選,8個段選,通過查詢的方式驅(qū)動可以將其點亮,當查詢的速度足夠快,人眼看到的就是持續(xù)發(fā)光的了。由于數(shù)碼管顯示迅速,使用方便,所以是很不錯的選擇。方案2:LCD液晶顯示也是不錯的選擇。LCD的應(yīng)用非常廣泛,它能夠清晰的顯示多形式的內(nèi)容,信息量也很大。但在本設(shè)計中,顯示內(nèi)容不需非常豐富,同時LCD液晶價格昂貴,因此放棄了此方案。綜上所述我選擇4位數(shù)碼管顯示。3.5電源方案的選擇方案1:我首先想到的是采用5V蓄電池的方案。首先它的供電電壓就是5V,不需要再進行直流變壓,而且電流強,有很好的驅(qū)動能力,同時可以充電,能夠反復(fù)利用。它優(yōu)點很多,但有一個致命的缺點,蓄電池的體積往往很大,根本無法組裝在溫度儀表的模型設(shè)計中,考慮到這一點,我不得不放棄這個方案重新考慮。方案2:電源采用3節(jié)1.5V干電池共4.5V做電源,通過實驗驗證,系統(tǒng)工作時,單片機、溫度傳感器的工作電壓穩(wěn)定,可以滿足系統(tǒng)的要求,而且體積不大,電池更換方便。綜上所述,我采用干電池電源方案。第四章系統(tǒng)總體方案本設(shè)計溫度控制儀表需要控制中心,收集溫度信息的部分,顯示部分,按鍵部分,報警以及供電的部分,所以按需要,我將系統(tǒng)分為6個模塊,它們分別是:主控模塊,溫度采集模塊,按鍵模塊,顯示模塊,聲光報警模塊和電源模塊。其中主控模塊是大腦,是系統(tǒng)的核心,其它模塊為主控模塊提供信息,能量,或者按主控模塊程序要求完成任務(wù)。為了便于理解,系統(tǒng)各模塊結(jié)構(gòu)框圖如下所示:顯示模塊顯示模塊單片機最小系統(tǒng)(主控模塊)電源模塊溫度采集模塊單片機最小系統(tǒng)(主控模塊)電源模塊溫度采集模塊聲光報警模塊聲光報警模塊按鍵模塊按鍵模塊圖4.1溫度控制儀表結(jié)構(gòu)框圖 其中,主控模塊是整個系統(tǒng)的“大腦”,主要任務(wù)是運行指令和數(shù)據(jù)處理,并協(xié)調(diào)系統(tǒng)的各模塊更好的配合工作;溫度采集模塊是系統(tǒng)的“感覺系統(tǒng)”,主要負責感受外界溫度并將溫度信號轉(zhuǎn)化為數(shù)字信號;顯示模塊用來顯示系統(tǒng)得到并翻譯后的溫度信息;按鍵模塊是用來讓使用者設(shè)置報警溫度;聲光報警模塊會在檢測外界溫度超過警戒溫度范圍時及時發(fā)出警報;電源模塊為整個系統(tǒng)提供能量,是系統(tǒng)工作的必要前提。第五章主控芯片的設(shè)計與介紹5.1單片機的簡介CPU是系統(tǒng)控制部分的核心,也是必不可少的。在考慮滿足需求和經(jīng)濟性的前提下,本設(shè)計采用AT89S52單片機作為整個系統(tǒng)的控制中心。圖5.1AT89S52管腳圖AT89S52具有以下的特點:●與MCS-51單片機產(chǎn)品兼容●8K字節(jié)在系統(tǒng)可編程Flash存儲器●1000次擦寫周期●全靜態(tài)操作:0Hz~33Hz●三級加密程序存儲器●三個16位定時器/計數(shù)器●32個可編程I/O口線●全雙工UART串行通道●八個中斷源●掉電后中斷可喚醒●低功耗空閑和掉電模式●雙數(shù)據(jù)指針●看門狗定時器●掉電標識符除此之外,AT89S52單片機還具有看門狗內(nèi)部外設(shè)。在工業(yè)控制/汽車電子/航空航天等需要高可靠性的系統(tǒng)中,為了防止“系統(tǒng)在異常情況下,受到干擾,MCU/CPU程序跑飛,導(dǎo)致系統(tǒng)長時間異常工作”,系統(tǒng)中單片機AT89S52中自帶看門狗電路。其寄存器設(shè)置相關(guān)信息如下:表5.1AT89S52看門狗寄存器AT89S52單片機看門狗復(fù)位時間是可以自行選擇和設(shè)置的,其設(shè)置方法是:表5.2看門狗定時器預(yù)分頻值5.2最小系統(tǒng)單獨依靠單片機當然無法起到作用,它需要與其他器件進行數(shù)據(jù)交換或能量傳遞,也需要晶體振蕩器產(chǎn)生單片機所必須的始終頻率,這里就需要單片機與一些其他的元件組成一個簡單的電路,以實現(xiàn)上述功能,而這個簡單的電路就稱之為最小系統(tǒng)。其電路連接圖如下所示:圖5.2單片機最小系統(tǒng)電路圖5.3溫度傳感器的選擇如圖所示,DS18B20的引腳很簡單,它只有3個引腳,分別是VD、GND和DQ,VD接高電平,GND接地,而剩下的DQ為信號的輸出或輸入。此傳感器的結(jié)構(gòu)之所以簡單,是因為它有別于傳統(tǒng)的溫度傳感器,傳統(tǒng)的是將檢測到溫度信號轉(zhuǎn)換成電壓,這個無法讓單片機識別,中間還得通過數(shù)模轉(zhuǎn)換等一系列手段把電壓的大小梯度轉(zhuǎn)換為多位二進制數(shù)的形式,再讓單片機識別,不僅電路復(fù)雜,而且程序編寫困難,而DS18B20可把溫度信號直接轉(zhuǎn)換為數(shù)字信號,可編程溫度精度高達0.125攝氏度,所以與傳統(tǒng)的優(yōu)勢立刻凸現(xiàn)出來。 圖5.3外部封裝形式圖5.4傳感器電路圖第六章硬件實現(xiàn)及單元電路設(shè)計6.1主控制模塊要使單片機工作起來最基本的電路構(gòu)成為單片機最小系統(tǒng)如圖4所示。圖6.1單片主控電路單片機最小系統(tǒng)由單片機、復(fù)位電路、時鐘電路三個部分構(gòu)成。單片機AT89S52工作電壓為4.5V~5V,這里用5V供電,也就是高電平,二進制用“1”表示,高電平首先接單片機的第40引腳VCC,第20引腳GND接電源負極,也就是低電平,0V,二進制用“0”表示。有些電路圖的GND引腳用VSS表示,意思不變。單片機在執(zhí)行程序任務(wù)時,當遇到不可預(yù)測或某些可預(yù)測故障時,程序會進入無限循環(huán),導(dǎo)致單片機無法正常工作,我們將這種情況稱之為“程序跑飛”,為了防止這種情況的發(fā)生,最小系統(tǒng)需要一種能讓單片機回到初始狀態(tài)的電路,就是復(fù)位電路。單片機廠商在設(shè)計單片機時,留有一個RST引腳(9號引腳),該引腳是復(fù)位引腳,正常情況下復(fù)位引腳通低電平或制空,當通入高電平并且持續(xù)兩個機器周期時,單片機便會完成復(fù)位操作,故按圖將此引腳通過開關(guān)S1接到高電平上,同時并聯(lián)電容C1,正常情況下開關(guān)斷開,此引腳制空,當按下S1時,引腳接高電平,啟動復(fù)位,由于需要兩個機器周期,為防止按鍵時間不足或者抖動導(dǎo)致時間不連續(xù),并聯(lián)電容起到補足的作用,按下S1時電容充電,S1斷開時電容放點,所以電容大小應(yīng)使其放點時間可以滿足兩個機器周期即可,如圖6.2,我選擇的是10uF的有正負極的電容。圖6.2復(fù)位電路單片機工作需要一個基準信號,時鐘電路就是用來給單片機提供這樣一個信號的電路,該電路里面包含有一個石英晶體振蕩器,它可以自主產(chǎn)生高速的脈沖振蕩,我選用的是12MHZ的晶振,它的震蕩頻率就是12MHZ,就是每1/12微秒就會振蕩一次,每一次振蕩我們就稱是一個振蕩周期,每兩個振蕩周期為一個狀態(tài)周期,每六個狀態(tài)周期是一個機器周期。這樣分出規(guī)律的周期還不能供單片機使用,晶振振蕩的信號特別小,需要由兩個電容進行放大,圖6.3中C2、C3就起到了放大的作用,放大后的脈沖就可以供單片機使用了。這一系列電路就是時鐘電路。圖6.3時鐘電路晶體的頻率一般為1—24Hz(本設(shè)計為12Hz),微調(diào)電容,20pF。6.2顯示模塊電路大家都知道,夜晚用來照明的燈光其實不是一直在發(fā)光,是由于光閃爍的頻率非??欤捎谝曈X停留現(xiàn)象,人類就會感覺等在一直發(fā)光。數(shù)碼管顯示同理,首先4位數(shù)碼管位選引腳(3、6、8、9)工作,控制4位中的哪一位顯示,之后讓數(shù)碼管的段選工作,控制該位顯示的內(nèi)容,當這一系列的速度和頻率非???,數(shù)碼管看起來就和在一直顯示一樣了,這樣同時可以滿足實時變換,方便顯示溫度。圖6.4數(shù)碼管顯示6.3數(shù)碼管顯示驅(qū)動電路數(shù)碼管位選需要的電流比較大,這里就需要三極管對信號進行放大,同時還能起到開關(guān)的作用,從而滿足電路需要,這里我選用了4個8550三極管,它們價格便宜,反應(yīng)靈敏,是很好的選擇。圖6.5驅(qū)動電路6.4溫度傳感器(DS18B20)電路溫度傳感器DS18B20是由美國半導(dǎo)體公司研制的,它外形簡單,只有3個引腳,單總線,可以將溫度信號直接轉(zhuǎn)化為數(shù)字信號,體積小,能耗低,性能高,市場競爭力很強,收到了很多電子廠家的歡迎。它只有一根信號線,在多個溫度傳感器在進行溫度信號的轉(zhuǎn)換時,它需要足夠的電流才能完成這一個操作,由于單片機I/O口輸出的電流很小,光靠電阻無法使其正常工作,但當只有一個時,DQ口并入一個10K的上拉電阻即可。圖6.6溫度傳感器電路引腳圖 6.5蜂鳴器、發(fā)光二極管報警電路電路如圖8主要是用來設(shè)定溫度報警溫度的、有高溫和低溫報警。本設(shè)計中報警提醒電路采用NPN型S8550三極管驅(qū)動,當單片機的P2.5口輸出低電平時,三極管VE>VB>VC>0,三極管導(dǎo)通,相當于開關(guān),蜂鳴器與發(fā)光二極管正極接高電平,從而報警,當單片機的P2.5口輸出高電平時,三極管截止,相當于開關(guān)閉合,蜂鳴器與發(fā)光二極管幾乎無電流留過,不工作。圖6.7蜂鳴器、發(fā)光二極管驅(qū)動電路圖第七章系統(tǒng)軟件設(shè)計7.1程序結(jié)構(gòu)分析7.2系統(tǒng)程序流程調(diào)用顯示子程序調(diào)用顯示子程序初始化1s到?初次上電發(fā)溫度轉(zhuǎn)換開始命令讀出溫度值溫度計算處理顯示數(shù)據(jù)刷新7.2.1DS18B20初始化程序流程圖在DS18B20工作之前,需要將其工作狀態(tài)進行復(fù)原,其流程如圖7.2:發(fā)復(fù)位命令發(fā)復(fù)位命令發(fā)跳過ROM命令初始化成功結(jié)束圖7.2初始化程序流程圖7.2.2讀溫度子程序流程圖從DS18B20讀出數(shù)據(jù)后要將溫度數(shù)據(jù)移入寄存器保存,這樣可以防止外部中斷后數(shù)據(jù)丟失,其流程圖如下:發(fā)復(fù)位命令發(fā)復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令移入溫度寄存器結(jié)束圖7.3溫度子程序流程圖第八章系統(tǒng)的安裝與調(diào)試8.1安裝步驟1.檢查元件的好壞實物焊接需要購買元件,要按照電路要求購買,防止不夠或者浪費,買的時候一定要去正規(guī)廠家,而且要檢查產(chǎn)品的質(zhì)量是否合格,防止在后期檢驗的時候因為一個小問題造成很大的麻煩。2.放置、焊接各元件焊接時是從電路板反面焊接,所以與電路是成鏡像關(guān)系的,這個問題焊接的時候要注意,不然容易焊反,同時焊接是先焊接位置低,不易損壞的元件,后焊接高的,脆弱的元件,焊接時間不要太長,避免虛焊和焊料太多導(dǎo)致短路的情況出現(xiàn)。8.2電路的調(diào)試首先應(yīng)對比實際電路與設(shè)計的電路圖,觀察是否一致,有無粗心導(dǎo)致的焊接錯誤,通知應(yīng)該仔細觀察焊接處是否有虛焊等焊接不夠到位的地方,如果出現(xiàn)這樣的問題應(yīng)補焊。檢查可以用電能表測量是否導(dǎo)通的功能位測試,如果焊接規(guī)范可導(dǎo)通,兩個表筆觸到測量兩側(cè)會發(fā)出蜂鳴器的聲響。確認電路硬件無誤后,可以用單片機燒入程序。這里先別著急全部燒入,應(yīng)先燒入顯示程序,觀察顯示是否正常。原因有兩點:1、顯示模塊電路比較復(fù)雜,這樣可以再次檢測到焊接顯示模塊時候是否出現(xiàn)問題。2、如果不進行單獨顯示模塊的檢測,直接上全部程序,就很難判斷問題是出在顯示電路還是其他電路,給調(diào)試會帶來很大的麻煩。如果顯示電路顯示錯誤,原因可能有兩個,一個是電路焊接錯誤,另一個是程序編寫不正確,應(yīng)綜合考慮。最后燒入全部程序?qū)嶒?,如果還有問題,應(yīng)化整為零,分模塊尋找問題并解決,同時也有可能是程序編寫上的錯誤。結(jié)論 本次設(shè)計為基于單片機AT89S52的溫度控制儀表,供電方式采用3節(jié)5號電池供電,通電打開開關(guān),電源燈亮,數(shù)碼管顯示當前溫度,并在之后每隔1秒測量顯示一次。本設(shè)計共有4個按鍵,最靠上的一個是復(fù)位按鍵,如有程序跑飛現(xiàn)象可以按下進行復(fù)位,靠下三個從左到右分別是“設(shè)置”、“+”、“-”,按設(shè)置可進入設(shè)計界面,分別調(diào)節(jié)報警溫度的上下限,進入設(shè)計界面后如果15秒內(nèi)沒有按任意鍵,系統(tǒng)會自動退出設(shè)置界面,長按“+”、“-”設(shè)置溫度可以快速增加或者減少,溫度精確度達0.1度,當實時溫度超出設(shè)置的溫度范圍時,聲光報警器立即報警。 本設(shè)計結(jié)構(gòu)簡單,反應(yīng)迅速,經(jīng)過測試和不斷完善,系統(tǒng)已經(jīng)可以很完美的達到預(yù)定的目標,而且各項指標穩(wěn)定,運行可靠,出錯率很小,本次設(shè)計非常成功。本次設(shè)計雖然花費了很大的功夫,但我得到的收獲也是非常多的,從一開始確定題目,到制定方案,設(shè)計思路,設(shè)計電路,焊接電路,編寫程序,到最后獲得勞動成果,我都記憶猶新。俗話說萬事起頭難,一開始我對于這個設(shè)計無從下手,后來在老師的幫助下,我查閱了很多資料,終于在腦海中初步形成了一個框架。后面也不輕松,我遇到了很多挫折,尤其是在編寫程序的時候,一頁頁的程序花很長時間寫出來,本以為松了一口氣,但用軟件編譯一檢查,好多語法錯誤,語法錯誤解決干凈后,程序卻不一定能按照自己的意愿跑,里面還有好多沒注意到的不正確的細節(jié),再經(jīng)歷過一點點修改后,當發(fā)現(xiàn)程序終于可以成功的進行下來時,這種獲得成功的快感讓我終身難忘。所以通過本次設(shè)計,我不光更加加深了對專業(yè)知識的研究,更讓我體會到,遇到困難,只要功夫深,都是可以克服的,一旦克服,收獲的是人生最大的快樂。參考文獻[1]曹巧媛主編.單片機原理及應(yīng)用(第二版).北京:電子工業(yè)出版社,2002[2]全國大學(xué)生電子設(shè)計競賽組委會編.第五屆全國大學(xué)生電子設(shè)計競賽獲獎作品選編(2001),北京:北京理工大學(xué)出版社,2003[3]何力民編.單片機高級教程.北京:北京航空大學(xué)出版社,2000[4]金發(fā)慶等編.傳感器技術(shù)與應(yīng)用.北京機械工業(yè)出版社,2002[5]劉坤、宋戈、趙洪波、張憲棟編.51單片機C語言應(yīng)用開發(fā)技術(shù)大全,北京:人民郵電出版社,2008[6]譚浩強著.C程序設(shè)計.北京:清華大學(xué)出版社,2007;[7]王忠飛,胥芳.MCS-51單片機原理及嵌入式系統(tǒng)應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007.P268-273[8]PeterVanDerLinden著,徐波譯.C專家編程,人民郵電出版社,2003致謝附錄1整體電路原理圖附錄2元器件清單CommentDescriptionDesignatorQuantity蜂鳴器BellB11電解電容10uFC11瓷片電容30pC2,C32發(fā)光二極管ledD12數(shù)碼管DS04DS11排針Header,4-PinJ1,P12排針Header,2-PinP21三極管8550Q1,Q2,Q3,Q4,Q55電阻200歐R1,R2,R3,R8,R9,R10,R11,R128電阻4.71電阻2kR4,R5,R6,R7,R15.R137電阻10kR141觸點開關(guān)SwitchS1,S2,S3,S44自鎖開關(guān)sw-灰色SW11溫度傳感器ds18b20U11超聲波座4p1單片機座40p1電池盒3節(jié)1萬能板7x9cm1單片機AT89S521導(dǎo)線若干12M12MY11附錄3部分源程序#include<reg52.h>#include"eepom52.h"#defineucharunsignedchar#defineuintunsignedint//數(shù)碼管段選定義012345 6 7 8 9 ucharcodesmg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //斷碼//數(shù)碼管位選定義ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; ucharsmg_i=3;//顯示數(shù)碼管的個位數(shù)sbitdq=P2^4; //18b20IO口的定義sbitbeep=P2^5;//蜂鳴器IO口定義uchara_a;uinttemperature;//bitflag_300ms;ucharkey_can; //按鍵值的變量ucharmenu_1;//菜單設(shè)計的變量uintt_high=300,t_low=100;bitflag_lj_en; //按鍵連加使能bitflag_lj_3_en; //按鍵連3次連加后使能加的數(shù)就越大了ucharkey_time,flag_value;//用做連加的中間變量bitkey_500ms;ucharflag_clock;ucharzd_break_en,zd_break_value;//自動退出設(shè)置界面/***********************1ms延時函數(shù)*****************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/***********************小延時函數(shù)*****************************/voiddelay_uint(uintq){ while(q--);}/***********************數(shù)碼顯示函數(shù)*****************************/voiddisplay(){ uchari; for(i=0;i<smg_i;i++) { P3=smg_we[i]; //位選 P1=dis_smg[i]; //段選 delay_1ms(1); P3=0xff; //位選 P1=0xff; //消隱 } }/******************把數(shù)據(jù)保存到單片機內(nèi)部eepom中******************/voidwrite_eepom(){ SectorErase(0x2000); byte_write(0x2000,t_high%256); byte_write(0x2001,t_high/256); byte_write(0x2002,t_low%256); byte_write(0x2003,t_low/256); byte_write(0x2055,a_a); }/******************把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*****************/voidread_eepom(){ t_high=byte_read(0x2001); t_high<<=8; t_high|=byte_read(0x2000); t_low=byte_read(0x2003); t_low<<=8; t_low|=byte_read(0x2002); a_a=byte_read(0x2055);}/***********************18b20初始化函數(shù)*****************************/voidinit_18b20(){ bitq; dq=1; //把總線拿高 delay_uint(1); //15us dq=0; //給復(fù)位脈沖 delay_uint(80); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號 delay_uint(20); //200us dq=1; //把總線拿高釋放總線}/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開始 dq=0; //把總線拿低寫時間隙開始 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(5); //60us dq=1; //釋放總線 dat>>=1; } }/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20(){ uchari,value; for(i=0;i<8;i++) { dq=0; //把總線拿低讀時間隙開始 value>>=1; //讀數(shù)據(jù)是低位開始 dq=1; //釋放總線 if(dq==1) //開始讀寫數(shù)據(jù) value|=0x80; delay_uint(5); //60us 讀一個時間隙最少要保持60us的時間 } returnvalue; //返回數(shù)據(jù)}/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp(){ uintvalue; ucharlow; //在讀取溫度的時候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序 init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動一次溫度轉(zhuǎn)換命令 delay_uint(50); //500us init_18b20(); //初始化18b20 write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 EA=0; low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉(zhuǎn)換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)}/*************定時器0初始化程序***************/voidtime_init() { EA=1; //開總中斷 TMOD=0X01; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時}/****************獨立按鍵處理函數(shù)************************/voidkey(){ staticucharkey_new=0,key_old=0,key_value=0; if(key_new==0) { //按鍵松開的時候做松手檢測 if((P2&0x0f)==0x0f) key_value++; else key_value=0; if(key_value>=10) { write_eepom(); key_value=0; key_new=1; flag_lj_en=0; //關(guān)閉連加使能 flag_lj_3_en=0; //關(guān)閉3秒后使能 flag_value=0; //清零 } } else { if((P2&0x0f)!=0x0f) key_value++;//按鍵按下的時候 else key_value=0; if(key_value>=7) { key_value=0; key_new=0; flag_lj_en=1; //連加使能 zd_break_en=1;//自動退出設(shè)置界使能 zd_break_value=0;//自動退出設(shè)置界變量清零 } } key_can=20; if(key_500ms==1) { key_500ms=0; zd_break_en=1;//自動退出設(shè)置界使能 zd_break_value=0;//自動退出設(shè)置界變量清零 key_new=0; key_old=1; } if((key_new==0)&&(key_old==1)) { switch(P2&0x0f) { case0x0e:key_can=4;break; //得到k1鍵值 case0x0d:key_can=3;break; //得到k2鍵值 case0x0b:key_can=2;break; //得到k3鍵值 case0x07:key_can=1;break; //得到k4鍵值 } } key_old=key_new; }/****************按鍵處理數(shù)碼管顯示函數(shù)***************/voidkey_with(){ if(key_can==4) { menu_1++; if(menu_1>=3) { menu_1=0; } if(menu_1==0) { dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0x7f;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 smg_i=3; } if(menu_1==1) { dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取low十位顯示 dis_smg[3]=0x89; smg_i=4; } if(menu_1==2) { dis_smg[0]=smg_du[t_low%10]; //取low小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0xc7; smg_i=4; } } if(menu_1==1) //設(shè)置高溫報警 { if(key_can==3) { if(flag_lj_3_en==0) t_high++; //按鍵按下未松開自動加三次 else t_high+=10; //按鍵按下未松開自動加三次之后每次自動加10 if(t_high>990) t_high=990; dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x89; //H } if(key_can==1) { if(flag_lj_3_en==0) t_high--; //按鍵按下未松開自動加三次 else t_high-=10; //按鍵按下未松開自動減三次之后每次自動減10 if(t_high<=t_low) t_high=t_low+1; dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x89; //H }// write_eepom(); } if(menu_1==2) //設(shè)置低溫報警 { if(key_can==3) { if(flag_lj_3_en==0) t_low++; else t_low+=10; if(t_low>=t_high) t_low=t_high-1; dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0x7f;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論