基于51單片機溫度報警器的設(shè)計_第1頁
基于51單片機溫度報警器的設(shè)計_第2頁
基于51單片機溫度報警器的設(shè)計_第3頁
基于51單片機溫度報警器的設(shè)計_第4頁
基于51單片機溫度報警器的設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE3目錄摘要 2第一章緒論 41.1系統(tǒng)背景 41.2溫度控制系統(tǒng)設(shè)計的意義 51.3溫度控制系統(tǒng)完成的功能 5第二章系統(tǒng)方案設(shè)計 62.1方案一 62.2方案二 62.3方案論證 8第三章硬件電路設(shè)計 83.1系統(tǒng)總體設(shè)計 83.2各部分硬件電路設(shè)計 93.2.1時鐘電路設(shè)計 93.2.2系統(tǒng)復(fù)位電路 103.2.3報警與控制電路設(shè)計 113.2.4LED顯示電路設(shè)計 123.2.4溫度檢測電路設(shè)計 143.2.5按鍵電路設(shè)計 17第四章軟件設(shè)計 184.1主程序方案 184.2各個模塊子程序設(shè)計 204.2.1溫度采集程序 204.2.2數(shù)碼管顯示模塊 254.2.3溫度處理程序 26第五章系統(tǒng)調(diào)試 275.1測試環(huán)境及工具 275.2測試方法 275.3測試結(jié)果分析 27結(jié)論 28致謝 28參考文獻(xiàn) 29附錄一:系統(tǒng)原理圖 30附錄二:程序代碼 31摘要隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,在生產(chǎn)中溫度的準(zhǔn)確測量是一個比較困難的事情從最初的酒精、水銀溫度計到現(xiàn)在的數(shù)字化、集成化的溫度檢測系統(tǒng)。可見傳感器的發(fā)展是飛快的。它快速的發(fā)展必將帶來新一輪的工業(yè)化的革命和社會發(fā)展的飛躍。本文從硬軟件兩個方面介紹了基于AT89S52單片機溫度自動檢測系統(tǒng)的設(shè)計。系統(tǒng)硬件由控制電路、溫度采集電路、鍵盤和LED顯示電路組成。軟件設(shè)計從設(shè)計思路、軟件系統(tǒng)框圖出發(fā),先介紹整體的思路后,再逐一分析各模塊程序算法的實現(xiàn),最終編寫出滿足任務(wù)需求的程序。最終通過DS18B20采集溫度并顯示出來,由此對周圍環(huán)境的溫度進(jìn)行有效檢測與報警。基本上滿足了溫度檢測與報警的要求,具有超調(diào)量小,采樣值與設(shè)定值基本一致,操作簡單等優(yōu)點。本設(shè)計創(chuàng)新點在于采用數(shù)字式溫度傳感器DS18B20作為感溫元件,占用單片機引腳少,因而可以利用空余引腳通過軟件模擬和溫度顯示。關(guān)鍵詞:溫度檢測AT89S52LED顯示器DS18B20溫度傳感器PAGE27第一章緒論1.1系統(tǒng)背景測量控制的作用是從生產(chǎn)現(xiàn)場中獲取各種參數(shù),運用科學(xué)計算的方法,綜合各種先進(jìn)技術(shù),使每個生產(chǎn)環(huán)節(jié)都能夠得到有效的控制,不但保證了生產(chǎn)的規(guī)范化、提高產(chǎn)品質(zhì)量、降低成本,還確保了生產(chǎn)安全。所以,測量控制技術(shù)已經(jīng)被廣泛應(yīng)用于煉油、化工、冶金、電力、電子、輕工和紡織等行業(yè)。溫度采集控制系統(tǒng)是在嵌入式系統(tǒng)設(shè)計的基礎(chǔ)上發(fā)展起來的。嵌入式系統(tǒng)雖然起源于微型計算機時代,但是微型計算機的體積、價位、可靠性,都無法滿足廣大對象對嵌入式系統(tǒng)的要求,因此,嵌入式系統(tǒng)必須走獨立發(fā)展道路。這條道路就是芯片化道路。將計算機做在一個芯片上,從而開創(chuàng)了嵌入式系統(tǒng)獨立發(fā)展的單片機時代。單片機以其集成度高、運算速度快、體積小、運行可靠、價格低廉等優(yōu)勢,在過程控制、數(shù)據(jù)采集、機電一體化、智能化儀表、家用電器以及網(wǎng)絡(luò)技術(shù)等方面得到了廣泛的應(yīng)用,特別是單片機嵌入式技術(shù)的開發(fā)與應(yīng)用,標(biāo)志著計算機發(fā)展史上又一個新的里程碑。作為計算機兩大發(fā)展方向之一的單片機,以面向?qū)ο蟮膶崟r控制為己任,嵌入到如家用電器、汽車、機器人、儀器儀表等設(shè)備中,使其智能化。目前國內(nèi)外各大電氣公司,大的半導(dǎo)體廠商正在不斷的開發(fā)、使用單片機,使其無論在控制能力,減小體積,降低成本,還是開發(fā)環(huán)境的改善等方面,都得到空前迅速的發(fā)展。溫度檢測控制系統(tǒng)在工業(yè)生產(chǎn)、科學(xué)研究和人們的生活領(lǐng)域中,得到了廣泛應(yīng)用。在工業(yè)生產(chǎn)過程中,很多時候都需要對溫度進(jìn)行嚴(yán)格的監(jiān)控,以使得生產(chǎn)能夠順利的進(jìn)行,產(chǎn)品的質(zhì)量才能夠得到充分的保證。使用自動溫度控制系統(tǒng)可以對生產(chǎn)環(huán)境的溫度進(jìn)行自動控制,保證生產(chǎn)的自動化、智能化能夠順利、安全進(jìn)行,從而提高企業(yè)的生產(chǎn)效率。溫度檢測系統(tǒng)應(yīng)用十分廣闊。1.2溫度控制系統(tǒng)設(shè)計的意義隨著社會的發(fā)展,科技的進(jìn)步,以及測溫儀器在各個領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度控制系統(tǒng)發(fā)展的主流方向。溫度測試控制系統(tǒng),控制對象是溫度。溫度控制在日常生活及工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛,比如溫室、水池、發(fā)酵缸、電源等場所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實在很多場所溫度都需要監(jiān)控以防止發(fā)生意外。針對此問題,本系統(tǒng)設(shè)計的目的是實現(xiàn)一種可連續(xù)高精度調(diào)溫的溫度控制系統(tǒng),它應(yīng)用廣泛,功能強大,小巧美觀,便于攜帶,是一款既實用又廉價的控制系統(tǒng)。特別是近年來,溫度控制系統(tǒng)已應(yīng)用到人們生活的各個方面,但溫度控制一直是一個未開發(fā)的領(lǐng)域,卻又是與人們息息相關(guān)的一個實際問題。1.3溫度控制系統(tǒng)完成的功能本器件以AT89S52單片機系統(tǒng)進(jìn)行溫度采集與控制溫度信號由模擬溫度傳感器DS18B20采集輸入AT89S52,主控器能對各溫度檢測器通過LED進(jìn)行顯示。本機實現(xiàn)的功能:1.當(dāng)溫度低于設(shè)定下限溫度時,低溫發(fā)光二極管閃爍,蜂鳴器報警;2.當(dāng)溫度上升到下限溫度以上時,高溫發(fā)光二極管閃爍,蜂鳴器報警;3.數(shù)碼管即時顯示溫度。第二章系統(tǒng)方案設(shè)計2.1方案一采用普通電阻式溫度傳感器,放大器,A/D轉(zhuǎn)換器作為測量溫度的電路。采用兩種不同材質(zhì)的導(dǎo)體,如在某點互相連接在一起,對這個連接點加熱,在它們不加熱的部位就會出現(xiàn)電位差。這個電位差的數(shù)值與不加熱部位測量點的溫度有關(guān),和這兩種導(dǎo)體的材質(zhì)有關(guān)。這種現(xiàn)象可以在很寬的溫度范圍內(nèi)出現(xiàn),如果精確測量這個電位差,再測出不加熱部位的環(huán)境溫度,就可以準(zhǔn)確知道加熱點的溫度。由于它必須有兩種不同材質(zhì)的導(dǎo)體,所以稱之為“熱電偶”。不同材質(zhì)做出的熱電偶使用于不同的溫度范圍,它們的靈敏度也各不相同。熱電偶的靈敏度是指加熱點溫度變化1℃時,輸出電位差的變化量。對于大多數(shù)金屬材料支撐的熱電偶而言,這個數(shù)值大約在5~40微伏/℃之間。熱電偶傳感器有自己的優(yōu)點和缺陷,它靈敏度比較低,容易受到環(huán)境干擾信號的影響,也容易受到前置放大器溫度漂移的影響,因此不適合測量微小的溫度變化。由于熱電偶溫度傳感器的靈敏度與材料的粗細(xì)無關(guān),用非常細(xì)的材料也能夠做成溫度傳感器。也由于制作熱電偶的金屬材料具有很好的延展性,這種細(xì)微的測溫元件有極高的響應(yīng)速度,可以測量快速變化的過程。2.2方案二采用數(shù)字可編程溫度傳感器作為溫度檢測元件。數(shù)字可編程溫度傳感器可以直接讀出被測溫度值。不需要將溫度傳感器的輸出信號接到A/D轉(zhuǎn)換器上,減少了系統(tǒng)的硬件電路的成本和整個系統(tǒng)的體積。美國Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總線”接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。“一線總線”獨特而且經(jīng)濟(jì)的特點,使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念?,F(xiàn)在,新一代的DS18B20體積更小、更經(jīng)濟(jì)、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點。同DS1820一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C。現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小它還有很多特性:適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,寄生電源方式下可由數(shù)據(jù)線供;獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊;DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫;DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃;可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫;在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快;測量結(jié)果直接輸出數(shù)字溫度信號,以“一線總線”串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力;負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。2.3方案論證方案一硬件電路復(fù)雜,需要設(shè)計A/D轉(zhuǎn)換電路,以及與其相關(guān)的編程,總體設(shè)計起來較困難,軟件、硬件調(diào)試復(fù)雜,硬件成本較高。而且器傳感器有以下缺點:它靈敏度比較低,容易受到環(huán)境干擾信號的影響,也容易受到前置放大器溫度漂移的影響。所以總體來說,方案一在硬件、軟件上的成本都比較高,而且易受外部環(huán)境的影響,系統(tǒng)工作不穩(wěn)定。方案二由于采用的是具有一總線特點的溫度傳感器,所以電路連接簡單;而且該傳感器擁有強大的通信協(xié)議,同過幾個簡單的操作就可以實現(xiàn)傳感器與單片機的交互,包括復(fù)位傳感器、對傳感器讀寫數(shù)據(jù)、對傳感器寫命令。軟件、硬件易于調(diào)試,制作成本較低。也使得系統(tǒng)所測結(jié)果精度大大提高。經(jīng)過對這兩種方案的比較,本設(shè)計決定采用方案二。第三章硬件電路設(shè)計3.1系統(tǒng)總體設(shè)計本次設(shè)計采用采樣值和鍵盤設(shè)定值進(jìn)行比較運算的方法來簡單精確地控制溫度。它的整體思想是先通過鍵盤輸入設(shè)定溫度的范圍,保存在AT89S52的指定單元中,再利用溫度傳感器DS18B20進(jìn)行信號的采集,送入單片機中,保存在采樣值單元。然后把采樣值與設(shè)定值進(jìn)行比較運算,得出控制量,從而調(diào)節(jié)繼電器觸發(fā)端的通斷,來實現(xiàn)將溫度控制在一定的范圍內(nèi)。單片機控制系統(tǒng)是一個完整的智能化的集數(shù)據(jù)采集、顯示、處理、控制于一體的系統(tǒng)。由傳感器、LED顯示單片機及執(zhí)行機構(gòu)控制部分等組成。系統(tǒng)結(jié)構(gòu)框圖如圖3.1所示。DS18B20DS18B20LED顯示指示燈單片機加熱繼電器電風(fēng)扇繼電器按鍵圖3.1系統(tǒng)硬件結(jié)構(gòu)框圖3.2各部分硬件電路設(shè)計3.2.1、時鐘電路設(shè)計時鐘電路是用來產(chǎn)生AT89S52單片機工作時所必須的時鐘信號,AT89C52本身就是一個復(fù)雜的同步時序電路,為保證工作方式的實現(xiàn),AT89C52在唯一的時鐘信號的控制下嚴(yán)格的按時序執(zhí)行指令進(jìn)行工作,時鐘的頻率影響單片機的速度和穩(wěn)定性。通常時鐘由于兩種形式:內(nèi)部時鐘和外部時鐘。我們系統(tǒng)采用內(nèi)部時鐘方式來為系統(tǒng)提供時鐘信號。AT89C52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反向放大器,該放大器的輸入輸出引腳為XTAL1和XTAL2,它們跨接在晶體振蕩器和用于微調(diào)的電容,便構(gòu)成了一個自激勵振蕩器。電路中的C1、C2的選擇在30PF左右,但電容太小會影響振蕩的頻率、穩(wěn)定性和快速性。晶振頻率為在1.2MHZ~12MHZ之間,頻率越高單片機的速度就越快,但對存儲器速度要求就高。為了提高穩(wěn)定性我們采用溫度穩(wěn)定性好的NPO電容,采用的晶振頻率為12MHZ。本次系統(tǒng)的時鐘電路設(shè)計如圖3.2所示。圖3.2時鐘電路圖3.2.2系統(tǒng)復(fù)位電路在圖3.3中復(fù)位開關(guān)K被按下并松開,使端獲得低電平,RST端輸出復(fù)位信號,單片機復(fù)位。或由于(VCC加入并超過復(fù)位門限電壓)引起系統(tǒng)正常復(fù)位。圖3.3復(fù)位電路圖3.2.3報警與控制電路設(shè)計在微型計算機控制系統(tǒng)中,為了安全生產(chǎn),對于一些重要的參數(shù)或系統(tǒng)部位,都設(shè)有緊急狀態(tài)報警系統(tǒng),以便提醒操作人員注意,或采取緊急措施。其方法就是把計算機采集的數(shù)據(jù)或記過計算機進(jìn)行數(shù)據(jù)處理、數(shù)字濾波,標(biāo)度變換之后,與該參數(shù)上下限給定值進(jìn)行比較,如果高于上限值(或低于下限值)則進(jìn)行報警,否則就作為采樣的正常值,進(jìn)行顯示和控制。同樣室內(nèi)的溫度低高設(shè)定的溫度范圍內(nèi)時當(dāng)P1.4輸出高電平“1”時,晶體管導(dǎo)通,壓電蜂鳴器兩端獲得約+5V電壓而鳴叫,出報警聲音;單片機的P1.1輸出低電平,此時紅色指示燈亮起并接通風(fēng)降溫設(shè)備,直到低于設(shè)定的最低溫度時,P1.4輸出低電平時,三極管截止,蜂鳴器停止發(fā)聲,P1.1出高電平片機的P1.0為1,此時綠色指示燈滅并停止加溫設(shè)備;外的警電路與控制電路如圖3.4所示圖3.4報警與控制電路與單片機的連接3.2.4LED顯示電路設(shè)計LED數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管,通過對其不同的管腳輸入相對的電流,會使其發(fā)亮,從而顯示出數(shù)字??梢燥@示:時間、日期、溫度等可以用數(shù)字代替的參數(shù)。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽極數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽極數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,通過由各自獨立的I/O線控制,當(dāng)單片機的P0口輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對P2.0-P2.3位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在本設(shè)計中采用了三位七段數(shù)碼管,用動態(tài)驅(qū)動來顯示溫度的值,如圖3.5所示。圖3.5顯示電路圖3.2.5溫度檢測電路設(shè)計本次設(shè)計所采用的溫度傳感器為Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20,它是世界上第一片支持“一線總線”接口的溫度傳感器?!耙痪€器件”體積更小、適用電壓更寬、更經(jīng)濟(jì)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。DS18B20可以程序設(shè)定9-12位的分辨率,精度為±0.5℃??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20與AT89S52單片機接口電路的設(shè)計DSl8B20數(shù)字溫度計提供9位(二進(jìn)制)溫度讀數(shù),指示器件的溫度信息經(jīng)過單線接口送入DSl8B20或從DSl8B20送出,因此從主機CPU到DSl8B20僅需一條線,當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進(jìn)制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。當(dāng)符號位S=0時,表示測得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號位S=1時,表示測得的溫度值為負(fù)值,要先將補碼變成原碼,再計算十進(jìn)制數(shù)值。表2是一部分溫度值對應(yīng)的二進(jìn)制溫度數(shù)據(jù)[6]。圖3.6DS18B20與AT89S52單片機的連接DS18B20支持“一線總線”接口,測量溫度范圍為-55°C--+125°C,在-10--+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費電子產(chǎn)品等。1.DS18B20產(chǎn)品的特點(1)只要求一個端口即可實現(xiàn)通信。(2)在DS18B20中的每個器件上都有獨一無二的序列號。(3)實際應(yīng)用中不需要外部任何元器件即可實現(xiàn)測溫。(4)測量溫度范圍在-55°C-+125°C之間。(5)數(shù)字溫度計的分辨率用戶可以從9位到12位選擇。(6)內(nèi)部有溫度上、下限設(shè)置。2.DS18B20的引腳介紹TO-92封裝的DS18B20引腳功能描述見表1。表1DS18B20詳細(xì)引腳功能描述序號名稱引腳功能描述1GND地信號2DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時,此引腳必須接地。因為一線通信接口,必須在先完成ROM設(shè)定,否則記憶和控制功能將無法使用。主要首先DS18B20提供以下功能命令之一:讀ROM,ROM匹配,搜索ROM,跳過ROM,報警檢查。若指令成功地使DS18B20完成溫度測量,數(shù)據(jù)存儲在DS18B20的存儲器。一個控制功能指揮指示DS18B20的演出測溫。測量結(jié)果將被放置在DS18B20內(nèi)存中,并可以讓閱讀發(fā)出記憶功能的指揮,閱讀內(nèi)容的片上存儲器。溫度報警觸發(fā)器TH和TL都有一字節(jié)EEPROM的數(shù)據(jù)。如果DS18B20不使用報警檢查指令,這些寄存器可作為一般的用戶記憶用途。在片上還載有配置字節(jié)以理想的解決溫度數(shù)字轉(zhuǎn)換。寫TH,TL指令以及配置字節(jié)利用一個記憶功能的指令完成。所有的數(shù)據(jù)的讀、寫都是從最低位開始。3.2.6按鍵電路設(shè)計鍵盤共有三個鍵,判斷K3~K5鍵是否按下,可采用軟件查詢和中斷的方法,當(dāng)某個鍵按下時,低電平有效。3個鍵K3~K5的功能定義如表所示。K3~K5鍵的定義按鍵鍵名功能K3功能轉(zhuǎn)換鍵此鍵按下,顯示溫度設(shè)定值,按鍵松開,顯示當(dāng)前溫度K4加1鍵設(shè)定溫度值加1K5減1鍵設(shè)置溫度值減1圖3.7按鍵電路第四章軟件設(shè)計4.1主程序方案首先要根據(jù)系統(tǒng)的總體功能和鍵盤設(shè)置選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調(diào)度關(guān)系。本部分詳細(xì)介紹了基于AT89S52單片機的多路溫度采集控制系統(tǒng)的軟件設(shè)計。根據(jù)系統(tǒng)功能,可以將系統(tǒng)設(shè)計分為若干個子程序進(jìn)行設(shè)計,如溫度采集子程序,數(shù)據(jù)處理子程序、顯示子程序、執(zhí)行子程序。采用KieluVision3集成編譯環(huán)境和匯編語言來進(jìn)行系統(tǒng)軟件的設(shè)計。本章從設(shè)計思路、軟件系統(tǒng)框圖出發(fā),先介紹整體的思路后,再逐一分析各模塊程序算法的實現(xiàn),最終編寫出滿足任務(wù)需求的程序。并對溫度進(jìn)行實時顯示。采用C語言編寫代碼,鑒于篇幅限制及DS18B20的應(yīng)用已經(jīng)規(guī)范和成熟,本文僅就主程序流程圖和顯示子程序流程圖及其代碼進(jìn)行說明。通過定時器T0P3.4口的定時來實現(xiàn),在此不再贅述。主程序流程圖主程序通過調(diào)用溫度采集子程序完成溫度數(shù)據(jù)采集,然后調(diào)用溫度轉(zhuǎn)換子程序轉(zhuǎn)換讀取溫度數(shù)據(jù),調(diào)用顯示子程序進(jìn)行溫度顯示和判斷溫度數(shù)據(jù)。主程序(見附錄2)調(diào)用四個子程序,分別是溫度采集程序、數(shù)碼管顯示程序、溫度處理程序和數(shù)據(jù)存儲程序。溫度采集程序:對溫度芯片送過來的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和顯示。數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。溫度處理程序:對采集到的溫度和設(shè)置的上、下限進(jìn)行比較,做出判斷,向繼電器輸出。數(shù)據(jù)存儲程序:對鍵盤的設(shè)置的數(shù)據(jù)進(jìn)行存儲。顯示當(dāng)前溫度判斷當(dāng)前溫度值超過設(shè)定溫度上限紅燈亮設(shè)定溫度上、下限顯示當(dāng)前溫度判斷當(dāng)前溫度值超過設(shè)定溫度上限紅燈亮設(shè)定溫度上、下限是否低于設(shè)定溫度下限是紅燈亮否圖4.1系統(tǒng)流程圖4.2各個模塊子程序設(shè)計4.2.1溫度采集程序溫度采集子程序流程圖如下:圖4.2溫度采集子程序流程圖程序代碼如下:voiddsreset(void) //DS18b20復(fù)位,初始化函數(shù){uinti;ds=0;i=103; //延時最短480uswhile(i>0)i--;ds=1; //等待16-60us,收到低電平一個約60-240us則復(fù)位成功i=4;while(i>0)i--;}bittempreadbit(void) //讀1位數(shù)據(jù)函數(shù){uinti;bitdat;ds=0;i++;ds=1;i++;i++; //i++起到延時作用dat=ds;i=8;while(i>0)i--;return(dat);}uchartempread(void) //讀1字節(jié)的數(shù)據(jù)函數(shù){uinti,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit();dat=(j<<7)|(dat>>1);//讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在dat里}return(dat);}voidtempwritebyte(uchardat)//向DS18B20寫一個字節(jié)的數(shù)據(jù)函數(shù){uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //寫1 { ds=0; i++;i++; ds=1; i=8; while(i>0) i--; }else //寫0{ ds=0; i=8; while(i>0)i--; ds=1; i++;i++; }}}voidtempchange(void) //DS18B20開始獲取溫度并轉(zhuǎn)換{dsreset();delay(1);tempwritebyte(0xcc); //寫跳過讀ROM指令tempwritebyte(0x44); //寫溫度轉(zhuǎn)換指令}uintget_temp() //讀取寄存器中存儲的溫度數(shù)據(jù){uchara,b;dsreset();delay(1);tempwritebyte(0xcc); //寫跳過讀ROM指令tempwritebyte(0xbe); //寫溫度轉(zhuǎn)換指令a=tempread(); //讀低8位b=tempread(); //讀高8位temp=256*b+a;f_temp=temp*0.0625; //溫度在寄存器中為12位,分辨率為0.0625temp=f_temp*10+0.5; //乘以10表示小數(shù)點后面只取一位returntemp; //temp是整型}4.2.2數(shù)碼管顯示模塊本系統(tǒng)采用共陽極數(shù)碼管,用模擬串口的動態(tài)顯示數(shù)據(jù)。其流程圖如圖4.3所示: 圖4.3數(shù)碼管顯示流程圖4.2.3溫度處理程序系統(tǒng)通過DS18B20采集到溫度和設(shè)置的上、下限進(jìn)行比較得出結(jié)果,進(jìn)行報警。voidhdidi(){beep=0;led1=0;delay(500);beep=1;led1=1;delay(500);}voidldidi()//斷續(xù)報警閃爍{beep=0;led2=0;delay(50);beep=1;led2=1;delay(50);}第五章系統(tǒng)調(diào)試5.1測試環(huán)境及工具測試溫度:0-100攝氏度。(模擬不同溫度值環(huán)境)測試儀器及軟件:數(shù)字萬用表,溫度計0-100攝氏度。5.2測試方法使系統(tǒng)運行,觀察系統(tǒng)硬件檢測是否正常(包括單片機控制系統(tǒng),鍵盤電路,顯示電路,溫度測試電路等)。系統(tǒng)自帶測試表格數(shù)據(jù),觀察顯示數(shù)據(jù)是否相符合即可。采用溫度傳感器和溫度計同時測量水溫變化情況,目測顯示電路是否正常。并記錄溫度值,與實際溫度值比較,得出系統(tǒng)的溫度指標(biāo)。5.3測試結(jié)果分析自檢正常,溫度顯示正常。因為芯片是塑料封裝,所以對溫度的感應(yīng)靈敏度不是相當(dāng)高,需要一個很短的時間才能達(dá)到穩(wěn)定。結(jié)論經(jīng)過設(shè)計和實踐,本設(shè)計已經(jīng)完成了一個比較完整的溫度檢測預(yù)與報警系統(tǒng)。它可以通過鍵盤輸入溫度上限、下限值,然后計算其上限和下限的中間值作為最適溫度值。不斷的采集溫度值,顯示溫度值,如果發(fā)現(xiàn)采集的溫度值高于上限值就通過相應(yīng)的提示燈亮。如果采集的溫度值低于下限值,那么也有相應(yīng)的燈提示操作人員。如果并沒有超過上下限則不會報警。致此本人設(shè)計基本完成了預(yù)期的目標(biāo),系統(tǒng)在溫度采集、溫度處理和鍵盤處理方面做的比較好,而在數(shù)據(jù)的存儲和數(shù)碼管的顯示方面不夠理想。主要存在以下幾個方面:程序的代碼不夠精練,浪費AT89S52內(nèi)的FLASHROM;未對以前的溫度數(shù)值進(jìn)行存儲,使以后不能利用這些數(shù)據(jù);對數(shù)碼管的控制考慮不周,以致出現(xiàn)閃爍現(xiàn)象;致謝畢業(yè)設(shè)計就要結(jié)束了,在這一段時間里,我感到自己的收獲是非常大的,使我在專業(yè)技能、動手能力多方面都有了很大的提高。在整個設(shè)計過程中,受到了我們老師和同學(xué)的熱切關(guān)注和耐心輔導(dǎo),特別是對我進(jìn)行了系統(tǒng)的講解和指導(dǎo),對設(shè)計提出了很多建設(shè)性的意見及建議,對我的設(shè)計起到了指導(dǎo)性和決定性的作用,還教給了我們遇到問題,如何去分析問題、解決問題的方法。使我受益匪淺。從接受課題到現(xiàn)在完成畢業(yè)設(shè)計論文,尤其是在課題設(shè)計的前期準(zhǔn)備工作和設(shè)計的過程中,導(dǎo)師提出了許許多多寶貴的設(shè)計意見,在最后的論證修改過程中李老師還在百忙之中,抽出時間對我的論文提供了必要的指導(dǎo)和幫助。這使得我能夠順利的完成畢業(yè)設(shè)計工作。在這里我向他表示真誠的感謝!同時得到了同組同學(xué)的支持與幫助,使我深刻的體會到了良師益友給我?guī)淼膸椭诖吮硎旧钌畹母兄x!感謝母校的辛勤培育之恩!感謝它給我提供的良好學(xué)習(xí)及實踐環(huán)境,使我學(xué)到了許多新的知識,掌握了一定的操作技能。感謝和我在一起進(jìn)行課題研究的同學(xué)們,和他們在一起討論、研究使我受益非淺。最后,我非常慶幸在三年的學(xué)習(xí)、生活中認(rèn)識了很多可敬的老師和可親的同學(xué),并感激師友的教誨和幫助!參考文獻(xiàn)【1】胡錦:《數(shù)字電路與邏輯設(shè)計》第二版.高等教育出版社?!?】劉樹林:《低頻電子線路》第二版.電子工業(yè)出版社【3】沈農(nóng):《傳感器及應(yīng)用技術(shù)》.化學(xué)工業(yè)出版社?!?】茍鴻婭:《電工技術(shù)基礎(chǔ)》.西南交通大學(xué)出版社?!?】廖芳:《電子產(chǎn)品生產(chǎn)工藝與管理》.電子工業(yè)出版社【6】黃智偉:《全國大學(xué)生設(shè)計競賽訓(xùn)練教程》.電子工業(yè)出版社。【7】白霞、孫艷秋:《微機原理與接口技術(shù)》.清華大學(xué)出版社。【8】張偉:《Protel99SE實用教程》.人民郵電出版社?!?】譚潔強:《C程序設(shè)計》第三版.清華大學(xué)出版社?!?0】劉守義、楊宏麗、王靜霞:《單片機應(yīng)用技術(shù)》.西安電子科技大學(xué)出版社?!?1】Theresearchanddesignoftemperaturemeasuringinstrument<<wuhanuniversity>>2009年第5期【12】DevelopmentoftheISOstandardforclinicalthermometers<<universityofLjubljanna>>2007年【13】<<ECTROICTHERMOMETER>>V.AklimenkoN.P.MedvedevandA.F.Todurov1983Plenumpublishingcorporation【14】LCDLiquidCrystalDisplayControlBasedonSPMC75F2413ASCM,InstrumentationTechnology2010年03期。,附錄一:系統(tǒng)原理圖附錄二:程序代碼#include<reg52.h> //52系列頭文件#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintsbitds=P3^4;sbitdula=P2^6;sbitbeep=P1^4; //定義蜂鳴器uinttemp,t,w; //定義整型的溫度數(shù)據(jù)ucharflag;floatf_temp; //定義浮點型的溫度數(shù)據(jù)uintlow; //定義溫度下限值是溫度乘以10后的結(jié)果uinthigh; //定義溫度的上限值sbitled1=P1^0; //控制發(fā)光二極管sbitled2=P1^1; //控制發(fā)光二極管sbits1=P3^5;sbits2=P3^6;sbits3=P3^7;ucharflag1,flag2,flag3,flag4,s1num,qian,bai,shi,ge;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6}; //共陽數(shù)碼管段碼表ucharcodetable1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//帶小數(shù)點的編碼voiddelay(ucharz) //延時函數(shù){uchara,b;for(a=z;a>0;a--)for(b=100;b>0;b--);}voidinit()//初始化{EA=1;ET1=1;TR1=1;TMOD=0x10;TH1=(65536-4000)/256;TL1=(65536-4000)%256;flag=0;low=200;high=300;}voidhdidi()短報警{beep=0;led1=0;delay(500);beep=1;led1=1;delay(500);}voidldidi()//長報警{beep=0;led2=0;delay(50);beep=1;led2=1;delay(50);}voiddsreset(void) //DS18b20復(fù)位,初始化函數(shù){uinti;ds=0;i=103; //延時最短480uswhile(i>0)i--;ds=1; //等待16-60us,收到低電平一個約60-240us則復(fù)位成功i=4;while(i>0)i--;}bittempreadbit(void) //讀1位數(shù)據(jù)函數(shù){uinti;bitdat;ds=0;i++;ds=1;i++;i++; //i++起到延時作用dat=ds;i=8;while(i>0)i--;return(dat);}uchartempread(void) //讀1字節(jié)的數(shù)據(jù)函數(shù){uinti,j,dat;dat=0;for(i=1;i<=8;i++){j=tempreadbit();dat=(j<<7)|(dat>>1);//讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個字節(jié)在dat里}return(dat);}voidtempwritebyte(uchardat)//向DS18B20寫一個字節(jié)的數(shù)據(jù)函數(shù){uinti;ucharj;bittestb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //寫1 { ds=0; i++;i++; ds=1; i=8; while(i>0) i--; }else //寫0{ ds=0; i=8; while(i>0)i--; ds=1; i++;i++; }}}voidtempchange(void) //DS18B20開始獲取溫度并轉(zhuǎn)換{dsreset();delay(1);tempwritebyte(0xcc); //寫跳過讀ROM指令tempwritebyte(0x44); //寫溫度轉(zhuǎn)換指令}uintget_temp() //讀取寄存器中存儲的溫度數(shù)據(jù){uchara,b;dsreset();delay(1);tempwritebyte(0xcc); //寫跳過讀ROM指令tempwritebyte(0xbe); //寫溫度轉(zhuǎn)換指令a=tempread(); //讀低8位b=tempread(); //讀高8位temp=256*b+a;f_temp=temp*0.0625; //溫度在寄存器中為12位,分辨率為0.0625temp=f_temp*10+0.5; //乘以10表示小數(shù)點后面只取一位returntemp; //temp是整型}voidkeyscan(){ if(s1==0) {P2=0xff; delay(5); if(s1==0) { while(!s1); s1num++; if(s1num==1) { flag=1; } if(s1nu

溫馨提示

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

評論

0/150

提交評論