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

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  編號(hào): </p><p><b>  課程設(shè)計(jì)說(shuō)明書</b></p><p><b>  (基礎(chǔ)工程設(shè)計(jì))</b></p><p>  題 目:基于單片機(jī)的溫度警報(bào)系統(tǒng) </p><p>  學(xué) 院: 信息與通信學(xué)院

2、</p><p>  專 業(yè): 通信工程 </p><p>  學(xué)生姓名: </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p&g

3、t;<p>  職 稱: </p><p>  題目類型: 理論研究 實(shí)驗(yàn)研究 工程設(shè)計(jì) 工程技術(shù)研究 軟件開發(fā)</p><p>  2016 年 12 月 20 日</p><p><b>  摘  要</b></p><p>

4、  在我國(guó)的現(xiàn)代化進(jìn)程中,對(duì)很多的外界溫度的測(cè)量不再憑人為感官,而是更多的依靠數(shù)字的直接體現(xiàn)。溫度直觀的數(shù)字體現(xiàn)對(duì)于工業(yè)生產(chǎn)、疾病診斷、用電安全等方面有著很重要的作用。對(duì)于一定區(qū)域內(nèi)的溫度失控及時(shí)的發(fā)出警報(bào),讓損失降到最低,不讓災(zāi)難的范圍擴(kuò)大。</p><p>  本文介紹了基于STC89C52單片機(jī)、DS18B20溫度傳感器的溫度警報(bào)器的設(shè)計(jì)。使用LCD液晶顯示屏實(shí)時(shí)顯示當(dāng)前溫度。還擁有可調(diào)節(jié)上下限溫度按鍵,當(dāng)

5、溫度失控時(shí)(即超出監(jiān)控的溫度區(qū)間)及時(shí)發(fā)出警報(bào)。</p><p>  關(guān)鍵詞:STC89C52單片機(jī);DS18B20溫度傳感器;溫度警報(bào)</p><p><b>  目  錄</b></p><p><b>  引言1</b></p><p>  1 課程設(shè)計(jì)的要求1</p>&

6、lt;p><b>  2 設(shè)計(jì)方案1</b></p><p>  2.1 可控門限溫度警報(bào)器的設(shè)計(jì)分析1</p><p>  2.2 各模塊方案選擇與論證1</p><p>  3 硬件及其關(guān)鍵技術(shù)介紹3</p><p>  3.1 電路設(shè)計(jì)3</p><p>  3.2單片機(jī)

7、最小系統(tǒng)的設(shè)計(jì)4</p><p><b>  4 軟件設(shè)計(jì)9</b></p><p>  4.1 主程序流程圖9</p><p>  4.2 電路仿真圖10</p><p>  5 性能測(cè)試10</p><p>  5.1 測(cè)試用例10</p><p>  

8、5.2 測(cè)試結(jié)果分析11</p><p>  5.3 測(cè)試過(guò)程錯(cuò)誤分析11</p><p>  6 設(shè)計(jì)總結(jié)11</p><p><b>  謝 辭13</b></p><p><b>  參考文獻(xiàn)14</b></p><p><b>  附 錄1

9、5</b></p><p><b>  引言</b></p><p>  在眾多場(chǎng)合需要用到溫度報(bào)警器。例如變壓器超溫報(bào)警、冰箱溫度異常、環(huán)境溫度監(jiān)測(cè)、配電柜溫度監(jiān)測(cè)、蔬菜大棚等地方都可應(yīng)用。本次設(shè)計(jì)基于溫度傳感器和單片機(jī)實(shí)現(xiàn)了在一個(gè)溫度區(qū)間內(nèi)的監(jiān)控,提供了警報(bào)和顯示功能。其研究具有一定的學(xué)術(shù)價(jià)值和廣泛的市場(chǎng)前景。</p><p>

10、  1 課程設(shè)計(jì)的要求</p><p>  本設(shè)計(jì)采用STC89C52單片機(jī)為核心,結(jié)合液晶顯示屏1602和溫度傳感器18B20等外圍電路,通過(guò)程序組成一個(gè)溫度報(bào)警器,使其具有如下功能。</p><p><b>  具體要求有:</b></p><p>  能夠?qū)崟r(shí)顯示當(dāng)前溫度</p><p>  能夠用按鍵調(diào)節(jié)上下限

11、溫度</p><p>  超出所監(jiān)控的溫度區(qū)間發(fā)出警報(bào)</p><p><b>  2 設(shè)計(jì)方案</b></p><p>  2.1 可控門限溫度警報(bào)器的設(shè)計(jì)分析</p><p>  本文介紹的是采用數(shù)字溫度傳感器作為敏感元件的溫度警報(bào)器,當(dāng)溫度超出或低于所給的溫度區(qū)間時(shí),會(huì)發(fā)出警報(bào)聲以及相應(yīng)的燈會(huì)亮,溫度過(guò)高時(shí)蜂鳴器

12、發(fā)出混濁的聲響及紅燈亮,溫度過(guò)低時(shí)蜂鳴器發(fā)出尖銳的聲響及綠燈亮。此次設(shè)計(jì)的溫度區(qū)間可通過(guò)按鍵調(diào)節(jié)。</p><p>  2.2 各模塊方案選擇與論證</p><p>  2.2.1 單片機(jī)的選擇</p><p>  方案一:采用STC89C52單片機(jī)。STC89C52單片機(jī)是STC公司生產(chǎn)的低功耗,高可靠的單片機(jī),是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈

