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

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  1設(shè)計要求2</b></p><p>  1.1 初始條件2</p><p>  1.2要求完成的主要任務(wù)2</p><p><b>  2設(shè)計原理3</b></p><p>

2、;<b>  3 硬件設(shè)計4</b></p><p>  3.1 單片機選擇4</p><p>  3.2溫度檢測電路6</p><p>  3.2.1溫度傳感器電路6</p><p>  3.2.2 信號放大電路7</p><p>  3.2.3 A/D轉(zhuǎn)換短路8</p>

3、<p>  3.3 加熱控制電路設(shè)計9</p><p>  3.4 降溫控制電路設(shè)計10</p><p>  3.5 報警電路11</p><p>  3.6 鍵盤(溫度設(shè)置)模塊11</p><p>  3.7 LED溫度顯示模塊12</p><p>  4 改進(jìn)PID控制算法14</

4、p><p>  4.1 simulink 仿真14</p><p>  4.2結(jié)果分析15</p><p>  5 系統(tǒng)軟件設(shè)計17</p><p>  5.1 程序流程圖17</p><p>  5.2程序代碼18</p><p>  6 總結(jié)體會25</p><

5、p><b>  參考文獻(xiàn)26</b></p><p>  生物培養(yǎng)液微機溫度控制系統(tǒng)設(shè)計</p><p><b>  1設(shè)計要求</b></p><p><b>  1.1 初始條件</b></p><p>  設(shè)計一個生物培養(yǎng)液微型計算機溫度控制系統(tǒng),系統(tǒng)為一階慣性純

6、滯后特性,溫度在1525℃范圍內(nèi)連續(xù)可控,溫度控制精度為 0.5℃;通過LED 顯示溫度。</p><p>  1.2要求完成的主要任務(wù)</p><p>  1. 輸入通道及輸出通道設(shè)計(溫度傳感器,A/D轉(zhuǎn)換,PWM輸出控制和溫度調(diào)節(jié)驅(qū)動電路);</p><p>  2. 鍵盤(溫度設(shè)置)與LED(溫度顯示)接口設(shè)計;</p><p>  

7、3. 采用改進(jìn)PID控制算法;</p><p>  4. 系統(tǒng)軟件流程及各程序模塊設(shè)計;</p><p>  5. 完成符合要求的設(shè)計說明書</p><p><b>  2設(shè)計原理</b></p><p>  要設(shè)計完成一個生物培養(yǎng)液微型計算機溫度控制系統(tǒng),我們可以把它的組成分成以下幾個部分:溫度檢測短路,信號放大短路,

8、A/D轉(zhuǎn)換電路,加熱控制電路,降溫電路,報警電路,鍵盤(溫度設(shè)置)模塊和LED(溫度顯示)模塊,單片機判斷輸入溫度信號與設(shè)定的溫度的差距,再通過改進(jìn)的PID算法給以調(diào)節(jié)。</p><p>  放大器的則是用來放大采集裝置采集的溫度,由于測量的溫度一般較小,所以要先用放大器進(jìn)行放大再輸入。A/D轉(zhuǎn)換器是用來把采集到的模擬電壓信號量轉(zhuǎn)換成單片機機可以識別的數(shù)字信號。高阻抗加熱絲和半導(dǎo)體制冷片是該溫度控制系統(tǒng)的溫度調(diào)節(jié)

9、部分,當(dāng)采集溫度不符合要求時,則通過計算機判斷后進(jìn)行調(diào)節(jié)。半導(dǎo)體制冷片用來降溫,高阻抗加熱絲用來加溫。顯示部分則用來顯示生物培養(yǎng)液微的溫度以及設(shè)定時設(shè)置的溫度值。溫度采集裝置采用熱電阻AD590來采集培養(yǎng)液的溫度,來看以看是否達(dá)到要求。通過以上的幾個部分的組合,則組成了一個生物培養(yǎng)液微型計算機溫度控制系統(tǒng)。生物培養(yǎng)液微型計算機溫度控制系統(tǒng)的結(jié)構(gòu)圖如下圖1所示。</p><p>  圖1 生物培養(yǎng)液微機溫度控制

