溫度測控系統(tǒng)畢業(yè)論文_第1頁
已閱讀1頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  溫 度 測 控 系 統(tǒng)</p><p>  學(xué)生姓名: XXX </p><p>  所 在 系: 通 信 工 程 </p><p>  專業(yè)名稱: XXX </p><p>  班 級: XXX

2、 </p><p>  學(xué) 號: XXX </p><p>  指導(dǎo)教師: XXX </p><p><b>  xxxx年x月</b></p><p>  數(shù) 字 溫 度 測 控 系 統(tǒng)</p><

3、p>  學(xué)生:xx 指導(dǎo)教師:xxx</p><p>  內(nèi)容摘要:信息時代的今天,電子技術(shù)得到了突飛猛進(jìn)的發(fā)展。伴隨著電子技術(shù)的飛速發(fā)展,現(xiàn)代電子產(chǎn)品更是滲透到了社會的各個領(lǐng)域,并有力地推動著社會生產(chǎn)力的發(fā)展和社會信息化程度的提高。</p><p>  溫度是一個和人們生活環(huán)境有著密切關(guān)系的物理量,也是一個人們在科學(xué)實驗和生產(chǎn)活動中經(jīng)常需要

4、加以監(jiān)測或控制的重要物理量。溫度控制技術(shù)是一種比較重要的工業(yè)技術(shù),不僅在化工、醫(yī)療、航空、航天等高科技領(lǐng)域,還應(yīng)用在人們的日常生活中。</p><p>  本文從溫控模型和特點出發(fā),介紹了一種適合模糊溫度控制的方法,并給出了單片機(jī)模糊溫度控制的實例,并對溫度進(jìn)行良好的精度控制. 本系統(tǒng)具有設(shè)置水溫、實時顯示溫度,控制溫度和報警保溫等功能,它具有結(jié)構(gòu)簡單、實現(xiàn)容易,成本低,具有實用價值等特點。</p>

5、<p>  關(guān)鍵詞:單片機(jī)    數(shù)字溫度傳感器 模糊溫度控制</p><p>  Temperature observe and control system</p><p>  Abstract:The information age today, electronic technology has been rapid development. A

6、long with the rapid development of electronic technology, modern electronic products is to infiltrate into the society in various fields, and have effectively promoted the development of social productive forces and soci

7、al information, also increased.</p><p>  Temperature is an and people's living environment have near concern of physics quantity is also the important physics quantity that a persons usually needs to tak

8、e in to monitor or controls in science the experiment with the production.The temperature control technique is a kind of more important industrial technique, not only at chemical engineering,medical treatment ,aviation ,

9、aerospace etc. high-tech realm, also applied in people's daily life.From temperature control model and character, the </p><p>  Key words: microcomputer digital temperature transducer </p><

10、p>  fuzzy temperature control</p><p><b>  目錄</b></p><p><b>  一、引言1</b></p><p>  二、系統(tǒng)硬件設(shè)計1</p><p> ?。ㄒ唬┫到y(tǒng)總體設(shè)計1</p><p> ?。ǘ﹩卧?/p>

11、路的功能原理分析3</p><p><b> ?。ㄈ╇娐穲D3</b></p><p> ?。ㄋ模┌l(fā)揮部分設(shè)計3</p><p>  三、系統(tǒng)軟件的設(shè)計3</p><p> ?。ㄒ唬┏绦虻闹髁鞒虉D4</p><p> ?。ǘ└鱾€功能模塊流程5</p><p>

12、 ?。ㄈ囟瓤刂颇K8</p><p><b>  四、系統(tǒng)組成10</b></p><p> ?。ㄒ唬㏄CB板10</p><p>  (二)3DPCB板11</p><p> ?。ㄈ┙Y(jié)構(gòu)工藝及說明12</p><p><b>  五、系統(tǒng)調(diào)試12</b>&

13、lt;/p><p> ?。ㄒ唬╇娐窚y試12</p><p> ?。ǘ﹥x器的使用12</p><p> ?。ㄈy試的結(jié)果12</p><p> ?。ㄋ模┌l(fā)揮部分測試12</p><p>  六、結(jié)論與討論13</p><p><b>  致謝14</b></

14、p><p><b>  附錄15</b></p><p><b>  參考文獻(xiàn)23</b></p><p><b>  溫度測控系統(tǒng)</b></p><p><b>  一、引言</b></p><p>  在現(xiàn)代化的工業(yè)生產(chǎn)中,電

15、流、電壓、溫度、壓力、流量、流速和開關(guān)量都是常用的主要被控參數(shù)。例如:在冶金工業(yè)、化工生產(chǎn)、電力工程、造紙行業(yè)、機(jī)械制造和食品加工等諸多領(lǐng)域中,人們都需要對各類加熱爐、熱處理爐、反應(yīng)爐和鍋爐中的溫度進(jìn)行檢測和控制。采用MCS-51單片機(jī)來對溫度進(jìn)行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。因此,單片機(jī)對溫度的控制問題是一個工業(yè)生產(chǎn)中經(jīng)常會遇到的問題。本文以它

