溫度控制系統(tǒng)資料
溫度控制系統(tǒng)資料,溫度,控制系統(tǒng),資料
目錄
第一章 設計背景及設計意義 ………………………………………2
第二章 系統(tǒng)方案設計 …………………………………………………3
第三章 硬件……………………………………………………………….5
3.1 溫度檢測和變送器……………………………………………………5
3.2 溫度控制電路…………………………………………………………6
3.3 A/D轉(zhuǎn)換電路 …………………………………………………………7
3.4 報警電路………………………………………………………… 8
3.5 看門狗電路…………………………………………………………… 8
3.6 顯示電路…………………………………………………………… 10
3.7 電源電路………………………………………………………………12
第四章 軟件設計 ……………………………………………………… 14
4.1 軟件實現(xiàn)方法 ………………………………………………………14
4.2 總體程序流程圖 ……………………………………………………15
4.3 程序清單 …………………………………………………………… 19
第五章 設計感想 …………………………………………………………29
第六章 參考文獻……………………………………………………………30
第七章 附錄 …………………………………………………………………31
7.1 硬件清單 ……………………………………………………………31
7.2 硬件布線圖 …………………………………………………………31
第一章 設計背景及研究意義
機械制造行業(yè)中,用于金屬熱處理的加熱爐,需要消耗大量的電能,而且溫度控制是純滯后的一階慣性環(huán)節(jié)?,F(xiàn)有企業(yè)多采用常規(guī)儀表加接觸器的斷續(xù)控制,隨著科技進步和生產(chǎn)的發(fā)展,這類設備對溫度的控制要求越來越高,除控溫精度外,對溫度上升速度及下降速度也提出了可控要求,顯而易見常規(guī)控制難于滿足這些工藝要求。隨著微電子技術及電力電子技術的發(fā)展,采用功能強、體積小、價格低的智能化溫度控制裝置控制加熱爐已成為現(xiàn)實。
自動控制系統(tǒng)在各個領域尤其是工業(yè)領域中有著及其廣泛的應用,溫度控制是控制系統(tǒng)中最為常見的控制類型之一。隨著單片機技術的飛速發(fā)展,通過單片機對被控對象進行控制日益成為今后自動控制領域的一個重要發(fā)展方向。在現(xiàn)代化的工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力、流量、流速和開關量都是常用的主要被控參數(shù)。例如:在冶金工業(yè)、化工生產(chǎn)、電力工程、造紙行業(yè)、機械制造和食品加工等諸多領域中,人們都需要對各類加熱爐、熱處理爐、反應爐和鍋爐中的溫度進行檢測和控制。對工件的處理溫度要求嚴格控制,計算機溫度控制系統(tǒng)使溫度控制指標得到了大幅度提高。采用MCS-51單片機來對溫度進行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控溫度的技術指標,從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。因此,單片機對溫度的控制問題是一個工業(yè)生產(chǎn)中經(jīng)常會遇到的問題。
,
第二章 系統(tǒng)方案的設計
這次課程設計題目為熱電偶構成的熱處理爐的溫度控制系統(tǒng),
技術要求:1.設定溫度范圍為0~999°
2.溫度顯示為0~999°
3.到設定溫度報警
熱處理爐爐溫控制系統(tǒng)的控制過程是:單片機定時對爐溫進行檢測,經(jīng)A/D轉(zhuǎn)換芯片得到相應的數(shù)字量,經(jīng)過計算機進行數(shù)據(jù)轉(zhuǎn)換,得到應有的控制量,去控制加熱功率,從而實現(xiàn)對溫度的控制。如下圖所示:
進行系統(tǒng)設計時應考慮如下問題:
1.爐溫變化規(guī)律的控制,即爐溫按預定的溫度——時間關系變化。
2.溫度控制范圍:如0~1000℃,這就涉及到測溫元件、電爐功率的選擇等。
3.控制精度、超調(diào)量等指標,這涉及到A/D轉(zhuǎn)換精度、控制規(guī)律選擇等。
溫控系統(tǒng)主要由溫度傳感器、溫度調(diào)節(jié)儀、執(zhí)行裝置、被控對象四個部分組成,其系統(tǒng)結(jié)構圖如圖1所示。被控制對象是大容量、大慣性的電熱爐溫度對象,是典型的多階容積遲后特性,在工程上往往近似為包含有純滯后的二階容積遲后;由于被控對象電容量大,通常采用可控硅作調(diào)節(jié)器的執(zhí)行器,其具體的電路圖如圖2所示。
調(diào)節(jié)加熱爐的溫度,在工業(yè)上是通過在設定周期范圍內(nèi),將電路接通幾個周波,然后斷開幾個周波,改變晶閘管在設定周期內(nèi)通斷時間的比例,來調(diào)節(jié)負載兩端交流平均電壓即負載功率,這就是通常所說的調(diào)功器或周波控制器;調(diào)功器是在電源電壓過零時觸發(fā)晶閘管導通的,所以負載上得到的是完整的正弦波,調(diào)節(jié)的只是設定周期Tc內(nèi)導通的電壓周波。如圖3所示,設周期Tc內(nèi)導通的周期的波數(shù)為n,每個周波的周期為T,則調(diào)功器的輸出功率為P=n×T×Pn/Tc,Pn為設定周期Tc內(nèi)電壓全通過時裝置的輸出功率。
第三章 硬件的設計
3.1 溫度檢測和變送器
溫度檢測元件和變送器的類型選擇與被控溫度的范圍和精度等級有關。鎳鉻/鎳鋁熱電偶適用于0℃-1000℃的溫度檢測范圍,相應輸出電壓為0mV-41.32mV。
??? 變送器由毫伏變送器和電流/電壓變送器組成:毫伏變送器用于把熱電偶輸出的0mV-41.32mV變換成4mA-20mA的電流;電流/電壓變送器用于把毫伏變送器輸出的4mA-20mA電流變換成0-5V的電壓。
????為了提高測量精度,變送器可以進行零點遷移。例如:若溫度測量范圍為500℃-1000℃,則熱電偶輸出為20.6mV-41.32mV,毫伏變送器零點遷移后輸出4mA-20mA范圍電流。這樣,采用8位A/D轉(zhuǎn)換器就可使量化溫度達到1.96℃以內(nèi)。其在控制系統(tǒng)的作用如下圖所示:
熱處理爐
圖1:溫度檢測電路
3.2 溫度控制電路
8051對溫度的控制是通過雙向可控硅實現(xiàn)的。如圖一所示,雙向可控硅管和加熱絲串接在交流220V、50Hz市電回路。在給定周期T內(nèi),8051只要改變可控硅管的接通時間即可改變加熱絲的功率,以達到調(diào)節(jié)溫度的目的。
????可控硅接通時間可以通過可控硅控制極上觸發(fā)脈沖控制。該觸發(fā)脈沖由8051用軟件在P2.1引腳上產(chǎn)生,在過零同步脈沖同步后經(jīng)光電耦合管和驅(qū)動器輸出送到可控硅的控控制系統(tǒng)的制極上。
圖1:調(diào)溫電路
3.3 A/D轉(zhuǎn)換電路
ADC0809是一種比較典型的8位8通道逐次逼近式A/D轉(zhuǎn)換器,CMOS工藝,可實現(xiàn)8路模擬信號的分時采集,片內(nèi)有8路模擬選通開關,以及相應的通道地址鎖存用譯碼電路,其轉(zhuǎn)換時間為100μs左右,采用雙排28引腳封裝,其主要性能指標如下:
1、分辨率為8位二進制數(shù);
2、電壓范圍在0~+5V,對應A/D值00H~FFH;
3、每路A/D轉(zhuǎn)換完成時間100ms;
4、可分時進行8路A/D轉(zhuǎn)換;
5、工作頻率500KHz(本電路由8051ALE端輸出經(jīng)4分頻后得到)。
引腳功能如下:
IN0~IN7:8路0~+5V模擬電壓輸入(用IN0端);
DB7~DB0:8位數(shù)字輸出線,輸出8位A/D轉(zhuǎn)換值;
STAST:啟動A/D轉(zhuǎn)換端;
EOC:A/D轉(zhuǎn)換完成端;
OE:允許數(shù)字量輸出信號;
CLOCK:時鐘500KHz;
ADD A、B、C:IN0~IN7地址選擇線;
ALE:地址鎖存允許輸入信號。
A/D轉(zhuǎn)換器0809與放大電路連接較簡單,運放接成比例放大形式,放大倍數(shù)可調(diào),總體A/D轉(zhuǎn)換與8051接口電路如下:
3.4 報警電路
報警電路的作用主要是在溫度超過規(guī)定的溫度或低于下限溫度或達到預定溫度時,報警子程序就會控制報警信號的輸出,溫度低與或高于規(guī)定的溫度范圍以及達到規(guī)定的溫度時,音頻裝置就會發(fā)出不同頻率的告警信號,同時相應的LED顯示,到底是高了還是低了,以便與自動調(diào)節(jié)。報警電路如下圖:
圖1:報警電路
3.5看門狗電路
計算機看門狗控制卡是為了使計算機或工控機在系統(tǒng)出現(xiàn)異常時,能自動控制計算機進行重新啟動,使系統(tǒng)恢復正常運行,保證系統(tǒng)24小時不間斷正常工作。該控制卡可運用于無人職守的場所。像采用計算機作為存儲設備的數(shù)字硬盤錄像系統(tǒng),公路卡口監(jiān)控記錄設備等。
特點:
● 可固定在計算機內(nèi)部并且不占用計算機任何插槽。
● 借電方便,可利用計算機本身的軟驅(qū)電源接口。
● 通過計算機并口或者串口跟計算機通訊。
● 計算機操作系統(tǒng)發(fā)生死機后,30秒(時間可設置)內(nèi)控制卡控制計算機重新啟動。
● 控制卡內(nèi)有信號燈,在正常工作時有頻率穩(wěn)定持續(xù)的燈光閃動。
● 提供開發(fā)控件,可啟動看門狗功能、停止看門狗功能、設置串口還是并口。
● 有兩種型號的控制卡,有自帶RS232轉(zhuǎn)485的功能的控制卡。
現(xiàn)以MAX706監(jiān)控電路為例(見圖1)來說明“看門狗”硬件電路的工作過程,我們知道,MAX706是一種性能優(yōu)良的低功耗CMOS監(jiān)控電路芯片,其內(nèi)部電路由上電復位、可重觸發(fā)“看門狗”定時器及電壓比較器等組成[2]。MAX706只要在1.6秒時間內(nèi)檢測到WCI引腳有高低電平跳變信號,則“看門狗”定時器清零并重新開始計時;若超出1.6秒后,WCI引腳仍無高低電平跳變信號,則“看門狗”定時器溢出,WDO引腳輸出低電平,進而觸發(fā)MR手動復位引腳,使MAC706復位,從而使“看門狗”定時器清零并重新開始計時,WDO引腳輸出高電平,MAX706的RST復位輸出引腳輸出大約200毫秒寬度的低電平脈沖,使單片機控制系統(tǒng)可靠復位,重新投入正常運行。
圖1:看門狗電路
3.6 顯示電路
單片機與顯示器的接口電路圖
圖MC14495內(nèi)部邏輯結(jié)構及引腳
圖用MC14495組成多位LED靜態(tài)顯示器接口
程序:
DIR: SETB RS0 ;保護第0組工作寄存器
PUSH A ;保護現(xiàn)場
MOV R2, #03H ;顯示位數(shù)計數(shù)
MOV R1, #00H ;設位碼初值,初態(tài)從LED7開始
MOV R0, #DIS7 ;顯示緩沖區(qū)末地址送R0
DIR0: MOV A, @RO ;取待顯示的數(shù)據(jù)
AND A, #07H ;屏蔽高3位,保留低4位BCD碼
MOV R3, A ;暫存R3中
MOV A, R1 ;位選碼值送A
SWAP A ;位碼交換到高4位
ADD A, R3 ;合并形成輸出的BCD碼和位選碼
MOV P1,A ;輸出到P1口
INC R1 ;位碼加1指向下一位
DJNZ R2, DIR0 ;8個位未顯示完重復
CLR RS0 ;顯示完恢復第0組工作寄存器
POP A
RET ;返回主程序
3.7 電源電路
本模塊將交流 220V輸入電壓變?yōu)?組直流電壓,其中5V電壓為CPU等數(shù)字電路提供電源;±15V電壓為運放等模擬芯片提供電源;24V電壓為溫度變送器提供電源。
220v市電經(jīng)變壓器輸出兩組獨立的25v交流,橋堆整流,大電容濾波得到 + 35v直流,再加一個0.1uF小電容濾出電源中的高頻分量??紤]到制作過程中電源空載似的電容放電可在輸出電容并上1k大功率電阻。另外這組直流還要給7812、7912來獲得 + 12v。 電源模塊如下圖:
圖1:5V直流穩(wěn)壓源電路
圖2: + 12V/24V直流穩(wěn)壓源的原理電路
第四章 軟件的設計
4.1 軟件實現(xiàn)方法
根據(jù)熱處理爐在上電復位后先處于停止加熱狀態(tài),這時可以用“+1”鍵設定預置溫度,顯示器顯示預定溫度;溫度設定好后就可以按啟動鍵啟動系統(tǒng)工作了。溫度檢測系統(tǒng)不斷定時檢測當前溫度,并送往顯示器顯示,達到預定值后停止加熱并顯示當前溫度;當溫度下降到下限(比預定值低3℃)時再啟動加熱。這樣不斷重復上述過程,使溫度保持在預定溫度范圍之內(nèi)。啟動后不能再修改預置溫度,必須按復位/停止鍵回到停止加熱狀態(tài)再重新設定預置溫度。
爐溫控制是這樣一個反饋調(diào)節(jié)過程,比較實際爐溫和需要爐溫得到偏差,通過對偏差的處理獲得控制信號,去調(diào)節(jié)電阻爐的熱功率,從而實現(xiàn)對爐溫的控制。按照偏差的比例、積分和微分產(chǎn)生控制作用(PID控制),是過程控制中應用最廣泛的一種控制形式。
系統(tǒng)控制程序采用兩重中斷嵌套方式設計。首先使T0計數(shù)器產(chǎn)生定時中斷,作為本系統(tǒng)的采樣周期。在中斷服務程序中啟動A/D,讀入采樣數(shù)據(jù),進行數(shù)字濾波、上下限報警處理,PID計算,然后輸出控制脈沖信號。脈沖寬度由T1計數(shù)器溢出中斷決定。在等待T1中斷時,將本次采樣值轉(zhuǎn)換成對應的溫度值放入顯示緩沖區(qū),然后調(diào)用顯示子程序。從T1中斷返回后,再從T0中斷返回主程序并且、繼續(xù)顯示本次采樣溫度,等待下次T0中斷。
1)二位式調(diào)節(jié)--它只有開、關兩種狀態(tài),當爐溫低于限給定值時執(zhí)行器全開;當爐溫高于給定值時執(zhí)行器全閉。(執(zhí)行器一般選用接觸器)
2)三位式調(diào)節(jié)--它有上下限兩個給定值,當爐溫低于下限給定值時招待器全開;當爐溫在上、下限給定值之間時執(zhí)行器部分開啟;當爐溫超過上限給定值時執(zhí)行器全閉。
3)比例調(diào)節(jié)(P調(diào)節(jié))--調(diào)節(jié)器的輸出信號(M)和偏差輸入(e)成比例。即:M=ke。式中:K-----比例系數(shù)
比例調(diào)節(jié)器的輸入、輸出量之間任何時刻都存在--對應的比例關系,因此爐溫變化經(jīng)比例調(diào)節(jié)達到平衡時,爐溫不能加復到給定值時的偏差--稱“靜差”
4)比例積分(PI)調(diào)節(jié)--為了“靜差”,在比例調(diào)節(jié)中添加積分(I)調(diào)節(jié)積分,調(diào)節(jié)是指調(diào)節(jié)器的輸出信號與偏差存在隨時間的增長而增強,直到偏差消除才無輸出信號,故能消除“靜差”比例調(diào)節(jié)和積分調(diào)節(jié)的組合稱為比例積分調(diào)節(jié).
5) 比例積分微分(PID)調(diào)節(jié)--比例積分調(diào)節(jié)會使調(diào)節(jié)過程增長,溫度的波動幅值增大,為此再引入微分(D)調(diào)節(jié)。微分調(diào)節(jié)是指調(diào)節(jié)器的輸出與偏差對時間的微分成比例,微分調(diào)節(jié)器在溫度有變化“苗頭”時就有調(diào)節(jié)信號輸出,變化速度越快、輸出信號越強,故能加快調(diào)節(jié)速度,降低溫度波動幅度,比例調(diào)節(jié)、積分調(diào)節(jié)和微分調(diào)節(jié)的組合稱為比例積分微分調(diào)節(jié)。(一般采用晶閘管調(diào)節(jié)器為執(zhí)行器)。
根據(jù)生產(chǎn)現(xiàn)場的運行情況,這種控溫方法,精度比較高,系統(tǒng)性能穩(wěn)定,滿足生產(chǎn)的實際需要。主要設備:熱電偶或熱電阻,智能PID溫控儀,可控硅觸發(fā)調(diào)功器等。
4.2 總體程序流程圖
溫度控制程序的設計應考慮如下:1)鍵盤掃描、鍵碼識別和溫度顯示;2)爐溫采樣、數(shù)字濾波;3)數(shù)據(jù)處理;4)越限報警和處理;5)PID計算、溫度標度轉(zhuǎn)換
4.2.1主程序框圖
主程序包括8051本身的初始化等等。大體說來,本程序包括設置有關標志、暫存單元和顯示緩沖區(qū)清零、T0初始化、CPU開中斷、溫度顯示和鍵盤掃描程序
主程序
在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當前溫度,并且設定鍵盤外部中斷為最高優(yōu)先級,以便能實時響應鍵盤處理;軟件設定定時器T0為5秒定時,在無鍵盤響應時每隔5秒響應一次,以用來采集經(jīng)過A/D轉(zhuǎn)換的溫度信號;設定定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供。在主程序中必須分配好每一部分子程序的起始地址,形式如下:
?????????? ORG? 0000H
?????????? AJMP? MAIN
?????????? ORG? 0003H
?????????? AJMP? INTO
?????????? ORG? 000BH
?????????? AJMP? TT0
?????????? ORG? 001BH???
?????????? AJMP? TT1?
4.2.2中斷服務程序框圖
T0中斷服務程序是溫度控制系統(tǒng)的主體程序,用于啟動數(shù)/模轉(zhuǎn)換器、讀入采樣數(shù)據(jù)、數(shù)字濾波、越限溫度報警和越限處理、PID計算和輸出可控硅的觸發(fā)脈沖等。P1.3引腳上輸出的該同步觸發(fā)脈沖寬度由T1計數(shù)器的溢出中斷控制,8051利用等待T1溢出中斷的空閑時間(形成P1.3輸出脈沖頂寬)完成把本次采樣值轉(zhuǎn)換成顯示值而放入顯示單元緩沖區(qū)和調(diào)用溫度顯示程序。8051從T1中斷服務程序返回后即可恢復現(xiàn)場和返回主程序。
系統(tǒng)軟件采用中斷方式編程,主要部分是時鐘中斷程序,主要由輸入處理程序、控制算法程序、顯示處理、輸出處理和自診斷程序等組成,其流程圖如圖2所示。儀表通電啟動后,初始化程序進行時間給定,每隔500ms時鐘中斷一次,中斷后進入時鐘中斷處理。對于純滯后,大慣性環(huán)節(jié)控制對象,一般采用積分分離PID控制算法。在一般的PID控制中,當系統(tǒng)有較大的擾動或設定值較大幅度提降時,由于偏差較大及系統(tǒng)存在慣性和滯后,在積分項的作用下,會產(chǎn)生較大的超調(diào)和長時間波動,在溫度緩慢變化過程中這一現(xiàn)象尤為嚴重,為此采用積分分離措施,即在偏差較大時,取消積分作用,偏差較小時,才將積分作用投入。
中斷服務程序框圖
4.3 程序清單
4.3.1 報警電路子程序
1.子程序框圖
?????
2.報警子程序:
FLAG BIT 00H
ORG 00H
START: JB P1.7,START
JNB FLAG,NEXT
MOV R2,#200
DV: CPL P2.2
LCALL DELY500
LCALL DELY500
DJNZ R2,DV
CPL FLAG
NEXT: MOV R2,#200
DV1: CPL P1.0
LCALL DELY500
DJNZ R2,DV1
CPL FLAG
SJMP START
DELY500: MOV R7,#250
LOOP: NOP
DJNZ R7,LOOP
RET
END
4.3.2 鍵盤顯示管理程序。
????為了使8279具有合適的鍵盤、顯示功能,首先要對芯片初始化??蛇m當?shù)靥暨x8279的控制字,例如:使8279具有8位顯示、右端輸入、編碼鍵盤、雙鍵鎖定時可選控制字10H.這時每次按鍵都將產(chǎn)生鍵特征碼,并且存放在FIFOROM中,同時使8279的IRQ引腳變?yōu)楦唠娖?,可作為向CPU申請中斷信號,如果CPU是中斷開放的,則轉(zhuǎn)向中斷服務程序,可在中斷服務程序中讀取特征碼。每當CPU讀取FIFOROM中的數(shù)據(jù)后,8279自動撤消IRQ信號,IRQ引腳變?yōu)榈碗娖?。CPU返回主程序后,可由鍵特征碼來決定程序的流向。問題是,當CPU從8279的FIFOROM中讀取鍵特征碼后,IRQ雖然恢復底電平,但FIFOROM中的數(shù)據(jù)并沒有消失,仍保存在里面,這時即使使用對改8279清除的指令D3H,也不能將FIFOROM中的數(shù)改變,只有按其它鍵才能改變FIFOROM中的數(shù)據(jù),因這樣是無法實現(xiàn)按鈕功能的。
為了使鍵盤具有按鈕功能,應該利用8279的傳感方式功能,在傳感器方式中,8279每當檢測到傳感狀態(tài)變化時,IRQ就變?yōu)楦唠娖剑瑘D1是以8051CPU構成的系統(tǒng)為例,說明IRQ引腳電平的翻新過程。
?8279的IRQ端經(jīng)反相器接到8051的INT1端(即P3.3引腳)。先將8279設置成編碼鍵盤,允許INT1中斷,當鍵按下時,反相器輸出低電平,CPU進入中斷服務程序,讀取鍵特征碼后,又為高電平。返回主程序后,轉(zhuǎn)向功能程序(例如調(diào)模進)。輸出控制信號(例如P1.0為“1”時調(diào)模進電磁閥得電)后,將8279設置為傳感器方式,并且不允許INT1中斷,然后調(diào)試P3.3是否為低電平。如果按鍵松開,8279將測出傳感器狀態(tài)發(fā)生變化,而使IRQ由低電平轉(zhuǎn)為高電平。也就是說P3.3腳為低電平時,按鍵已經(jīng)松開,程序重新設置8279為編碼鍵盤,INT1中斷開放,以便使鍵盤脫離按鈕功能。
程序清單如下:
ORG 0000H
?? MOV DPTR,#7000H ; 指向8279數(shù)據(jù)口
?? INC DPTR ; 指向8279控制口
?? MOV A, #00H ; 設定8279工作方式
?? M0VX @DPTR,A
?? MOV A , #0GFH ; 清除8279內(nèi)部顯示RAM狀態(tài)
?? MOVX @DPTR, A
?? MOV A , #22H
?? MOVX @DPTR , A ; 設定8279分頻系數(shù)
?? LOOP:MOVX A , @DPTR
?? JB ACC.7 , LOOP ; 顯示RAM清除完畢嗎?
?? MOV A , 80H ; 指向第一位數(shù)碼管
?? MOVX @DPTR , A
?? MOV A , 9FH ; 輸出"1"一個字形
?? MOV DPTR ,#7000H
?? MOVX @DPTR , A
?? INC DPTR?
?? LOOP1:M0VX A , @DPTR
?? AND A , #07H
?? CJNE A , #00H,L00P2
?? AJMP LOOP1 ; 無鍵按下轉(zhuǎn)
?? LOOP2:MOV DPTR ,#7000H
MOVX A , @DPTR; 有鍵按下將鍵值送累加器A
?? 鍵值,由8279的行掃描信號(SL0-SL3)與列信號(RL0-RL4)組成,不同組合的矩陣將得到不同鍵,但
?? 在同一矩陣中不會有相同的鍵值,這對初學者編制鍵顯示程序大為方便.下表是通用鍵盤板鍵值:
? 名稱 0 1 2 3 4 5 6 7 8 9?
?? 鍵值 C1 C8 C9 D0 D8 E0 C2 CA D1 D9
?? 名稱 狀態(tài)切換 清除
?? 鍵值 DA C3
4.3.2.1判定有無閉合鍵的子程序:
判定有無閉合鍵的子程序為KSI,供在鍵盤掃描程序中調(diào) 用。程序如下: KSI:
MOV
DPTR,#0FDF9H
;A口地址
?
MOV
A, #00H
?
?
MOVX
@DPTR,A
;A口送00H
?
INC
DPTR
?
?
INC
DPTR
;C口地址
?
MOVX
A,@DPTR
;讀C口
?
CPL
A
?
?
ANL
A,#0FH
;屏蔽高四位
?
RET
?
?
4.3.2.2鍵盤掃描程序
如前所述,在單片機應用系統(tǒng)中常常是鍵盤和顯示器同時存在,因此可以把鍵盤掃描程序和顯示程序配合起來使用,即:把顯示程序作為鍵掃描程序的延時子程序。這樣做既省去了一個專門的延時子程序,又能保證顯示器常亮的可觀效果。
假定本系統(tǒng)中顯示程序為DIR,執(zhí)行時間約為6ms。鍵盤掃描程序如下:
KEY1:ACALL KSI;檢查是否有鍵閉合
JNZ LK1;A非“0”則轉(zhuǎn)移
ACALL DIR;顯示一次(“延時6s)
AJMP KEY1
LK1: ACALL DIR; 有鍵閉合二次延時
ACALL DIR; 共12ms去抖動
ACALL KSI; 再檢查是否有鍵閉合
JNZ LK2; 有鍵閉合轉(zhuǎn)移到LK2
ACALL DIR
AJMP KEY; 無鍵閉合,延時6ms后轉(zhuǎn)KEY1
LK2: MOV R,#0FEH; 掃描初值送R2
MOV R,#00H; 掃描列號送R4
LK4: MOV DPTR,#0101H; A口地址
MOV A,R
MOVX @DPTR,A; 掃描初值送A口
INC DPTR
INC DPTR; C口地址
MOVX A,@DPTR; 讀C口
JB ACC.0, LONE;ACC.0=1,第0行無鍵閉合,轉(zhuǎn)LONE
MOV A,#00H; 裝第0行值
AJMP LKP
LONE: JB ACC.1 LTWO;ACC.1=1,第1行無鍵閉合,轉(zhuǎn)LTWO
MOV A,#08H; 裝第1行值
AJM PLKP
LTWO: JB ACC.2,LTHR;ACC.2=1,第2行無鍵閉合,轉(zhuǎn)LTHR
MOV A#10H
AJMP LKP
LTHR: JB ACC.3,NEXT;ACC.3=1,第3行無鍵閉合,轉(zhuǎn)NEXT
MOV A,#18H; 裝第3行值
LKP: ADD A,R; 計算鍵碼
PUSH ACC; 保護鍵碼
LK3: ACALL DIR; 延時6ms
ACALL KSI; 檢查是否繼續(xù)閉合,若閉合再延時
JNZ LK3
POP ACC; 若鍵起,則鍵碼送A
RET
NEXT: INC R; 掃描列號加1
MOV A,R
JNB ACC.7,KND;若第7位=0,已掃完最高列則轉(zhuǎn)KND
RL A
MOV R,A
AJMP LK4; 進行下一行掃描
KND: AJMP KEY1; 掃描完畢,開始新一輪
4.3.3 A/D轉(zhuǎn)換程序
(1)A/D轉(zhuǎn)換子程序。
?? PUSH?? A
????? SETB?? EA?; 開中斷
??????SETB?? IT1; 外中斷1定義為跳變觸發(fā)
??????MOV? DPTR,#0BFFFH; 送ADC0809口地址
??????MOV?? A,#00H; 選通IN0通道
??????MOVX?? @DPTR,A?; 啟動A/D轉(zhuǎn)換
??????NOP???????????????????????
??????NOP?????????????????????
??????NOP???????????????????????
??????NOP??????????????????????
??????NOP?????????????????????
??????SETB??? EX1; 開外中斷1
??????POP????? A
??????RET
(2)A/D轉(zhuǎn)換結(jié)束中斷程序。
ADINT1:?? PUSH?? PSW?? ; 保護現(xiàn)場
????????????????PUSH???A
????????????????PUSH?? DPH
??????????????? PUSH???DPL
??????????????? MOV????DPTR,#0BFFFH
??????????????? MOVX?? A,@DPTR?; 讀A/D轉(zhuǎn)換結(jié)果
????????????????MOV??? 60H,A?; 送入內(nèi)部RAM60H中
????????????? MOV??? A,#00H; 再次啟動IN0通道
???????????? MOVX??? @DPTR,A
???????????? POP??? DPL?; 恢復現(xiàn)場
????????????? POP????A
?????????????? POP????PSW
??????????? RET1
4.3.4溫度檢測子程序
A/D轉(zhuǎn)換采用查詢方式。為提高數(shù)據(jù)采樣的可靠性,對采樣溫度進行數(shù)字濾波。數(shù)字濾波的算法很多,這里采用4次采樣取平均值的方法。如前所述,本系統(tǒng)A/D轉(zhuǎn)換結(jié)果乘2正好是溫度值,因此,4次采樣的數(shù)字量之和除以2就是檢測的當前溫度。檢測結(jié)果高位存入50H,低位存入51H。溫度檢測子程序流程圖如圖1所示。
圖1:溫度檢測子程序流程圖
溫度檢測子程序TIN:
TIN: MOV TEMP1,#00H ; 清檢測溫度緩沖區(qū)
MOV TEMP0,#00H
MOV R2,#04H; 取樣次數(shù)送R2
MOV DPTR,#7FF8H; 指向A/D轉(zhuǎn)換器0通道
LTIN1:MOVX @DPTR,A; 啟動轉(zhuǎn)換
HERE:JNB IE1,HERE; 等待轉(zhuǎn)換結(jié)束
MOVX A,@DPTR ; 讀轉(zhuǎn)換結(jié)果
ADD A,TEMP0; 累加(雙字節(jié)加法)
MOV TEMP0,A
MOV A,#00H
ADDC A,TEMP1
MOV TEMP1,A
DJNZ R2,LTIN1 ; 4次采樣完否,未完繼續(xù)
CLR C; 累加結(jié)果除2(雙字節(jié)除法)
MOV A,TEMP1
RRC A
MOV TEMP1,A
MOV A,TEMP0
RRC A
MOV TEMP0,A
RET
4.3.5 溫度控制子程序
將當前溫度與預置溫度比較,當前溫度小于預置溫度時,繼電器閉合,接通電阻絲加熱;當前溫度大于預置溫度時,繼電器斷開,停止加熱;當二者相等時電爐保持原來狀態(tài);當前溫度降低到比預置溫度低5℃時,再重新啟動加熱;當前溫度超出報警上下限時將啟動報警,并停止加熱。由于電爐開始加熱時,當前溫度可能低于報警下限,為了防止誤報,在未達到預置溫度時,不允許報警,為此設置了報警允許標志F0。模塊流程見圖2。
溫度控制流程圖
溫度控制子程序CONT:
CONT:MOV A,TEMP0; 當前溫度-預置溫度(雙字節(jié)減)
CLR C
SUBB A,ST0
MOV B,A ; 低8位相減的差值暫存B
MOV A,TEMP1
SUBB A,ST1
JNC LOFF; 無借位,表示當前溫度≥預置溫度,轉(zhuǎn)LOFF
JNB F0,LON ;當前溫度<預置溫度,判是否達到過預置溫度
MOV A,B ; 若達到過預置溫度,判二者差值是否大于2
CLR C
SUBB A,#02H
JNC ACC.7,LOFF;差值不大于2,轉(zhuǎn)LOFF
LON:CLR P2.1; 開電爐
SJMP EXIT; 返回
LOFF: SETB F0; 設置允許報警標志
SETB P2.1; 關電爐
EXIT:RET
4.3.6 看門狗電路子程序:
ORG?0000H
????LJMP?START
????ORG?000BH
????LJMP?INTT0
????……
????ORG?0030H
????START:MOV?SP,#30H
????……
????MAIN:NOP
????NOP
????SETB?P1.0
????NOP
????NOP
????SETB?EA
????NOP
????SETB?ET0
????……
????LJMP?MAIN
????……
????INTT0:NOP
????NOP
????CLR?P1.7
????NOP
????NOP
????……
????RETI
這樣,在整個用戶程序中只唯一的一對指令(SETB?P1.7及CLR? P1.7)能使“看門狗”定時器復位。也就是說不會有任何“非法”的指令能使“看門狗”定時器誤復位,致使系統(tǒng)已經(jīng)“死機”而“看門狗”失效。當然,對對沒有中斷的用戶系統(tǒng),只需將清零指令(CLR? P1.7)也插在主程序中就可以了;對于有多種中斷的用戶系統(tǒng),如果沒有中斷嵌套,則清零指令(CLR? P1.7)可以插在任一個中斷子程序中,而在主程序中適當加入一些有關中斷的冗余指令(如SETB? ET0等),以免因有關中斷的特殊功能寄存器數(shù)據(jù)受到干擾時導致中斷功能失效;對于有二級中斷嵌套的用戶系統(tǒng),清零指令(CLR? P1.7)可以插在中斷種數(shù)比較多的那一級中的任一個中斷子程序中,插有“喂狗”指令的那一級中斷系統(tǒng)將會受到“看門狗”的保護,而另一級中斷系統(tǒng)如果失效,“看門狗”是“無動于衷”的,這時只能盡量減少這種中斷子程序的執(zhí)行時間以減少受到干擾的可能性。如果二級中斷嵌套系統(tǒng)者受到“看門狗”的保護,就必需設計一個非常復雜的“看門狗”電路,其“喂狗”指令要由三部分來保證各個部分都能正常工作,需要說明的是,如果主程序運行一次的時間(包括可能被中斷的時間)超過1.6秒,則要適當再插入一條SETB?
第五章 設計感想
本文的溫度控制系統(tǒng),只是單片機廣泛應用于各行各業(yè)中的一例,通過本次設計,使我進一步熟悉了一個系統(tǒng)的設計過程,為畢業(yè)設計打下了堅實的基礎,這次設計屬于理論設計,沒有得到實踐的檢驗,只有在邏輯上完成了這次設計。
MCS-51單片機,體積小,重量輕,抗干擾能力強,對環(huán)境要求不高,價格低廉,可靠性高,靈活性好,即使是非電子計算機專業(yè)人員,通過學習一些專業(yè)基礎知識以后也能依靠自己的技術力量,來開發(fā)所希望的單片機應用系統(tǒng)。在抗干擾技術中,為了提高抗干擾技術中我們應盡量做到以下幾點:
1. 切斷干擾傳播路徑的常用措施如下:充分考慮電源對單片機的影響,如果單片機的I/O口用來控制電機等噪聲器件,在I/O口與噪聲源之間應加隔離(增加π形濾波電路)。 控制電機等噪聲器件,在I/O口與噪聲源之間應加隔離(增加π形濾波 電路),電路板合理分區(qū),如強、弱信號,數(shù)字、模擬信號等。
2.抑制干擾源:抑制干擾源就是盡可能的減小干擾源的du/dt,di/dt。這是抗干擾設計中最優(yōu)先考慮和最重要的原則,常常會起到事半功倍的效果。 減小干擾源的du/dt主要是通過在干擾源兩端并聯(lián)電容來實現(xiàn)。減小干擾源的 di/dt則是在干擾源回路串聯(lián)電感或電阻以及增加續(xù)流二極管來實現(xiàn)
3. 提高敏感器件的抗干擾性能:提高敏感器件的抗干擾性能是指從敏感器件這邊考慮盡量減少對干擾噪聲 的拾取,以及從不正常狀態(tài)盡快恢復的方法,例如:布線時盡量減少回路環(huán)的面積,以降低感應噪聲?;虿季€時,電源線和地線要盡量粗。除減小壓降外,更重要的是降低耦合噪聲等。
由于時間緊迫,我們對針對每個細節(jié)的考慮不是太周到,但我們基本上是實現(xiàn)的溫度控制系統(tǒng)的智能化管理,對我們以后到企業(yè)提供了一定的基礎,通過這次單片機課程設計,我不僅加深了對單片機理論的理解,將理論很好地應用到實際當中去,而且我還學會了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新可以是在原有的基礎上進行改進,使之功能不斷完善,成為真己的東西。設計結(jié)果能夠符合題意,成功完成了此次實習要求,我們不只在乎這一結(jié)果,更加在乎的是這個過程。這個過程中,我們花費了大量的時間和精力,更重要的是,我們在學會創(chuàng)新的基礎上,同時還懂得合作精神的重要性,學會了與他人合作。
第六章 參考文獻
[1] 陳明熒,8051單片機課程設計實訓教材??? 北京:清華大學出版社,2004
[2] 胡漢才,單片機原理及其接口技術??? 北京:清華大學出版社,1995
[3] 徐淑華,單片機微型機原理及應用 哈爾濱工業(yè)大學出版社,1994
[4] 劉復華,8098單片機及其應用系統(tǒng)設計 清華大學出版社,1991
[5] 趙文忠、程啟明,微機控制技術 北京:機械工業(yè)出版社,1993
[6] 張友德等,單片微型機原理、應用與實踐.上海:復旦大學出版社,1992
[7] 李華,MCS-51系列單片機實用接口技術.北京航空航天大學出版社,1993
[8] 李秉操等,單片機接口技術及其在工業(yè)控制中的應用 陜西電子編輯部,1991
[9] 陳鍵鐸,8098單片機原理及應用技術.北京:電子工業(yè)出版社,1995
[10] 孫和平等,單片微機原理及接口技術,冶金工業(yè)出版社, 2003
第七章 附錄
7.1 器件清單
IC1 8051 5V 40引腳 微控制器CPU、RAM、ROM
IC2 0809 5V、5V基準 28引腳 8路8位A/D轉(zhuǎn)換
IC3 74LS373 5V 20引腳 8路鎖存器
IC4 LM386 3~18V 8引腳 功放芯片
IC5 MC14495 5V 接顯示器
門電路芯片 LED數(shù)碼管
鎳鉻/鎳鋁熱電偶 溫度測量范圍:0~1000°
7.2 總控制電路圖
31
收藏