13、活性高且價(jià)廉的方案。它具有8K字節(jié)可編程FLASH存儲(chǔ)器(次數(shù):100,000次以上),512位內(nèi)部RAM,兩個(gè)16B定時(shí)/計(jì)數(shù)器,低功耗的閑置和掉電模式且支持在線仿真。用STC提供的STC-ISP.exe工具可將原有的代碼下載進(jìn)STC相關(guān)的單片機(jī),或用通用編程器編程。STC89C52芯片功能強(qiáng)大,內(nèi)部超級(jí)加密,,利用ISP技術(shù)寫入程序,無(wú)讀出命令,無(wú)法解密,可靈活應(yīng)用于各種控制領(lǐng)域且價(jià)格便宜。</p><p>

14、  方案二:采用陵陽(yáng)61單片機(jī)(SPCE061A)。該單片機(jī)有32位通用可編程輸入/輸出端口,2個(gè)10位DAC(數(shù)-模轉(zhuǎn)換)輸出通道,7通道10位電壓模-數(shù)轉(zhuǎn)換器(ADC)和單通道語(yǔ)音模-數(shù)轉(zhuǎn)換器。具有RAM、ROM空間大、指令周期短、運(yùn)算速度快、低功耗、低電壓等特點(diǎn),其中聲音模-數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器自動(dòng)增益控制(AGC)功能:可編程音頻處理,使用凌陽(yáng)音頻編碼SACM_S240方式(2.4K位/秒),能容納210秒的語(yǔ)音數(shù)據(jù)

15、,但價(jià)格昂貴。</p><p>  綜上所述,由于方案一價(jià)格低廉,本系統(tǒng)程序小,儲(chǔ)存器容量小,能實(shí)現(xiàn)系統(tǒng)功能,故采用方案一。</p><p>  2.2.2按鍵的選擇</p><p>  按鍵控制采用獨(dú)立式按鍵,直接在單片機(jī)的I/O口上接上按鍵。如圖所示:</p><p><b>  圖2-1 獨(dú)立按鍵</b></

16、p><p>  key0實(shí)現(xiàn)溫度減一操作;key1具有兩個(gè)功能:1.切換當(dāng)前操作上/下限溫度狀態(tài),2.實(shí)現(xiàn)溫度加一操作。</p><p>  2.2.3顯示方案的選擇</p><p>  方案一:采用傳統(tǒng)的數(shù)碼管顯示。數(shù)碼管具有低壓低耗能、壽命長(zhǎng)、對(duì)外界環(huán)境要求低等特點(diǎn),而且其精度比較高。采用BCD編碼方式顯示數(shù)字,程序編譯簡(jiǎn)單,但占用I/O接口較多。</p>

17、;<p>  方案二:采用MZLH01-12864顯示。MZLH01-12864為一塊128×64點(diǎn)陣的LCD顯示模組,模組自帶兩種字號(hào)的二級(jí)漢字庫(kù),并且自帶基本繪圖GUI功能,包括畫點(diǎn)、畫直線、矩形、圓形等;此外還自帶有兩種字號(hào)的ASCII碼西文字庫(kù)。模組上為串行SPI接口,電源和背光之外通信僅需要連接一根從機(jī)選擇線(SS)、一根時(shí)鐘線(SCK)、一根數(shù)據(jù)線(SDA)以及一根BUSY線即可;但價(jià)格昂貴,有很多功

18、能沒(méi)有用到,很浪費(fèi)。</p><p>  方案三:采用LCD1602顯示,LCD1602是一種用5×7點(diǎn)陣圖形或5×10圖形來(lái)顯示字符的液晶顯示器。LCD1602有明顯的優(yōu)點(diǎn):微功耗、尺寸小、超薄輕巧、顯示信息量大、字跡清晰、顯示穩(wěn)寫美觀。但LCD1602不能顯示中文字符,但并不影響本市計(jì)的要求。</p><p>  權(quán)衡利弊,采用第三種方案來(lái)實(shí)現(xiàn)本溫度警報(bào)器的顯示功能

19、。</p><p>  2.2.4溫度傳感器的選擇</p><p>  方案一:采用pt100溫度傳感器。pt100溫度傳感器是一種將溫度變量轉(zhuǎn)換為可傳送的標(biāo)準(zhǔn)化輸出信號(hào)的儀表。主要用于工業(yè)過(guò)程溫度參數(shù)的測(cè)量和控制。帶傳感器的變送器通常由兩部分組成:傳感器和信號(hào)轉(zhuǎn)換器。傳感器主要是熱電偶或熱電阻;信號(hào)轉(zhuǎn)換器主要由測(cè)量單元、信號(hào)處理和轉(zhuǎn)換單元組成(由于工業(yè)用熱電阻和熱電偶分度表是標(biāo)準(zhǔn)化的,因

20、此信號(hào)轉(zhuǎn)換器作為獨(dú)立產(chǎn)品時(shí)也稱為變送器),有些變送器增加了顯示單元,有些還具有現(xiàn)場(chǎng)總線功能。</p><p>  方案二:采用DS18B20數(shù)字溫度傳感器。DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場(chǎng)合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號(hào)多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場(chǎng)合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測(cè)溫,高爐水循環(huán)測(cè)溫,鍋爐測(cè)溫