16、為例進(jìn)行介紹,希望能收到舉一反三和觸類旁通的效果。</p><p><b>  二、系統(tǒng)硬件設(shè)計</b></p><p><b> ?。ㄒ唬┫到y(tǒng)總體設(shè)計</b></p><p><b>  1.設(shè)計思想 </b></p><p>  根據(jù)溫度控制器的功能要求,并結(jié)合對PIC16

17、F87X系列單片機(jī)的資源分析,采用此系列中的主流型號PIC16F877作為電路系統(tǒng)的控制核心,數(shù)字溫度傳感器測溫,LED顯示溫度,按鍵設(shè)定目標(biāo)溫度,模糊溫度控制,保溫報警等幾個主要模塊組成.首先選擇相應(yīng)具體的工作實現(xiàn)元器件及方案。如下:</p><p><b>  (1)算法的選擇</b></p><p>  目前溫度控制系統(tǒng)中的控制算法多為PID算法,但PID算法由

18、于微分作用導(dǎo)致高頻干擾大,易引起超調(diào),參數(shù)調(diào)整也麻煩,同時考慮到水溫控制系統(tǒng)本身有一個大滯后的特點,故本系統(tǒng)選用了目前國際上較流行的從能量控制的觀點出發(fā),引入模糊控制思想而提出的變參數(shù)控制算法控制. 控制系統(tǒng)在其特性或參數(shù)發(fā)生攝動時仍可使品質(zhì)指標(biāo)保持不變的性能。魯棒性是英文robustness一詞的音譯,也可意譯為穩(wěn)健性。魯棒性原是統(tǒng)計學(xué)中的一個專門術(shù)語,70年代初開始在控制理論的研究中流行起來,用以表征控制系統(tǒng)對特性或參數(shù)攝動的不敏感

19、性。在實際問題中,系統(tǒng)特性或參數(shù)的攝動常常是不可避免的。產(chǎn)生攝動的原因主要有兩個方面,一個是由于量測的不精確使特性或參數(shù)的實際值會偏離它的設(shè)計值(標(biāo)稱值),另一個是系統(tǒng)運(yùn)行過程中受環(huán)境因素的影響而引起特性或參數(shù)的緩慢漂移。因此,魯棒性已成為控制理論中的一個重要的研究課題,也是一切類型的控制系統(tǒng)的設(shè)計中所必需考慮的一個基本問題。對魯棒性的研究主要限于線性定??刂葡到y(tǒng),所涉及的領(lǐng)域包括穩(wěn)定性、無靜差性、適應(yīng)控制等。魯棒性問題與控制系統(tǒng)的相對

20、穩(wěn)定性和不變性原理有著密切的聯(lián)系,內(nèi)模原理的建立則對魯棒性問題</p><p>  其基本思想是通過調(diào)整k的大小,可改變對差量和差量變化率的不同加權(quán)程度。在實際系統(tǒng)中,系統(tǒng)在不同的狀態(tài)下,對控制規(guī)則中的差量e和差量變化率c有不同的要求。如差量較大時,控制系統(tǒng)的主要任務(wù)是減小溫差,此時對差量加權(quán)應(yīng)該大些;當(dāng)差量較小時,控制系統(tǒng)的主要任務(wù)是使系統(tǒng)盡快穩(wěn)定,減小超調(diào),此時要求在控制規(guī)則中差量變化率加權(quán)大些。</p

21、><p>  基于這個思想,我組提出了模糊溫度控制方法,在規(guī)定的時間內(nèi),根據(jù)不同的溫差和目標(biāo)溫度來改變加熱時間與休息時間的在控比,從而達(dá)到控制的目的.</p><p>  算法通過軟件實現(xiàn),此算法使系統(tǒng)能自行控制加熱程度,使系統(tǒng)具有無超調(diào)和恒溫精度高,具有穩(wěn)定性好,控制參數(shù)對系統(tǒng)的依賴性弱等優(yōu)點。</p><p>  (2)傳感器的選擇 </p><

22、;p>  由于本設(shè)計是精確控制系統(tǒng),并且有控制范圍上的要求,所以在選擇傳感器上要著重考慮其精度和測試范圍。AD公司的AD590和AD7416都包含一個可以精確測量環(huán)境溫度的片內(nèi)溫度傳感器,但AD590是模擬傳感器,需對溫度模擬信號進(jìn)行數(shù)字化處理,在調(diào)理和放大信號時,又會帶來新的誤差,影響精度,而AD7416包含一個10位AD轉(zhuǎn)換器,是一個以0.25的分辨力將溫度數(shù)字化的數(shù)字式溫度傳感器,,并且其測溫理論范圍為-55度到125度,因

23、其精確度高,范圍可選這兩大特點,故本設(shè)計的傳感器選為AD7416。</p><p>  (3)單片機(jī)的選擇</p><p>  現(xiàn)在,市場上的單片機(jī)種類繁多,例如51、PIC等。而51系列單片機(jī)不具有IIC端口,要對其進(jìn)行模擬設(shè)置;并且相對PIC來說,其指令也較復(fù)雜。本設(shè)計選用了指令精簡、集成度高,并具有I?C 接口的PIC單片機(jī),而PIC16F877這一型號的PIC單片機(jī)已能夠滿足系統(tǒng)

