2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1前言1</b></p><p>  1.1設(shè)計(jì)背景1</p><p>  1.2設(shè)計(jì)目標(biāo)1</p><p>  1.3實(shí)施計(jì)劃1</p><p>  2總體方案設(shè)計(jì)2<

2、/p><p>  2.1方案比較2</p><p>  2.1.1方案一基于熱敏電阻的溫度計(jì)設(shè)計(jì)2</p><p>  2.1.2方案二基于SHT71的數(shù)字溫度計(jì)設(shè)計(jì)2</p><p>  2.1.3方案三基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)3</p><p>  2.2方案論證3</p>

3、<p>  2.3方案選擇4</p><p><b>  3硬件設(shè)計(jì)5</b></p><p>  3.1單元模塊設(shè)計(jì)5</p><p>  3.1.1時(shí)鐘和復(fù)位電路5</p><p>  3.1.2報(bào)警電路5</p><p>  3.1.3數(shù)碼顯示電路6<

4、/p><p>  3.1.4電源電路7</p><p>  3.1.5按鍵電路7</p><p>  3.1.6串口通信電路8</p><p>  3.2核心器件介紹8</p><p>  3.2.1單片機(jī)STC89C52介紹8</p><p>  3.2.2DS18B20介紹

5、9</p><p><b>  4軟件設(shè)計(jì)11</b></p><p>  4.1溫度采集模塊12</p><p>  4.2溫度設(shè)定模塊14</p><p>  4.3報(bào)警模塊15</p><p>  5系統(tǒng)整合調(diào)試16</p><p>  5.1

6、硬件調(diào)試16</p><p>  5.2軟件調(diào)試16</p><p>  6系統(tǒng)功能、指標(biāo)參數(shù)18</p><p>  6.1系統(tǒng)功能18</p><p>  6.2系統(tǒng)指標(biāo)參數(shù)測試18</p><p>  6.3系統(tǒng)功能及指標(biāo)參數(shù)分析19</p><p><b>

7、;  7結(jié)論20</b></p><p>  8總結(jié)與體會21</p><p><b>  9參考文獻(xiàn)22</b></p><p>  10附錄一:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)原理圖23</p><p>  11附錄二:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)PCB圖24</p>

8、;<p>  12附錄三:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)的實(shí)物圖25</p><p>  13附錄四:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)C語言程序26</p><p><b>  前言</b></p><p>  自動(dòng)控制領(lǐng)域中,溫度檢測與控制占有很重要的地位。溫度檢測在工農(nóng)業(yè)生產(chǎn)、科研和在人們的生活中得到廣泛的運(yùn)用。

9、目前,溫度傳感器正從模擬式向數(shù)字集成式方向飛速發(fā)出,單片機(jī)也是人們追求的目標(biāo)之一,它所給人帶來的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,人們對它的要求越來越高,要為現(xiàn)代人工作、科研、生活、提供更好更方便的設(shè)施就需要從單片機(jī)技術(shù)入手,一切向著數(shù)字化、智能化方向發(fā)展。本文就是基于此目的介紹基于單片機(jī)和數(shù)字溫度傳感器的溫度計(jì)設(shè)計(jì)。</p><p><b>  設(shè)計(jì)背景</b><

10、/p><p>  隨著現(xiàn)代信息技術(shù)的飛速發(fā)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),能夠獨(dú)立工作的溫度檢測與顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)的溫度檢測以熱敏電阻為溫度敏感元件。熱敏電阻的成本低,需要外加信號處理電路,而且可靠性相對較差,測溫準(zhǔn)確度低,檢測系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度計(jì)相比,這次設(shè)計(jì)的是基于DS18B20的數(shù)字溫度計(jì),它具有讀數(shù)方便,測溫范圍廣,測溫精確,數(shù)字顯示,適用范圍寬等特點(diǎn)。</p><p

11、><b>  設(shè)計(jì)目標(biāo)</b></p><p>  在本設(shè)計(jì)中選用AT89C52型單片機(jī)作為主控制器件,采用DS18B20數(shù)字溫度傳感器作為測溫元件,通過8位共陽極LED數(shù)碼顯示管并行傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示。本設(shè)計(jì)的內(nèi)容主要分為三部分,一是系統(tǒng)硬件設(shè)計(jì),包括溫度采集電路和顯示電路;二是對系統(tǒng)軟件部分的設(shè)計(jì),應(yīng)用C語言實(shí)現(xiàn)溫度的采集與顯示;三是通過與設(shè)定溫度比較,不在此范圍內(nèi)時(shí)實(shí)現(xiàn)報(bào)警功

12、能。通過DS18B20直接讀取被測溫度值,送入單片機(jī)進(jìn)行數(shù)據(jù)處理,之后進(jìn)行輸出顯示,最終完成了數(shù)字溫度計(jì)的總體設(shè)計(jì)。其系統(tǒng)構(gòu)成簡單,信號采集效果好,數(shù)據(jù)處理速度快,便于實(shí)際檢測使用。</p><p><b>  實(shí)施計(jì)劃</b></p><p>  首先查閱相關(guān)資料確定其方向?qū)φ麄€(gè)設(shè)計(jì)有整體的規(guī)劃、構(gòu)思。然后選擇三種方案,簡述其實(shí)現(xiàn)原理,分別對三種方案進(jìn)行論證比較,確

13、定一種方案。緊接著對選定方案進(jìn)行單元模塊設(shè)計(jì)、軟件設(shè)計(jì)、系統(tǒng)總體調(diào)試、系統(tǒng)功能指標(biāo)分析驗(yàn)證。最后得出結(jié)論,完成報(bào)告。</p><p><b>  總體方案設(shè)計(jì)</b></p><p>  通過查閱大量相關(guān)技術(shù)資料,并結(jié)合自己的實(shí)際知識,我們主要提出了三種技術(shù)方案來實(shí)現(xiàn)系統(tǒng)功能。下面我首先對這三種方案的實(shí)現(xiàn)原理分別進(jìn)行說明,并分析比較它們的特點(diǎn),然后再選擇方案并闡述我選

14、擇方案的原因。</p><p><b>  方案比較</b></p><p>  我設(shè)計(jì)了三種方案:方案一基于熱敏電阻的溫度計(jì)設(shè)計(jì);方案二為基于SHT71的數(shù)字溫度計(jì)設(shè)計(jì);方案三是基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)。</p><p>  方案一基于熱敏電阻的溫度計(jì)設(shè)計(jì)</p><p>  方案一主要由溫度傳感器、A/D轉(zhuǎn)

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

16、度與頻率輸出成非線性,需要補(bǔ)償溫度。單片機(jī)利用查表法實(shí)現(xiàn)溫度補(bǔ)償。所謂查表法是把事先計(jì)算或測量的數(shù)據(jù)按一定的順序排列成表格的形式,固化在單片機(jī)內(nèi)。只要測量出LM331的頻率值,就可以通過查表法準(zhǔn)確的得出環(huán)境的溫度值。再交由單片機(jī)驅(qū)動(dòng)數(shù)碼管顯示溫度。這樣就實(shí)現(xiàn)了溫度的采集與顯示。</p><p>  方案二基于SHT71的數(shù)字溫度計(jì)設(shè)計(jì)</p><p>  方案二主要由數(shù)字溫度傳感器、單片機(jī)