21、,機(jī)房測(cè)溫,農(nóng)業(yè)大棚測(cè)溫,潔凈室測(cè)溫,彈藥庫(kù)測(cè)溫等各種非極限溫度場(chǎng)合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。</p><p>  考慮到成本及易使用性,選擇方案二DS18B20作為本次設(shè)計(jì)的溫度傳感器。</p><p>  3 硬件及其關(guān)鍵技術(shù)介紹</p><p><b>  3.1 電路設(shè)計(jì)</b&g

22、t;</p><p>  溫度警報(bào)器的基本框圖如下:</p><p>  圖3-1 溫度警報(bào)基本框圖</p><p>  單片機(jī)將溫度傳感器中的溫度數(shù)據(jù)讀取出來(lái),并在LCD上實(shí)時(shí)顯示。通過(guò)按鍵來(lái)調(diào)節(jié)所要監(jiān)控的溫度區(qū)間,當(dāng)溫度發(fā)生失控時(shí)警報(bào)電路作出相應(yīng)的反應(yīng)。</p><p>  3.2單片機(jī)最小系統(tǒng)的設(shè)計(jì)</p><p&g

23、t;  單片機(jī)最小系統(tǒng)電路原理圖如圖:</p><p>  圖3-2 單片機(jī)最小系統(tǒng)電路原理圖</p><p>  該單片機(jī)最小系統(tǒng)有復(fù)位電路和晶振電路等。為了給單片機(jī)供電和方便程序下載到單片機(jī)中,設(shè)計(jì)了STC下載電路。</p><p>  3.2.1 STC89C51單片機(jī)</p><p>  STC89C52片內(nèi)含有Flash程序存儲(chǔ)器、

24、SRAM、UART、SPI、A\D、PWM等模塊。該器件的基本功能與普通的51單片機(jī)完全兼容。</p><p><b>  主要特性:</b></p><p>  1.內(nèi)置標(biāo)準(zhǔn)51內(nèi)核,機(jī)器周期:增強(qiáng)型為6時(shí)鐘,普通型為12時(shí)鐘; </p><p>  2.工作頻率范圍:0~40MHZ,相當(dāng)于普通8051的0~80MHZ; </p>

25、<p>  3.STC89C5xRC對(duì)應(yīng)Flash空間:4KB\8KB\15KB; </p><p>  4.內(nèi)部存儲(chǔ)器(RAM):512B; </p><p>  5.定時(shí)器\計(jì)數(shù)器:3個(gè)16位; </p><p>  6.通用異步通信口(UART)1個(gè); </p><p>  7.中斷源:8個(gè); </p>&l

26、t;p>  8.有ISP(在系統(tǒng)可編程)\IAP(在應(yīng)用可編程),無(wú)需專用編程器\仿真器; </p><p>  9.通用I\O口:32\36個(gè); </p><p>  10.工作電壓:3.8~5.5V; </p><p>  11.XTAL2(18腳)、XTAL1(19腳):使用內(nèi)部振蕩器時(shí),用來(lái)外接石英晶體和電容。晶振電路的電路原理圖如下:</p&g

27、t;<p>  圖3-3 晶振電路原理圖</p><p>  12.RST(9腳):復(fù)位輸入端。使RST=1時(shí),單片機(jī)內(nèi)部復(fù)位為初始狀態(tài)。復(fù)位電路的電路圖如下:</p><p>  圖3-4 復(fù)位電路原理圖</p><p>  52系列單片機(jī)為許多控制提供了高度靈活和低成本的解決方法。充分利用它的片仙資源,即可在較少外圍電路的情況下構(gòu)成功能完善的溫度警

28、報(bào)器。</p><p>  3.2.2 DS18B20 溫度傳感器</p><p>  DS18B20的特性:</p><p>  獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。</p><p>  測(cè)溫范圍 -55℃~+125℃,固有測(cè)溫誤差(注意,不是分辨率,這里之前是錯(cuò)誤的

29、)1℃。</p><p> ?、壑С侄帱c(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個(gè),實(shí)現(xiàn)多點(diǎn)測(cè)溫,如果數(shù)量過(guò)多,會(huì)使供電電源電壓過(guò)低,從而造成信號(hào)傳輸?shù)牟环€(wěn)定。</p><p>  工作電源: 3.0~5.5V/DC (可以數(shù)據(jù)線寄生電源)</p><p>  在使用中不需要任何外圍元件</p><p>  測(cè)量結(jié)

30、果以9~12位數(shù)字量方式串行傳送</p><p>  不銹鋼保護(hù)管直徑 Φ6</p><p>  適用于DN15~25, DN40~DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測(cè)溫</p><p>  標(biāo)準(zhǔn)安裝螺紋 M10X1, M12X1.5, G1/2”任選</p><p> ?、?PVC電纜直接出</p><p>

31、  DS18B20溫度傳感器時(shí)序圖:</p><p>  此處的主控器為單片機(jī)</p><p>  圖3-5 復(fù)位時(shí)序圖</p><p><b>  圖3-6 寫時(shí)序圖</b></p><p><b>  圖3-7 讀時(shí)序圖</b></p><p>  3.2.3 LCD液晶

32、屏</p><p>  1602字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來(lái)的2條線是背光電源線</p><p>  VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣,其中:</p><p>  圖 3-8 液晶屏引腳圖</p><p>  表3-1 引腳功能說(shuō)明表</p><p&

33、gt;  表3-2 寄存器選擇控制表</p><p>  注:關(guān)于E=H脈沖——開始時(shí)初始化E為0,然后置E為1,再清0.</p><p>  busy flag(DB7):在此位為1時(shí),LCD忙,將無(wú)法再處理其他的指令要求。</p><p><b>  讀寫時(shí)序圖:</b></p><p>  圖3-9 LCD讀時(shí)序圖