24、的需要。</p><p><b>  2.設(shè)計步驟 </b></p><p>  系統(tǒng)的工作原理如圖1所示: 數(shù)字溫度傳感器將溫度測量出來,送給單片機(jī)通過軟件控制并用LED數(shù)碼管顯示出來,人工設(shè)置目標(biāo)溫度通過加熱水溫,使水溫達(dá)到目標(biāo)溫度。</p><p>  圖1 整體系統(tǒng)框圖</p><p><b>  3

25、.系統(tǒng)計算</b></p><p>  由于本系統(tǒng)采用AD式的數(shù)字溫度傳感器的精度為0.25℃,所以溫度測量精度為0.3℃,通過實驗我們的控制精度為0.4℃。</p><p> ?。ǘ﹩卧娐返墓δ茉矸治?</p><p>  基本硬件電路圖如圖所示。在本系統(tǒng)中單片機(jī)的引腳分布:RA0用于報警,RA1用于控制繼電器,RA3 用于啟動加熱開關(guān),MCLR

26、用于復(fù)位,RA2是步進(jìn)按紐,RD2~RD7用于控制LED的掃描,RC3~RC4分別是時鐘線信號和數(shù)據(jù)線信號。</p><p><b>  1.溫度測量</b></p><p>  測溫元件采用AD公司的單線數(shù)字溫度傳感器AD7416。AD7416提供十位溫度讀數(shù),測量范圍-55℃~+125℃,采用獨I?C 總線協(xié)議,只需一根口線即實現(xiàn)與MCU的雙向通訊,具有連接簡單

27、,高精度,高可靠性等特點。在工作時,通過總線向其提供電源,單片機(jī)發(fā)出指令碼讀取溫度值。每400微秒取樣一次,取4次溫度值的平均值。每0.5秒刷新一次。</p><p><b>  2.顯示電路</b></p><p>  我們通過實際觀察當(dāng)時當(dāng)?shù)氐臏囟鹊弥?,溫度不會達(dá)到100℃度。溫度采用三位七段碼顯示0℃~99。9℃。對溫度進(jìn)行循環(huán)掃描顯示,二個LED用于當(dāng)前按鍵

28、功能設(shè)定。</p><p><b>  3.加熱控制電路</b></p><p>  單片機(jī)通過光電耦合對繼電器進(jìn)行控制,用來切斷或接通加熱管電源,從而達(dá)到對水溫的控制。</p><p><b>  4.按鍵設(shè)定溫度</b></p><p>  本次是采用軟件來實現(xiàn)的,每5毫秒檢測一次按鍵,如果連續(xù)

29、兩次均為按下狀態(tài),則置按鍵狀態(tài)位有效。此后一直等到按鍵狀態(tài)位清零再重新開始檢測。 </p><p><b> ?。ㄈ╇娐穲D</b></p><p><b>  圖2 電路圖</b></p><p><b> ?。ㄋ模┌l(fā)揮部分設(shè)計</b></p><p>  PIC16

30、F877本身具有看門狗定時器,當(dāng)系統(tǒng)出現(xiàn)異常時,能自動進(jìn)行掉電保護(hù)和系統(tǒng)復(fù)位。系統(tǒng)采用硬件計數(shù)器來計數(shù),提高CPU的工作效率。</p><p><b>  三、系統(tǒng)軟件的設(shè)計</b></p><p>  系統(tǒng)中鍵盤掃描、保溫等子程序都通過查詢實現(xiàn),并采用4MHz的時鐘頻率,對指令的運(yùn)行時間進(jìn)行了精確計算和設(shè)計,保證軟件的可靠性和穩(wěn)定性。</p><

31、p> ?。ㄒ唬┏绦虻闹髁鞒虉D</p><p>  圖3 程序的主流程圖</p><p> ?。ǘ└鱾€功能模塊流程</p><p>  溫度傳感器溫度數(shù)字采集部分</p><p>  1.AD7416的引腳配置如下圖:</p><p>  圖4 AD7416的引腳配置</p><p>

32、<b>  2. 引腳說明</b></p><p><b>  表1 引腳表</b></p><p>  3. 從AD7416中讀數(shù)據(jù)</p><p>  從AD7416讀數(shù)據(jù)是一或二字節(jié)的操作。讀配置寄存器的內(nèi)容是一個單字節(jié)的操作,若從溫度值寄存器中讀數(shù)據(jù)是一個二字節(jié)的操作,如下圖:</p><p&

33、gt;  圖5 AD7416中讀數(shù)據(jù)圖</p><p>  下面即為讀數(shù)字溫度的流程圖:</p><p><b>  圖6 溫度流程圖</b></p><p><b>  按鍵設(shè)置溫度部分</b></p><p>  M是記錄數(shù)的十位,N是記錄數(shù)的個位;</p><p>