10、系統(tǒng)結(jié)構(gòu)圖</p><p><b>  3 硬件設(shè)計</b></p><p><b>  3.1 單片機選擇</b></p><p>  單片機的選擇在整個系統(tǒng)設(shè)計中至關(guān)重要,要滿足大內(nèi)存、高速率、通用性、價格便宜等要求,本課題選擇AT89C51最為主控芯片。</p><p>  AT89C51是一

11、個低功耗、高性能的CMOS 8為單片機,片內(nèi)含4K Bytes ISP(In-system programmable)的可反復(fù)檫寫的只讀程序存儲器和128 Bytes位的隨機存取數(shù)據(jù)存儲器,期間采用ATMEL公式的高密度、非易失性存儲技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89C51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價比的解決方案。

12、AT89C51芯片具有以下特性:</p><p>  P0口:P0口是一組8位漏極開路雙向I/O口,也郎地址/數(shù)據(jù)總線復(fù)用口,作為輸出口用是,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,在組口線分是轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。</p><p>  在Flash編程時,P0口接收指令字

13、節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要外接上拉電阻。</p><p>  P1口:P1口是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級課驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻吧端口拉到搞電平,此時課作為輸入口。作為輸入口使用時,因為內(nèi)部上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。Flash編程和程序校驗期間,P1接收低8位地址。</p>

14、<p>  P2口:P2口是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級課驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到搞電平,此時可作為輸入口,作為輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳外部信號拉低時會輸出一個電流。</p><p>  在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲

15、器時,P2口線上的內(nèi)容,在整個訪問期間不改變。</p><p>  Flash編程或校驗時,P2亦接收高位地址和其他控制信號。</p><p>  P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,P3口輸出緩沖級課驅(qū)動4個TTL邏輯門電路,對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并最為輸入端口。作輸入端時,被外部拉低的P3口將用上拉電阻輸出電流。</p><

16、p>  P3口還接收一些Flash閃速存儲器編程和程序校驗的控制信號。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將單片機復(fù)位。</p><p>  ALE:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ALE仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因為它可對外輸出時鐘或用于定時

17、目的,要注意的是,每次訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對Flash存儲器編程期間,改引腳還用于輸入編程脈沖。</p><p>  PSEN:程序儲存允許輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C51由外部程序存儲器取指令時,每個機器周期兩次PSEN有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,這兩次有效的PSEN信號不出現(xiàn)。</p><p>  EA:外部訪問允許。欲

18、使CPU僅訪問外部程序存儲器,EA端必須保持低電平。需要注意的是,如果加密LB1被編程,復(fù)位時內(nèi)部程序鎖存存儲器EA端狀態(tài)。</p><p>  XTAL1:振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端。</p><p>  XTAL2:振蕩器反相放大器的輸出端。</p><p>  圖2 AT89C51引腳圖</p><p><b&g

19、t;  3.2溫度檢測電路</b></p><p>  3.2.1溫度傳感器電路</p><p>  溫度檢測電路包括溫度傳感器、變送器和A/D轉(zhuǎn)換三部分。選用的溫度傳感器型號為LM35,其輸出電壓與攝氏溫標(biāo)呈線性關(guān)系,轉(zhuǎn)換公式如式(1),0°C時輸出為0V,每升高 1°C,輸出電壓增加10mV。 即: </p><p>  Vo

20、ut-LM35(T)=10mv/°C×T°C (1)</p><p>  LM35 有多種不同封裝型式,外觀如圖 3 所示。在常溫下,LM35 不需要額外的校準(zhǔn)處理即可達(dá)到± °1/4C的準(zhǔn)確率。其電源供應(yīng)模式有單電源與正負(fù)雙電源兩種,其引腳如圖 4 所示,正負(fù)雙電源的供電模式可提供負(fù)溫度的量測;兩種接法的靜默電流-溫度關(guān)係如圖

21、5所示,單電源模式在25°C下靜默電流約50μA,非常省電。</p><p>  圖3  LM35封裝及引腳排列</p><p>  圖4 單電源模式                  圖5 雙電源模式</p><p>  由課程任務(wù)書可知:溫度在1525℃范圍內(nèi)連續(xù)可控。因此,只需要單電源模式即可滿足要求。又由于,LM35輸出的電壓太小,因此將輸出用非反

