DSB溫度計課程設(shè)計完整版_第1頁
DSB溫度計課程設(shè)計完整版_第2頁
DSB溫度計課程設(shè)計完整版_第3頁
DSB溫度計課程設(shè)計完整版_第4頁
DSB溫度計課程設(shè)計完整版_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄1前言11.1設(shè)計背景11.2設(shè)計目標11.3實施計劃12總體方案設(shè)計22.1方案比較22.1.1方案一基于熱敏電阻的溫度計設(shè)計22.1.2方案二基于SHT71的數(shù)字溫度計設(shè)計22.1.3方案三基于DS18B20的數(shù)字溫度計設(shè)計32.2方案論證32.3方案選擇43硬件設(shè)計53.1單元模塊設(shè)計53.1.1時鐘和復位電路53.1.2報警電路53.1.3數(shù)碼顯示電路63.1.4電源電路73.1.5按鍵電路73.1.6串口通信電路83.2核心器件介紹83.2.1單片機STC89C52介紹83.2.2DS18B20介紹94軟件設(shè)計114.1溫度采集模塊124.2溫度設(shè)定模塊144.3報警模塊155

2、系統(tǒng)整合調(diào)試165.1硬件調(diào)試165.2軟件調(diào)試166系統(tǒng)功能、指標參數(shù)186.1系統(tǒng)功能186.2系統(tǒng)指標參數(shù)測試186.3系統(tǒng)功能及指標參數(shù)分析197結(jié)論208總結(jié)與體會219參考文獻2210附錄一:基于DS18B20數(shù)字溫度計的設(shè)計原理圖2311附錄二:基于DS18B20數(shù)字溫度計的設(shè)計PCB圖2412附錄三:基于DS18B20數(shù)字溫度計的設(shè)計的實物圖2513附錄四:基于DS18B20數(shù)字溫度計的設(shè)計C語言程序261 前言自動控制領(lǐng)域中,溫度檢測與控制占有很重要的地位。溫度檢測在工農(nóng)業(yè)生產(chǎn)、科研和在人們的生活中得到廣泛的運用。目前,溫度傳感器正從模擬式向數(shù)字集成式方向飛速發(fā)出,單片機也是

3、人們追求的目標之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計就是一個典型的例子,人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好更方便的設(shè)施就需要從單片機技術(shù)入手,一切向著數(shù)字化、智能化方向發(fā)展。本文就是基于此目的介紹基于單片機和數(shù)字溫度傳感器的溫度計設(shè)計。1.1 設(shè)計背景隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實現(xiàn),能夠獨立工作的溫度檢測與顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)的溫度檢測以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,需要外加信號處理電路,而且可靠性相對較差,測溫準確度低,檢測系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度計相比,這次設(shè)計的是基于DS18B20的數(shù)字溫度計,它具

4、有讀數(shù)方便,測溫范圍廣,測溫精確,數(shù)字顯示,適用范圍寬等特點。1.2 設(shè)計目標在本設(shè)計中選用AT89C52型單片機作為主控制器件,采用DS18B20數(shù)字溫度傳感器作為測溫元件,通過8位共陽極LED數(shù)碼顯示管并行傳送數(shù)據(jù),實現(xiàn)溫度顯示。本設(shè)計的內(nèi)容主要分為三部分,一是系統(tǒng)硬件設(shè)計,包括溫度采集電路和顯示電路;二是對系統(tǒng)軟件部分的設(shè)計,應(yīng)用C語言實現(xiàn)溫度的采集與顯示;三是通過與設(shè)定溫度比較,不在此范圍內(nèi)時實現(xiàn)報警功能。通過DS18B20直接讀取被測溫度值,送入單片機進行數(shù)據(jù)處理,之后進行輸出顯示,最終完成了數(shù)字溫度計的總體設(shè)計。其系統(tǒng)構(gòu)成簡單,信號采集效果好,數(shù)據(jù)處理速度快,便于實際檢測使用。1.

5、3 實施計劃 首先查閱相關(guān)資料確定其方向?qū)φ麄€設(shè)計有整體的規(guī)劃、構(gòu)思。然后選擇三種方案,簡述其實現(xiàn)原理,分別對三種方案進行論證比較,確定一種方案。緊接著對選定方案進行單元模塊設(shè)計、軟件設(shè)計、系統(tǒng)總體調(diào)試、系統(tǒng)功能指標分析驗證。最后得出結(jié)論,完成報告。2 總體方案設(shè)計通過查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實際知識,我們主要提出了三種技術(shù)方案來實現(xiàn)系統(tǒng)功能。下面我首先對這三種方案的實現(xiàn)原理分別進行說明,并分析比較它們的特點,然后再選擇方案并闡述我選擇方案的原因。2.1 方案比較 我設(shè)計了三種方案:方案一基于熱敏電阻的溫度計設(shè)計;方案二為基于SHT71的數(shù)字溫度計設(shè)計;方案三是基于DS18B20的數(shù)

6、字溫度計設(shè)計。2.1.1 方案一基于熱敏電阻的溫度計設(shè)計方案一主要由溫度傳感器、A/D轉(zhuǎn)換電路、單片機控制電路、數(shù)碼顯示電路組成。采用合肥三晶電子有限公司生產(chǎn)的SJMFE-347-103F型熱敏電阻。采集的模擬溫度值輸入A/D轉(zhuǎn)換電路,A/D轉(zhuǎn)換采用LM331型U/f變換器來實現(xiàn)。U/f變換器把電壓信號轉(zhuǎn)換為頻率信號。由熱敏電阻的電阻溫度特性表可以求出每個溫度點所對應(yīng)的UIN,再由公式FOUT=256*UIN計算出每個溫度點所對應(yīng)的輸出頻率,進而由單片機處理顯示被測量的溫度值。溫度信號處理由于熱敏電阻是非線性的器件,所以溫度與頻率輸出成非線性,需要補償溫度。單片機利用查表法實現(xiàn)溫度補償。所謂查