34、  設(shè)置端口1即RC0=0;RC1=1,</p><p>  設(shè)置端口2即RC0=1;RC1=0;</p><p>  圖7 溫度設(shè)置框圖</p><p><b>  (三)溫度控制模塊</b></p><p>  E=目標(biāo)溫度與當(dāng)前溫度之差;</p><p>  c=當(dāng)前溫度與上一時刻溫度之差

35、;</p><p>  u=k*e+(1-k)c;k為常數(shù);</p><p>  當(dāng)目標(biāo)溫度與當(dāng)前溫度的差值大于7℃時,系統(tǒng)采用全功率加熱,否則采用模糊溫度控制.在模糊溫度控制的過程中,設(shè)計采用硬件定時器TRM1,TRM2分別作為定時采樣周期和控制周期.TRM1的采樣周期為1.6S,TRM2的控制周期為533MS,即為1/3的TRM1的采樣周期.在533MS內(nèi),系統(tǒng)可根據(jù)參數(shù)U的不同實時修

36、正加熱時間與休息時間的在控比.如20%u說明加熱時間與休息時間為20%,40%u說明加熱時間與休息時間為40%。請見溫度和系統(tǒng)工作波形圖:</p><p>  表2 溫度與常數(shù)關(guān)系表</p><p>  溫度工作波形圖如下:</p><p>  圖8 溫度工作波形</p><p><b>  系統(tǒng)工作波形圖:</b>

37、</p><p>  圖9 系統(tǒng)工作波形</p><p>  圖10 溫度控制框圖</p><p><b>  其他功能模塊</b></p><p>  數(shù)據(jù)處理、保溫、定時計數(shù)等其他功能程序都根據(jù)程運(yùn)行時間進(jìn)行了統(tǒng)籌設(shè)計,在此不再進(jìn)行詳述。</p><p><b>  四、系統(tǒng)組成

38、</b></p><p><b> ?。ㄒ唬㏄CB板</b></p><p><b>  圖11 PCB板</b></p><p><b> ?。ǘ?DPCB板</b></p><p>  圖12 3DPCB板</p><p> ?。ㄈ?/p>

39、)結(jié)構(gòu)工藝及說明</p><p>  我們在上圖空白中,添加了繼電器,結(jié)構(gòu)美觀,簡單整齊。</p><p><b>  五、系統(tǒng)調(diào)試</b></p><p><b> ?。ㄒ唬╇娐窚y試</b></p><p>  電路焊接無誤后,先將數(shù)字溫度傳感器放到水里,LED會顯示出當(dāng)前水的溫度,再放一支標(biāo)準(zhǔn)溫

40、度計與之比較,若幾乎相等,則說明電路無誤;再設(shè)定目標(biāo)溫度,若可以自動加熱,使達(dá)到目標(biāo)溫度,則說明電路測試無誤,實驗可以正常進(jìn)行。</p><p><b> ?。ǘ﹥x器的使用</b></p><p>  首先連接好相應(yīng)的電源線,將溫度計和傳感器放在水里,此時數(shù)碼管會顯示出當(dāng)前溫度值,用戶可以根據(jù)需要設(shè)定目標(biāo)溫度值,按下加熱開關(guān)可開始加熱。當(dāng)溫度達(dá)到你所想要的溫度時,系

41、統(tǒng)會自動斷電,接著系統(tǒng)它又會進(jìn)入保溫系統(tǒng),進(jìn)行保溫。</p><p><b> ?。ㄈy試的結(jié)果</b></p><p>  根據(jù)測試得到的部分實驗數(shù)據(jù)如下:實驗數(shù)據(jù)驗證說明,測量誤差為0.3℃</p><p>  控制誤差為0.4℃,因此本系統(tǒng)的設(shè)計不管是在采樣控制顯示溫度,還是在實時處理顯示精度上,都取得了理想的效果。</p>

42、<p>  表3 溫度測試結(jié)果表</p><p><b>  (四)發(fā)揮部分測試</b></p><p>  當(dāng)溫度達(dá)到目標(biāo)溫度后,系統(tǒng)會自動報警提醒用戶。這時候,系統(tǒng)會進(jìn)入保溫狀態(tài)。溫度時溫度達(dá)到的最高溫度與目標(biāo)溫度的差值只有0.3的誤差。</p><p><b>  六、結(jié)論與討論</b></p&

43、gt;<p>  本次實驗采用了PICC編程方式,實現(xiàn)了溫度的測量與控制,完全達(dá)到了本次實驗的要求,更重要的是該實驗的測量誤差小于0.3℃度,控制誤差小于0.4℃度,已基本實現(xiàn)本實驗擴(kuò)展部分的要求。它可以廣泛用于溫度測量精度要求比較高的場面,實現(xiàn)簡單,成本低。綜上所示,本系統(tǒng)的方案具有實用推廣價值。本系統(tǒng)通過添加一個傳感器,將其貼放在電熱杯的內(nèi)壁上,系統(tǒng)開始加熱,若溫度迅速上升,則說明杯中水不足,很有可能為干燒,為不安全加