34、</p><p>  3.2.4 可調(diào)溫度上下限的精簡(jiǎn)按鍵設(shè)計(jì)</p><p>  本次設(shè)計(jì)共用四個(gè)按鍵開關(guān),一個(gè)用于總電源,一個(gè)用于復(fù)位單片機(jī)。除此之外的兩個(gè)按鍵才具有操作性。將這兩個(gè)按鍵稱為A和B。A按鍵具有兩個(gè)功能:1.用于切換上限溫度和下限溫度的操作。2.溫度計(jì)數(shù)加一。B按鍵僅具有一個(gè)溫度計(jì)數(shù)減一功能。關(guān)于這兩個(gè)按鍵的實(shí)現(xiàn),A按鍵的實(shí)現(xiàn)需要用到外部中斷及定時(shí)器,外部中斷觸發(fā)則開始定

35、時(shí)器的計(jì)數(shù),計(jì)數(shù)值大則為切換功能,計(jì)數(shù)值小則為溫度計(jì)數(shù)加一功能。表現(xiàn)為長(zhǎng)按則為切換,短按則為計(jì)數(shù)加一。B按鍵采用掃描方式。</p><p><b>  4 軟件設(shè)計(jì)</b></p><p>  4.1 主程序流程圖</p><p>  圖4-1 主程序流程圖</p><p>  在程序的開始進(jìn)行一系列的初始化后進(jìn)入循環(huán)

36、,在循環(huán)中進(jìn)行實(shí)時(shí)讀取并刷新當(dāng)時(shí)溫度再顯示到LCD1602上,并且掃描獨(dú)立按鍵。此外還有一個(gè)觸發(fā)中斷按鍵,此按鍵具有雙功能(切換當(dāng)前控制上/下限溫度狀態(tài)、溫度加一)。</p><p><b>  4.2 電路仿真圖</b></p><p>  圖4-2 電路仿真圖</p><p>  通過(guò)仿真軟件,能驗(yàn)證程序是否正確,在仿真的過(guò)程中遇到過(guò)因?qū)慙

37、CD1602時(shí)序不對(duì)而發(fā)生的LCD顯示不正常問(wèn)題,在后來(lái)的調(diào)試的過(guò)程中解決了這一問(wèn)題。</p><p><b>  5 性能測(cè)試</b></p><p>  僅僅完成設(shè)計(jì)過(guò)程,是無(wú)法驗(yàn)證設(shè)計(jì)出來(lái)的作品是否能真正實(shí)現(xiàn)功能的,所以系統(tǒng)的性能測(cè)試也是一個(gè)重要的環(huán)節(jié)。我們需要對(duì)溫度警報(bào)系統(tǒng)的各項(xiàng)功能逐一測(cè)試。</p><p><b>  5

38、.1 測(cè)試用例</b></p><p> ?。?)用手抓住DS18B20使其升溫,觀察實(shí)時(shí)顯示溫度的變化情況</p><p> ?。?)測(cè)試A按鍵的兩個(gè)功能(切換和計(jì)數(shù)加一)是否正常,B按鍵的計(jì)數(shù)減一是否正常</p><p> ?。?)將上限溫度調(diào)到接近當(dāng)前顯示溫度,再用手抓住使DS18B20升溫使其超過(guò)上限溫觀察是否發(fā)出警報(bào)并發(fā)出相應(yīng)聲響。再將下限溫度

39、調(diào)到接近當(dāng)前顯示溫度,使DS18B20降溫,使其低于溫度下限,觀察是否發(fā)出警報(bào)并發(fā)出相應(yīng)聲響。</p><p>  5.2 測(cè)試結(jié)果分析</p><p>  測(cè)試用例(1)結(jié)果正常,顯示當(dāng)前溫度實(shí)時(shí)發(fā)生變化并符合當(dāng)前室內(nèi)溫度</p><p>  測(cè)試用例(2)結(jié)果有時(shí)A按鍵不按照意愿工作,有時(shí)發(fā)生計(jì)數(shù)過(guò)快的情況,隨后加上中斷按鍵的消抖語(yǔ)句后結(jié)果正常。B按鍵工作正常。

40、</p><p>  測(cè)試用例(3)工作正常。</p><p>  5.3 測(cè)試過(guò)程錯(cuò)誤分析</p><p>  在最開始,將板子焊接完成時(shí),板子并沒(méi)有工作。一上電,指示電源狀態(tài)的發(fā)光二極管就燒了,隨后想起與這個(gè)發(fā)光二極管的所串聯(lián)的電阻為330歐,這樣一來(lái)所通過(guò)二極管的電流就變成了15毫安左右,然后就燒壞的二極管和電阻換掉后發(fā)光正常,不過(guò)又發(fā)生了異常的地方,就是這個(gè)

41、電源指示燈會(huì)在接通是后亮幾秒就熄滅,還有就是LCD顯示屏也沒(méi)有正常顯示,只是顯示幾個(gè)黑點(diǎn)。</p><p>  首先解決的是電源指示燈在接通電后亮幾秒就熄滅的問(wèn)題,這個(gè)問(wèn)題是由于DS18B20插反的結(jié)果,DS18B20的左右兩個(gè)引腳分別Vcc和GND,若是接反則整個(gè)電路直接短路,無(wú)法正常供電,而在靠近Vcc和GND處有一個(gè)10uf的電容,這個(gè)電容本來(lái)是給單片機(jī)復(fù)位用的,而在這種情況下,它儲(chǔ)存的電會(huì)通過(guò)這個(gè)電源指示