7、表法是把事先計算或測量的數(shù)據(jù)按一定的順序排列成表格的形式,固化在單片機內(nèi)。只要測量出LM331的頻率值,就可以通過查表法準確的得出環(huán)境的溫度值。再交由單片機驅(qū)動數(shù)碼管顯示溫度。這樣就實現(xiàn)了溫度的采集與顯示。2.1.2 方案二基于SHT71的數(shù)字溫度計設(shè)計方案二主要由數(shù)字溫度傳感器、單片機控制電路、數(shù)碼顯示電路組成。SHT71將溫度傳感器、信號放大調(diào)理、A/D轉(zhuǎn)換、I2C總線接口全部集成于一個芯片上。SHT11先利用傳感器產(chǎn)生溫度信號;經(jīng)放大送至A/D 轉(zhuǎn)換器進行模數(shù)轉(zhuǎn)換、校準和糾錯;由2線接口將信號送至微控制器;再利用微控制器完成相對濕度的非線性補償和溫度補償。SHT71測量過程包括4 個部分

8、:啟動傳輸、發(fā)送測量命令、等待測量完成和讀取測量數(shù)據(jù)。在啟動傳輸時序之后, 微控制器可以向SHT71 發(fā)送命令,SHT71則通過在數(shù)據(jù)傳輸?shù)牡?個SCK時鐘周期下降沿之后,將DATA拉低來表示正確接收到命令,并第9個SCK時鐘周期的下降沿之后釋放DATA線(即恢復高電平),SHT71則通過拉低DATA表示測量結(jié)束,并且把測量結(jié)果存儲在內(nèi)部的存儲器內(nèi),然后自動進入空閑狀態(tài),等微控制器執(zhí)行完其他任務(wù)后再來讀取。測量數(shù)據(jù)讀取前,微控制器先重新啟動SCK,接著2字節(jié)的測量數(shù)據(jù)和1字節(jié)的CRC 校驗將由SHT71傳送給微控制器。2字節(jié)的測量數(shù)據(jù)是從高字節(jié)的高位開始傳送,并以CRC 校驗字節(jié)的確認為表示通

9、信結(jié)束。微控制器需要通過拉低DATA來確認接收的每個字節(jié),若不使用CRC校驗位則微控制器可以在接收完測量數(shù)據(jù)的最低位后保持DATA為高電平來終止通信。單片機只需將讀取傳輸?shù)臄?shù)據(jù)通過驅(qū)動數(shù)碼管顯示即可。2.1.3 方案三基于DS18B20的數(shù)字溫度計設(shè)計方案三主要也由數(shù)字溫度傳感器、單片機控制電路、數(shù)碼顯示電路組成。DS18B20 測量溫度采用了特有的溫度測量技術(shù)。它是通過計數(shù)時鐘周期來實現(xiàn)的。低溫度系數(shù)振蕩器輸出的時鐘信號通過由高溫度系數(shù)振蕩器產(chǎn)生的門周期而被計數(shù)。計數(shù)器被預置在與- 55 相對應(yīng)的一個基權(quán)值。如果計數(shù)器在高溫度系數(shù)振蕩周期結(jié)束前計數(shù)到零,表示測量的溫度值高于- 55,被預置在

10、- 55 的溫度寄存器的值就增加1,然后重復這個過程,直到高溫度系數(shù)振蕩周期結(jié)為止這時溫度寄存器中的值就是被測溫度值,這個值以16 位形式存放在便箋式存貯器中,此溫度值可由主機通過發(fā)存貯器讀命令而讀出,讀取時低位在前,高位在后。斜率累加器用于補償溫度振蕩器的拋物線特性。讀出的二進制數(shù)可以直接轉(zhuǎn)換為十進制由單片機驅(qū)動數(shù)碼管顯示輸出。2.2 方案論證 方案一:熱敏電阻溫度傳感器的特點是自身的電阻值隨溫度而變化。熱敏電阻是利用半導體材料制成的敏感組件,通常所有的熱敏電阻溫度傳感器都是具有負溫度系數(shù)的熱敏電阻,它的電阻率受溫度的影響很大,而且隨溫度的升高而減小。其優(yōu)點是靈敏度高,體積小,壽命長,工作穩(wěn)

11、定,易于實現(xiàn)遠距離測量;缺點是互換性差,非線性嚴重。它的測量范圍一般為-10+300,也可做到-200+10,甚至可用于+300+1200環(huán)境中作測溫用。熱敏電阻器溫度計的精度可以達到0.1,感溫時間可少至10s以下。 方案二:SHT7I是瑞士Sens on公司生產(chǎn)的具有二線串行接口的單片全校準數(shù)字式新型相對濕度和溫度傳感器,可用來測量相對濕度、溫度和露點等參數(shù),具有數(shù)字式輸出、免調(diào)試、免標定、免外圍電路及全互換的特點該傳感器將CMOS芯片技術(shù)與傳感器技術(shù)結(jié)合起來,發(fā)揮出強大的優(yōu)勢互補作用。由于SHT71是I2C總線結(jié)構(gòu)的串行數(shù)據(jù)傳送,它只需要DATA和SCK兩根線完成數(shù)據(jù)的傳送過程。因此,我

12、們在進行程序設(shè)計的時候,也得按著I2C協(xié)議來對SHT71芯片數(shù)據(jù)訪問。對于STC89C52單片機本身沒有I2C硬件資源,所以必須用軟件來模擬I2C協(xié)議過程。一般使用單片機通用I/ O 口線來虛擬I2C 總線,并利用P1. 0 來虛擬數(shù)據(jù)線DATA ,利用P1. 1 口線來虛擬時鐘線,并在DATA 端接入一只4. 7k 的上拉電阻,同時,在VDD及GND 端接入一只0. 1F 的去耦電容。溫度測量范圍:-40+123.8;溫度測量精度:±0.425;響應(yīng)時間:<4s;低功耗 (typ. 30µW)。SHT71是一種全新的基于智能傳感器設(shè)計理念的新型傳感器,該傳感器將溫度