44、熱,用戶請注意,這屬于該系統(tǒng)需要改進(jìn)的地方。</p><p><b>  致謝</b></p><p>  在此次的畢業(yè)設(shè)計過程中讓我把所學(xué)的電路知識得到了實踐,使得以前沒有應(yīng)用的實踐知識,也得到了充分的發(fā)揮和體現(xiàn)。當(dāng)然我能順利的完成這次畢業(yè)設(shè)計,首先感謝我的導(dǎo)師,他為本次的畢業(yè)設(shè)計傾注了大量的心血。由于我的知識欠缺和經(jīng)驗不足,一開始對我的畢業(yè)設(shè)計很缺乏信心,他總是笑

45、著說沒問題,還親自幫我找了參考書籍,減少了我不少心理壓力。在設(shè)計期間,導(dǎo)師也是很耐心的指導(dǎo)我,為我解答疑難,使我順利地完成了集成開關(guān)穩(wěn)壓電源設(shè)計。</p><p>  本課題的研究工作是在導(dǎo)師的細(xì)心指導(dǎo)和關(guān)懷下才得以順利完成。從論文的選題、設(shè)計過程、論文的結(jié)構(gòu)到最后的定稿,都得到導(dǎo)師細(xì)心的指導(dǎo)和提攜。導(dǎo)師認(rèn)真負(fù)責(zé)的工作態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神和深厚的理論水平都使我收益匪淺。他無論在理論上還是在實踐中,都給予我很大的幫

46、助,使我得到不少的提高,這對于我今后的學(xué)習(xí)和工作都是一種巨大的幫助。從開始的系統(tǒng)策劃到最后的論文完成,都是在他的指導(dǎo)和幫助下完成的,而且他們給了我們很多技術(shù)上的支持。</p><p>  通過這次畢業(yè)設(shè)計,我不僅達(dá)到了完成設(shè)計任務(wù)的目的,還培養(yǎng)了我分析問題、解決問題的能力。在這次的設(shè)計過程中,領(lǐng)導(dǎo)和導(dǎo)師的大力支持,這些都將對我在以后的學(xué)習(xí)和工作中有很大的幫助。</p><p><b&

47、gt;  附錄</b></p><p><b>  程序清單</b></p><p>  #include<pic.h> //頭文件</p><p>  unsigned char s1[4],s2[4];//采集溫度數(shù)據(jù)并存儲到兩個數(shù)組中,高字節(jié)存到S1中,低字節(jié)存到S2中</p><p> 

48、 unsigned int counter1,counter2,figure1=2,figure2,flag2;//定時器,目標(biāo)溫度,標(biāo)志位申明</p><p>  unsigned int num1,num2,flag1=0,i,j,m;//采集溫度數(shù)據(jù)num1:整數(shù)位,num2:小數(shù)位,啟動標(biāo)志位flag1及延時變量申明</p><p>  double y,temp,e,c,t,u

49、,k;//模糊控制參數(shù)申明</p><p>  const char table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//不帶小數(shù)點筆段碼</p><p>  const char table0[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//帶小

50、數(shù)點筆段碼</p><p>  /*系統(tǒng)I/O端口初始化子程序*/</p><p>  void INITIAL()</p><p><b>  {</b></p><p>  OPTION=0X0F;</p><p>  ADCON1=0X07;//設(shè)定RA口為變通數(shù)字端口</p>

51、<p><b>  TRISD=0;</b></p><p><b>  TRISB=0;</b></p><p><b>  PORTD=0;</b></p><p><b>  PORTB=0;</b></p><p><b> 

52、 TRISA2=1;</b></p><p><b>  TRISA3=1;</b></p><p><b>  TRISC0=0;</b></p><p><b>  TRISA0=0;</b></p><p><b>  TRISA1=0;</b

53、></p><p><b>  TRISC1=0;</b></p><p><b>  RC0=0;</b></p><p><b>  RC1=0;</b></p><p><b>  RA0=0;</b></p><p>

54、<b>  RA1=0;</b></p><p><b>  }</b></p><p>  //tmr1初始化子程序</p><p>  void tmr1int()</p><p><b>  {</b></p><p><b>  TMR

55、1IF=0;</b></p><p><b>  PEIE=1;</b></p><p><b>  TMR1IE=1;</b></p><p>  T1CON=0X30;</p><p><b>  }</b></p><p>  //tm

56、r2初始化子程序</p><p>  void tmr2int()</p><p><b>  {</b></p><p><b>  TMR2IF=0;</b></p><p><b>  PEIE=1;</b></p><p><b>  

57、TMR2IE=1;</b></p><p>  T2CON=0X7B;</p><p><b>  PR2=255;</b></p><p><b>  }</b></p><p>  //i2c初始化子程序</p><p>  void i2cint()<