42、燈放掉,就出現(xiàn)了這個(gè)燈亮幾秒后熄滅的問(wèn)題。</p><p>  LCD顯示屏只顯示幾個(gè)黑點(diǎn)的問(wèn)題是由于單片機(jī)的問(wèn)題,我把單片機(jī)拆出來(lái)后的顯示結(jié)果和插上單片機(jī)的結(jié)果相同。問(wèn)題就指向了單片機(jī)出現(xiàn)了什么樣的問(wèn)題。最開始的測(cè)試方法是直接住板子里燒程序,結(jié)果程序燒不進(jìn)去,一直停在等待界面。第二個(gè)方法是用萬(wàn)用表測(cè)量每一個(gè)管腳的電壓,部分電壓接近5V,少數(shù)幾個(gè)管腳的電壓不正常。更加說(shuō)明了并非電路線路的問(wèn)題而是單片機(jī)問(wèn)題。最后測(cè)

43、量晶振輸出波形,沒(méi)有輸出11.0592M的信號(hào),說(shuō)明單片機(jī)一開始就沒(méi)有工作。而為什么沒(méi)有工作,最后發(fā)現(xiàn)是因?yàn)榫д駴](méi)有振蕩,反復(fù)檢查電路后,原來(lái)是因?yàn)閱纹瑱C(jī)振蕩源處兩腳的電容接錯(cuò)了,改正后為了能夠測(cè)試是否振蕩,用示波器觀察,正確輸出了11.0592M的頻率波形,再給單片機(jī)燒入程序,正常燒入。</p><p>  經(jīng)過(guò)上述一系列的錯(cuò)誤與調(diào)試錯(cuò)誤后,板子最終能夠正常工作。</p><p><

44、;b>  6 設(shè)計(jì)總結(jié)</b></p><p>  本次設(shè)計(jì),我認(rèn)為最大的亮點(diǎn)不在于溫度警報(bào)功能的實(shí)現(xiàn),這個(gè)只是基本功能。最大的亮點(diǎn)在于,將兩個(gè)功能集成在了一個(gè)按鍵上,使得操作上更為簡(jiǎn)潔與更適合人們的習(xí)慣。</p><p>  本次的課程設(shè)計(jì)中的確出現(xiàn)的問(wèn)題不少,這也反映出了從仿真到實(shí)物,這個(gè)過(guò)程中會(huì)有很多意想不到的錯(cuò)誤發(fā)生,甚于是非常簡(jiǎn)單的電容都會(huì)接錯(cuò),而這不同于仿真

45、,在實(shí)物板子上,每一個(gè)極小的細(xì)節(jié)都可能會(huì)引起板子的不正常工作。而在排查出這個(gè)問(wèn)題則需要檢查到每一條線,每一個(gè)元件的接法以及供電問(wèn)題。</p><p>  總體來(lái)說(shuō),本次的課程設(shè)計(jì)還算是比較成功,還總結(jié)出一個(gè)結(jié)論:仿真成功并不等同于做實(shí)物板子的過(guò)程也會(huì)順利,此次訓(xùn)練收獲不小。</p><p>  但是此次課程設(shè)計(jì)也暴露出自己專業(yè)基礎(chǔ)的很多不足之處。比如缺乏綜合應(yīng)用專業(yè)知識(shí)的能力,對(duì)很多芯片的

46、用法不熟悉等,需要在做的過(guò)程中不斷的翻閱相關(guān)的資料和書籍,這降低了自己的速度和設(shè)計(jì)的進(jìn)程,但這個(gè)過(guò)程對(duì)我來(lái)說(shuō)是對(duì)自己知識(shí)不足處的一個(gè)很好的補(bǔ)充和對(duì)已學(xué)過(guò)知識(shí)的一個(gè)鞏固。這個(gè)過(guò)程雖然是有一定的難度但還是通過(guò)自己的慢慢的摸索從熟悉到上手,經(jīng)過(guò)這次努力對(duì)自己的信心有很好的提高。通過(guò)這樣的一個(gè)自己從開始到結(jié)束全程自己參與的設(shè)計(jì)來(lái)說(shuō)對(duì)知識(shí)的了解和掌握是純理論學(xué)習(xí)遠(yuǎn)遠(yuǎn)達(dá)不到的效果。這次課設(shè)是對(duì)自己所學(xué)知識(shí)的一次檢閱,使我明白自己知識(shí)還是很淺薄,自己

47、的求學(xué)之路還很長(zhǎng)。</p><p>  課程設(shè)計(jì)是培訓(xùn)學(xué)生運(yùn)用本專業(yè)所學(xué)的理論知識(shí)和專業(yè)知識(shí)來(lái)分析解決實(shí)際問(wèn)題的重要教學(xué)環(huán)節(jié),同樣也促進(jìn)了同學(xué)們的相互探討,相互學(xué)習(xí)。因此,我們必須認(rèn)真、謹(jǐn)慎、踏實(shí)、一步一步的完成設(shè)計(jì)。我相信無(wú)論是誰(shuí),看到自己做出的成果時(shí)心里一定會(huì)很興奮。此次設(shè)計(jì)使我明白了一個(gè)很深刻的道理:團(tuán)隊(duì)精神固然很重要,但人往往還是要靠自己的努力,自己親身去經(jīng)歷,這樣自己的心里才會(huì)踏實(shí),學(xué)到的東西才會(huì)更多。