13、傳感器、信號調(diào)理、數(shù)字變換、串行數(shù)字通信接口、數(shù)字校準全部集成到一個高集成度、體積極小的芯片當中,實現(xiàn)了溫度傳感器的數(shù)字式輸出、且免調(diào)試、免標定、免外圍電路。極大方便了溫度傳感器在測控領(lǐng)域的應(yīng)用,因而該傳感器在數(shù)字式溫濕度測控領(lǐng)域有著廣泛的應(yīng)用前景方案三:DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)位的數(shù)字值讀數(shù)方式。溫范圍55125,在-10+85時精度為±0.5;可編程 的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0

14、625,可實現(xiàn)高精度測溫,典型的轉(zhuǎn)換時間為200ms;用戶可以設(shè)定溫度的上下限;獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。DS1820具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,所以在測量領(lǐng)域得到廣泛的運用。2.3 方案選擇現(xiàn)代傳感器在原理和結(jié)構(gòu)上千差萬別,如何根據(jù)具體的測量目的、測量對象以及測控環(huán)境合理地選擇傳感器,是單片機測控系統(tǒng)首先要解決的問題。當傳感器選定后,與之相配套的測控電路也就可以確定了。測控結(jié)果的成敗,在很大程度上取決于傳感器的選擇是否合理。作為單片機控制系統(tǒng)的前向通道的關(guān)鍵部件,在選擇傳感器時應(yīng)

15、考慮以下幾個方面的:根據(jù)測控對象與測控環(huán)境確定傳感器的類型;靈敏度的選擇,通常情況下,在傳感器的線性范圍內(nèi),希望傳感器的靈敏度越高越好;頻率響應(yīng)特性,頻率響應(yīng)特性決定了被測量的頻率范圍,頻率響應(yīng)好,可測信號的頻率范圍就越寬;線性范圍,線性范圍越寬,其量程越大,并且能保證一定的精度;穩(wěn)定性,穩(wěn)定性是指其性能保持不變化的能力;精度的選擇,傳感器的精度越高,其價格越貴,因此傳感器的精度只是滿足整個測控系統(tǒng)的精度要求就可以了,不必選得過高。方案的選擇即是傳感器的選擇。對比三種方案可以得知,方案一是采用模擬式溫度傳感器,方案二和方案三都采用數(shù)字式溫度傳感器。模擬式溫度傳感器輸出的是隨溫度變化的模擬量信號

16、。其特點是輸出響應(yīng)速度較快和MPU接口復雜。熱敏電阻精度低,靈敏度高,價格最低。數(shù)字式溫度傳感器輸出的是隨溫度變化的數(shù)字量,更直觀,與模擬輸出相比,它輸出速度響應(yīng)較慢,但容易與MPU接口。能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量;能以最簡方式構(gòu)成高性價比、多功能的智能化溫度控制系統(tǒng);能在硬件的基礎(chǔ)上通過軟件編程來實現(xiàn)測試功能。所以數(shù)字式溫度傳感器才是今后發(fā)展的方向。而SHT71與DS18B20相比,前者精度較高,轉(zhuǎn)換速度較快,但性價比不高,單片價格在一百左右,DS18B20相對而言價格較低在十塊左右??紤]到我們設(shè)計的目的和要求不是很精密嚴格。所以我們選擇方案三以DS18B20數(shù)字溫度傳感器進行后續(xù)設(shè)計

17、。3 硬件設(shè)計本節(jié)主要介紹系統(tǒng)中單片機STC89C52外圍電路重要模塊的功能和電路原理圖分析。并對電路中的核心器件進行必要的說明。3.1 單元模塊設(shè)計3.1.1 時鐘和復位電路 圖3.1晶振電路 圖3.2 復位電路 單片機STC89C52使用的時鐘電路比較簡單,我們采用的是晶體振蕩器產(chǎn)生時鐘源。XTAL1(X1)為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2(X2)是來自反向振蕩器的輸出,分別接到單片機的19腳和18腳。為了方便使用其他晶振,所以我們使用插座來安裝晶振,其電路原理圖如圖3.1所示。單片機復位電路的設(shè)計如圖3.2所示。該復位電路采用手動復位與上電復位相結(jié)合的方式。當按

18、下按鍵S22時,VCC通過R22電阻給復位輸入端口一個高電平,實現(xiàn)復位功能,即手動復位這樣就不用在重起單片機電源。上電復位就是VCC通過電阻R2和電容C構(gòu)成回路,該回路是一個對電容C充電和放電的電路,所以復位端口得到一個周期性變化的電壓值,并且有一定時間的電壓值高于CPU復位電壓,實現(xiàn)上電復位功能。3.1.2 報警電路圖3.3 報警電路報警電路用一個三極管驅(qū)動一只蜂鳴器組成,驅(qū)動信號由芯片的管腳IN1T控制。當顯示的溫度不在設(shè)定的溫度范圍內(nèi),即不在TL與TH之間則驅(qū)動蜂鳴器發(fā)聲報警,其電路如圖3.3所示。3.1.3 數(shù)碼顯示電路圖3.4 數(shù)碼顯示電路數(shù)碼顯示電路主要作用是用來顯示實際的環(huán)境溫度