58、/p><p><b>  {</b></p><p>  SSPCON=0X08;//初始化sspcon寄存器</p><p>  TRISC3=1;//設(shè)置scl為輸入口</p><p>  TRISC4=1; //設(shè)置sda為輸入口</p><p>  SS

59、PSTAT=0X80;//初始化sspstat寄存器</p><p>  SSPADD=19;//設(shè)定i2c波特率50khz頻率</p><p>  SSPCON2=0X00;//初始化sspcon2寄存器</p><p>  di();//關(guān)閉總中斷</p><p>  SSPIF=0;

60、//清ssp中斷標(biāo)志</p><p>  SSPEN=1; //ssp模塊使能 </p><p><b>  }</b></p><p>  //5ms延時子程序</p><p>  void delay()</p><

61、p><b>  {</b></p><p>  for(j=300;--j;)</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  //用戶目標(biāo)溫度輸出子程序</p><p>  vo

62、id ledout()</p><p><b>  {</b></p><p>  PORTB=table[figure1];</p><p><b>  RD7=1;</b></p><p><b>  delay();</b></p><p><

63、;b>  RD7=0;</b></p><p>  PORTB=table[figure2];</p><p><b>  RD6=1;</b></p><p><b>  delay();</b></p><p><b>  RD6=0;</b></p

64、><p>  PORTB=0X40;</p><p><b>  RD5=1;</b></p><p><b>  delay();</b></p><p><b>  RD5=0;</b></p><p><b>  }</b><

65、;/p><p><b>  //鍵盤服務(wù)子程序</b></p><p>  int keyserve()</p><p><b>  {</b></p><p>  RC0=0;RC1=1;</p><p>  if(RA2==0)</p><p>  f

66、igure1+=1;</p><p>  RC0=1;RC1=0;</p><p>  if(RA2==0)</p><p>  figure2+=1;</p><p>  if(figure1==10)</p><p>  figure1=2;</p><p>  if(figure2==10

67、)</p><p>  figure2=0;</p><p>  RC0=0;RC1=1;</p><p>  if(RA3==0)</p><p><b>  flag1=1;</b></p><p>  RC0=0;RC1=0;</p><p><b>  i

68、2cin();</b></p><p>  display();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if((RA2==1)&&(RA3==1)) //等待鍵盤松開</p>

69、<p><b>  break;</b></p><p><b>  i2cin();</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //模糊控制算法</b&

70、gt;</p><p>  float control( )</p><p><b>  { </b></p><p>  e=(float)(figure1*10+figure2)-(float)num1-(float)num2/100;//E為目標(biāo)溫度與當(dāng)前溫度之差</p><p>  if(flag2==1)

71、 //判斷是否第一次啟動控制</p><p>  c=0; //是,則C設(shè)定為0;</p><p>  else c=(float)(num1*100+num2)/100-temp;//否,則C為當(dāng)前溫度與上一采樣溫度之差</p><p>  u=k*e+(1-k)*c;

72、 //模糊控制公式</p><p>  temp=(float)(num1*100+num2)/100;//記錄上一時刻溫度值</p><p>  return u; //返回控制參數(shù)</p><p><b>  } </b></p><p>  //冒泡從小到大排序

73、算法</p><p>  void bubblesort(char a[],int num)</p><p><b>  {</b></p><p>  int m,n,flag=1,temp;</p><p>  for(m=1;m<num&&flag==1;m++)</p><

74、;p><b>  {</b></p><p><b>  flag=0;</b></p><p>  for(n=0;n<num-m;n++)</p><p><b>  {</b></p><p>  if(a[n]>a[n+1])</p>&

75、lt;p><b>  {</b></p><p><b>  flag=1;</b></p><p>  temp=a[n];a[n]=a[n+1];</p><p>  a[n+1]=temp;</p><p><b>  }</b></p><p&

76、gt;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //led顯示部分</b></p><p>  int display()</p><p>&

77、lt;b>  {</b></p><p><b>  CLRWDT();</b></p><p>  bubblesort(s1,4);//S1從小到大排序</p><p>  bubblesort(s2,4);//S2從小到大排序</p><p>  num1=(s1[1]+s1[2])/2; //濾

78、去最大,最小數(shù)再求平均值</p><p>  num2=((s2[1]+s2[2])/128)*25;//濾去最大,最小數(shù)再求平均值并轉(zhuǎn)化為小數(shù)位值</p><p>  PORTB=table[num1/10];//送顯</p><p><b>  RD4=1;</b></p><p><b>  delay(

79、);</b></p><p><b>  RD4=0;</b></p><p>  PORTB=table0[(num1-(num1/10)*10)];</p><p><b>  RD3=1;</b></p><p><b>  delay();</b></

80、p><p><b>  RD3=0;</b></p><p>  PORTB=table[num2/10];</p><p><b>  RD2=1;</b></p><p><b>  delay();</b></p><p><b>  RD2

81、=0;</b></p><p>  ledout();//目標(biāo)溫度顯示</p><p><b>  }</b></p><p><b>  //數(shù)據(jù)接收子程序</b></p><p>  int i2cin()</p><p><b>  {</b

82、></p><p>  for(i=0;i<4;i++) //采集4次溫度</p><p><b>  {</b></p><p>  SEN=1; //啟動</p><p>  do{RSEN=

83、1;}//產(chǎn)生重啟信號</p><p>  while(SSPIF==0);SSPIF=0;//如果沒有啟動成功則反復(fù)啟動,直到成功為止</p><p>  SSPBUF=0x91;//發(fā)送器件地址+1位讀控制命令</p><p>  do{;}while(SSPIF==0);SSPIF=0;//判斷是否有回答信號</p>

84、<p>  RCEN=1;//單片機(jī)設(shè)為接收設(shè)備,準(zhǔn)備接收數(shù)據(jù)</p><p>  do{;}while(SSPIF==0);SSPIF=0;//判斷是否有回答信號</p><p>  s1[i]=SSPBUF;//接收來自從器件的第一個字節(jié)數(shù)據(jù)</p><p>  display();//調(diào)用顯示子程序</

85、p><p>  ACKEN=1;//單片機(jī)發(fā)送應(yīng)答信號</p><p>  do{;}while(SSPIF==0);SSPIF=0;//判斷是否有回答信號</p><p>  RCEN=1;//由于硬件自動清零,再次把單片機(jī)設(shè)為接收設(shè)備,準(zhǔn)備接收數(shù)據(jù)</p><p>  do{;}while(SSPIF==0);SS

86、PIF=0;//判斷是否有回答信號</p><p>  s2[i]=SSPBUF;//接收來自從器件的第二個字節(jié)數(shù)據(jù)</p><p>  display();//調(diào)用顯示子程序</p><p>  ACKEN=1;//單片機(jī)發(fā)送應(yīng)答信號</p><p>  do{;}while(SSPIF==0);SSPI

87、F=0;//判斷是否有回答信號</p><p>  PEN=1;//單片機(jī)發(fā)送停止信號</p><p>  do{;}while(SSPIF==0);SSPIF=0;//判斷是否有回答信號</p><p><b>  }</b></p><p><b>  }</b><

88、/p><p>  //通過測量計算控制K常量子程序</p><p>  void calculate()</p><p><b>  {</b></p><p>  switch(figure1+1)</p><p><b>  {</b></p><p>

89、;  case 10 : k=2.1365; //90——100</p><p><b>  break;</b></p><p>  case 9 : k=1.8554; //80——90</p><p><b>  break;</b></p><p>  case 8 : k=1.5767

90、; //70——80</p><p><b>  break;</b></p><p>  case 7 : k=0.7686; //60——70</p><p><b>  break; </b></p><p>  case 6 : k=0.6585; //50——60</p>

91、<p><b>  break;</b></p><p>  case 5 : k=0.5289; //40——50</p><p><b>  break;</b></p><p>  case 4 : k=0.4686;//30——40</p><p><b>  

92、break;</b></p><p>  case 3 : k=0.3847; //0——30</p><p><b>  break;</b></p><p>  defaut:k=0.5;</p><p><b>  }</b></p><p><b&

93、gt;  }</b></p><p><b>  //系統(tǒng)終斷子程序</b></p><p>  void interrupt fleg()</p><p><b>  {</b></p><p>  di();//關(guān)閉總中斷</p><p>  if(TMR1I

94、F==1)//判斷是否為tmr1中斷</p><p>  {TMR1IF=0;TMR1H=0;TMR1L=0;counter1++;}//是,則清除標(biāo)志,累加器且計數(shù)器1自加一次</p><p>  else if(TMR2IF==1)//判斷是否為tmr2中斷</p><p>  {TMR2IF=0;TMR2=0;counter2++;}//是,則清除標(biāo)志,累加器

95、且計數(shù)器2自加一次</p><p>  ei();//打開總中斷</p><p><b>  }</b></p><p><b>  //主程序</b></p><p>  void main()</p><p><b>  {</b></p>

96、;<p>  INITIAL();//調(diào)用系統(tǒng)初始化子程序</p><p>  i2cint();//調(diào)用i2c初始化子程序</p><p>  tmr1int();//調(diào)用tmr1初始化子程序</p><p>  tmr2int(); //調(diào)用tmr2初始化子程序</p><p><b>  while(1)<

97、/b></p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if((RA2==0)||(RA3==0))//掃描按鍵是否按下</p><p>  

98、break;//是,則跳出</p><p>  i2cin(); //否,則繼續(xù)采樣數(shù)據(jù)并內(nèi)部調(diào)用顯示子程序</p><p>  } //key</p><p>  ledout(); //調(diào)用目標(biāo)溫度顯示子程序作為延時,從而消除按鍵抖動</p><p>  if((RA2==0)||(RA3==0))//判

99、斷是否真的按下</p><p>  keyserve(); //是,則調(diào)用識別子程序</p><p>  if(flag1==1) //判斷是否為啟動鍵按下</p><p>  {//是,則執(zhí)行下列程序</p><p>  if((float)(num1*100+num2)/100>=(

100、float)(figure1*10+figure2)) </p><p>  //判斷當(dāng)前溫度是否大于等于目標(biāo)溫度</p><p><b>  { </b></p><p>  RA0=1; i2cin(); RA0=0; // 是,則不可控制并報警</p><p><b>  }</b>&

101、lt;/p><p>  else //否,則執(zhí)行下列程序</p><p><b>  {</b></p><p><b>  while(1)</b></p><p>  {if((float)(num1*100+num2)/100>=(float)(figure1*10+figure2-7

102、)&&(float)(num1*100+num2)/100<(float)(figure1*10+figure2)) </p><p>  //判斷是否在模糊控制范圍內(nèi)</p><p>  { calculate();//調(diào)用自動查控制常數(shù)k值子程序</p><p><b>  TMR2=0;</b></p>