17、控制電路、數(shù)碼顯示電路組成。SHT71將溫度傳感器、信號放大調(diào)理、A/D轉(zhuǎn)換、I2C總線接口全部集成于一個(gè)芯片上。SHT11先利用傳感器產(chǎn)生溫度信號;經(jīng)放大送至A/D 轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換、校準(zhǔn)和糾錯(cuò);由2線接口將信號送至微控制器;再利用微控制器完成相對濕度的非線性補(bǔ)償和溫度補(bǔ)償。SHT71測量過程包括4 個(gè)部分:啟動(dòng)傳輸、發(fā)送測量命令、等待測量完成和讀取測量數(shù)據(jù)。在啟動(dòng)傳輸時(shí)序之后, 微控制器可以向SHT71 發(fā)送命令,SHT71則通過

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

19、以CRC 校驗(yàn)字節(jié)的確認(rèn)為表示通信結(jié)束。微控制器需要通過拉低DATA來確認(rèn)接收的每個(gè)字</p><p>  方案三基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)</p><p>  方案三主要也由數(shù)字溫度傳感器、單片機(jī)控制電路、數(shù)碼顯示電路組成。DS18B20 測量溫度采用了特有的溫度測量技術(shù)。它是通過計(jì)數(shù)時(shí)鐘周期來實(shí)現(xiàn)的。低溫度系數(shù)振蕩器輸出的時(shí)鐘信號通過由高溫度系數(shù)振蕩器產(chǎn)生的門周期而被計(jì)數(shù)。計(jì)數(shù)

20、器被預(yù)置在與- 55 ℃相對應(yīng)的一個(gè)基權(quán)值。如果計(jì)數(shù)器在高溫度系數(shù)振蕩周期結(jié)束前計(jì)數(shù)到零,表示測量的溫度值高于- 55℃,被預(yù)置在- 55 ℃的溫度寄存器的值就增加1℃,然后重復(fù)這個(gè)過程,直到高溫度系數(shù)振蕩周期結(jié)為止這時(shí)溫度寄存器中的值就是被測溫度值,這個(gè)值以16 位形式存放在便箋式存貯器中,此溫度值可由主機(jī)通過發(fā)存貯器讀命令而讀出,讀取時(shí)低位在前,高位在后。斜率累加器用于補(bǔ)償溫度振蕩器的拋物線特性。讀出的二進(jìn)制數(shù)可以直接轉(zhuǎn)換為十進(jìn)制由

21、單片機(jī)驅(qū)動(dòng)數(shù)碼管顯示輸出。</p><p><b>  方案論證</b></p><p>  方案一:熱敏電阻溫度傳感器的特點(diǎn)是自身的電阻值隨溫度而變化。熱敏電阻是利用半導(dǎo)體材料制成的敏感組件,通常所有的熱敏電阻溫度傳感器都是具有負(fù)溫度系數(shù)的熱敏電阻,它的電阻率受溫度的影響很大,而且隨溫度的升高而減小。其優(yōu)點(diǎn)是靈敏度高,體積小,壽命長,工作穩(wěn)定,易于實(shí)現(xiàn)遠(yuǎn)距離測量;缺

22、點(diǎn)是互換性差,非線性嚴(yán)重。它的測量范圍一般為-10~+300℃,也可做到-200~+10℃,甚至可用于+300~+1200℃環(huán)境中作測溫用。熱敏電阻器溫度計(jì)的精度可以達(dá)到0.1℃,感溫時(shí)間可少至10s以下。</p><p>  方案二:SHT7I是瑞士Sens on公司生產(chǎn)的具有二線串行接口的單片全校準(zhǔn)數(shù)字式新型相對濕度和溫度傳感器,可用來測量相對濕度、溫度和露點(diǎn)等參數(shù),具有數(shù)字式輸出、免調(diào)試、免標(biāo)定、免外圍電路

23、及全互換的特點(diǎn)該傳感器將CMOS芯片技術(shù)與傳感器技術(shù)結(jié)合起來,發(fā)揮出強(qiáng)大的優(yōu)勢互補(bǔ)作用。由于SHT71是I2C總線結(jié)構(gòu)的串行數(shù)據(jù)傳送,它只需要DATA和SCK兩根線完成數(shù)據(jù)的傳送過程。因此,我們在進(jìn)行程序設(shè)計(jì)的時(shí)候,也得按著I2C協(xié)議來對SHT71芯片數(shù)據(jù)訪問。對于STC89C52單片機(jī)本身沒有I2C硬件資源,所以必須用軟件來模擬I2C協(xié)議過程。一般使用單片機(jī)通用I/ O 口線來虛擬I2C 總線,并利用P1. 0 來虛擬數(shù)據(jù)線DATA

24、,利用P1. 1 口線來虛擬時(shí)鐘線,并在DATA 端接入一只4. 7kΩ 的上拉電阻,同時(shí),在VDD及GND 端接入一只0. 1μF 的去耦電容。溫度測量范圍:-40~+123.8℃;溫度測量精度:±0.4℃@25℃;響應(yīng)時(shí)間:<4s;低功耗 (typ. 30µW)。</p><p>  SHT71是一種全新的基于智能傳感器設(shè)計(jì)理念的新型傳感器,該傳感器將溫度傳感器、信號調(diào)理、數(shù)字變換、

25、串行數(shù)字通信接口、數(shù)字校準(zhǔn)全部集成到一個(gè)高集成度、體積極小的芯片當(dāng)中,實(shí)現(xiàn)了溫度傳感器的數(shù)字式輸出、且免調(diào)試、免標(biāo)定、免外圍電路。極大方便了溫度傳感器在測控領(lǐng)域的應(yīng)用,因而該傳感器在數(shù)字式溫濕度測控領(lǐng)域有著廣泛的應(yīng)用前景</p><p>  方案三:DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實(shí)際要求通過簡

26、單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃;可編程 的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測溫,典型的轉(zhuǎn)換時(shí)間為200ms;用戶可以設(shè)定溫度的上下限;獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。DS1820具有測溫系統(tǒng)簡單、測溫精度

27、高、連接方便、占用口線少等優(yōu)點(diǎn),所以在測量領(lǐng)域得到廣泛的運(yùn)用。</p><p><b>  方案選擇</b></p><p>  現(xiàn)代傳感器在原理和結(jié)構(gòu)上千差萬別,如何根據(jù)具體的測量目的、測量對象以及測控環(huán)境合理地選擇傳感器,是單片機(jī)測控系統(tǒng)首先要解決的問題。當(dāng)傳感器選定后,與之相配套的測控電路也就可以確定了。測控結(jié)果的成敗,在很大程度上取決于傳感器的選擇是否合理。作