19、值。通過單片機控制實現(xiàn)數(shù)碼管動態(tài)顯示,即溫度值實時刷新。實際的電路中我們采用靜態(tài)驅(qū)動,這樣程序電路都比較簡單,顯示亮度也高,但占用的I/O口比較多。動態(tài)驅(qū)動需要增加譯碼驅(qū)動,增加了硬件的復雜性。P0口驅(qū)動連接數(shù)碼管的位碼,即選通8個數(shù)碼管;P2口驅(qū)動連接數(shù)碼管的段碼,即輸出要顯示的溫度值。選通數(shù)碼管是通過P0口接上拉電阻再接三極管9012。由于9012是PNP型三極管,所以單片機選通某個片選時就給對應(yīng)的三極管一個低電平,此時三極管處于飽和區(qū),飽和導通就相當于開關(guān)開路;反之高電平處于截止區(qū),截止可以當作開關(guān)斷開。在數(shù)碼管動態(tài)顯示中,只要掃描的時間足夠快,雖然在一個時刻只有一位數(shù)碼管發(fā)光,但卻可以

20、看到8 位數(shù)碼管“同時”顯示的效果。電路原理圖如圖3.4所示。3.1.4 電源電路 圖3.5 5V電源電路電源電路主要是為系統(tǒng)提供電源,因為單片機STC89C52需要供電5V,而外圍電路可以用5V電源。電路可以由電源變壓器T、電橋U、電容C以及芯片7805組成。電源是由電源變壓器T降壓后送入電橋U整流再經(jīng)C濾波,然后由CW7805穩(wěn)定后提供給電路工作。由于我們需要在通過計算機下載程序,而USB輸出電壓也剛好是5V,所以我們?yōu)榱朔奖悴捎肬SB供電。原理圖如圖3.5所示。3.1.5 按鍵電路圖3.6 按鍵電路按鍵電路具體電路如圖3.7所示。在本次設(shè)計中,我們只用到三個按鍵,分別為S18,S19,S

21、20,由于S21用的是單片機P3.3口,而P3.3口是按鍵和蜂鳴器的復用口,為了簡便,我們沒有用到此按鍵。S18按鍵為調(diào)整鍵,此按鍵按下一次,則為調(diào)整上限值,按下兩次則為調(diào)整下限值,按下三次則將設(shè)定的上限值和下限值寫入到傳感器中,并恢復到正常測溫模式。S19為遞增按鍵,當按下此鍵時,上限值或下限值增加1,S20為遞減鍵,按下此鍵,上限值或下限值減少1 。3.1.6 串口通信電路圖3.7 串行通信電路Max232是由德州儀器公司(TI)推出的一款兼容RS232標準的芯片。該器件包含2個驅(qū)動器、2個接收器和一個電壓發(fā)生器電路提供TIA/EIA-232-F電平。該器件符合TIA/EIA-232-F標

22、準,每一個接收器將TIA/EIA-232-F電平轉(zhuǎn)換成5-V TTL/CMOS電平。每一個發(fā)送器將TTL/CMOS電平轉(zhuǎn)換成TIA/EIA-232-F電平。TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。3.2 核心器件介紹3.2.1 單片機STC89C52介紹單片機STC89C52RC是8位高性能MCU,超低功耗:掉電模式下典型功耗<01 LLA,空閑模式下典型功耗2 mA正常工作模式下典型功耗4 7 mA 具有8k

23、F1ash存儲器、512 kB RAM、2k E2pROM、降低EMI功能、ISP(在系統(tǒng)可編程)功能 單片機內(nèi)部的看門狗電路經(jīng)過特殊處理是真正的看門狗可放心省去外部看門狗 缺省為關(guān)閉打開后無法關(guān)閉,單倍速和雙倍速可反復設(shè)置。單片機STC89C52和各個模塊的接口主要是對STC89C52的I/O口進行約束,規(guī)定其為輸出還是輸入,輸入主要是按鍵電路部分和時鐘,輸出則為報警和顯示部分,其I/O分配如下圖3.8所示。圖3.8單片機STC89C52 I/O接口電路3.2.2 DS18B20介紹DS18B20是DALLAS公司生產(chǎn)的一線式傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55攝

24、氏度到+125攝氏度,可編程為9到12位A/D轉(zhuǎn)換精度,測溫分辨率可達0.0625攝氏度,被側(cè)溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可在遠端引入,也可采用寄生電源方式產(chǎn)生。CPU只需一根端口線就能與諸多DS18B20通信,占用問處理器的端口較少,可節(jié)省大量的引線和邏輯電路。DS18B20主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH個TL、配置寄存器。DS18B20中的溫度傳感器可完成對溫度的測量,用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625攝氏度/LSB形式表達,其中S為符號位。例如+125攝氏度的數(shù)字輸出為07DOH,+25.0625

25、攝氏度的數(shù)字輸出為0191H,-25.0625攝氏度的數(shù)字輸出為FF6FH,-55攝氏度的數(shù)字輸出為FC90H.DS18B20采用一線通信接口。因為一線通信接口,必須在先完成ROM設(shè)定,否則記憶和控制功能將無法使用。主要首先提供以下功能命令之一:讀ROM指令0X33, ROM匹配指令0X55,搜索ROM指令0XF0, 跳過ROM指令0XCC, 報警檢查指令0XEC。這些指令操作作用在沒有一個器件的64位光刻ROM序列號。 圖3.9 DS18B20的兩種封裝形式 圖 3.10 DS18B20內(nèi)部結(jié)構(gòu)圖4 軟件設(shè)計軟件設(shè)計關(guān)鍵在于DS18B20的使用。DS18B20屬于單線式器件,它在一根數(shù)據(jù)線上

26、實現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議,來對讀寫數(shù)據(jù)提出嚴格的時序要求,而STC89C52單片機并不支持單線傳輸,因此必須采用軟件的方法來模擬單線的協(xié)議時序。DS18B20有嚴格的通信協(xié)議來保證各為數(shù)據(jù)傳輸?shù)恼_性和完整性。主機操作單線器件DS18B20必須遵循一定的順序。系統(tǒng)的主程序主要通過初始化,鍵盤掃描,獲取溫度,顯示溫度,報警等子程序?qū)崿F(xiàn)。通過一個循環(huán)設(shè)置,使系統(tǒng)不斷地進行對溫度的檢測。下圖為本系統(tǒng)主程序的設(shè)計流程,各個模塊的設(shè)計見下文。軟件設(shè)計具體程序見附錄四。開始初始化鍵盤掃描溫度采集報警顯示溫度YN圖4.1主程序設(shè)計流程圖4.1 溫度采集模塊溫度采集包括初始化DS18B20子程序