103、<p><b>  TMR1H=0;</b></p><p><b>  TMR1L=0;</b></p><p><b>  ei();</b></p><p><b>  TMR2ON=1;</b></p><p>  TMR1ON=1;

104、//硬件計數(shù)器開始計數(shù)</p><p>  while(1) </p><p><b>  {</b></p><p>  if(counter1>=3)//最大采樣周期2.6s,最小采樣周期1.6s</p><p><b>  {</b></p><p&

105、gt;<b>  TMR1ON=0;</b></p><p><b>  TMR2ON=0;</b></p><p><b>  i2cin();</b></p><p>  counter1=0;</p><p>  counter2=0;</p><p&

106、gt;<b>  TMR1H=0;</b></p><p><b>  TMR1L=0;</b></p><p><b>  TMR2=0;</b></p><p><b>  TMR2ON=1;</b></p><p>  TMR1ON=1;

107、 //清除相關(guān)寄存器和計數(shù)器,并重新打開</p><p><b>  }</b></p><p>  flag2++;RA1=1; //控制次數(shù)計算器自加,并啟動繼電器</p><p>  for(y=control();y>0;y=y-0.25) //根據(jù)control()返回的U自動修整加熱時間</p

108、><p>  display();</p><p>  RA1=0; //關(guān)閉繼電器</p><p>  while(counter2<12) </p><p><b>  {</b></p><p>  display(); </p><p>