48、</p><p><b>  謝 辭</b></p><p>  在本次的課程設(shè)計(jì)中,同學(xué)們給予了我很大的幫助,有些工具我是沒(méi)有的,這時(shí)就要找同學(xué)借,同學(xué)們都慷慨的借出了手中的工具,關(guān)于這點(diǎn)我非常的感謝!在調(diào)試的過(guò)程中,同學(xué)的某一句話都有可能給我極大的啟發(fā),這一點(diǎn)也同樣非常感謝!</p><p>  在這次的做實(shí)物板子的過(guò)程中,從發(fā)現(xiàn)第一個(gè)問(wèn)

49、題開始到最后使板子正常工作都有同學(xué)在給我以幫助,對(duì)于我的問(wèn)題都盡其所能,非常感謝他們。同時(shí),我還要感謝我的寢室同學(xué)和身邊的朋友,正是在這樣一個(gè)團(tuán)結(jié)友愛,相互促進(jìn)的環(huán)境中,在和他們的相互幫助和啟發(fā)中,才有我今天的小小收獲。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]胡天明,齊建家.基于DS18B20的數(shù)字溫度計(jì)設(shè)計(jì)及其應(yīng)用[J].黑龍江工程

50、學(xué)院學(xué)報(bào),2008,02:59-62</p><p>  [2]黃慶華,張永格.單片機(jī)開發(fā)技術(shù)與實(shí)訓(xùn).電子工業(yè)出版社,2007.1</p><p>  [3]汪紅,張烈平,管秀群.電子技術(shù).電子工業(yè)出版社,2007</p><p>  [4]何立民.單片機(jī)應(yīng)用技術(shù)選編.北京航空大學(xué)出版社,2006</p><p>  [5]徐俊毅,單片微型計(jì)

51、算機(jī)原理與應(yīng)用.上??茖W(xué)技術(shù)出版社,1998</p><p><b>  附 錄</b></p><p><b>  1原理圖:</b></p><p>  1.1 整體硬件原理圖</p><p>  1.2.溫度采集及外圍電路的設(shè)計(jì)</p><p><b>  

52、1.3液晶顯示設(shè)計(jì)</b></p><p><b>  1.4最小系統(tǒng)設(shè)計(jì)</b></p><p><b>  2.成品實(shí)物圖:</b></p><p><b>  3.程序源代碼</b></p><p>  #include <reg52.h><

53、/p><p>  #include <intrins.h></p><p>  bit Start18B20();</p><p>  sbit RS=P2^5;</p><p>  sbit RW=P2^6;</p><p>  sbit EN=P2^7;</p><p>  sbit

54、 IO_18B20=P3^2;</p><p>  sbit ledH=P2^2;//紅燈</p><p>  sbit ledL=P2^3;//綠燈</p><p>  sbit key0=P2^0;//B按鍵,單功能按鍵</p><p>  sbit key1=P2^1;//A按鍵,雙功能按鍵</p><p>  

55、sbit buzzer=P2^4;</p><p>  unsigned char count=0;</p><p>  unsigned char upper=30,lower=20;</p><p>  bit kflag=1;//按鍵標(biāo)識(shí),若為1則是調(diào)節(jié)上限,若為0則是調(diào)節(jié)下限</p><p>  unsigned char T0RH=

56、0;//定時(shí)器0高位初值</p><p>  unsigned char T0RL=0;//定時(shí)器0低位初值</p><p>  unsigned int temp;</p><p>  unsigned int i=0;</p><p>  unsigned char code table[]="Tem: /C"

57、;;//當(dāng)前溫度顯示標(biāo)識(shí)</p><p>  unsigned char code high[]="U:";//上限溫度顯示標(biāo)識(shí)</p><p>  unsigned char code low[]="L:";//下限溫度顯示標(biāo)識(shí)</p><p>  void DelayX10us(unsigned char t)//較為嚴(yán)格

58、的指令延時(shí),10個(gè)指令周期</p><p><b>  {</b></p><p><b>  do</b></p><p><b>  {</b></p><p><b>  _nop_();</b></p><p><b&

59、gt;  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  _nop_();</b&

60、gt;</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p><b>  }</b></p><p>  while(--t);</p><p><b>  }</b&

61、gt;</p><p>  bit Get18B20Ack()//獲取DS18B20響應(yīng)</p><p><b>  {</b></p><p><b>  bit ack;</b></p><p><b>  EA=0;</b></p><p>  I

62、O_18B20=0;</p><p>  DelayX10us(50);</p><p>  IO_18B20=1; </p><p>  DelayX10us(6);</p><p>  ack=IO_18B20;</p><p>  while(!IO_18B20);</p><p><

63、;b>  EA=1;</b></p><p>  return ack;</p><p><b>  }</b></p><p>  void Write18B20(unsigned char dat)//對(duì)DS18B20進(jìn)行寫入操作</p><p><b>  {</b><

64、/p><p>  unsigned char mask;</p><p><b>  EA=0;</b></p><p>  for(mask=0x01;mask!=0;mask<<=1)</p><p><b>  {</b></p><p>  IO_18B20=

65、0;</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  if((mask&dat)==0)</p><p>  IO_18B20=0;</p><p><b>  else<

66、/b></p><p>  IO_18B20=1;</p><p>  DelayX10us(6);</p><p>  IO_18B20=1;</p><p><b>  }</b></p><p><b>  EA=1;</b></p><p&g