27、;讀DS18B20子程序;寫DS18B20子程序;獲得溫度子程序。DS18B20初始化需要這幾個過程先將數(shù)據(jù)線置高電平“1”,延時10 us;再將數(shù)據(jù)線拉到低電平“0” 延時500 us;然后再數(shù)據(jù)線拉到高電平“1”,高電平保持60us,判斷DS18B20是否發(fā)出低電平信號,跟據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時控制;若CPU讀到了數(shù)據(jù)線上的低電平“0”后,根據(jù)時序要求還要做延時,其延時的時間從發(fā)出的高電平算起最少要480 us時間;最后將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。需要注意的是每次采集溫度的時候都需要初始化。DS18B20發(fā)

28、出高電平初始化成功,返回flag=1表示DS18B20初始化成功。讀DS18B20也需要幾個流程:先將數(shù)據(jù)線拉高“1” 延時2us時間;再將數(shù)據(jù)線拉低“0” 延時10 us;然后將數(shù)據(jù)線拉高“1” 延時8us讀取1位數(shù)據(jù),讀取1位數(shù)據(jù)后延時50us時間;最后通過讀取1位右移1位循環(huán)進行分別讀出8位即一個字節(jié)的數(shù)據(jù)。程序中我們把讀取的第一字節(jié)存templ中,讀取的第二字節(jié)存temph中。如果需要讀出設(shè)定的TH和TL值用于報警,這時也需將數(shù)據(jù)讀出。我們把讀取的第3字節(jié)存tempth 即TH的值;把讀取的第4個字節(jié)存temptl即TL的值。由于讀出的數(shù)據(jù)時二進制數(shù)顯示的時候是十進制。所以必須將讀出的

29、數(shù)據(jù)進行處理。先判斷符號位將temph的高5位與0xf8相與就可以知道正負。若為負值f=1,將templ和temph取反。轉(zhuǎn)換的時候我們將小數(shù)部分和整數(shù)部分分別轉(zhuǎn)換,小數(shù)部分templ與0x0f相與后的值乘以625就是小數(shù)部分的值,需要注意的是小數(shù)部分的值是用整數(shù)形式表示的;整數(shù)部分temph左移四位和 templ右移四位合并為一個字節(jié)就是整數(shù)部分的值。獲得溫度就是在前面操作的基礎(chǔ)上調(diào)用。先初始化DS18B20,發(fā)出跳過ROM匹配命令;再向DS18B20發(fā)溫度轉(zhuǎn)換命令顯示溫度,等待AD轉(zhuǎn)換,發(fā)跳過ROM匹配命令;最后發(fā)出讀溫度命令將讀出的溫度數(shù)據(jù)保存到tempint和tempdf處為顯示做準備

30、。下面兩個框圖為溫度采集流程圖和讀溫度兩個主要的流程圖。開始初始化DS18B20應(yīng)答脈沖?發(fā)起Skip Rom命令發(fā)起Convert T 命令延時750ms,等待溫度轉(zhuǎn)換完成初始化DS18B20應(yīng)答脈沖?發(fā)起 Read temperature命令讀取第1,2字節(jié)即為溫度數(shù)值NoNo 圖4.2 溫度采集流程圖 溫度顯示模塊主要包括顯示溫度子程序和延遲子程序。顯示溫度即把讀出的溫度傳遞過來分別顯示。我們是將數(shù)碼分為各個位動態(tài)掃描顯示。讀溫度程序中將小數(shù)部分和整數(shù)部分的值分別存放在tempint和tempdf中,符號位存放在f中。由于是分各個位顯示,所以必須對數(shù)進行取模運算,C語言提供了整除和求余數(shù)

31、運算,兩者相結(jié)合就可以取出各個位的模。由于我們是用數(shù)碼管顯示,第一位顯示符號位,f=0表示正溫度用“0”表示,f=1表示負溫度用“-”表示,“-”值可以用0xbf送到數(shù)碼管顯示。第四個數(shù)碼管需要顯示小數(shù)位,我們采用查表的方法將要顯示的帶小數(shù)的數(shù)模放在ledmap1中,需要顯示的時候再調(diào)用;一般數(shù)模放在ledmap中。顯示的時候采用循環(huán)的方式進行,先判斷符號位顯示在第一個數(shù)碼管,之后分別為百位、十位、個位、個分位、十分位、百分位和千分位。先送位碼再送段碼,每一位顯示完后延遲2us時間。在數(shù)碼管動態(tài)顯示中,由于掃描的時間足夠快,雖然在一個時刻只有一位數(shù)碼管發(fā)光,卻可以看到8 位數(shù)碼管“同時”顯示的

32、效果。下圖為溫度顯示流程框圖。溫度為正符號位顯示“0”符號位顯示“”整數(shù)部分顯示小數(shù)部分顯示溫度數(shù)據(jù)移入寄存器結(jié)束 圖4.3 溫度顯示流程圖4.2 溫度設(shè)定模塊溫度設(shè)定模塊主要由按鍵程序和顯示程序構(gòu)成。按鍵掃描電路掃描調(diào)整鍵S18是否按下,檢測到按鍵按下時,延時1ms,再次檢測按鍵是否按下,若檢測到按下,才確定此按鍵,本設(shè)計中每個按鍵設(shè)計都運用了防抖動功能,避免抖動產(chǎn)生的誤差。當檢測到按鍵S18按下一次時,顯示為設(shè)定的上限值,此時S19和S20分別遞增鍵和遞減鍵,在上限或下限沒超過125時,每次檢測到按下時則上限值增加或減少1,并將bb標志位置1。當S18被按下兩次時,顯示為設(shè)定的下限值,此時