28、為單片機(jī)控制系統(tǒng)的前向通道的關(guān)鍵部件,在選擇傳感器時(shí)應(yīng)考慮以下幾個(gè)方面的:①根據(jù)測控對象與測控環(huán)境確定傳感器的類型;②靈敏度的選擇,通常情況下,在傳感器的線性范圍內(nèi),希望傳感器的靈敏度越高越好;③頻率響應(yīng)特性,頻率響應(yīng)特性決定了被測量的頻率范圍,頻率響應(yīng)好,可測信號的頻率范圍就越寬;④線性范圍,線性范圍越寬,其量程越大,并且能保證一定的精度;⑤穩(wěn)定性,穩(wěn)定性是指其性能保持不變化的能力;⑥精度的選擇,傳感器的精度越高,其價(jià)格越貴,因此傳感

29、器的精度只是滿足整個(gè)測控系統(tǒng)的精度要求就可以了,不必選得過高。</p><p>  方案的選擇即是傳感器的選擇。對比三種方案可以得知,方案一是采用模擬式溫度傳感器,方案二和方案三都采用數(shù)字式溫度傳感器。模擬式溫度傳感器輸出的是隨溫度變化的模擬量信號。其特點(diǎn)是輸出響應(yīng)速度較快和MPU接口復(fù)雜。熱敏電阻精度低,靈敏度高,價(jià)格最低。數(shù)字式溫度傳感器輸出的是隨溫度變化的數(shù)字量,更直觀,與模擬輸出相比,它輸出速度響應(yīng)較慢,

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

31、;/p><p><b>  硬件設(shè)計(jì)</b></p><p>  本節(jié)主要介紹系統(tǒng)中單片機(jī)STC89C52外圍電路重要模塊的功能和電路原理圖分析。并對電路中的核心器件進(jìn)行必要的說明。</p><p><b>  單元模塊設(shè)計(jì)</b></p><p><b>  時(shí)鐘和復(fù)位電路</b>

32、;</p><p>  圖3.1晶振電路 圖3.2 復(fù)位電路 </p><p>  單片機(jī)STC89C52使用的時(shí)鐘電路比較簡單,我們采用的是晶體振蕩器產(chǎn)生時(shí)鐘源。XTAL1(X1)為反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。XTAL2(X2)是來自反向振蕩器的輸出,分別接到單片機(jī)的19腳和18腳。為了方便使用其他晶振,

33、所以我們使用插座來安裝晶振,其電路原理圖如圖3.1所示。單片機(jī)復(fù)位電路的設(shè)計(jì)如圖3.2所示。該復(fù)位電路采用手動(dòng)復(fù)位與上電復(fù)位相結(jié)合的方式。當(dāng)按下按鍵S22時(shí),VCC通過R22電阻給復(fù)位輸入端口一個(gè)高電平,實(shí)現(xiàn)復(fù)位功能,即手動(dòng)復(fù)位這樣就不用在重起單片機(jī)電源。上電復(fù)位就是VCC通過電阻R2和電容C構(gòu)成回路,該回路是一個(gè)對電容C充電和放電的電路,所以復(fù)位端口得到一個(gè)周期性變化的電壓值,并且有一定時(shí)間的電壓值高于CPU復(fù)位電壓,實(shí)現(xiàn)上電復(fù)位功能

34、。</p><p><b>  報(bào)警電路</b></p><p><b>  圖3.3 報(bào)警電路</b></p><p>  報(bào)警電路用一個(gè)三極管驅(qū)動(dòng)一只蜂鳴器組成,驅(qū)動(dòng)信號由芯片的管腳IN1T控制。當(dāng)顯示的溫度不在設(shè)定的溫度范圍內(nèi),即不在TL與TH之間則驅(qū)動(dòng)蜂鳴器發(fā)聲報(bào)警,其電路如圖3.3所示。</p>&

35、lt;p><b>  數(shù)碼顯示電路</b></p><p>  圖3.4 數(shù)碼顯示電路</p><p>  數(shù)碼顯示電路主要作用是用來顯示實(shí)際的環(huán)境溫度值。通過單片機(jī)控制實(shí)現(xiàn)數(shù)碼管動(dòng)態(tài)顯示,即溫度值實(shí)時(shí)刷新。實(shí)際的電路中我們采用靜態(tài)驅(qū)動(dòng),這樣程序電路都比較簡單,顯示亮度也高,但占用的I/O口比較多。動(dòng)態(tài)驅(qū)動(dòng)需要增加譯碼驅(qū)動(dòng),增加了硬件的復(fù)雜性。P0口驅(qū)動(dòng)連接數(shù)碼

36、管的位碼,即選通8個(gè)數(shù)碼管;P2口驅(qū)動(dòng)連接數(shù)碼管的段碼,即輸出要顯示的溫度值。選通數(shù)碼管是通過P0口接上拉電阻再接三極管9012。由于9012是PNP型三極管,所以單片機(jī)選通某個(gè)片選時(shí)就給對應(yīng)的三極管一個(gè)低電平,此時(shí)三極管處于飽和區(qū),飽和導(dǎo)通就相當(dāng)于開關(guān)開路;反之高電平處于截止區(qū),截止可以當(dāng)作開關(guān)斷開。在數(shù)碼管動(dòng)態(tài)顯示中,只要掃描的時(shí)間足夠快,雖然在一個(gè)時(shí)刻只有一位數(shù)碼管發(fā)光,但卻可以看到8 位數(shù)碼管“同時(shí)”顯示的效果。電路原理圖如圖3

37、.4所示。</p><p><b>  電源電路</b></p><p>  圖3.5 5V電源電路</p><p>  電源電路主要是為系統(tǒng)提供電源,因?yàn)閱纹瑱C(jī)STC89C52需要供電5V,而外圍電路可以用5V電源。電路可以由電源變壓器T、電橋U、電容C以及芯片7805組成。電源是由電源變壓器T降壓后送入電橋U整流再經(jīng)C濾波,然后由CW78

38、05穩(wěn)定后提供給電路工作。由于我們需要在通過計(jì)算機(jī)下載程序,而USB輸出電壓也剛好是5V,所以我們?yōu)榱朔奖悴捎肬SB供電。原理圖如圖3.5所示。</p><p><b>  按鍵電路</b></p><p><b>  圖3.6 按鍵電路</b></p><p>  按鍵電路具體電路如圖3.7所示。在本次設(shè)計(jì)中,我們只用到

39、三個(gè)按鍵,分別為S18,S19,S20,由于S21用的是單片機(jī)P3.3口,而P3.3口是按鍵和蜂鳴器的復(fù)用口,為了簡便,我們沒有用到此按鍵。S18按鍵為調(diào)整鍵,此按鍵按下一次,則為調(diào)整上限值,按下兩次則為調(diào)整下限值,按下三次則將設(shè)定的上限值和下限值寫入到傳感器中,并恢復(fù)到正常測溫模式。S19為遞增按鍵,當(dāng)按下此鍵時(shí),上限值或下限值增加1,S20為遞減鍵,按下此鍵,上限值或下限值減少1 。</p><p><