22、相放大器放大十倍,其電路圖如下圖6所示。</p><p>  圖6 溫度傳感模塊電路 </p><p>  3.2.2 信號放大電路</p><p>  由于溫度傳感器LM35輸出的電壓范圍為0~0.99V,雖然該電壓范圍在A/D轉(zhuǎn)換器的輸入范圍允許范圍內(nèi),但該電壓信號較弱,如果不進(jìn)行放大直接進(jìn)行A/D轉(zhuǎn)換則會導(dǎo)致轉(zhuǎn)換側(cè)很難過的數(shù)字量太小、精度低。系統(tǒng)中選用通

23、用型放大器μA741對LM35輸出的電壓信號進(jìn)行幅度放大,還可以對其進(jìn)行阻抗匹配、波形變換、噪聲抑制等處理。系統(tǒng)采取同相輸入,電壓放大倍數(shù)為5倍,電路圖如下所示</p><p>  圖7 信號放大短路圖</p><p>  3.2.3 A/D轉(zhuǎn)換短路</p><p>  A/D轉(zhuǎn)換課采用ADC0809進(jìn)行,ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,它由8

24、路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型D/A轉(zhuǎn)換器、逐次逼近 寄存器、三態(tài)輸出鎖存器等其它一些電路組成。因此,ADC0809可處理8路模擬量輸入,且有三態(tài)輸出能力,既可與各種微處理器相連,也可單獨工作。輸入輸 出與TTL兼容。</p><p>  圖5中運算放大器輸出電壓Vo,送入ADC0809模擬輸入通道IN0,單片機AT89C51控制ADC0809的開始轉(zhuǎn)換、延時等待結(jié)束以及讀出轉(zhuǎn)換好的8位數(shù)字

25、量至單片機進(jìn)行處理。</p><p>  ADC0809A/D轉(zhuǎn)換芯片引腳圖如下圖8所示。 </p><p> 

26、 圖8 ADC0809A/D轉(zhuǎn)換芯片引腳圖 </p><p>  ADC0809A/D轉(zhuǎn)換芯片引腳功能:</p><p>  ADC0809芯片有28條引腳,采用雙列直插式封裝   IN0~I(xiàn)N7:8路模擬量輸入端?! ?-1~2-8:8位數(shù)字量輸出端?! DDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路.  ALE:地址鎖存允許信號,輸入,高電平有效

27、。   START: A/D轉(zhuǎn)換啟動信號,輸入,高電平有效。   EOC: A/D轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。   OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量?! LK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。   REF(+)、REF(-):基準(zhǔn)電壓。   Vcc:電源,單一+5V。  

28、 GND:地。 </p><p>  ALE為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時,地址鎖存與譯碼器將A,B,C三條地址線的地址信號進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B和C為地址輸入線,用于選通IN0-IN7上的一路模擬量輸入。本系統(tǒng)中ADC0809的轉(zhuǎn)化電路如下圖9所示。</p><p>  圖9 ADC0809轉(zhuǎn)換電路接線圖</

29、p><p>  3.3 加熱控制電路設(shè)計</p><p>  在讀取到從溫度傳感模塊采集到的溫度數(shù)值后,與事先設(shè)定好的溫度值進(jìn)行比較,若當(dāng)前檢測得的溫度比設(shè)定的溫度低,則需要對培養(yǎng)液進(jìn)行加熱處理。本系統(tǒng)利用高阻抗的電阻絲來對培養(yǎng)液加熱。如下圖10所示,在檢測到溫度比設(shè)定的溫度低時,P2.5管腳輸出高電平,從而NPN管道通,驅(qū)動繼電器啟動,從而為高阻抗加熱電阻絲通電加熱生物培養(yǎng)液。利用改進(jìn)的PI

30、D算法來計算PWM脈寬得出控制輸出。從而根據(jù)檢測到的溫度而自動調(diào)節(jié)繼電器導(dǎo)通時間。</p><p>  圖10 培養(yǎng)液電阻絲加熱模塊</p><p>  3.4 降溫控制電路設(shè)計</p><p>  若當(dāng)前檢測得的溫度比設(shè)定的溫度高,則需要對培養(yǎng)液進(jìn)行降溫處理。本系統(tǒng)利用半導(dǎo)體降溫片來對培養(yǎng)液進(jìn)行降溫。其優(yōu)點是是無運動部件,可靠性也比較高,且無污染。實物如下圖11