33、S19和S20分別遞增鍵和遞減鍵,每次檢測到按下時則下限值增加或減少1,并將bb標志位置2。當S18被第三次按下時,bb標志位置3,此時恢復到正常的測溫模式,并將設(shè)定的上限值和下限值寫入到傳感器中。顯示程序顯示設(shè)定值的變化,當bb為0時,顯示測量到的溫度的值,當bb為1時,顯示上限值,并隨S19,S20按鍵按下的時上限值的變化而變化,當bb為2是,顯示下限值,并隨S19,S20按鍵按下時下限值的變化而變化。4.3 報警模塊報警模塊主要由由單片機輸出電平來驅(qū)動蜂鳴器構(gòu)成。當所測溫度超過設(shè)定的上限(TH值)或下限溫度(TL值)時置beepflag=1,表示溫度值越界。在調(diào)用報警子程序時先判斷bee

34、pflag的值,若為1則在蜂鳴器端口輸出低電平信號beep=0,蜂鳴器報警,延時1000us,蜂鳴器報警持續(xù),再產(chǎn)生一個高電平信號beep=1,蜂鳴器停止報警,循環(huán)此過程,則蜂鳴器間隙性報警。在蜂鳴器報警的同時,DS18B20處于正常測溫狀態(tài),并用數(shù)碼管顯示出來,并不斷閃爍。5 系統(tǒng)整合調(diào)試調(diào)試方法:寫好一段程序后不能急于上機調(diào)試,而是先進行邏輯分析、可行性分析。用KeilVision 2軟件進行調(diào)試,不能出現(xiàn)錯誤,警告可以有,只要不影響生成HEX文件即可。理解其實現(xiàn)的功能,預想程序應(yīng)該出現(xiàn)的結(jié)果。先進行軟件仿真,出現(xiàn)錯誤馬上修改,不斷進行。先一個模塊一個模塊的仿真,準確后再連線總體仿真。仿真

35、完后出現(xiàn)預期的效果后再下載程序到硬件進行驗證,往往還有問題,還得反復修改,編譯,調(diào)試,下載,驗證??梢砸粋€模塊一個模塊的下載調(diào)試這樣就可以知道問題的所在。采用Proteus和Keil結(jié)合仿真的可以大大簡化軟、硬件電路的設(shè)計過程。5.1 硬件調(diào)試Proteus是英國Labeenter electronics公司研發(fā)的EDA工具軟件。Proteus不僅是模擬電路、數(shù)字電路、模/數(shù)混合電路的設(shè)計與仿真平臺,更是目前世界最先進、最完整的多種型號微控制器系統(tǒng)的設(shè)計與仿真平臺。它真正實現(xiàn)了在計算機上完成從原理圖設(shè)計、電路分析與仿真、單片機代碼級調(diào)試與仿真、系統(tǒng)測試與功能驗證到形成PCB的完整電子設(shè)計與研發(fā)

36、過程。Proteus產(chǎn)品系列也包含了革命性的VSM技術(shù),可以對基于微控制器的設(shè)計連同所有的外圍電子器件一起仿真。由于我們的設(shè)計外圍電路比較簡單實現(xiàn)的功能葉不是很復雜,所以在Proteus仿真時我們是將主程序直接下載到芯片中仿真,主要是驗證是否采集到溫度還有溫度是否顯示正確。仿真可以在實物沒有出來前進行先期的驗證。最后加上我們的擴展功能一起仿真調(diào)試。需要說明的是仿真正確不代表最后的下載程序不會出錯。我們在下載程序的時候也遇到一點小問題。比如在仿真的時候,三極管始終處于導通狀態(tài),后來通過努力解決了這個問題。在實物做出來之前,我們采用Proteus仿真調(diào)試,通過將軟件編譯通過的程序下載到畫好的仿真圖

37、中,這樣便于檢查軟、硬件設(shè)計的不足。但是Proteus仿真也存在不足的情況,仿真模擬的是理想的環(huán)境,不會差生誤差但是實際的測試會出現(xiàn)一定的誤差。通過硬件仿真可以查找出硬件設(shè)計的不足。5.2 軟件調(diào)試 KeilVision 2是Keil公司關(guān)于8051系列MCU的開發(fā)工具,可以用來編譯C源碼、匯編源程序、連接和重定位目標文件和庫文件、創(chuàng)建HEX文件、調(diào)試目標程序等,是一種集成化的文件管理編譯環(huán)境。它集成了文件編輯處理、編譯連接、項目管理、窗口、工具引用和軟件仿真調(diào)試等多種功能,是相當強大的開發(fā)工具。實驗中我們采用KeilVision 2來對我們編寫的程序進行編譯、鏈接和生成HEX文件。在下載程序

38、出錯時進行必要的調(diào)試,再下載驗證。同時采用Proteus和Keil結(jié)合仿真的方法對設(shè)計的單片機測溫系統(tǒng)進行了虛擬仿真和性能檢測,得到了比較好的仿真結(jié)果和分析結(jié)果。結(jié)果證明采用Proteus和Keil結(jié)合仿真的可以大大簡化硬件電路的設(shè)計過程,可以降低單片機系統(tǒng)的開發(fā)成本、提高效率和開發(fā)速度,具有很好的實際應(yīng)用和指導意義。軟件仿真的優(yōu)勢在于,可以設(shè)置斷點、單步運行等,這在用實物調(diào)試是不能實現(xiàn)的,通過軟件仿真,可以知道程序哪兒出錯了,便于及時改正。若直接下載在芯片中用實物調(diào)試,只能知道程序錯了,只能去盲目查找程序的錯誤之處。在程序的編寫之中難免會出現(xiàn)一些無法錯誤,用KeilVision 2編譯會得到