40、b>  串口通信電路</b></p><p>  圖3.7 串行通信電路</p><p>  Max232是由德州儀器公司(TI)推出的一款兼容RS232標(biāo)準(zhǔn)的芯片。該器件包含2個(gè)驅(qū)動(dòng)器、2個(gè)接收器和一個(gè)電壓發(fā)生器電路提供TIA/EIA-232-F電平。該器件符合TIA/EIA-232-F標(biāo)準(zhǔn),每一個(gè)接收器將TIA/EIA-232-F電平轉(zhuǎn)換成5-V TTL/CMOS電平

41、。每一個(gè)發(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輸出。</p><p><b>  核心器件介紹</b></p><p>  單片

42、機(jī)STC89C52介紹</p><p>  單片機(jī)STC89C52RC是8位高性能MCU,超低功耗:掉電模式下典型功耗<0.1 LLA,空閑模式下典型功耗2 mA.正常工作模式下典型功耗4 7 mA 具有8kF1ash存儲器、512 kB RAM、2k E2pROM、降低EMI功能、ISP(在系統(tǒng)可編程)功能 單片機(jī)內(nèi)部的看門狗電路經(jīng)過特殊處理.是真正的看門狗.可放心省去外部看門狗 缺省為關(guān)閉.打開后無法關(guān)

43、閉,單倍速和雙倍速可反復(fù)設(shè)置。</p><p>  單片機(jī)STC89C52和各個(gè)模塊的接口主要是對STC89C52的I/O口進(jìn)行約束,規(guī)定其為輸出還是輸入,輸入主要是按鍵電路部分和時(shí)鐘,輸出則為報(bào)警和顯示部分,其I/O分配如下圖3.8所示。</p><p>  圖3.8單片機(jī)STC89C52 I/O接口電路</p><p><b>  DS18B20介紹&

44、lt;/b></p><p>  DS18B20是DALLAS公司生產(chǎn)的一線式傳感器,具有3引腳TO-92小體積封裝形式;溫度測量范圍為-55攝氏度到+125攝氏度,可編程為9到12位A/D轉(zhuǎn)換精度,測溫分辨率可達(dá)0.0625攝氏度,被側(cè)溫度用符號擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。CPU只需一根端口線就能與諸多DS18B20通信,占用問處理器的端口較少,可節(jié)

45、省大量的引線和邏輯電路。</p><p>  DS18B20主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH個(gè)TL、配置寄存器。DS18B20中的溫度傳感器可完成對溫度的測量,用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625攝氏度/LSB形式表達(dá),其中S為符號位。例如+125攝氏度的數(shù)字輸出為07DOH,+25.0625攝氏度的數(shù)字輸出為0191H,-25.0625攝氏度的數(shù)字輸

46、出為FF6FH,-55攝氏度的數(shù)字輸出為FC90H.</p><p>  DS18B20采用一線通信接口。因?yàn)橐痪€通信接口,必須在先完成ROM設(shè)定,否則記憶和控制功能將無法使用。主要首先提供以下功能命令之一:⑴讀ROM指令0X33, ⑵ROM匹配指令0X55,⑶搜索ROM指令0XF0, ⑷跳過ROM指令0XCC, ⑸報(bào)警檢查指令0XEC。這些指令操作作用在沒有一個(gè)器件的64位光刻ROM序列號。</p>

47、<p>  圖3.9 DS18B20的兩種封裝形式</p><p>  圖 3.10 DS18B20內(nèi)部結(jié)構(gòu)圖</p><p><b>  軟件設(shè)計(jì)</b></p><p>  軟件設(shè)計(jì)關(guān)鍵在于DS18B20的使用。DS18B20屬于單線式器件,它在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議,來對讀寫數(shù)據(jù)提出嚴(yán)格的時(shí)序要求

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

49、>  圖4.1主程序設(shè)計(jì)流程圖</p><p><b>  溫度采集模塊</b></p><p>  溫度采集包括初始化DS18B20子程序;讀DS18B20子程序;寫DS18B20子程序;獲得溫度子程序。DS18B20初始化需要這幾個(gè)過程先將數(shù)據(jù)線置高電平“1”,延時(shí)10 us;再將數(shù)據(jù)線拉到低電平“0” 延時(shí)500 us;然后再數(shù)據(jù)線拉到高電平“1”,高電平

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

51、。</p><p>  讀DS18B20也需要幾個(gè)流程:先將數(shù)據(jù)線拉高“1” 延時(shí)2us時(shí)間;再將數(shù)據(jù)線拉低“0” 延時(shí)10 us;然后將數(shù)據(jù)線拉高“1” 延時(shí)8us讀取1位數(shù)據(jù),讀取1位數(shù)據(jù)后延時(shí)50us時(shí)間;最后通過讀取1位右移1位循環(huán)進(jìn)行分別讀出8位即一個(gè)字節(jié)的數(shù)據(jù)。程序中我們把讀取的第一字節(jié)存templ中,讀取的第二字節(jié)存temph中。如果需要讀出設(shè)定的TH和TL值用于報(bào)警,這時(shí)也需將數(shù)據(jù)讀出。我們把讀取

52、的第3字節(jié)存tempth 即TH的值;把讀取的第4個(gè)字節(jié)存temptl即TL的值。由于讀出的數(shù)據(jù)時(shí)二進(jìn)制數(shù)顯示的時(shí)候是十進(jìn)制。所以必須將讀出的數(shù)據(jù)進(jìn)行處理。先判斷符號位將temph的高5位與0xf8相與就可以知道正負(fù)。若為負(fù)值f=1,將templ和temph取反。轉(zhuǎn)換的時(shí)候我們將小數(shù)部分和整數(shù)部分分別轉(zhuǎn)換,小數(shù)部分templ與0x0f相與后的值乘以625就是小數(shù)部分的值,需要注意的是小數(shù)部分的值是用整數(shù)形式表示的;整數(shù)部分temph左移

53、四位和 templ右移四位合并為一個(gè)字節(jié)就是整數(shù)部分的值。</p><p>  獲得溫度就是在前面操作的基礎(chǔ)上調(diào)用。先初始化DS18B20,發(fā)出跳過ROM匹配命令;再向DS18B20發(fā)溫度轉(zhuǎn)換命令顯示溫度,等待AD轉(zhuǎn)換,發(fā)跳過ROM匹配命令;最后發(fā)出讀溫度命令將讀出的溫度數(shù)據(jù)保存到tempint和tempdf處為顯示做準(zhǔn)備。</p><p>  下面兩個(gè)框圖為溫度采集流程圖和讀溫度兩個(gè)主要