67、t;<b>  }</b></p><p>  unsigned char Read18B20()//對(duì)DS18B20進(jìn)行讀操作</p><p><b>  {</b></p><p>  unsigned char dat;</p><p>  unsigned char mask;</p&

68、gt;<p><b>  EA=0;</b></p><p>  for(mask=0x01;mask!=0;mask<<=1)</p><p><b>  {</b></p><p>  IO_18B20=0;</p><p><b>  _nop_();<

69、;/b></p><p><b>  _nop_();</b></p><p>  IO_18B20=1;</p><p><b>  _nop_();</b></p><p><b>  _nop_();</b></p><p>  if(!IO

70、_18B20)</p><p>  dat&=~mask;</p><p><b>  else</b></p><p>  dat|=mask;</p><p>  DelayX10us(6);</p><p><b>  }</b></p><

71、p><b>  EA=1;</b></p><p>  return dat;</p><p><b>  }</b></p><p>  bit Start18B20()//啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換</p><p><b>  {</b></p>&

72、lt;p><b>  bit ack;</b></p><p>  ack=Get18B20Ack();</p><p>  if(ack==0)</p><p><b>  {</b></p><p>  Write18B20(0xcc);</p><p>  Wri

73、te18B20(0x44);//啟動(dòng)溫度轉(zhuǎn)換指令</p><p><b>  }</b></p><p>  return ~ack;</p><p><b>  }</b></p><p>  void delay(unsigned int t)//給LCD1602的粗延時(shí)</p>

74、<p><b>  {</b></p><p>  unsigned int x,y;</p><p>  for(x=t;x>0;x--)</p><p>  for(y=110;y>0;y--);</p><p><b>  }</b></p><p&g

75、t;  bit Get18B20Temp(int *temp)//獲取DS18B20的溫度轉(zhuǎn)換結(jié)果</p><p><b>  {</b></p><p><b>  bit ack;</b></p><p>  unsigned char LSB,MSB;</p><p>  ack = Get1

76、8B20Ack();</p><p>  if(ack==0)</p><p><b>  {</b></p><p>  Write18B20(0xcc);</p><p>  Write18B20(0xbe);</p><p>  LSB=Read18B20();</p><

77、;p>  MSB=Read18B20();</p><p>  *temp =((int)MSB<<8)+LSB;</p><p><b>  }</b></p><p>  return ~ack;</p><p><b>  }</b></p><p>

78、  void BusyCheck()//LCD1602的忙檢測(cè)</p><p><b>  {</b></p><p>  unsigned char dat;</p><p><b>  P0=0xff;</b></p><p><b>  RS=0;</b></p&g

79、t;<p><b>  RW=1;</b></p><p><b>  do</b></p><p><b>  {</b></p><p><b>  EN=1;</b></p><p><b>  dat=P0;</b&g

80、t;</p><p><b>  EN=0;</b></p><p>  }while(dat&0x80);</p><p><b>  }</b></p><p>  void Writedata1602(unsigned char dat)//對(duì)LCD1602寫入數(shù)據(jù)</p>

81、<p><b>  {</b></p><p>  BusyCheck();</p><p><b>  RS=1;</b></p><p><b>  RW=0;</b></p><p><b>  P0=dat;</b></p>

82、;<p><b>  EN=1;</b></p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void Writecom1602(unsigned char com)//對(duì)LCD1602寫入指令</p><p&g

83、t;<b>  {</b></p><p>  BusyCheck();</p><p><b>  RS=0;</b></p><p><b>  RW=0;</b></p><p><b>  P0=com;</b></p><p&

84、gt;<b>  EN=1;</b></p><p><b>  EN=0;</b></p><p><b>  }</b></p><p>  void Init1602()//對(duì)1602進(jìn)行初始化</p><p><b>  {</b></p&g

85、t;<p><b>  EN=0;</b></p><p>  Writecom1602(0x38);</p><p>  Writecom1602(0x0c);</p><p>  Writecom1602(0x06);</p><p>  Writecom1602(0x01);</p>&

86、lt;p><b>  }</b></p><p>  void interruptofEX1() interrupt 2 using 0 //按鍵觸發(fā)外部中斷0</p><p><b>  {</b></p><p>  EX1=0;//中斷的按鍵消抖</p><p>  TR0=1;//開啟

87、定時(shí)器0</p><p><b>  do</b></p><p><b>  {</b></p><p>  if(TF0==1)//定時(shí)器溢出標(biāo)識(shí)位,</p><p><b>  {</b></p><p><b>  TF0=0;<

88、/b></p><p>  TH0=0x4c;//重裝初值</p><p><b>  TL0=0x00;</b></p><p>  count++;//定時(shí)器每溢出一次,count加一</p><p><b>  }</b></p><p>  }while(key

89、1==0);//檢測(cè)按鍵是否松開</p><p>  TR0=0;//¹按鍵松開后,關(guān)定時(shí)器</p><p>  if(count>10)//判斷按壓時(shí)間長(zhǎng)短,若為長(zhǎng)按則將kflag取反,切換功能</p><p>  kflag=~kflag;</p><p>  else //短按的執(zhí)行函數(shù)</p><p