39、及時的提示,方便立即修改,大大縮短了設(shè)計的時間,提高設(shè)計效率。在設(shè)計初期,我們通過軟件仿真發(fā)現(xiàn)了很多錯誤,比如語法錯誤,亂碼,字符閃爍問題,后來這些問題都一一克服,語法錯誤一樣是缺少括號,亂碼是由于共陰、共陽譯碼的錯誤,還有就是由于人眼的“滯留”問題,必須要位選,在進行譯碼。字符閃爍一般是由于延時過短等問題。這些問題都是通過軟件調(diào)試找出來的,從而說明軟件調(diào)試的必要性。6 系統(tǒng)功能、指標參數(shù)6.1 系統(tǒng)功能本設(shè)計實現(xiàn)的主要功能是通過DS18B20溫度傳感器采集溫度并通過8位七段數(shù)碼管顯示所測溫度,可顯示零度以下溫度,溫度測量范圍為-55-128,后四位顯示小數(shù)位。可以精確到小數(shù)點后4位,測量精度

40、為0.0625, 并可以產(chǎn)生報警。通過三個按鍵的配合使用可以設(shè)定溫度報警的上限值和下限值,當所測的溫度超過所設(shè)定的上限或下限溫度時產(chǎn)生報警信號,在報警的同時,系統(tǒng)處于正常的測溫模式,當溫度回到所設(shè)定的范圍時,報警停止。 6.2 系統(tǒng)指標參數(shù)測試 下圖是采用Proteus軟件對本系統(tǒng)溫度測量范圍的仿真,仿真模擬溫度輸入為-55,系統(tǒng)8位七段顯示數(shù)碼管顯示的也為-55,由于仿真軟件不考慮測量誤差,所以測量的溫度沒有誤差,做出的實物出現(xiàn)了一點誤差,但誤差在允許的范圍內(nèi)。 圖6. 1 對系統(tǒng)測量最低溫度仿真 下圖是采用Proteus軟件對本系統(tǒng)溫度測量范圍的仿真,仿真模擬溫度輸入為127,系統(tǒng)8位七段

41、顯示數(shù)碼管顯示的為127,本系統(tǒng)的測量溫度上限為128,若測量的溫度等于128,系統(tǒng)則輸出一個負數(shù),這是由于DS18B20傳感器的對數(shù)據(jù)的處理所引起的,當所測的溫度剛好為128時,128用二進制表示為11111111,本傳感器處理數(shù)據(jù)的高五位為符號位,當出現(xiàn)11111111時,系統(tǒng)默認所測溫度為負數(shù)。 圖6.2 對系統(tǒng)測量最高溫度仿真通過以上兩個仿真驗證了本系統(tǒng)的溫度測量范圍,由于軟件仿真對報警的仿真不容易觀察,也不太容易記錄,所以我們對報警沒有通過軟件仿真,而是通過對事物的調(diào)試來實現(xiàn)。由于對溫度上下限的設(shè)定是一個動態(tài)的實現(xiàn),所以我們也是通過實物演示來實現(xiàn)。6.3 系統(tǒng)功能及指標參數(shù)分析本設(shè)計

42、滿足實驗要求,可以測量的溫度范圍是-55-128,并通過8位七段數(shù)碼管顯示,顯示的第一位為符號位,后四位為小數(shù)位,由于DS18B20的分辨率很高,其固有分辨率為0.5,最高可達0.0625,所以本系統(tǒng)的分辨率為0.0625。在本設(shè)計中,我們充分利用了DS18B20的具有TH、TL寄存器的優(yōu)勢,通過對TH,TL寄存器進行賦值,可以實現(xiàn)設(shè)定溫度范圍,這樣可以使本系統(tǒng)不僅具有測溫的功能,還具備超過溫度范圍報警的功能,這樣的設(shè)計在實際工程中運用更加廣泛。在設(shè)計中,我們通過鍵盤可以設(shè)定溫度的上下限報警范圍,并將設(shè)定的上下限的的值寫入到寄存器中,刷新上次寫入的值,便于隨時調(diào)節(jié)的報警上限范圍。 7 結(jié)論經(jīng)過

43、將近四周的智能化課程設(shè)計,終于完成了我們的數(shù)字溫度計的設(shè)計。不僅完全達到設(shè)計要求溫度的采集和顯示,還在此基礎(chǔ)上增加了擴展功能超溫報警,就是采集的溫度不在我們自己設(shè)定的范圍內(nèi)時驅(qū)動蜂鳴器輸出報警信號。不僅利用Proteus完成了硬件仿真,還把實物都做了出來,并下載程序驗證成功,高興之余不得不深思呀!在本次設(shè)計的過程中,我們發(fā)現(xiàn)很多的問題。比如在硬件仿真時往往出現(xiàn)亂碼的情況,原因在于共陽數(shù)碼管和共陰數(shù)碼管顯示時所送的段碼是不一樣的,所以我們將段碼取反,但仍然沒有成功,網(wǎng)上查閱資料找到問題的關(guān)鍵在于如果采用動態(tài)掃描的方法,控制程序先送段碼再送位碼,由于人眼的“滯留”效應(yīng),將會產(chǎn)生亂碼現(xiàn)象;為了讓顯示

44、器不顯示亂碼,其控制程序要么在每次顯示更新前先關(guān)閉顯示器再送段位及位碼,要么先送位碼再送段碼,都可解決這一問題。所以我們采用先送位碼再送段碼的方法解決了此問題。智能化課程設(shè)計重點就在于軟件算法的設(shè)計,雖然以前還做過這樣的設(shè)計但這次設(shè)計,但都比較簡單程序也不是很長也不需要有很巧妙的程序算法。這次軟件設(shè)計中讓我充分理解到了利用子程序的好處。在設(shè)計中也遇到很多問題比如溫度轉(zhuǎn)化的時候我們的程序看起來是合乎邏輯的但始終沒有小數(shù)部分的值,經(jīng)過多次調(diào)試修改終于顯示成功。還有很多下問題則不必累述。下載程序驗證的時候也出現(xiàn)問題,并沒有顯示實際的溫度,全是“0”,究其原因在于參數(shù)傳遞并沒有傳遞到顯示程序中。在這次