54、的流程圖。</p><p>  圖4.2 溫度采集流程圖 </p><p>  溫度顯示模塊主要包括顯示溫度子程序和延遲子程序。顯示溫度即把讀出的溫度傳遞過來分別顯示。我們是將數(shù)碼分為各個(gè)位動(dòng)態(tài)掃描顯示。讀溫度程序中將小數(shù)部分和整數(shù)部分的值分別存放在tempint和tempdf中,符號位存放在f中。由于是分各個(gè)位顯示,所

55、以必須對數(shù)進(jìn)行取模運(yùn)算,C語言提供了整除和求余數(shù)運(yùn)算,兩者相結(jié)合就可以取出各個(gè)位的模。由于我們是用數(shù)碼管顯示,第一位顯示符號位,f=0表示正溫度用“0”表示,f=1表示負(fù)溫度用“-”表示,“-”值可以用0xbf送到數(shù)碼管顯示。第四個(gè)數(shù)碼管需要顯示小數(shù)位,我們采用查表的方法將要顯示的帶小數(shù)的數(shù)模放在ledmap1中,需要顯示的時(shí)候再調(diào)用;一般數(shù)模放在ledmap中。顯示的時(shí)候采用循環(huán)的方式進(jìn)行,先判斷符號位顯示在第一個(gè)數(shù)碼管,之后分別為百

56、位、十位、個(gè)位、個(gè)分位、十分位、百分位和千分位。先送位碼再送段碼,每一位顯示完后延遲2us時(shí)間。在數(shù)碼管動(dòng)態(tài)顯示中,由于掃描的時(shí)間足夠快,雖然在一個(gè)時(shí)刻只有一位數(shù)碼管發(fā)光,卻可以看到8 位數(shù)碼管“同時(shí)”顯示的效果。</p><p>  下圖為溫度顯示流程框圖。</p><p>  圖4.3 溫度顯示流程圖</p><p><b>  溫度設(shè)定模塊</

57、b></p><p>  溫度設(shè)定模塊主要由按鍵程序和顯示程序構(gòu)成。按鍵掃描電路掃描調(diào)整鍵S18是否按下,檢測到按鍵按下時(shí),延時(shí)1ms,再次檢測按鍵是否按下,若檢測到按下,才確定此按鍵,本設(shè)計(jì)中每個(gè)按鍵設(shè)計(jì)都運(yùn)用了防抖動(dòng)功能,避免抖動(dòng)產(chǎn)生的誤差。當(dāng)檢測到按鍵S18按下一次時(shí),顯示為設(shè)定的上限值,此時(shí)S19和S20分別遞增鍵和遞減鍵,在上限或下限沒超過125℃時(shí),每次檢測到按下時(shí)則上限值增加或減少1,并將bb

58、標(biāo)志位置1。當(dāng)S18被按下兩次時(shí),顯示為設(shè)定的下限值,此時(shí)S19和S20分別遞增鍵和遞減鍵,每次檢測到按下時(shí)則下限值增加或減少1,并將bb標(biāo)志位置2。當(dāng)S18被第三次按下時(shí),bb標(biāo)志位置3,此時(shí)恢復(fù)到正常的測溫模式,并將設(shè)定的上限值和下限值寫入到傳感器中。顯示程序顯示設(shè)定值的變化,當(dāng)bb為0時(shí),顯示測量到的溫度的值,當(dāng)bb為1時(shí),顯示上限值,并隨S19,S20按鍵按下的時(shí)上限值的變化而變化,當(dāng)bb為2是,顯示下限值,并隨S19,S20按

59、鍵按下時(shí)下限值的變化而變化。</p><p><b>  報(bào)警模塊</b></p><p>  報(bào)警模塊主要由由單片機(jī)輸出電平來驅(qū)動(dòng)蜂鳴器構(gòu)成。當(dāng)所測溫度超過設(shè)定的上限(TH值)或下限溫度(TL值)時(shí)置beepflag=1,表示溫度值越界。在調(diào)用報(bào)警子程序時(shí)先判斷beepflag的值,若為1則在蜂鳴器端口輸出低電平信號beep=0,蜂鳴器報(bào)警,延時(shí)1000us,蜂鳴器

60、報(bào)警持續(xù),再產(chǎn)生一個(gè)高電平信號beep=1,蜂鳴器停止報(bào)警,循環(huán)此過程,則蜂鳴器間隙性報(bào)警。在蜂鳴器報(bào)警的同時(shí),DS18B20處于正常測溫狀態(tài),并用數(shù)碼管顯示出來,并不斷閃爍。</p><p><b>  系統(tǒng)整合調(diào)試</b></p><p>  調(diào)試方法:寫好一段程序后不能急于上機(jī)調(diào)試,而是先進(jìn)行邏輯分析、可行性分析。用KeilμVision 2軟件進(jìn)行調(diào)試,不能出

61、現(xiàn)錯(cuò)誤,警告可以有,只要不影響生成HEX文件即可。理解其實(shí)現(xiàn)的功能,預(yù)想程序應(yīng)該出現(xiàn)的結(jié)果。先進(jìn)行軟件仿真,出現(xiàn)錯(cuò)誤馬上修改,不斷進(jìn)行。先一個(gè)模塊一個(gè)模塊的仿真,準(zhǔn)確后再連線總體仿真。仿真完后出現(xiàn)預(yù)期的效果后再下載程序到硬件進(jìn)行驗(yàn)證,往往還有問題,還得反復(fù)修改,編譯,調(diào)試,下載,驗(yàn)證??梢砸粋€(gè)模塊一個(gè)模塊的下載調(diào)試這樣就可以知道問題的所在。采用Proteus和Keil結(jié)合仿真的可以大大簡化軟、硬件電路的設(shè)計(jì)過程。</p>

62、<p><b>  硬件調(diào)試</b></p><p>  Proteus是英國Labeenter electronics公司研發(fā)的EDA工具軟件。Proteus不僅是模擬電路、數(shù)字電路、模/數(shù)混合電路的設(shè)計(jì)與仿真平臺,更是目前世界最先進(jìn)、最完整的多種型號微控制器系統(tǒng)的設(shè)計(jì)與仿真平臺。它真正實(shí)現(xiàn)了在計(jì)算機(jī)上完成從原理圖設(shè)計(jì)、電路分析與仿真、單片機(jī)代碼級調(diào)試與仿真、系統(tǒng)測試與功能驗(yàn)證到

63、形成PCB的完整電子設(shè)計(jì)與研發(fā)過程。Proteus產(chǎn)品系列也包含了革命性的VSM技術(shù),可以對基于微控制器的設(shè)計(jì)連同所有的外圍電子器件一起仿真。由于我們的設(shè)計(jì)外圍電路比較簡單實(shí)現(xiàn)的功能葉不是很復(fù)雜,所以在Proteus仿真時(shí)我們是將主程序直接下載到芯片中仿真,主要是驗(yàn)證是否采集到溫度還有溫度是否顯示正確。仿真可以在實(shí)物沒有出來前進(jìn)行先期的驗(yàn)證。最后加上我們的擴(kuò)展功能一起仿真調(diào)試。需要說明的是仿真正確不代表最后的下載程序不會出錯(cuò)。我們在下載