31、。實際使用中也是同電阻絲加熱模塊一樣,采用繼電器,在滿足制冷條件下繼電器接通,接通制冷電源,利用改進(jìn)的PID算法來計算PWM脈寬得出控制輸出。從而達(dá)到根據(jù)檢測到的溫度而自動調(diào)節(jié)繼電器導(dǎo)通時間</p><p>  當(dāng)然,實際使用時也可以采用電風(fēng)扇,即再在滿足制冷條件下繼電器接通,電風(fēng)扇的電機接通電源而轉(zhuǎn)動制冷。也是利用改進(jìn)的PID算法來計算PWM脈寬得出控制輸出。從而達(dá)到根據(jù)檢測到的溫度而自動調(diào)節(jié)風(fēng)扇的轉(zhuǎn)速。<

32、;/p><p>  圖11 半導(dǎo)體制冷片實物圖</p><p><b>  3.5 報警電路</b></p><p>  如果培養(yǎng)液里的溫度過高或者是過低了,超出了其允許的某個溫度范圍,則系統(tǒng)會自動報警,提醒用戶,可以讓用戶采取更為快速和有效地措施來避免或是減少損失。報警電路圖下圖12所示。當(dāng)微機判斷當(dāng)前溫度值超出范圍時,將P2.6管腳置低電平,

33、利用非門來驅(qū)動喇叭報警。</p><p>  圖12 報警電路圖</p><p>  3.6 鍵盤(溫度設(shè)置)模塊</p><p>  鍵盤模塊是本控制系統(tǒng)的人機交流模塊部分,主要為用戶提供進(jìn)行溫度的設(shè)置功能。該設(shè)置功能模塊中包括了0到9的數(shù)字按鍵,啟動設(shè)置按鍵,即“設(shè)置”按鈕,輸入錯誤時的刪除按鍵,及“刪除”鍵。</p><p>  

34、由于按鍵較多,為了節(jié)省I/O口的資源,本系統(tǒng)采用4X4矩陣式鍵盤方案。由于變成掃描、定式掃描的鍵盤工作方式過多的占用CPU時間,本系統(tǒng)為了不過的占用CPU時間,采用中斷掃描方式。其中斷方式接法如圖5所示。其鍵盤接線連接圖如下圖13所示。</p><p>  圖13 中斷方式接法圖 </p><p>  圖14 鍵盤模塊接線圖</p><p>  3.7 L

35、ED溫度顯示模塊</p><p>  由于任務(wù)書要求使用LED顯示溫度,而且溫度在1525℃范圍內(nèi)連續(xù)可控,溫度控制精度為 0.5℃。因此,本系統(tǒng)采用了四位共陽極的LED七段數(shù)碼管。如圖7所示為4位7段數(shù)碼管的原理圖。由于所有的段選線并聯(lián)到同一個 I/O,由這個 I/O 口來控制,因此,若是所 有的 4 位 7 段 LED 都選通的話,4 位 7 段 LED 將會顯示相同的字符。要使各個位 的 7 段 LED 顯

36、示不同的字符,就必須采用動態(tài)掃描方法來輪流點亮每一位 7 段 LED,即在每一瞬間只選通一位 7 段 LED 進(jìn)行顯示單獨的字符。在此段點亮?xí)r間 內(nèi),段選控制 I/O 口輸出要顯示的相應(yīng)字符的段選碼,而位選控制 I/O 口則輸出 位選信號,</p><p>  向要顯示的位送出選通電平(共陰極則送出低電平,共陽極則送出高 電平),使得該位顯示相應(yīng)字符。這樣將四位 7 段 LED 輪流去點亮,使得每位分時顯示該位應(yīng)

37、顯示的字符。由于人眼的視覺暫留時間為 0.1 秒,當(dāng)每位顯示的間 隔未超過 33ms 時,并在顯示時保持直到下一位顯示,則由于人眼的視覺暫留效 果眼睛看上去就像是 4 位 7 段 LED 都在點亮。設(shè)計時,要注意每位顯示的間隔時間,由于一位 7 段 LED 的熄滅時間不能超過 100ms,也就是說點亮其它位所用的時間不能超過 100ms,這樣當(dāng)有 N 位的 7 段 LED 用來顯示時,每一位間隔的時間 t 就必須符合下面的式子: t≦1