109、  } //利用tmr2計數(shù)器間隔600ms中除加熱外佘下的時間作為休息時間并且會自動變動</p><p>  counter2=0; //清除tmr2 600ms計算標(biāo)示位</p><p>  TMR2=0;TMR2ON=1;</p><p>  if((float)(num1*100+num2)/100>=(float)(fi

110、gure1*10+figure2)) </p><p>  //判斷當(dāng)前溫度是否大于等于目標(biāo)溫度</p><p>  for(m=40;m--;) i2cin(); //是延時4S,從而讓它穩(wěn)定</p><p>  if((float)(num1*100+num2)/100>=(float)(figure1*10+figure2)) </p>

111、<p>  //再次判斷當(dāng)前溫度是否真的大于等于目標(biāo)溫度</p><p>  {TMR1ON=0;TMR2ON=0;counter1=0;</p><p>  counter2=0;</p><p>  RA1=0;//關(guān)閉計算器</p><p>  while(1) //循環(huán)報警</p><p><b

112、>  {</b></p><p><b>  RA0=1;</b></p><p><b>  i2cin();</b></p><p><b>  RA0=0;</b></p><p><b>  i2cin();</b></p&

113、gt;<p>  if((float)(num1*100+num2)/100<(float)(figure1*10+figure2))</p><p>  //判斷當(dāng)前溫度是否小于目標(biāo)溫度</p><p>  break; //是,則跳出開始控制,即保溫</p><p><b>  }</b></p><

114、;p>  TMR1H=0;TMR1L=0;TMR2=0;TMR1ON=1;TMR2ON=1; </p><p>  } //重新開始打開計數(shù)器</p><p>  if((float)(num1*100+num2)/100<(float)(figure1*10+figure2-7)) </p><p>  //判斷當(dāng)前溫度是否小于控制溫度外&l

115、t;/p><p>  break; //是,則跳出開始全功率加熱</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {&

116、lt;/b></p><p>  RA1=1;i2cin();//全功率加熱子程序</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  flag1=0;i2ci

117、n(); //清出啟動標(biāo)示位并采樣數(shù)據(jù)</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  參考文獻(xiàn)</b></p><p>

118、;  [1].竇振中編.PIC系列單片機(jī)原理和程序設(shè)計.北京航空航天大學(xué)出版社,2002</p><p>  [2].李學(xué)海編.PIC單片機(jī)原理PIC單片機(jī)實用教程. 北京航空航天大學(xué)出版社,2004</p><p>  [3].陳爾紹編.電子控制電路實例.電子工業(yè)出版社,1999</p><p>  [4].陳新建編.PIC單片機(jī)C語言開發(fā)入門.北京航空航天大學(xué)出

119、版社,2003</p><p><b>  畢業(yè)設(shè)計任務(wù)書</b></p><p><b>  畢業(yè)設(shè)計開題報告</b></p><p>  畢業(yè)設(shè)計實施過程記錄表</p><p>  畢業(yè)設(shè)計評審表(指導(dǎo)教師用)</p><p>  說明:在“A、B、C、D、E”對應(yīng)的欄目

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論