64、程序的時(shí)候也遇到一點(diǎn)小問題。比如在仿真的時(shí)候,三極管始終處于導(dǎo)通狀態(tài),后來通過努力解決了這個(gè)問題。</p><p>  在實(shí)物做出來之前,我們采用Proteus仿真調(diào)試,通過將軟件編譯通過的程序下載到畫好的仿真圖中,這樣便于檢查軟、硬件設(shè)計(jì)的不足。但是Proteus仿真也存在不足的情況,仿真模擬的是理想的環(huán)境,不會差生誤差但是實(shí)際的測試會出現(xiàn)一定的誤差。通過硬件仿真可以查找出硬件設(shè)計(jì)的不足。</p>

65、<p><b>  軟件調(diào)試</b></p><p>  KeilμVision 2是Keil公司關(guān)于8051系列MCU的開發(fā)工具,可以用來編譯C源碼、匯編源程序、連接和重定位目標(biāo)文件和庫文件、創(chuàng)建HEX文件、調(diào)試目標(biāo)程序等,是一種集成化的文件管理編譯環(huán)境。它集成了文件編輯處理、編譯連接、項(xiàng)目管理、窗口、工具引用和軟件仿真調(diào)試等多種功能,是相當(dāng)強(qiáng)大的開發(fā)工具。實(shí)驗(yàn)中我們采用Kei

66、lμVision 2來對我們編寫的程序進(jìn)行編譯、鏈接和生成HEX文件。在下載程序出錯(cuò)時(shí)進(jìn)行必要的調(diào)試,再下載驗(yàn)證。同時(shí)采用Proteus和Keil結(jié)合仿真的方法對設(shè)計(jì)的單片機(jī)測溫系統(tǒng)進(jìn)行了虛擬仿真和性能檢測,得到了比較好的仿真結(jié)果和分析結(jié)果。結(jié)果證明采用Proteus和Keil結(jié)合仿真的可以大大簡化硬件電路的設(shè)計(jì)過程,可以降低單片機(jī)系統(tǒng)的開發(fā)成本、提高效率和開發(fā)速度,具有很好的實(shí)際應(yīng)用和指導(dǎo)意義。</p><p>

67、;  軟件仿真的優(yōu)勢在于,可以設(shè)置斷點(diǎn)、單步運(yùn)行等,這在用實(shí)物調(diào)試是不能實(shí)現(xiàn)的,通過軟件仿真,可以知道程序哪兒出錯(cuò)了,便于及時(shí)改正。若直接下載在芯片中用實(shí)物調(diào)試,只能知道程序錯(cuò)了,只能去盲目查找程序的錯(cuò)誤之處。在程序的編寫之中難免會出現(xiàn)一些無法錯(cuò)誤,用KeilμVision 2編譯會得到及時(shí)的提示,方便立即修改,大大縮短了設(shè)計(jì)的時(shí)間,提高設(shè)計(jì)效率。</p><p>  在設(shè)計(jì)初期,我們通過軟件仿真發(fā)現(xiàn)了很多錯(cuò)誤,

68、比如語法錯(cuò)誤,亂碼,字符閃爍問題,后來這些問題都一一克服,語法錯(cuò)誤一樣是缺少括號,亂碼是由于共陰、共陽譯碼的錯(cuò)誤,還有就是由于人眼的“滯留”問題,必須要位選,在進(jìn)行譯碼。字符閃爍一般是由于延時(shí)過短等問題。這些問題都是通過軟件調(diào)試找出來的,從而說明軟件調(diào)試的必要性。</p><p><b>  系統(tǒng)功能、指標(biāo)參數(shù)</b></p><p><b>  系統(tǒng)功能&

69、lt;/b></p><p>  本設(shè)計(jì)實(shí)現(xiàn)的主要功能是通過DS18B20溫度傳感器采集溫度并通過8位七段數(shù)碼管顯示所測溫度,可顯示零度以下溫度,溫度測量范圍為-55℃-128℃,后四位顯示小數(shù)位。可以精確到小數(shù)點(diǎn)后4位,測量精度為0.0625℃, 并可以產(chǎn)生報(bào)警。通過三個(gè)按鍵的配合使用可以設(shè)定溫度報(bào)警的上限值和下限值,當(dāng)所測的溫度超過所設(shè)定的上限或下限溫度時(shí)產(chǎn)生報(bào)警信號,在報(bào)警的同時(shí),系統(tǒng)處于正常的測溫模

70、式,當(dāng)溫度回到所設(shè)定的范圍時(shí),報(bào)警停止。 </p><p>  系統(tǒng)指標(biāo)參數(shù)測試 </p><p>  下圖是采用Proteus軟件對本系統(tǒng)溫度測量范圍的仿真,仿真模擬溫度輸入為-55℃,系統(tǒng)8位七段顯示數(shù)碼管顯示的也為-55℃,由于仿真軟件不考慮測量誤差,所以測量的溫度沒有誤差,做出的實(shí)物出現(xiàn)了一點(diǎn)誤差,但誤差在允許的范圍內(nèi)。</p><p>  圖6

71、. 1 對系統(tǒng)測量最低溫度仿真</p><p>  下圖是采用Proteus軟件對本系統(tǒng)溫度測量范圍的仿真,仿真模擬溫度輸入為127℃,系統(tǒng)8位七段顯示數(shù)碼管顯示的為127℃,本系統(tǒng)的測量溫度上限為128℃,若測量的溫度等于128℃,系統(tǒng)則輸出一個(gè)負(fù)數(shù),這是由于DS18B20傳感器的對數(shù)據(jù)的處理所引起的,當(dāng)所測的溫度剛好為128時(shí),128用二進(jìn)制表示為11111111,本傳感器處理數(shù)據(jù)的高五位為符號位,當(dāng)出現(xiàn)1

72、1111111時(shí),系統(tǒng)默認(rèn)所測溫度為負(fù)數(shù)。</p><p>  圖6.2 對系統(tǒng)測量最高溫度仿真</p><p>  通過以上兩個(gè)仿真驗(yàn)證了本系統(tǒng)的溫度測量范圍,由于軟件仿真對報(bào)警的仿真不容易觀察,也不太容易記錄,所以我們對報(bào)警沒有通過軟件仿真,而是通過對事物的調(diào)試來實(shí)現(xiàn)。由于對溫度上下限的設(shè)定是一個(gè)動(dòng)態(tài)的實(shí)現(xiàn),所以我們也是通過實(shí)物演示來實(shí)現(xiàn)。</p><p>  

73、系統(tǒng)功能及指標(biāo)參數(shù)分析</p><p>  本設(shè)計(jì)滿足實(shí)驗(yàn)要求,可以測量的溫度范圍是-55℃-128℃,并通過8位七段數(shù)碼管顯示,顯示的第一位為符號位,后四位為小數(shù)位,由于DS18B20的分辨率很高,其固有分辨率為0.5℃,最高可達(dá)0.0625℃,所以本系統(tǒng)的分辨率為0.0625℃。在本設(shè)計(jì)中,我們充分利用了DS18B20的具有TH、TL寄存器的優(yōu)勢,通過對TH,TL寄存器進(jìn)行賦值,可以實(shí)現(xiàn)設(shè)定溫度范圍,這樣可以