38、00ms/(N-1)</p><p>  本系統(tǒng)中N=4,則由式子可以算出 t≦33ms,就是每一位的間隔時間不能超過 33ms。當(dāng)然時間可以也設(shè)得短一些,比如 5ms或1ms 也可以。</p><p>  圖15 LED的動態(tài)顯示原理圖</p><p>  如下圖16所示為該四位7段LED數(shù)碼管顯示模塊的管腳連接圖。從左到右,A-G依次接P0.0-P0.6,

39、DP接P0.7管腳。1-4為數(shù)碼管位選的輸入,依次接P2.0-P2.3管腳。</p><p>  圖16 顯示模塊的管腳連接圖</p><p>  4 改進(jìn)PID控制算法</p><p>  4.1 simulink 仿真</p><p>  采用simulink仿真,通過simulink模塊實現(xiàn)積分分離PID控制算法。仿真圖如圖17所示

40、。</p><p>  圖17 Simulink仿真</p><p>  選擇合適的Kp,Ki,Kd使系統(tǒng)的仿真效果趨于理想狀態(tài)。MATLAB編寫程序如下:</p><p>  clear all;</p><p>  close all;</p><p>  ts=10; %采樣時間

41、10s</p><p>  sys=tf([1],[30,1],'inputdelay',80);</p><p>  dsys=c2d(sys,ts,'zoh'); %將sys離散化</p><p>  [num,den]=tfdata(dsys,'v'); %求sys多項式模型參數(shù)</p><

42、;p><b>  kp=5.2;</b></p><p><b>  Ti=0.005;</b></p><p><b>  Td=0.005;</b></p><p><b>  end</b></p><p>  仿真波形如圖18所示。</

43、p><p>  圖18 Matlab仿真波形圖</p><p><b>  4.2結(jié)果分析</b></p><p>  當(dāng)Ti,Td一定,即當(dāng)Ti=Td=0.005時,改變Kp的值觀察波形可以知道其對系統(tǒng)超調(diào)量的影響。</p><p>  當(dāng)Kp增大時,設(shè)Kp=5.8,此時的波形如圖19。</p><p&

44、gt;  圖19 Kp=5.8時的波形圖</p><p>  當(dāng)Kp減小時,設(shè)Kp=4.6,此時的波形如圖20。</p><p>  圖20 Kp=4.6時的波形圖</p><p>  由圖18,圖19,圖20我們可以觀察到當(dāng)Kp增大時系統(tǒng)超調(diào)量增大,當(dāng)Kp減小時系統(tǒng)超調(diào)量減小。</p><p><b>  5 系統(tǒng)軟件設(shè)計&

45、lt;/b></p><p><b>  5.1 程序流程圖</b></p><p><b>  yesno</b></p><p><b>  noyes</b></p><p>  圖21 單片機系統(tǒng)主控制流程圖</p><p><b

46、>  5.2程序代碼</b></p><p>  #include <intrins.h>#include <reg51.h>sbit ST=P2^0;sbit OE=P2^1;sbit EOC=P2^2;</p><p>  ucharcodedis_7[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x

47、07,0x7F,0x6F,0x00,0x40,0xED,0xF9,0xE7,0x39,0x63};</p><p>  //共陽LED段碼表 "0" "1" "2" "3" "4" "5" "6" "7" "8&qu

48、ot; "9" "不亮" "-" "S" "E" "q" "C" "°" </p><p>  uchar code scan_con[4]={0x7f,0xbf,0xdf,0xef}; //列掃描控制字</p&

49、gt;<p>  uchar data temp_data[2]={0x00,0x00}; //讀出溫度暫放int Channel=4;unsigned char SavedDat[6];//存放采集的數(shù)據(jù)結(jié)果</p><p>  void InitAdc0809()//初始化函數(shù){/* ChannelSelA=0;ChannelSelB=0;ChannelSel

