版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 設(shè)計(jì)(論文)題目</p><p> 倉(cāng)儲(chǔ)室溫度自動(dòng)控制系統(tǒng) </p><p> 學(xué) 院: 電信學(xué)院 </p><p> 學(xué)生姓名: </p><p> 專(zhuān)業(yè)班級(jí):應(yīng)用電子22班(手機(jī)) </p><p> 學(xué) 號(hào):
2、 </p><p> 指導(dǎo)教師: </p><p> 2012年 2月 5日</p><p> 摘 要:本設(shè)計(jì)以STC89C52RC單片機(jī)為控制核心,由數(shù)字溫度傳感器DS18B20構(gòu)成了一個(gè)高溫和低溫時(shí),分別對(duì)相應(yīng)的器件進(jìn)行控制的系統(tǒng)。詳細(xì)地介紹了整個(gè)系統(tǒng)的硬件組成結(jié)構(gòu)、工作原理和系統(tǒng)的軟件
3、程序設(shè)計(jì),重點(diǎn)闡述了時(shí)鐘模塊、顯示模塊、溫度檢測(cè)模塊及相關(guān)控制模塊等的模塊化設(shè)計(jì)思路與制作。系統(tǒng)采用八段四位數(shù)碼管作為顯示器,具有環(huán)境溫度實(shí)時(shí)顯示,按鍵設(shè)置上下限溫度,從而控制倉(cāng)庫(kù)排氣扇轉(zhuǎn)動(dòng)。在本設(shè)計(jì)中,軟件程序均采用C語(yǔ)言編寫(xiě),便于移植與升級(jí)。</p><p> 關(guān)鍵詞:STC89C52RC; 單片機(jī); 數(shù)碼管; 溫度控制;</p><p> Based on single-chi
4、p microcomputer</p><p> temperature control circuit design and production </p><p> Abstract:This design with STC89C52RC microcontroller as control core, by real time clock chip DS1302 and digi
5、tal temperature sensor DS18B20 constitute a high temperature and low temperature respectively on the corresponding device to control system. Introduced the whole systems hardware structure, working principle and system s
6、oftware program design in detail, expounds the clock module, display module, temperature detecting module and related control module of modularization design and productio</p><p> Key words: STC89C52RC; sin
7、gle-chip; Digital tube;Temperature control;</p><p><b> 目錄</b></p><p><b> 1背景與意義1</b></p><p><b> 1.1背景1</b></p><p><b> 1
8、.2意義1</b></p><p> 1.3功能介紹2</p><p> 2方案比較與論證2</p><p> 2.1設(shè)計(jì)任務(wù)與要求3</p><p> 2.2方案比較與論證2</p><p> 2.2.1方案比較與論證2</p><p> 2.2
9、.2方案的選擇4</p><p> 3系統(tǒng)硬件設(shè)計(jì)4</p><p> 3.1總體電路框圖4</p><p> 3.2單元電路設(shè)計(jì)5</p><p> 3.2.1單片機(jī)模塊5</p><p> 3.2.3溫度采集模塊5</p><p> 3.2.4數(shù)碼管顯示
10、模塊6</p><p> 3.2.5按鍵模塊7</p><p> 4系統(tǒng)軟件設(shè)計(jì)9</p><p> 4.1總體軟件框圖9</p><p> 4.2各模塊程序設(shè)計(jì)9</p><p> 4.2.1溫度數(shù)據(jù)采集:9</p><p> 5系統(tǒng)調(diào)試與測(cè)試11<
11、/p><p> 5.1硬件調(diào)試11</p><p> 5.2軟件調(diào)試12</p><p><b> 6設(shè)計(jì)總結(jié)12</b></p><p><b> 致 謝13</b></p><p><b> 參考文獻(xiàn)13</b></p
12、><p><b> 附錄15</b></p><p> 附錄A:程序清單15</p><p> 附錄B:程序清單22</p><p> 基于單片機(jī)溫度控制電路的設(shè)計(jì)與制作</p><p><b> 1背景與意義</b></p><p>&l
13、t;b> 背景</b></p><p> 隨著社會(huì)的發(fā)展,科技的進(jìn)步,以及測(cè)溫儀器在各個(gè)領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度控制系統(tǒng)發(fā)展的主流方向。特別是近年來(lái),溫度控制系統(tǒng)已應(yīng)用到人們生活的各個(gè)方面,設(shè)計(jì)一個(gè)溫度控制系統(tǒng),具有廣泛的應(yīng)用前景與實(shí)際意義。溫度是科學(xué)技術(shù)中最基本的物理量之一,物理,化學(xué),生物等學(xué)科都離不開(kāi)溫度。在工業(yè)生產(chǎn)和實(shí)驗(yàn)研究中,像電力,化工,石油,冶金,航空航天,機(jī)械制造,糧食
14、存儲(chǔ), 酒類(lèi)生產(chǎn)等領(lǐng)域內(nèi),溫度常常是表征對(duì)象和過(guò)程狀態(tài)的最重要的參數(shù)之一。比如,發(fā)電廠鍋爐的溫度必須控制在一定的范圍之內(nèi);許多化學(xué)反應(yīng)的工藝過(guò)程必須在適當(dāng)?shù)臏囟认虏拍苷_M(jìn)行;煉油過(guò)程中,原油必須在不同的溫度和壓力條件下進(jìn)行分餾才能得到汽油,柴油,煤油等產(chǎn)品。沒(méi)有合適的溫度環(huán)境,許多電子設(shè)備就不能正常工作,糧倉(cāng)的儲(chǔ)糧就會(huì)變質(zhì)霉?fàn)€,酒類(lèi)的品質(zhì)就沒(méi)有保障。因此,各行各業(yè)對(duì)溫度控制的要求都越來(lái)越高??梢?jiàn),溫度的測(cè)量和控制是非常重要的。單片機(jī)在
15、電子產(chǎn)品中的應(yīng)用已經(jīng)越來(lái)越廣泛,在很多的電子產(chǎn)品中也用到了溫度檢測(cè)和溫度控制。隨著溫度控制器應(yīng)用范圍的日益廣泛和多樣,各種適用于不同場(chǎng)合的智能溫度控制器應(yīng)運(yùn)而生。比較成熟的產(chǎn)品就有水溫測(cè)控溫度控制系統(tǒng)和語(yǔ)音報(bào)</p><p><b> 意義</b></p><p> 基于單片機(jī)溫度控制的測(cè)試控制系統(tǒng),控制對(duì)象是溫度。溫度控制在日常生活及工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛,比如溫
16、室,水池,發(fā)酵缸,電源等場(chǎng)所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實(shí)在很多場(chǎng)所溫度都需要監(jiān)控以防止發(fā)生意外。針對(duì)此問(wèn)題,本系統(tǒng)設(shè)計(jì)的目的是實(shí)現(xiàn)可以根據(jù)外界環(huán)境溫度控制電機(jī)的溫度控制系統(tǒng),它應(yīng)用廣泛,功能強(qiáng)大,小巧美觀,便于攜帶,是一款既實(shí)用又廉價(jià)的控制系統(tǒng)。</p><p><b> 功能介紹</b></p><p> 1.3.1按設(shè)定鍵可切換設(shè)
17、置模式,數(shù)碼管顯示相應(yīng)模式頁(yè)面。</p><p> 1.3.2當(dāng)按下溫度設(shè)定鍵,即</p><p> 1.3.3當(dāng)進(jìn)入上下限溫度設(shè)置時(shí),按動(dòng)上下鍵可實(shí)現(xiàn)溫度調(diào)整,并通過(guò)設(shè)定需要設(shè)定的上下限溫度值,可實(shí)現(xiàn)風(fēng)扇的自動(dòng)控制和手動(dòng)控制工作方式的切換。</p><p><b> 方案比較與論證</b></p><p><
18、;b> 設(shè)計(jì)任務(wù)與要求</b></p><p> 2.1.1當(dāng)傳感器檢測(cè)出的環(huán)境溫度偏低時(shí),控制繼電器,實(shí)現(xiàn)電暖爐的開(kāi)與關(guān)的狀態(tài)。</p><p> 2.1.2 當(dāng)傳感器檢測(cè)出的環(huán)境溫度偏高時(shí),隨著溫度的改變,控制電機(jī)的轉(zhuǎn)速作出相應(yīng)的改變。</p><p> 2.1.3 通過(guò)時(shí)鐘芯片DS1302自動(dòng)控制電機(jī),使其在某個(gè)時(shí)間段不工作。<
19、/p><p> 2.1.4 當(dāng)環(huán)境溫度超出了設(shè)定值時(shí),蜂鳴器發(fā)出聲響報(bào)警。</p><p><b> 方案比較與論證</b></p><p><b> 方案比較與論證</b></p><p> 方案一:?jiǎn)纹瑱C(jī)按照一定的控制算法對(duì)采集的溫度數(shù)據(jù)進(jìn)行處理,得到控制量,以控制電機(jī)的功率,從而實(shí)現(xiàn)風(fēng)扇轉(zhuǎn)
20、速的控制。傳感器采用集成的AD599,但是這個(gè)方案的電路結(jié)構(gòu)十分復(fù)雜,A/D轉(zhuǎn)換器的精度實(shí)現(xiàn)既定功能的困難很大,而且由于器件很多,使得單片機(jī)89C51的內(nèi)部資源不能滿足需要,調(diào)試和安裝都十分不方便,同時(shí)實(shí)現(xiàn)擴(kuò)展功能困難。方案組成方框圖如圖1所示:</p><p> 圖1 方案一組成方框圖</p><p> 方案二:采用數(shù)字式溫度傳感器DS18B20,它能夠?qū)囟戎苯愚D(zhuǎn)換成數(shù)字信號(hào),可以
21、通過(guò)一根數(shù)據(jù)線與單片機(jī)進(jìn)行通信,而且它不需要外部元件,在-100C~850C范圍內(nèi)可以精確到+0.50C。完全滿足設(shè)計(jì)要求。這樣設(shè)計(jì)就可以不使用A/D轉(zhuǎn)換器,從而使系統(tǒng)的精度得以提高,也能夠大大節(jié)省單片機(jī)得系統(tǒng)資源,所以我又加了DS1302時(shí)鐘模塊電路,使時(shí)間能夠?qū)崟r(shí)顯示。方案組成方框圖如圖2所示:</p><p> 圖2方案二組成方框圖</p><p><b> 方案的選擇
22、</b></p><p> 通過(guò)以上兩種方案的比較,我選擇的是方案二作為設(shè)計(jì)方案,因?yàn)榉桨付c方案一相比,它的硬件系統(tǒng)更簡(jiǎn)單,但是功能卻更強(qiáng)大,它本身的模塊化設(shè)計(jì)又使它的系統(tǒng)通用性遠(yuǎn)遠(yuǎn)超過(guò)方案一,在現(xiàn)在的條件下我能夠完成這個(gè)方案,所以最終選擇了這個(gè)方案。</p><p><b> 系統(tǒng)硬件設(shè)計(jì)</b></p><p><b
23、> 總體電路框圖</b></p><p> 本設(shè)計(jì)以STC89C52RC單片機(jī)為主控核心設(shè)計(jì)的一個(gè)溫度控制系統(tǒng),低溫</p><p> 時(shí)可控制加熱設(shè)備,高溫時(shí)控制風(fēng)扇,超出設(shè)定最高溫度值時(shí)蜂鳴器發(fā)出聲響報(bào)警。硬件方框圖如圖3所示:</p><p> 圖3 總體硬件方框圖</p><p><b> 單元電
24、路設(shè)計(jì)</b></p><p><b> 單片機(jī)模塊</b></p><p> STC89C52RC單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3, MCS-51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2、P3),每一條I/O線都能獨(dú)立地作輸出或輸入。</p><p> 單片機(jī)的最小系統(tǒng)如下圖所示,18
25、引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出。第9引腳為復(fù)位輸入端,接上電容,電阻及開(kāi)關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端。31引腳接電源端[9-11],如圖4所示:</p><p><b> 圖4 單片機(jī)電路</b></p><
26、;p><b> 溫度采集模塊</b></p><p> DS18B20支持“一線總線”,故可以大大提高系統(tǒng)的抗干擾性,適合于惡劣的環(huán)境溫度測(cè)量。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi),體積小。同時(shí)DS18B20的測(cè)量溫度范圍為-55 0C~+125 0C,在-10~+85 0C范圍內(nèi),精度為+0.5 0C。同樣的,DS18B20還可以程序設(shè)定9~12位的分辨率,精度
27、為+0.5 0C。同時(shí)設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。并且支持3V~5V的電壓范圍。便于系統(tǒng)設(shè)計(jì)。</p><p> DS18B20的主要特點(diǎn):</p><p> 適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電;</p><p> 獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理
28、器與DS18B20的雙向通訊;</p><p> DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫;</p><p> DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi);</p><p> 溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃;<
29、;/p><p> 可編程的分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測(cè)溫;</p><p> 在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快;</p><p> 測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以"一線總線"串行傳送
30、給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力;</p><p> 負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作[249-256]。</p><p> 對(duì)DS18B20的設(shè)計(jì)外部供電方式單點(diǎn)測(cè)溫。在這種外部電源供電方式下,DS18B20工作電源由VDD引腳接入,因?yàn)橛蒝DD接入電源不存在電源電流不足的問(wèn)題,可以保證轉(zhuǎn)換精度。不過(guò)要注意。在這種外部供電的方式
31、下,DS18B20的GND腳不能懸空,否則不能轉(zhuǎn)換溫度,讀取的溫度總是80 oC。DS18B20的硬件電路連接如下圖6所示:</p><p> 圖6 DS18B20原理圖</p><p><b> 數(shù)碼管顯示模塊</b></p><p> 數(shù)碼管顯示模塊是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、版本號(hào)等的段顯示模塊。它是由四位數(shù)碼管位組成的,數(shù)碼管
32、右下角有一個(gè)小數(shù)點(diǎn),這樣就起到了小數(shù)的顯示,確保精確的顯示。本系統(tǒng)采用四位八段數(shù)碼管,我設(shè)置單片機(jī)驅(qū)動(dòng)數(shù)碼管采用三極管的電流控制方式,單片機(jī)輸出口電流,驅(qū)動(dòng)三極管,達(dá)到控制顯示的目的。連接原理圖如圖7所示:</p><p> 圖7 數(shù)碼管顯示數(shù)碼管1602原理圖</p><p><b> 按鍵模塊</b></p><p> 我在本設(shè)計(jì)中加
33、入了3個(gè)按鍵,其中S1為模式鍵,按一次,選擇顯示當(dāng)前溫度模式,按第二次,選擇設(shè)置上下限溫度模式,按第三次,復(fù)位模式。S2、S3為設(shè)置鍵,用于設(shè)置上下限溫度值。如圖8所示:</p><p><b> 圖8 按鍵原理圖</b></p><p> 3.2.5系統(tǒng)電路結(jié)構(gòu)</p><p><b> 系統(tǒng)軟件設(shè)計(jì)</b>&l
34、t;/p><p> 總體軟件框圖(如圖9)</p><p><b> 圖9總體軟件框圖</b></p><p><b> 各模塊程序設(shè)計(jì)</b></p><p><b> 溫度數(shù)據(jù)采集:</b></p><p> 根據(jù)DS18B20的通訊協(xié)議,單片
35、機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作,復(fù)位要求單片機(jī)將數(shù)據(jù)線下拉50微秒,然后釋放,當(dāng)DS18B20受到信號(hào)后等待16~60微秒左右,然后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。</p><p> 下圖12是DS18B20的初始化和讀寫(xiě)時(shí)
36、序:</p><p> 圖12 DS18B20讀寫(xiě)時(shí)序</p><p><b> 系統(tǒng)調(diào)試與測(cè)試</b></p><p><b> 硬件調(diào)試</b></p><p> 在本溫度控制電路的設(shè)計(jì)調(diào)試中遇到了很多的問(wèn)題?;叵脒@些問(wèn)題只要認(rèn)真多思考都是可以避免的,以下為主要的問(wèn)題:</p>
37、;<p> 開(kāi)始調(diào)試時(shí)發(fā)現(xiàn)數(shù)碼管發(fā)熱很厲害,后來(lái)發(fā)現(xiàn)三極管的驅(qū)動(dòng)電流太大了,加上上拉電阻后問(wèn)題就解決了。</p><p> 雙向可控硅BTA12-600B高壓部分電路,加104電容時(shí),發(fā)生擊穿現(xiàn)象,導(dǎo)致光耦控制部分電路癱瘓,原因是耐壓值不夠。解決的方法有兩種,第一種是更換耐壓值更高的電容;由于該電容的作用是吸收可控硅元件的殘余電量,使得可控硅能夠正常導(dǎo)通截止,而根據(jù)使用的負(fù)載(交流電機(jī)),去掉該
38、電容后,該電路能夠正常的工作,所以第二種是在電路可以運(yùn)行的狀況下去掉該104電容相連的電路。我采取的是第二種方法。</p><p><b> 軟件調(diào)試</b></p><p> 在軟件調(diào)試時(shí)也出現(xiàn)了一些問(wèn)題,其中主要的問(wèn)題有以下兩個(gè)方面:</p><p> 程序讀取溫度值時(shí),出現(xiàn)的現(xiàn)象,造成風(fēng)扇溫度在判斷時(shí)出現(xiàn)錯(cuò)誤,使風(fēng)扇經(jīng)常性突快突慢變
39、化,蜂鳴器也不斷的蜂鳴報(bào)警。解決的方法是在讀取溫度判斷時(shí)加延時(shí),并且多次判斷,防止跳變。</p><p> 調(diào)節(jié)系統(tǒng)參數(shù)時(shí),數(shù)碼管光標(biāo)太快以致調(diào)節(jié)的時(shí)候觀察困難,原因是刷新數(shù)碼管太快。解決的方法是在相應(yīng)數(shù)據(jù)更該時(shí),才開(kāi)始刷新數(shù)碼管內(nèi)容。</p><p><b> 設(shè)計(jì)總結(jié)</b></p><p> 在整個(gè)設(shè)計(jì)過(guò)程中,充分發(fā)揮人的主觀能動(dòng)性
40、,自主學(xué)習(xí),學(xué)到了許多沒(méi)學(xué)到的知識(shí)。較好的完成了作品,達(dá)到了預(yù)期的目的,完了最初的設(shè)想。但是在做板時(shí)由于之前考慮的不夠周全,時(shí)鐘芯片沒(méi)有加到上拉電阻,由于是做好了板把元件焊上去才發(fā)現(xiàn)的,只能在板的后面把3個(gè)上拉電阻焊上去,所以導(dǎo)致了整塊板的看起來(lái)不是很美觀。通過(guò)這一次的經(jīng)驗(yàn)我意識(shí)到了對(duì)電路的設(shè)計(jì)、布局要先有一個(gè)好的構(gòu)思,而且要認(rèn)真仔細(xì)的檢查各個(gè)功能模塊的具體情況,確保不遺留什么元件,才做出美觀、大方的電路板。程序編寫(xiě)中,先研究各個(gè)功能模
41、塊的程序,包括時(shí)鐘模塊的程序,溫度模塊的程序,不懂的就通過(guò)查資料或者請(qǐng)教老師和同學(xué)來(lái)解決,然后再整理好這些程序,最終完成了能實(shí)現(xiàn)整個(gè)設(shè)計(jì)要求的程序。在此次設(shè)計(jì)中,知道了做凡事要有一顆平常的心,不要想著走捷徑,也練就了我們的耐心和細(xì)心,做什么事都要認(rèn)真仔細(xì),因?yàn)榧?xì)節(jié)決定成敗??傊@次設(shè)計(jì)使我的能力得到了全方位的提高。</p><p><b> 參考文獻(xiàn)</b></p><
42、;p> [1]沙占友 王彥明 孟志永. 單片機(jī)外圍電路設(shè)計(jì)[M]. 北京: 電子工業(yè)出版社,2003,1</p><p> [2]李建忠. 單片機(jī)原理及應(yīng)用(第二版) [M]. 西安: 西安電子科技大學(xué)出版社,2008,2</p><p> [3]譚浩強(qiáng).C程序設(shè)計(jì)(第三版) [M]. (清華大學(xué)出版社)2006.11</p><p> [4]求是科技
43、. 單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M]. 北京: 人民郵電出版社,2004</p><p> [5]華成英 童詩(shī)白.模擬電子技術(shù)基礎(chǔ)(第四版) [M]. (高等教育出版社)2006.1</p><p> [6]繆家鼎 徐文娟 牟同升. 光電技術(shù)[M]. 浙江大學(xué)出版社,1996.3</p><p> [7]吳大正.電路基礎(chǔ)(第二版)(西安電子科技大學(xué)出版社)20
44、00.7</p><p> [8]袁小平.電子技術(shù)綜合設(shè)計(jì)教程(第一版)(機(jī)械工業(yè)出版社)2008.4</p><p> [9]康華光, 鄒壽彬,電子技術(shù)基礎(chǔ)數(shù)字部分(第四版) 北京:高等教育出版社 1999</p><p> [10]杜膚生, 數(shù)字集成電路應(yīng)用精粹,北京:人民郵電出版社 2001</p><p> [1
45、1]陳大欽,電子技術(shù)基礎(chǔ)實(shí)驗(yàn)(第二版),北京:高等教育出版社 2000</p><p> [12]全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽組委會(huì),第五界全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽獲獎(jiǎng)作品選編.2001.北京理工大學(xué)出版社, 2003</p><p> [13]中國(guó)計(jì)量出版社組編,新編電子電路大全, 北京:中國(guó)計(jì)量出版社, 2001.1</p><p> [14]葛汝明,
46、《電子技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì)》,山東: 山東大學(xué)出版社 2004 </p><p> [15]周永金,《 模擬電子技術(shù)及應(yīng)用 》,西安:陜西國(guó)防學(xué)院電子教研室 2005</p><p> [16]吳瑋瑋, PROTEL 99簡(jiǎn)明應(yīng)用教程 ,西安:陜西國(guó)防學(xué)院電子教研室 2006</p><p> [17]任元,吳勇,《 常用電子元器件簡(jiǎn)明手冊(cè)
47、》,北京:工業(yè)出版社 2000 </p><p> [18]程路,鄭毅,向先波,PROTEL 99SE 電路板設(shè)計(jì)與制作,人民郵電出版社 2007</p><p><b> 致謝</b></p><p> 這次的設(shè)計(jì)和論文是在各位老師的悉心指導(dǎo)下完成的。你們嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我
48、。從課題的選擇到項(xiàng)目的最終完成,你們都始終給予我細(xì)心的指導(dǎo)和不懈的支持。在此謹(jǐn)向老師們致以誠(chéng)摯的謝意和崇高的敬意。 在此,我還要感謝在一起愉快的度過(guò)大學(xué)三年的09級(jí)電子班的同學(xué)和老師們,是你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至本文的順利完成。</p><p> 最后,衷心感謝在百忙之中抽出寶貴時(shí)間對(duì)此論文進(jìn)行評(píng)閱與審議的老師們。感謝學(xué)院給我提供了一個(gè)展現(xiàn)自己的舞臺(tái),給我一次難得煅煉的機(jī)
49、會(huì),使得我的動(dòng)手能力和專(zhuān)業(yè)技能都有了很大的提高。</p><p><b> 附錄</b></p><p><b> 附錄A:程序清單</b></p><p> //********DS18B20 temp controller**********************************************
50、***</p><p> #include <reg52.h></p><p> #include <intrins.h></p><p> #include <iic.h> //_nop_();延時(shí)函數(shù)用</p><p> #define u
51、char unsigned char</p><p> #define uint unsigned int</p><p> sbit DQ=P1^3; //溫度輸入口</p><p> sbit IO=P1^5; //繼電器輸出口 </p><p> s
52、bit bp=P1^4; </p><p> uint h; </p><p> uint temp,set;</p><p> uint count,flag;</p><p> uchar set1[3]={0};</p>&l
53、t;p> sbit k1=P1^0;</p><p> sbit k2=P1^1;</p><p> sbit k3=P1^2;</p><p> //**************溫度小數(shù)部分用查表法***********//</p><p> uchar code ditab[16]=</p&g
54、t;<p> {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};</p><p><b> //</b></p><p> uchar code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82
55、,0xf8,0x80,0x90,0xff,0xbf};</p><p> //共陽(yáng)LED段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮
56、" "-" </p><p> uchar code dis_8[12]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,</p><p> 0xFF,0x3F};</p><p> //帶小數(shù)點(diǎn)共陰LED段碼表 "0" &q
57、uot;1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" </p><p> uchar data temp_data[2]={0x00,0x00};
58、 //讀出溫度暫放</p><p> uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //顯示單元數(shù)據(jù),共4個(gè)數(shù)據(jù)和一個(gè)運(yùn)算暫用</p><p> /*****************11us延時(shí)函數(shù)*************************/</p><p> voi
59、d delay(uint t)</p><p><b> {</b></p><p> for (;t>0;t--);</p><p><b> }</b></p><p> void delay2(uchar x)</p><p><b> {&l
60、t;/b></p><p> uchar a,b;</p><p> for(a=0;a<20;a++)</p><p> { for(b=x;b>0;b--); }</p><p><b> }</b></p><p> /****************顯示掃描函數(shù)
61、***************************/</p><p> void scan()</p><p><b> {</b></p><p> P0=dis_7[display[2]];//數(shù)據(jù)顯示 </p><p> P2=0Xfb;
62、 </p><p> delay(250);</p><p> P0=dis_8[display[1]];//小數(shù)點(diǎn)顯示</p><p> P2=0Xfd; </p><p> delay(250);</p><p> P0=dis_7[display[0]];//數(shù)據(jù)顯示
63、 </p><p> P2=0Xfe; </p><p> delay(250);</p><p><b> P0=0XFF;</b></p><p><b> P2=0XFF;</b></p><p><
64、;b> }</b></p><p> /****************DS18B20復(fù)位函數(shù)************************/</p><p> void ow_reset(void)</p><p><b> {</b></p><p> char presence=1;&
65、lt;/p><p> while(presence)</p><p><b> {</b></p><p> while(presence)</p><p><b> {</b></p><p> DQ=1;_nop_();_nop_();//從高拉倒低</p&g
66、t;<p> DQ=0; </p><p> delay(50); //550 us</p><p> DQ=1; </p><p> delay(6);
67、 //66 us</p><p> presence=DQ; //presence=0 復(fù)位成功,繼續(xù)下一步</p><p><b> } </b></p><p> delay(45); //延時(shí)500 us</p><p> presence=~DQ;
68、 </p><p><b> }</b></p><p> DQ=1; //拉高電平</p><p><b> }</b></p><p> /****************DS18B20寫(xiě)命令函數(shù)************************/<
69、;/p><p> //向1-WIRE 總線上寫(xiě)1個(gè)字節(jié)</p><p> void write_byte(uchar val)</p><p><b> { </b></p><p><b> uchar i;</b></p><p> for(i=8;i>0;i
70、--)</p><p><b> {</b></p><p> DQ=1;_nop_();_nop_(); //從高拉倒低</p><p> DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us</p><p> DQ=val&0x0
71、1; //最低位移出</p><p> delay(6); //66 us</p><p> val=val/2; //右移1位</p><p><b> }</b><
72、/p><p><b> DQ=1;</b></p><p><b> delay(1);</b></p><p><b> }</b></p><p><b> //</b></p><p> /***************
73、*DS18B20讀1字節(jié)函數(shù)************************/</p><p> //從總線上取1個(gè)字節(jié)</p><p> uchar read_byte(void)</p><p><b> {</b></p><p><b> uchar i;</b></p>
74、<p> uchar value=0;</p><p> for(i=8;i>0;i--)</p><p><b> {</b></p><p> DQ=1;_nop_();_nop_();</p><p> value>>=1;</p><p> DQ
75、=0;_nop_();_nop_();_nop_();_nop_(); //4 us</p><p> DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us</p><p> if(DQ)value|=0x80;</p><p> delay(6);
76、 //66 us</p><p><b> }</b></p><p><b> DQ=1;</b></p><p> return(value);</p><p><b> }</b></p><p><b&g
77、t; //</b></p><p> /****************讀出溫度函數(shù)************************/</p><p><b> //</b></p><p> uint read_temp()</p><p><b> {</b></p&
78、gt;<p> ow_reset(); //總線復(fù)位</p><p> delay(200);</p><p> write_byte(0xcc); //發(fā)命令</p><p> write_byte(0x44); //發(fā)轉(zhuǎn)換命令</p><p&g
79、t; ow_reset(); </p><p><b> delay(1);</b></p><p> write_byte(0xcc); //發(fā)命令</p><p> write_byte(0xbe);</p><p> temp_data[0]=read_byte(); //讀溫
80、度值的第字節(jié)</p><p> temp_data[1]=read_byte(); //讀溫度值的高字節(jié)</p><p> temp=temp_data[1];</p><p> temp<<=8; </p><p> tem
81、p=temp|temp_data[0]; // 兩字節(jié)合成一個(gè)整型變量。</p><p> return temp; //返回溫度值</p><p><b> }</b></p><p><b> //</b></p><p> /*********
82、*******溫度數(shù)據(jù)處理函數(shù)************************/</p><p> //二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè)</p><p> //字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后,就是溫度值的百、十、個(gè)位值,而剩</p><p> //下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后,就是溫度值的小數(shù)部分</p><p&g
83、t; /********************************************************/</p><p> void work_temp(uint tem)</p><p><b> {</b></p><p> uchar n=0;</p><p> if(tem>63
84、48) // 溫度值正負(fù)判斷</p><p> {tem=65536-tem;n=1;} // 負(fù)溫度求補(bǔ)碼,標(biāo)志位置1</p><p> display[4]=tem&0x0f; // 取小數(shù)部分的值</p><p> display[0]=ditab[displ
85、ay[4]]; // 存入小數(shù)部分顯示值</p><p> display[4]=tem>>4; // 取中間八位,即整數(shù)部分的值</p><p> display[3]=display[4]/100; // 取百位數(shù)據(jù)暫存</p><p> display[2]=display[4]/10%10; //
86、 取十位數(shù)據(jù)暫存</p><p> DQ=display[4]/10%10;</p><p> display[1]=display[4]%10; // 取個(gè)位數(shù)據(jù)暫存</p><p> /******************符號(hào)位顯示判斷**************************/</p><p> if(!disp
87、lay[3]) </p><p><b> {</b></p><p> display[3]=0x0a; //最高位為0時(shí)不顯示</p><p><b> }</b></p><p> if(n){display[3]=0x0b;} //負(fù)溫度時(shí)最高位顯示&q
88、uot;-"</p><p><b> }</b></p><p><b> //</b></p><p> //********************************************************</p><p> void beep(uchar x)
89、</p><p><b> {uchar i;</b></p><p> for(i=x;i>0;i--)</p><p><b> {</b></p><p> unsigned int j=400;</p><p> while(j--)</p>
90、;<p><b> {bp=~bp;</b></p><p> delay2(2);}</p><p> delay2(100); </p><p><b> }</b></p><p><b> }</b></p><p>
91、//*********************************************************</p><p> void disp_set()</p><p><b> {</b></p><p> P0=dis_7[set1[2]];//數(shù)據(jù)顯示 </p>&
92、lt;p> P2=0Xfb; </p><p> delay(250);</p><p> P0=dis_8[set1[1]];//小數(shù)點(diǎn)顯示</p><p> P2=0Xfd; </p><p> delay(250);</p><p>
93、 P0=dis_7[set1[0]];//數(shù)據(jù)顯示 </p><p> P2=0Xfe; </p><p> delay(250);</p><p><b> }</b></p><p> ///*****************************
94、******************************</p><p> void key_scan()</p><p><b> {</b></p><p><b> if(k1==0)</b></p><p> {while(k1==0);</p><p>
95、<b> flag++;</b></p><p> if(flag==2)</p><p><b> flag=0;}</b></p><p> if(flag==1)</p><p><b> {</b></p><p> while(k1
96、==1)</p><p><b> {</b></p><p><b> if(k2==0)</b></p><p> { delay(50);</p><p><b> if(k2==0)</b></p><p> { delay(10000
97、);</p><p><b> set++;</b></p><p> if(set==1000)</p><p><b> set=0;</b></p><p><b> }</b></p><p><b> }</b>
98、</p><p><b> if(k3==0)</b></p><p> { delay(50);</p><p><b> if(k3==0)</b></p><p> { delay(10000);</p><p><b> set--;</b
99、></p><p> if(set==-1)</p><p><b> set=999;</b></p><p><b> }</b></p><p><b> }</b></p><p> set1[2]=set/100;</p&
100、gt;<p> set1[1]=set%100/10;</p><p> set1[0]=set%100%10;</p><p> disp_set();</p><p><b> }</b></p><p> write(2,set1[2]);</p><p> del
101、ay2(250);</p><p> write(1,set1[1]);</p><p> delay2(250);</p><p> write(0,set1[0]);</p><p> delay2(250); </p><p><b> }</b></p><p
102、><b> }</b></p><p> //****************************************************</p><p> void bijiao()</p><p><b> {</b></p><p> count=(display[
103、2]*100)+(display[1]*10)+display[0]; </p><p> if(count>set) </p><p> {IO=0;//啟動(dòng)繼電器 </p><p><b> beep(1);}</b></p><p><b> else </b&
104、gt;</p><p><b> IO=1; </b></p><p><b> }</b></p><p> /****************主函數(shù)************************/</p><p> void main()</p><p>&l
105、t;b> {</b></p><p> set1[0]=read(0);</p><p> set1[1]=read(1);</p><p> set1[2]=read(2);</p><p> set=set1[2]*100+set1[1]*10+set1[0];</p><p> fo
106、r(h=0;h<4;h++) //開(kāi)機(jī)顯示"0000"</p><p> {display[h]=0;} </p><p> ow_reset(); //開(kāi)機(jī)先轉(zhuǎn)換一次</p><p> write_byte(0xcc); //Skip ROM&l
107、t;/p><p> write_byte(0x44); //發(fā)轉(zhuǎn)換命令</p><p> for(h=0;h<100;h++) //開(kāi)機(jī)顯示"0000"</p><p><b> {scan();}</b></p><p><b> w
108、hile(1)</b></p><p> { key_scan();</p><p> work_temp(read_temp()); //處理溫度數(shù)據(jù) //不啟動(dòng)繼電器 </p><p> if(display[3]==0x0a)</p><p> {scan(); &l
109、t;/p><p> bijiao();}</p><p><b> else</b></p><p><b> IO=1;</b></p><p><b> //顯示溫度值</b></p><p><b> }</b><
110、/p><p><b> }</b></p><p><b> //</b></p><p> //***********************結(jié)束**************************//</p><p><b> 附錄B:電路圖</b></p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-溫室溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文-溫室溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)溫室溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的溫室溫度自動(dòng)控制系統(tǒng)畢業(yè)論文
- 基于單片機(jī)的溫室溫度自動(dòng)控制系統(tǒng)畢業(yè)論文
- 基于單片機(jī)的溫室溫度自動(dòng)控制系統(tǒng)(畢業(yè)論文)
- 自動(dòng)控制系統(tǒng)的設(shè)計(jì) 畢業(yè)論文
- 車(chē)站信號(hào)自動(dòng)控制系統(tǒng)畢業(yè)論文
- 畢業(yè)論文----自動(dòng)控制系統(tǒng)的設(shè)計(jì)
- 車(chē)站信號(hào)自動(dòng)控制系統(tǒng)畢業(yè)論文
- 工業(yè)機(jī)器手自動(dòng)控制系統(tǒng)畢業(yè)論文
- 工業(yè)機(jī)器手自動(dòng)控制系統(tǒng)畢業(yè)論文
- 畢業(yè)論文---水位遙測(cè)自動(dòng)控制系統(tǒng)設(shè)計(jì)
- 精餾塔自動(dòng)控制系統(tǒng)畢業(yè)論文
- 爐溫自動(dòng)控制系統(tǒng)的研究畢業(yè)論文
- 基于plc控制的行車(chē)自動(dòng)控制系統(tǒng)畢業(yè)論文
- 車(chē)站信號(hào)自動(dòng)控制系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 大棚溫度自動(dòng)控制系統(tǒng)設(shè)計(jì)
- 全自動(dòng)洗衣機(jī)自動(dòng)控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 全自動(dòng)洗衣機(jī)自動(dòng)控制系統(tǒng)設(shè)計(jì)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論