74、使本系統(tǒng)不僅具有測溫的功能,還具備超過溫度范圍報(bào)警的功能,這樣的設(shè)計(jì)在實(shí)際工程中運(yùn)用更加廣泛。在設(shè)計(jì)中,我們通過鍵盤可以設(shè)定溫度的上下限報(bào)警范圍,并將設(shè)定的上下限的的值寫入到寄存器中,刷新上次寫入的值,便于隨時(shí)調(diào)節(jié)的報(bào)警上限范圍。</p><p><b>  結(jié)論</b></p><p>  經(jīng)過將近四周的智能化課程設(shè)計(jì),終于完成了我們的數(shù)字溫度計(jì)的設(shè)計(jì)。不僅完全達(dá)到

75、設(shè)計(jì)要求溫度的采集和顯示,還在此基礎(chǔ)上增加了擴(kuò)展功能超溫報(bào)警,就是采集的溫度不在我們自己設(shè)定的范圍內(nèi)時(shí)驅(qū)動(dòng)蜂鳴器輸出報(bào)警信號。不僅利用Proteus完成了硬件仿真,還把實(shí)物都做了出來,并下載程序驗(yàn)證成功,高興之余不得不深思呀!</p><p>  在本次設(shè)計(jì)的過程中,我們發(fā)現(xiàn)很多的問題。比如在硬件仿真時(shí)往往出現(xiàn)亂碼的情況,原因在于共陽數(shù)碼管和共陰數(shù)碼管顯示時(shí)所送的段碼是不一樣的,所以我們將段碼取反,但仍然沒有成功

76、,網(wǎng)上查閱資料找到問題的關(guān)鍵在于如果采用動(dòng)態(tài)掃描的方法,控制程序先送段碼再送位碼,由于人眼的“滯留”效應(yīng),將會產(chǎn)生亂碼現(xiàn)象;為了讓顯示器不顯示亂碼,其控制程序要么在每次顯示更新前先關(guān)閉顯示器再送段位及位碼,要么先送位碼再送段碼,都可解決這一問題。所以我們采用先送位碼再送段碼的方法解決了此問題。智能化課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),雖然以前還做過這樣的設(shè)計(jì)但這次設(shè)計(jì),但都比較簡單程序也不是很長也不需要有很巧妙的程序算法。這次軟件設(shè)計(jì)中讓

77、我充分理解到了利用子程序的好處。在設(shè)計(jì)中也遇到很多問題比如溫度轉(zhuǎn)化的時(shí)候我們的程序看起來是合乎邏輯的但始終沒有小數(shù)部分的值,經(jīng)過多次調(diào)試修改終于顯示成功。還有很多下問題則不必累述。下載程序驗(yàn)證的時(shí)候也出現(xiàn)問題,并沒有顯示實(shí)際的溫度,全是“0”,究其原因在于參數(shù)傳遞并沒有傳遞到顯示程序中。</p><p>  在這次的智能化課程設(shè)計(jì)中,雖然我們已經(jīng)做出結(jié)果,但仍然有很多問題未得到解決。一是Proteus仿真正確但下

78、載到實(shí)際的電路板中卻存在問題。二是當(dāng)我們增加了擴(kuò)展功能溫度報(bào)警后,溫度的分辨率卻減小了由原來的12位減小到9位,通過修改仍沒有解決。三是小組聯(lián)合調(diào)試沒有完成。我們可以將采集的溫度放到24C02存儲,在輸出在液晶屏上顯示,還可以利用采集的溫度大小來控制電機(jī)的轉(zhuǎn)速等等。希望以后有機(jī)會再次深入學(xué)習(xí)。這次設(shè)計(jì)讓我真真正正的意識到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫與讀的過程

79、中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。</p><p><b>  總結(jié)與體會</b></p><p>  就此次設(shè)計(jì)來看,我們所設(shè)計(jì)的電子體溫計(jì)原理電路較為簡單,此電路設(shè)計(jì)用到了一個(gè)單片機(jī)STC89C52、DS18B20、電阻、電源和簡單的外圍電路,因此設(shè)計(jì)的核心就是芯片DS18B20。由于此前對此芯片缺乏了解,所以此次設(shè)計(jì)的難點(diǎn)在編程,通過搜集和閱讀DS

80、18B20的資料,以及本組成員的編譯和數(shù)天調(diào)試,攻克了程序設(shè)計(jì)的難題,使此次的課程設(shè)計(jì)取得突破性的成功。DS18B20 是一種傳感器精度高、互換性好;它直接將溫度數(shù)據(jù)進(jìn)行編碼,可以只使用一根電纜傳輸溫度數(shù)據(jù),通信方便,傳輸距離遠(yuǎn)且抗干擾性好的數(shù)字溫度傳感器。所構(gòu)成的系統(tǒng)以簡單,且系統(tǒng)擴(kuò)充維護(hù)十分方便。DS18B20 可以廣泛用于工廠工業(yè)過程、大型糧倉、釀酒廠,食品加工廠的溫度檢測以及賓館、儀器儀表室等處的溫度檢測和控制.</p&g

81、t;<p>  在軟件基本實(shí)現(xiàn)的情況下,我們做出實(shí)驗(yàn)電路板,下載程序進(jìn)行調(diào)試,實(shí)現(xiàn)了溫度的顯示的基本功能,后進(jìn)行程序改進(jìn),擴(kuò)展了功能,實(shí)現(xiàn)溫度上下線的設(shè)置和溫度報(bào)警功能。通過這次智能化設(shè)計(jì)使我學(xué)習(xí)到了很多的東西,不僅加深了對專業(yè)知識的理解,而且更好地把理論知識與實(shí)踐相結(jié)合,提高了自身的動(dòng)手能力和實(shí)踐水平,增強(qiáng)了學(xué)習(xí)單片機(jī)系統(tǒng)開發(fā)與設(shè)計(jì)的興趣。</p><p>  經(jīng)過近一個(gè)月的緊張忙碌,我們的課程設(shè)

82、計(jì)也幾近結(jié)束。此次課程設(shè)計(jì),我們不僅實(shí)現(xiàn)了軟件平臺上的仿真,而且還做出了實(shí)物,經(jīng)過調(diào)試改進(jìn),實(shí)現(xiàn)了一些硬件功能。理論聯(lián)系實(shí)際,讓我們在實(shí)踐中去更好的理解和運(yùn)用我們所學(xué)到的知識,獲益匪淺。在此設(shè)計(jì)期間,老師給了我們很大的幫助,衷心感謝我們的指導(dǎo)教師王維博老師,老師在設(shè)計(jì)和調(diào)試的各個(gè)階段給了我們很大的寶貴意見和悉心指導(dǎo)。同時(shí)感謝我們的小組成員,大家發(fā)揮各自所長,分工協(xié)作,使我們的設(shè)計(jì)能夠有條不紊,高效率的進(jìn)行,團(tuán)隊(duì)合作給了我們設(shè)計(jì)很大的推動(dòng)