90、><b>  {</b></p><p><b>  if(kflag)</b></p><p><b>  {</b></p><p><b>  upper++;</b></p><p>  if(upper>30)//È

91、4;´óÓÚ30Ôò±äΪ25</p><p><b>  upper=25;</b></p><p><b>  }</b></p><p><b>  else</b></p>&l

92、t;p><b>  {</b></p><p><b>  lower++;</b></p><p>  if(lower>30)//Èô´óÓÚ30Ôò±äΪ25</p><p><

93、b>  lower=25;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  Writecom1602(0x80+0x0f);//給LCD1602寫顯示地址(上限/下限 標(biāo)識(shí)位)</p><p><b>  if(

94、kflag)</b></p><p><b>  {</b></p><p>  Writedata1602('U');// 上限顯示”U”</p><p><b>  }</b></p><p><b>  else</b></p>

95、<p>  Writedata1602('L');//下限顯示”L”</p><p>  count=0;//給count 清零</p><p><b>  kflagw=0;</b></p><p>  IE1=0;//中斷按鍵消抖</p><p><b>  EX1=1;</

96、b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  bit ack,res;</p><p>  int a,b,ac,ad,bc,bd;</p><p

97、><b>  int test;</b></p><p>  int intT,decT;</p><p>  unsigned char len;</p><p>  buzzer=1;//開機(jī)時(shí)不讓蜂鳴器發(fā)出聲響</p><p>  IO_18B20=1;//釋放DS18B20總線</p><

98、;p><b>  EA=1;</b></p><p>  EX1=1;//開啟外部中斷</p><p>  IT1=1;//interrupt trigger 設(shè)置觸發(fā)方式為跳變沿觸發(fā)</p><p>  TMOD|=0x01;//定時(shí)器以方式1工作</p><p>  TH0=0x4c;//初值</p>

99、;<p><b>  TL0=0x00;</b></p><p>  Start18B20();</p><p>  Init1602();</p><p>  Writecom1602(0x80);</p><p>  for(i=0;i<sizeof(table)-1;i++)</p>

100、<p><b>  {</b></p><p>  Writedata1602(table[i]);</p><p><b>  }</b></p><p>  Writecom1602(0x80+0x0f);//ÏÔʾ±ê¼Ç

101、²âÊÔλ</p><p><b>  if(kflag)</b></p><p><b>  {</b></p><p>  Writedata1602('U');</p><p><b>  }</b&

102、gt;</p><p><b>  else</b></p><p>  Writedata1602('L');</p><p>  Writecom1602(0x80+0x40);//U ×ÖÑù</p><p>  for(i=0;i<sizeof(hig

103、h)-1;i++)</p><p>  Writedata1602(high[i]);</p><p>  Writecom1602(0x80+0x49);//L ×ÖÑù</p><p>  for(i=0;i<sizeof(low)-1;i++)</p><p>  Writedata1602

104、(low[i]);</p><p>  while(1) //循環(huán)掃描,更新變化</p><p><b>  {</b></p><p>  Writecom1602(0x85);</p><p>  ack=Start18B20();</p><p><b>  if(ack)<

105、/b></p><p><b>  {</b></p><p>  res=Get18B20Temp(&temp);</p><p><b>  if(res)</b></p><p><b>  {</b></p><p>  a=tem

106、p>>4;//СÊý²¿·Ö</p><p><b>  ac=a/10;</b></p><p><b>  ad=a%10;</b></p><p>  b=temp&0xf;//ÕûÊ&

107、#253;²¿·Ö</p><p><b>  bc=b/10;</b></p><p><b>  bd=b%10;</b></p><p>  Writedata1602(ac+'0');</p><p>  Writedata1602(a

108、d+'0');</p><p>  Writedata1602('.');</p><p>  Writedata1602(bc+'0');</p><p>  Writedata1602(bd+'0');</p><p>  test=ac*10+ad;</p>

109、<p>  if(ac*10+ad>=upper)</p><p><b>  {</b></p><p><b>  ledH=0;</b></p><p>  buzzer=0;//ÉùÒô±È½Ï»ì&

110、#215;Ç</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  ledH=1;</b></p><p><b&g

111、t;  buzzer=1;</b></p><p><b>  }</b></p><p>  if(ac*10+ad<lower)</p><p><b>  {</b></p><p><b>  ledL=0;</b></p><p&

112、gt;  buzzer=0;//ÉùÒô±È½Ï¼âÈñ</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>

113、</p><p><b>  ledL=1;</b></p><p><b>  buzzer=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }&

114、lt;/b></p><p>  Writecom1602(0x80+0x43);</p><p>  ac=upper/10;</p><p>  ad=upper%10;</p><p>  Writedata1602(ac+'0');</p><p>  Writedata1602(ad+&

115、#39;0');</p><p>  Writecom1602(0x80+0x4c);</p><p>  ac=lower/10;</p><p>  ad=lower%10;</p><p>  Writedata1602(ac+'0');</p><p>  Writedata1602(a

116、d+'0');</p><p>  if(key0==0)</p><p><b>  {</b></p><p>  delay(30);</p><p>  if(key0==0)</p><p><b>  {</b></p><p&

117、gt;<b>  if(kflag)</b></p><p><b>  {upper--;</b></p><p>  if(upper<10)</p><p><b>  upper=10;</b></p><p><b>  }</b><

118、/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  lower--;</b></p><p>  if(lower<10)</p><p><b>  lower=10;</b

119、></p><p><b>  }</b></p><p>  while(!key0);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p&g

溫馨提示

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