50、C=0;//默認(rèn)選擇第0通道*/ST=0; OE=0;ET0=1;EA=1;TMOD=0x02;TH0=226;TL0=226;TR0=1;}</p><p>  void ReadDat(void){ST=1; _nop_();_nop_();ST=0;//啟動轉(zhuǎn)換 _nop_();_nop_();if(EOC==1){ OE=1; SavedDat[Ch

51、annel]=P1; _nop_(); _nop_(); OE=0; _nop_(); _nop_(); ST=1; _nop_(); _nop_(); ST=0; _nop_(); _nop_();}}</p><p>  InitAdc0809();</p><p>  // channel=ChannelS

52、el;switch(ChannelSel){ case 0: ChannelSelA=0; ChannelSelB=0; ChannelSelC=0;break; case 1: ChannelSelA=0; ChannelSelB=0; ChannelSelC=1;break; case 2: ChannelSelA=0; ChannelSelB=

53、1; ChannelSelC=0;break; case 3: ChannelSelA=1; ChannelSelB=1; ChannelSelC=0;break; case 4: ChannelSelA=0; ChannelSelB=0; ChannelSelC=1;break; default:break;}</p><p>  

54、ReadDat();}</p><p>  void main(){Adc0808(Channel);P3=SavedDat[Channel];}</p><p>  Void Keyscan(void) interrupt 1 using 2//用中斷法掃描鍵盤{ uchar KeyScan()//檢查按鍵情況</p><p><b> 

55、 {</b></p><p>  uchar temp=40;</p><p>  KEY=0xef; //掃描第1列鍵</p><p>  switch(KEY)</p><p><b>  {</b></p><p>  case 0xee:temp=1;break;&

56、lt;/p><p>  case 0xed:temp=4;break;</p><p>  case 0xeb:temp=7;break;</p><p>  case 0xe7:temp=10;check();break;</p><p>  default:break;</p><p><b>  } <

57、;/b></p><p>  KEY=0xdf; //掃描第2列鍵</p><p>  switch(KEY)</p><p><b>  {</b></p><p>  case 0xde:temp=2;break;</p><p>  case 0xdd:temp=5;bre

58、ak;</p><p>  case 0xdb:temp=8;break;</p><p>  case 0xd7:temp=0;break;</p><p>  default:break;</p><p><b>  } </b></p><p>  KEY=0xbf; //掃描第

59、3列鍵</p><p>  switch(KEY)</p><p><b>  {</b></p><p>  case 0xbe:temp=3;break;</p><p>  case 0xbd:temp=6;break;</p><p>  case 0xbb:temp=9;break;&l

60、t;/p><p>  case 0xb7:temp=11;break;</p><p>  default:break;</p><p><b>  }</b></p><p>  return(temp); //返回按鍵鍵值</p><p><b>  } }</b

61、></p><p>  /****************顯示掃描函數(shù)***************************/</p><p>  scan()//溫度顯示時4位LED掃描</p><p><b>  {</b></p><p><b>  char k;</b></p

62、><p>  for(k=0;k<4;k++) //4位LED掃描控制</p><p><b>  {</b></p><p>  Disdata=dis_7[display[k]]; //數(shù)據(jù)顯示</p><p>  if (k==1&&DIN

63、con==1){DIN=1;} //小數(shù)點顯示</p><p>  discan=scan_con[k]; //位選</p><p>  delay(250);</p><p><b>  }</b></p><p>  *--------溫度數(shù)據(jù)處理-