83、力。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 于永.51單片機(jī)C語言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講[M].北京:電子工業(yè)出版社,2008</p><p>  [2] 戴永成等.基于DS18B20的數(shù)字溫度測量儀[J].北華航天工業(yè)學(xué)院學(xué)報(bào),2008</p><p>  [3] 甘勇等.

84、 數(shù)字溫度傳感器DS18B20 在多點(diǎn)測溫系統(tǒng)中的應(yīng)用. 河南農(nóng)業(yè)大學(xué)學(xué)報(bào),2001</p><p>  [4] 張?jiān)降?基于DS18B20溫度傳感器的數(shù)字溫度計(jì)[J].微電子學(xué),2007</p><p>  [5] 李朝青.單片機(jī)原理及接口技術(shù)(簡明修訂版).杭州:北京航空航天大學(xué)出版社,1998</p><p>  [6] 黃河.基于DS18B20的單總線數(shù)字溫

85、度計(jì)[J].湘潭師范學(xué)院學(xué)報(bào),2008</p><p>  [7] 李廣弟.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,1994</p><p>  [8] 王建強(qiáng)等.基于DSP控制器與DS18B20的溫度測量方法[J]. 儀器儀表與檢測技術(shù),2009</p><p>  [9] 雷建龍等.數(shù)碼管動(dòng)態(tài)顯示亂碼現(xiàn)象分析[J].液晶與顯示,2009</p&

86、gt;<p>  [10] 孫安清等.AT89S52單片機(jī)實(shí)驗(yàn)與實(shí)踐教程[M].單片機(jī)實(shí)驗(yàn)板配套教程</p><p>  [11] 趙亮等.單片機(jī)C語言編程和實(shí)例[M].人民郵電出版社,2003</p><p>  [12] 張毅剛等.單片機(jī)原理及運(yùn)用[M].高等教育出版社,2003</p><p>  附錄一:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)原理圖

87、 </p><p>  附錄二:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)PCB圖</p><p>  附錄三:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)的實(shí)物圖</p><p>  實(shí)際 實(shí)際測得溫度</p><p><b>  報(bào)警上限值&

88、lt;/b></p><p><b>  報(bào)警下限值</b></p><p>  附錄四:基于DS18B20數(shù)字溫度計(jì)的設(shè)計(jì)C語言程序</p><p>  #include <reg52.h></p><p>  #include <math.h> //Keil library <

89、/p><p>  #include <stdio.h> //Keil library</p><p>  #include <INTRINS.H></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p>&l

90、t;p>  #define display1 0xfe //數(shù)碼管1從左至右</p><p>  #define display2 0xfd //數(shù)碼管2從左至右</p><p>  #define display3 0xfb //數(shù)碼管3從左至右</p><p>  #define display4 0xf7//數(shù)碼管4從左至右

91、</p><p>  #define display5 0xef //數(shù)碼管5從左至右</p><p>  #define display6 0xdf//數(shù)碼管6從左至右</p><p>  #define display7 0xbf//數(shù)碼管7從左至右</p><p>  #define display8 0x7f//數(shù)碼管

92、8從左至右</p><p>  sbit DQ=P3^6; //根據(jù)實(shí)實(shí)際情況設(shè)定</p><p>  sbit setth=P1^0; //設(shè)定 th </p><p>  sbit up=P1^1; //加 </p><p>

93、;  sbit down=P3^2; //減 </p><p>  sbit beep= P3^3;//根據(jù)實(shí)實(shí)際情況設(shè)定</p><p>  uchar tempint,f,bb,tempth,settem//溫度整數(shù)部分和小數(shù)部分</p><p>  int tempdf,c;</p>&l

94、t;p>  code unsigned char ledmap[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0xbf};</p><p>  code unsigned char ledmap1[]={0x40,0x79,0x24,0x30,

95、 0x19,0x12,0x02,0x78,0x00,0x10};</p><p>  void set_ds18b20(); //初始化DS18B20子程序</p><p>  void get_temperature(); //獲得溫度子程序</p><p>

96、;  void read_ds18b20(); //讀DS18B20子程序</p><p>  void write_ds18b20(uchar command); //向DS18B20寫1字節(jié)子程序</p><p>  void delayms(uchar count); //延時(shí)count毫秒子程序</p>&

97、lt;p>  void disp_temp(tempint,tempdf); //顯示溫度子程序</p><p>  //*****初始化DS18B20子程序******</p><p>  //******************************</p><p>  void set_ds18b20()</p><p>

98、;<b>  {</b></p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  uchar delay,flag;</p><p><b>  flag=0;</b></p>&l

99、t;p><b>  DQ=1;</b></p><p><b>  delay=1;</b></p><p>  while(--delay);</p><p>  DQ=0; </p><p>  delay=250;</p><p>  w

100、hile(--delay); DQ=1; </p><p><b>  delay=30;</b></p><p>  while(--delay); </p><p>  while(DQ==0) </p><p>&

101、lt;b>  {</b></p><p>  delay=210; </p><p>  while(--delay);</p><p>  if(DQ) {</p><p>  flag=1; </p><p><b&

102、gt;  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag) </p><p><b>  {</b></p><p>

103、  delay=240;</p><p>  while(--delay);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

104、;/b></p><p>  //******獲得溫度子程序**********</p><p>  //******************************</p><p>  void get_temperature() </p><p><b>  {</b></p>

105、<p>  set_ds18b20(); </p><p>  write_ds18b20(0xcc); </p><p>  write_ds18b20(0x44); </p><p>  disp_temp(tempint,tempdf); </p><p&

106、gt;  set_ds18b20();</p><p>  write_ds18b20(0xcc); </p><p>  write_ds18b20(0xbe); //發(fā)出讀溫度命令</p><p>  read_ds18b20(); </p><p><b>  }</b

107、></p><p>  //*****讀DS18B20子程序**********</p><p>  //******************************</p><p>  void read_ds18b20()</p><p><b>  {</b></p><p>  uc

108、har delay,i,j,k,temp,temph,templ;</p><p>  float wendu;</p><p>  j=4; </p><p><b>  do</b></p><p><b>  {</b></p>

109、<p>  for(i=8;i>0;i--) </p><p><b>  {</b></p><p>  temp>>=1; </p><p>  DQ=0; </p><p><b>  

110、delay=1;</b></p><p>  while(--delay);</p><p>  DQ=1; </p><p><b>  delay=4;</b></p><p>  while(--delay); //延時(shí)8us</p>&

111、lt;p>  if(DQ) </p><p>  temp|=0x80; </p><p>  delay=25; </p><p>  while(--delay);</p><p><b>  }</b></p><p

溫馨提示

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

最新文檔

評論

0/150

提交評論