45、的智能化課程設(shè)計中,雖然我們已經(jīng)做出結(jié)果,但仍然有很多問題未得到解決。一是Proteus仿真正確但下載到實際的電路板中卻存在問題。二是當我們增加了擴展功能溫度報警后,溫度的分辨率卻減小了由原來的12位減小到9位,通過修改仍沒有解決。三是小組聯(lián)合調(diào)試沒有完成。我們可以將采集的溫度放到24C02存儲,在輸出在液晶屏上顯示,還可以利用采集的溫度大小來控制電機的轉(zhuǎn)速等等。希望以后有機會再次深入學習。這次設(shè)計讓我真真正正的意識到,在以后的學習中,要理論聯(lián)系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經(jīng)常的寫與讀的過程中才能提高,這就是我在這次課程設(shè)計中的最大收獲。8 總結(jié)與體

46、會就此次設(shè)計來看,我們所設(shè)計的電子體溫計原理電路較為簡單,此電路設(shè)計用到了一個單片機STC89C52、DS18B20、電阻、電源和簡單的外圍電路,因此設(shè)計的核心就是芯片DS18B20。由于此前對此芯片缺乏了解,所以此次設(shè)計的難點在編程,通過搜集和閱讀DS18B20的資料,以及本組成員的編譯和數(shù)天調(diào)試,攻克了程序設(shè)計的難題,使此次的課程設(shè)計取得突破性的成功。DS18B20 是一種傳感器精度高、互換性好;它直接將溫度數(shù)據(jù)進行編碼,可以只使用一根電纜傳輸溫度數(shù)據(jù),通信方便,傳輸距離遠且抗干擾性好的數(shù)字溫度傳感器。所構(gòu)成的系統(tǒng)以簡單,且系統(tǒng)擴充維護十分方便。DS18B20 可以廣泛用于工廠工業(yè)過程、大

47、型糧倉、釀酒廠,食品加工廠的溫度檢測以及賓館、儀器儀表室等處的溫度檢測和控制.在軟件基本實現(xiàn)的情況下,我們做出實驗電路板,下載程序進行調(diào)試,實現(xiàn)了溫度的顯示的基本功能,后進行程序改進,擴展了功能,實現(xiàn)溫度上下線的設(shè)置和溫度報警功能。通過這次智能化設(shè)計使我學習到了很多的東西,不僅加深了對專業(yè)知識的理解,而且更好地把理論知識與實踐相結(jié)合,提高了自身的動手能力和實踐水平,增強了學習單片機系統(tǒng)開發(fā)與設(shè)計的興趣。 經(jīng)過近一個月的緊張忙碌,我們的課程設(shè)計也幾近結(jié)束。此次課程設(shè)計,我們不僅實現(xiàn)了軟件平臺上的仿真,而且還做出了實物,經(jīng)過調(diào)試改進,實現(xiàn)了一些硬件功能。理論聯(lián)系實際,讓我們在實踐中去更好的理解和運

48、用我們所學到的知識,獲益匪淺。在此設(shè)計期間,老師給了我們很大的幫助,衷心感謝我們的指導教師王維博老師,老師在設(shè)計和調(diào)試的各個階段給了我們很大的寶貴意見和悉心指導。同時感謝我們的小組成員,大家發(fā)揮各自所長,分工協(xié)作,使我們的設(shè)計能夠有條不紊,高效率的進行,團隊合作給了我們設(shè)計很大的推動力。9 參考文獻1 于永.51單片機C語言常用模塊與綜合系統(tǒng)設(shè)計實例精講M.北京:電子工業(yè)出版社,20082戴永成等.基于DS18B20的數(shù)字溫度測量儀J.北華航天工業(yè)學院學報,20083甘勇等. 數(shù)字溫度傳感器DS18B20 在多點測溫系統(tǒng)中的應(yīng)用. 河南農(nóng)業(yè)大學學報,20014張越等.基于DS18B20溫度傳感

49、器的數(shù)字溫度計J.微電子學,20075李朝青.單片機原理及接口技術(shù)(簡明修訂版).杭州:北京航空航天大學出版社,19986黃河.基于DS18B20的單總線數(shù)字溫度計J.湘潭師范學院學報,20087李廣弟.單片機基礎(chǔ).北京:北京航空航天大學出版社,19948 王建強等.基于DSP控制器與DS18B20的溫度測量方法J. 儀器儀表與檢測技術(shù),2009 9 雷建龍等.數(shù)碼管動態(tài)顯示亂碼現(xiàn)象分析J.液晶與顯示,2009 10 孫安清等.AT89S52單片機實驗與實踐教程.單片機實驗板配套教程11 趙亮等.單片機C語言編程和實例.人民郵電出版社,200312 張毅剛等.單片機原理及運用.高等教育出版社,

50、2003 10 附錄一:基于DS18B20數(shù)字溫度計的設(shè)計原理圖 11 附錄二:基于DS18B20數(shù)字溫度計的設(shè)計PCB圖12 附錄三:基于DS18B20數(shù)字溫度計的設(shè)計的實物圖實際 實際測得溫度 報警上限值 報警下限值13 附錄四:基于DS18B20數(shù)字溫度計的設(shè)計C語言程序#include <reg52.h>#include <math.h> /Keil library #include <stdio.h> /Keil library#include <INTRINS.H>#define uchar unsigned char #define uint unsigned int#define display1 0xfe /數(shù)碼管1從左至右#define display2 0xfd /數(shù)碼管2從左至右#define display3 0xfb /數(shù)碼管3從左至右#define display4 0xf7/數(shù)碼管4從左至右#define display5 0x

溫馨提示

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

提交評論