64、-------*</p><p>  work_temp(uint tem)</p><p><b>  {</b></p><p>  uchar n=0;</p><p>  if(tem>6348) // 溫度值正負(fù)判斷</p><p> 

65、 {tem=65536-tem;n=1;} // 負(fù)溫度求補碼,標(biāo)志位置1</p><p>  display[4]=tem&0x0f; // 取小數(shù)部分的值</p><p>  display[0]=ditab[display[4]]; // 存入小數(shù)部分顯示值</p><p>  display[4]=tem&

66、gt;>4; // 取中間八位,即整數(shù)部分的值</p><p>  display[3]=display[4]/100; // 取百位數(shù)據(jù)暫存</p><p>  display[1]=display[4]%100; // 取后兩位數(shù)據(jù)暫存</p><p>  display[2]=display[1]/10;

67、 // 取十位數(shù)據(jù)暫存</p><p>  display[1]=display[1]%10;</p><p>  nowtp=display[3]*100+display[2]*10+display[1]; //計算當(dāng)前溫度</p><p>  send_Da[0]=nowtp; //把當(dāng)前溫度儲存到發(fā)送緩存區(qū)</p><p>  *--

68、------PID運算函數(shù)---------------*</p><p>  void pid()</p><p>  { static int diff[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};</p><p>  static int sum_diff=0; //Σ(diff)</p><

69、p>  static uint curr_=0;</p><p>  float p_out,i_out,d_out,temp_pid;</p><p>  float pwm_0;</p><p>  temp_pid=diff[curr_];</p><p>  if(curr_+1>=19)curr_=0;</p>

70、;<p>  else curr_+=1;</p><p>  sum_diff-=diff[curr_];</p><p>  diff[curr_]=settp-nowtp;</p><p>  sum_diff+=diff[curr_];</p><p>  p_out=KP*diff[curr_]; //比例項輸出<

71、;/p><p>  i_out=KI*sum_diff; //積分項輸出</p><p>  d_out=KD*(diff[curr_]-temp_pid); //微分項輸出</p><p>  pwm_0=KC*settp; //維持功率項</p><p>  if(i_out>100)i_out=100; //積分分離</p>

72、;<p>  if(i_out<-100)i_out=-100;</p><p>  PWM=p_out+i_out+d_out+pwm_0; //總輸出量</p><p>  if(PWM<0)PWM=0;積分改進(jìn)PID控制</p><p>  else if(PWM>=100)PWM=100;</p><p

73、><b>  }</b></p><p><b>  // 輸出函數(shù)</b></p><p>  void PWM_OUT(float PWM)</p><p><b>  {</b></p><p>  static uchar t=1; //t=(1--100)周期為

74、4秒</p><p>  uchar limit; //pid_value輸出百分比</p><p>  limit=(uchar)PWM;</p><p>  if(t<=limit)HEAT=0; //加熱</p><p>  else HEAT=1; //停止加熱</p><p><b>  t+

75、+;</b></p><p>  if(t>100)t=1;</p><p><b>  }</b></p><p><b>  6 總結(jié)體會</b></p><p>  通過兩周的課程設(shè)計對溫度控制系統(tǒng)有了初步的了解,在本次課程設(shè)計中,通過查閱資料基本完成了硬件的設(shè)計,然后根據(jù)

76、硬件電路進(jìn)行軟件設(shè)計,基本實現(xiàn)了生物培養(yǎng)液微機溫度控制系統(tǒng)的設(shè)計。</p><p>  在老師的指導(dǎo)和同學(xué)們的幫助下,我順利完成了這次課程設(shè)計,通過這次課程設(shè)計,使我對單片機的應(yīng)用、微控控制技術(shù)、傳感器技術(shù)等等好多專業(yè)知識有了更深的了解,解決了許多在學(xué)習(xí)過程中不能理解的知識,并且提高了自己理論聯(lián)系實際的能力,為今后在工作中專業(yè)知識的應(yīng)用積累了寶貴的經(jīng)驗。</p><p>  通過這次畢業(yè)設(shè)

77、計,使我對單片機原理有了更新的認(rèn)識,掌握了常用芯片如AT89C51、ADC0809等器件的功能,懂得了這些器件在實際生產(chǎn)中的最基礎(chǔ)的應(yīng)用,掌握了protues的使用方法,及進(jìn)一步了解了matlab的仿真應(yīng)用,真的是受益非淺。</p><p><b>  參考文獻(xiàn)</b></p><p>  【1】于海生 《計算機控制技術(shù)》,機械工業(yè)出版社,2007</p>

78、<p>  【2】陳立周 陳宇編著 《單片機原理術(shù)及應(yīng)用》,機械工業(yè)出版社,2007</p><p>  【3】何立民 《單片機應(yīng)用系統(tǒng)設(shè)計》,北京航空航天大學(xué)出版社, 2000.</p><p>  【4】林立 張俊亮編著 《單片機原理及應(yīng)用》,電子工業(yè)出版社,2009</p><p>  【5】劉紅麗 《傳感與檢測技術(shù)》,國防工業(yè)大學(xué)出版社,200

溫馨提示

  • 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

提交評論