課程設(shè)計】烤箱溫度控制系統(tǒng)進行設(shè)計_第1頁
課程設(shè)計】烤箱溫度控制系統(tǒng)進行設(shè)計_第2頁
課程設(shè)計】烤箱溫度控制系統(tǒng)進行設(shè)計_第3頁
課程設(shè)計】烤箱溫度控制系統(tǒng)進行設(shè)計_第4頁
課程設(shè)計】烤箱溫度控制系統(tǒng)進行設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、目 錄摘要、序言11.組員詳細分工21.1參數(shù)和設(shè)計要求2實現(xiàn)方法22.組員詳細分工224.設(shè)計總體思路3設(shè)計步驟3原理分析45.實驗結(jié)果56.源程序清單57.設(shè)計感想67.1李杰峰感想67.2韓明昆感想67.3陸明感想77.4吳婧楠感想8附錄摘要 本文是對烤箱溫度控制系統(tǒng)進行設(shè)計,在烤箱溫度控制系統(tǒng)中,利用計算機對烤箱的繼電器發(fā)出不同的信號,來控制繼電器的開斷,從而能夠?qū)崿F(xiàn)控制烤箱加熱與否的控制。本系統(tǒng)采用了PID控制,是經(jīng)典控制理論在實際中成功應(yīng)用的典型實例。本次采用的計時芯片是8254,而信號輸出芯片那么是8255,同時,利用8259芯片對計時、加熱等過程進行中斷的控制。而溫度采集那么是

2、用了PT100感溫電阻,將電信號送至A/D574中,利用A/D574的模數(shù)轉(zhuǎn)換功能,將采集的溫度模擬信號轉(zhuǎn)換成計算機可以識別的電信號,進而在計算機內(nèi)對這些電信號進行處理,經(jīng)過PID控制算法來輸出控制烤箱的電信號。關(guān)鍵詞:PID控制算法,A/D574模數(shù)轉(zhuǎn)換,計算機控制序言溫度控制技術(shù)廣泛應(yīng)用于社會生活的各個領(lǐng)域,如家電、汽車、材料、電力電子等,傳統(tǒng)的溫度控制技術(shù)中最常見的是繼電器調(diào)溫,但由于繼電器動作頻繁,溫度控制范圍小,精度不高,可能會因觸點不良而影響正常工作。最近幾年快速開展的有PID 溫控、模糊控制、神經(jīng)網(wǎng)絡(luò) 以及遺傳算法在溫度控制中的應(yīng)用。烤箱是熱處理生產(chǎn)中應(yīng)用最廣的加熱設(shè)備,它電流通

3、過電熱元件產(chǎn)生熱量,借助輻射和對流的傳遞方式,將熱量傳遞給所要加熱的物品,使其加熱到所要求的溫度。本文設(shè)計的烤箱溫度控制系統(tǒng),是利用計算機對其溫度進行控制,采用PID控制算法,以實現(xiàn)對烤箱溫度控制,到達控制性能要求的指標(biāo)。 1. 主要設(shè)計內(nèi)容1.某烤箱的溫度控制要求為:控制烤箱溫度從室溫上升到目標(biāo)溫度并一直保持在該目標(biāo)溫度,要求控制的精度達±3%,調(diào)節(jié)時間20秒。2.目標(biāo)溫度應(yīng)可以通過鍵盤任意修改。3.完成溫度檢測、溫度變松,溫度顯示LED和CRT曲線、溫度控制、通過鍵盤設(shè)定上、下限溫度報警值,溫度超限報警聲、光等功能。采用80X86計算機、JK實驗系統(tǒng)裝置實現(xiàn)限4人選做2. 組員詳

4、細分工姓名職務(wù)負責(zé)的局部李杰峰組長控制算法編寫,軟件數(shù)據(jù)轉(zhuǎn)換 韓明昆組員硬件電路焊接,調(diào)試,報告編寫陸明組員發(fā)聲程序、顯示程序編寫吳婧楠組員程序界面、提示語等編寫 3. 詳細操作說明1.進入程序后顯示如下:Please set room temperature:輸入當(dāng)前室溫,2位數(shù)字,以回車結(jié)束Please set desired temperature:期望到達的溫度,3位數(shù)字內(nèi),以回車結(jié)束Please set time:輸入期望保持預(yù)設(shè)溫度的時間,分鐘為單位,2位數(shù)字2.設(shè)置完之后屏幕上會顯示如下文字:Please set room temperature:xxPlease set des

5、ired temperature:xxxPlease set time:xxPress R to RESET number. Press Q to EXIT to DOSCurrent Temperature:XXX C3. 此時屏幕上的溫度值會不斷刷新。到達預(yù)設(shè)溫度后會發(fā)出3聲短響,在預(yù)設(shè)溫度范圍內(nèi)保持指定時間之后會發(fā)出4聲長響并返回設(shè)定參數(shù)局部。系統(tǒng)控制框圖如下圖控制器烤箱溫度采集我們采用的是傳統(tǒng)的PID控制策略,其具體過程如下:一開始,給定一個輸入信號,即期望溫度,此時,PID控制器還沒有起作用,此信號通過變送器送至繼電器,繼電器導(dǎo)通,使烤箱處于工作狀態(tài)。這時,溫度傳感器就把烤箱內(nèi)的溫度

6、轉(zhuǎn)變成電信號送至計算機中。計算機那么將此電信號與輸入的期望溫度進行比擬,通過控制器,根據(jù)不同的差值,選擇不同的控制策略。由于計算機內(nèi)的電信號都是脈沖信號,因此,可以調(diào)節(jié)脈沖信號的占空比來調(diào)節(jié)繼電器的斷開與導(dǎo)通的時間。期望值與測量值的差距大,就增大占空比,使一個周期內(nèi)的加熱時間增長,反之,那么減小占空比。采用上述的控制策略,即可以實現(xiàn)PID調(diào)節(jié),不同的占空比,相當(dāng)于PID調(diào)節(jié)中的比例系數(shù)改變,因此,利用計算機調(diào)節(jié)的烤箱溫度控制系統(tǒng)是一個變比例系數(shù)的調(diào)節(jié)過程。因此,只要比例系數(shù)選定的適宜,都會到達控制指標(biāo)的要求。4.1設(shè)計步驟首先確定主程序所要實現(xiàn)的目標(biāo),即:顯示提示信息,輸入設(shè)定溫度值,輸入溫度

7、保持時間,實時刷新當(dāng)前溫度,比擬實時溫度與設(shè)定溫度差值并進行PID運算,重置參數(shù)和結(jié)束。然后,確定了主程序所要實現(xiàn)的功能以后,在相應(yīng)的編寫各個子程序模塊。同時,要考慮在整個系統(tǒng)實現(xiàn)的過程中,所要運用到的芯片,好進行芯片的初始化。如8255,8259等溫度/時間設(shè)定子程序,即,從鍵盤上輸入一串?dāng)?shù)字,將其存放在指定的空間區(qū)域內(nèi),然后將鍵盤的ASCII碼轉(zhuǎn)換成BCD8421碼,方便后續(xù)計算。即AD574的使用過程。首先,先將AD574初始化,給R/送負脈沖,啟動轉(zhuǎn)換。然后檢測STS是否為1,不為1那么說名轉(zhuǎn)換結(jié)束。讀取高8為數(shù)據(jù)放入AH中,讀取低4為放在屏蔽過低4為的AL中,然后將AX中的內(nèi)容向右移

8、動4位,所得到的結(jié)果存放在指定單元中,為當(dāng)前溫度。將前一步驟采集到的當(dāng)前溫度轉(zhuǎn)換成十六進制數(shù),然后進行標(biāo)度變換,比擬當(dāng)前溫度和輸入的期望溫度差,然后做出相應(yīng)的標(biāo)記,然后根據(jù)不同的標(biāo)記跳到相應(yīng)的加熱子程序中。其根本原那么就是:實際溫度和期望溫度差距越大,加熱子程序中,每個周期的高電平占空比就越大。在烤箱開始加熱的時候,調(diào)用一次;待到達指定溫度時,再調(diào)用一次;最后結(jié)束的時候,再調(diào)用一次,總共有3次。發(fā)聲子程序首先是將發(fā)聲的頻率存放到存放器AX中,然后利用8254定時,再將頻率數(shù)據(jù)寫入42H口。然后讀取61H口的控制字信息,其中控制信息為11B時,輸出,即可發(fā)聲;為00B時,輸出,聲音停止。首先初始

9、化屏幕大小,選擇X,Y軸所在的位置,選定劃線顏色,利用BIOS中斷,即可在屏幕上繪制出X,Y軸。我們將實時保存的溫度結(jié)果存放在指定的CTEMP中,調(diào)用CRT曲線繪制子程序時,直接讀取當(dāng)前溫度值,然后設(shè)定起始位置,計算當(dāng)前坐標(biāo)位置,就可以在屏幕上描出此時的溫度點。然后,將橫坐標(biāo)向右移動1,帶下次讀取時,再次在屏幕上描點,屢次反復(fù),就形成了多個點組成的溫度響應(yīng)曲線。設(shè)計控制烤箱溫度的系統(tǒng),我們采用PID控制算法。利用計算機控制中的A/D轉(zhuǎn)換器,將采集到的模擬信號轉(zhuǎn)換成數(shù)字信號,然后送入計算機進行處理。在計算機中,我們編寫了PID控制算法,將送入的電信號經(jīng)過該算法,輸出一個控制繼電器開關(guān)的脈沖信號,

10、我們可以通過調(diào)節(jié)脈沖高電平的占空比,來控制一個信號周期內(nèi)加熱時間的長短。從而實現(xiàn)比例控制。又由于這個占空比是實時變化的,所以,這是一個變比例系數(shù)的P控制器。利用這個控制器,我們可以使烤箱內(nèi)的溫度保持在我們所設(shè)定的期望值。實驗結(jié)果如下表所示:實驗次數(shù)初始溫度設(shè)定溫度調(diào)節(jié)時間超調(diào)量誤差1358025秒42.3%24010027秒23.3%36016029秒-21.5%45020040秒-63.5%溫度變化過程可大致用如下曲線描述:溫度T/°C300200100時間t/s10200 本次設(shè)計總體上還是比擬成功,根本上實現(xiàn)了任務(wù)要求。只有調(diào)節(jié)時間的,可能是冗長的程序,或者是電烤箱的功率問題,

11、又或者是自己的PID的參數(shù)設(shè)計不夠完善,總之,不能到達要求的20秒以內(nèi),但是接近20秒,此為設(shè)計的瑕疵。見附錄4作為我們團隊的組長,需要確定適宜的電路,對電路進行調(diào)試,將變送器調(diào)至最適宜的范圍。同時還要確定與硬件相關(guān)的軟件主體思想。一個工程的成敗,與組長的整體協(xié)調(diào)能力關(guān)系很大。這次的時間比擬緊張,而且之前沒怎么做過過程控制類的題目,所以可以說是時間短、任務(wù)重。熱敏電阻PT100之前接觸過,但是沒有和計算機連起來使用,也是一個新的挑戰(zhàn)。這次設(shè)計我吸取的上次計算機硬件課程設(shè)計的教訓(xùn),學(xué)會多利用子程序,而不是要把所有的問題都用一個主程序解決,卻很少使用子程序。這樣,不但別人讀不懂自己的程序,就連自己

12、有時候都讀不懂自己的程序。軟件局部主要涉及到一些數(shù)據(jù)的轉(zhuǎn)換和處理,例如BCD碼轉(zhuǎn)換成ASCII碼、十六進制數(shù)與BCD碼的相互轉(zhuǎn)換等,雖然很久沒用匯編語言編寫程序,但是這些算法還是都記在心里,只要稍作熟悉就可以順利將算法變成一個個子程序。其中,給我?guī)碜畲罄_的是PID控制器的設(shè)計。但是經(jīng)過老師的講解,我明白了,原來可以調(diào)節(jié)輸出信號的占空比,控制繼電器的開關(guān)時間,來調(diào)節(jié)PID調(diào)節(jié)器的比例系數(shù),從而實現(xiàn)變比例系數(shù)的PID控制。這次課程設(shè)計感覺比以前進步的一點就是程序的模塊化思想更加深刻。之前總也用程序段的方式插入的主程序中,而這次那么是盡量減少主程序的內(nèi)容,將所有的處理局部都寫成子程序,設(shè)計好入口

13、參數(shù),就可以是整個程序思路清晰,一目了然。一個好的程序編寫者并不是會把所有的模塊都自己寫出來,而是可以將自己搜索到的各種模塊與自己的工程結(jié)合,設(shè)計好接口參數(shù),到達事半功倍的效果。這次的程序就用了之前做過的一些設(shè)計的模塊,如實時顯示刷新模塊,延時程序,發(fā)聲子程序等。這些之前積累下來的珍貴資料大大加快了本次課程設(shè)計的速度。這次設(shè)計的缺乏是:最開始的一天幾乎都浪費掉了,原因是太長時間沒有復(fù)習(xí)匯編語言,感到很生疏,只有拿著課本和實驗指導(dǎo)書一點點地找感覺,相信這個問題是大家都存在的,卻也是可以解決的。再有類似的課程設(shè)計要提前復(fù)習(xí)即將用到的知識,防止在工作需要時才臨時抱佛腳。 7.2韓明昆感想:本次計控課

14、程設(shè)計使我對計算機控制技術(shù)的相關(guān)知識有了新的理解.一來穩(wěn)固了上課所學(xué)的計控知識,二來拓寬了我的視野,學(xué)到了許多新的東西。在課程設(shè)計開始的階段,我用老師給的硬件連接圖將各個部件焊在板子上,很久沒有焊東西了,這次突然又焊起來又費了不少勁。通過以前學(xué)習(xí)的知識,我知道有的地方可以從反面連接到一起,這樣可以省很多沒有必要的線,也少了布線的煩惱。然后我們就按原理圖上將各個部件一一焊好,焊好后用萬用表測試了各個連接點,沒有出現(xiàn)錯誤短路的地方,也就完成了前期工作。然后我們開始編制程序。由于我的編程能力有限,所以對于編程方面我做的很少。起初,我們覺得電烤箱的思路很簡單,就是一個測試溫度。看是否到達目標(biāo)溫度,然后

15、送1,送0就可以了。但實際編制的時候,才發(fā)現(xiàn)其實里面的問題也還是很復(fù)雜的。首先,要輸入目標(biāo)溫度,但通過板子接AD574轉(zhuǎn)化過來的是一個12位的二進制數(shù),最大值FFF是4000多,這跟我們輸入的三位數(shù)之間有個換算關(guān)系,經(jīng)過我們計算,應(yīng)該是三位數(shù)*13.6,但這時又不知道小數(shù)的乘法該怎么做,后來想到可以先乘136,然后再除以10,就可以得到相應(yīng)的目標(biāo)數(shù)據(jù)。然后還碰到了很多問題,都一一化解了。最后通過通力協(xié)作,我們按要求實現(xiàn)了根本功能,本次課程設(shè)計算是做完了。通過這次課程設(shè)計。使我了對計控知識的了解又有了新的認識。最大的收獲就是通過團隊合作,每人完成相應(yīng)的程序模塊,然后將各個模塊合在一起,這是以后進

16、入社會,工作中會遇到的實際問題,這也算是增長了一次實踐經(jīng)驗吧。團隊合作是這次課程設(shè)計讓我體會最深的,如果讓一個人來完成這么龐大的程序,我估計沒幾個人做的出來。所以,以后一定要加強這方面的鍛煉,還有一點體會就是編程這方面最重要的就是仔細,有時候一個標(biāo)號弄錯了,要費很大的勁去找,所以細心也非常重要。這也是大學(xué)最后一次團隊合作的課程設(shè)計了,我們大家相處的也很融洽,總之這次課程設(shè)計讓我收獲頗豐。這次的課程設(shè)計我們小組總算是順利地完成了。雖然只有短短一個星期,但讓我真正見識到了什么是團隊的力量。從接到此次課程設(shè)計任務(wù)開始,大家就分配好了各自的任務(wù),并且經(jīng)常聚在一起各抒己見地討論各個方案的可行性,氣氛那是

17、十分的熱烈。在我們小組中也許有的同學(xué)能力強些,有些同學(xué)能力沒那么強,分工時能力強的同學(xué)可能任務(wù)就重些,但是大家都沒有任何的怨言,全力地專注于自己的那一局部任務(wù),所以團結(jié)協(xié)作是我們小組能順利完成此次課程設(shè)計的一項非常重要的保證,而這次設(shè)計也正好鍛煉我們這一點,這也是非常珍貴的。我們這次是設(shè)計對烤箱溫度控制系統(tǒng),對于溫度的控制系統(tǒng),我們需要完成溫度的采集,溫度的控制,能通過鍵盤,顯示接口實現(xiàn)恒溫時間設(shè)置,系統(tǒng)初始參數(shù)設(shè)置,報警設(shè)置等功能,并能通過不同的聲音提示恒溫開始和結(jié)束時間。我們一起討論,一起研究,經(jīng)過幾番努力,初步編出的程序,問題很多,也總找不到原因,然后參考書上的例題程序,修改了很多,有些

18、問題是子程序與主程序的連接沒弄好,還是很多問題,然后仔細復(fù)習(xí)書上所學(xué)過的知識,對我們的程序再次發(fā)現(xiàn)問題,修改問題,后來經(jīng)過屢次的修改最終完成了初步的可行性程序,也算一個進步。在調(diào)試過程中又遇到了烤箱失靈等各種客觀問題,但最終在老師的協(xié)作以及我們自身的努力下,都將這些困難一一克服并得到了比擬理想的結(jié)果。在這次設(shè)計中,我主要負責(zé)的是顯示及聲音局部,就是程序剛開始的時候有關(guān)顯示界面,剛開始的時候還是出現(xiàn)很多問題,顯示程序的編寫,在同學(xué)的幫助以及參考書上的一些程序后,初步完成了這段程序,然后經(jīng)過組長的屢次修改,完成了這局部的編寫。經(jīng)過這個局部的編寫,讓自己明白了很多,課堂上學(xué)的東西遠遠不夠,還是需要自

19、己課后的更多的付出和復(fù)習(xí),才能讓自己所學(xué)的東西學(xué)以致用,才能讓書上的知識變成自己的,也才能讓自己變得更加充實,學(xué)得更多。最后順利地完成了課程設(shè)計,大家心情都很喜悅,雖然過程有點累,但是看到努力后的成果,還是很欣慰。總的來說,通過歷時一個星期的課程設(shè)計,發(fā)現(xiàn)了自己的很多缺乏,以及自己知識的很多漏洞,看到了自己的實踐經(jīng)驗還是比擬缺乏,理 論聯(lián)系實際的能力還急需提高。經(jīng)過這個課程設(shè)計,同時也證明一個團隊的力量比一個人的力量大得多,完成一個復(fù)雜的問題效率也會高很多,我自己也從此次課程設(shè)計中學(xué)到了很多東西,實在是令我受益匪淺。婧楠感想:這次課程設(shè)計讓我體會到了團隊的溫暖。由于我將要參加研究生入學(xué)考試,所

20、以精力大都放到復(fù)習(xí)考研上面去了。但是我的團隊給了最大的包容和理解,讓我負責(zé)了較為輕松的程序界面和提示語程序編寫。這已經(jīng)不是第一次團隊合作做課程設(shè)計了,但是這次讓我最為記憶猶新。本次課程設(shè)計我們小組做的是烤箱,我的主要工作是程序界面和提示語程序編寫。通過此次課程設(shè)計,總的來說收獲還是挺大的。我的工作是參與了局部子程序的編寫,主要有用AD574檢測溫度的程序、加熱程序分為100%加熱、80%加熱、50%加熱、20%加熱、恒溫延時的編寫。在編寫程序之前我先復(fù)習(xí)了下硬件書,檢測溫度的程序主要就是AD轉(zhuǎn)換的程序,先選通道,再啟動轉(zhuǎn)換并檢測轉(zhuǎn)換是否結(jié)束,結(jié)束后將得到的結(jié)果保存起來,在參考了硬件實驗書上的程

21、序的情況下,程序很快就正確編完了。加熱程序是通過8255的A0口輸出1或0來實現(xiàn)的,如50%加熱就是在前半周期時間內(nèi)A0送1,后半周期內(nèi)A0口送1。恒溫延時程序的主要思想就是先設(shè)定一個標(biāo)志,此標(biāo)志的值等于設(shè)定的恒溫時間以分為單位乘以60除以2恒溫程序的周期,然后再設(shè)定另一個標(biāo)志,初始值為0,接著在每次進入恒溫程序時自加1,就可以通過判斷是否等于第一個值來判斷來判斷延時是否完成。就在三四天的時間內(nèi),大家就把整個課程設(shè)計完成了,雖然大家都有點累,但更多的是興奮??偟膩碚f,這次課程設(shè)計歷時一個星期,通過課程設(shè)計,發(fā)現(xiàn)自己的很多缺乏,自己知識的很多漏洞,看到了自己的實踐經(jīng)驗還是比擬缺乏,理論聯(lián)系實際的

22、能力還急需提高。經(jīng)過這個課程設(shè)計,也可以證明一個團隊的力量比一個人的力量大得多,也可以從中體會到,完成一個復(fù)雜的問題效率高很多,我自己也從中學(xué)到了很多以前懂的東西,這是實踐與理論的結(jié)合,也為以后打下根底。附錄Pt100PCPt100變送器電烤箱PCI總線8255AAD574JK實驗板開始定時中斷初始化8255初始化顯示室溫設(shè)置提示信息設(shè)置室溫子程序顯示溫度設(shè)置提示信息設(shè)置室溫度程序顯示時間設(shè)置提示信息設(shè)置時間子程序定時結(jié)束否?N讀溫度子程序?qū)崟r顯示刷新子程序轉(zhuǎn)換當(dāng)前溫度子程序比擬溫度子程序根據(jù)溫度選擇加熱占空比結(jié)束音樂子程序Y輸入一個目標(biāo)溫度的三位數(shù)值,將其存入Stemp單元SI指向stemp

23、單元的第一個數(shù)設(shè)置循環(huán)次數(shù)CX=3將SI指向單元的數(shù)據(jù)轉(zhuǎn)化為BCD碼(即-30)SI+13次到否將BCD碼存入DI指向的STEMPBCD單元中DI+1RET 返回 NY開始選擇通道0延時給送負脈沖,啟動轉(zhuǎn)換檢測STS是否為1讀高8位,將結(jié)果存入AH讀低4位,屏蔽低4位,將結(jié)果存入AL將AX右移4位并將結(jié)果存入CTEMP,即得到當(dāng)前溫度子程序結(jié)束是否3.4 溫度比擬和標(biāo)志位改變子程序開始將設(shè)定溫度的BCD碼轉(zhuǎn)換為16進制將當(dāng)前溫度采樣值除以斜率比擬當(dāng)前溫度和設(shè)定溫度值,得到差值8?3?15?30?溫度標(biāo)志設(shè)為01溫度標(biāo)志設(shè)為03溫度標(biāo)志設(shè)為04溫度標(biāo)志設(shè)為02溫度標(biāo)志設(shè)為FF結(jié)束返回YYYY N

24、 N N N3.5加熱子程序以占空比20%為例開始啟動加熱設(shè)置CX=2延時200msCX自減1判斷CX是否為0關(guān)加熱設(shè)置CX=8延時200msCX自減1判斷CX是否為0子程序結(jié)束NYYN3.6 發(fā)聲子程序讀取61H端口的原控制信息D1D0=PB1PB0=11B,其他位不變直接控制發(fā)聲返回設(shè)置發(fā)聲頻率,即16位計數(shù)初值,存入AX中壓棧,將AX中的數(shù)據(jù)保護起來8254定時器2為方式3,先低后高寫16位計數(shù)值彈棧 將AX中的數(shù)據(jù)取出將低八位計數(shù)值寫入42H將高八位計數(shù)值寫入42H返回讀取61H端口的原控制信息D1D0=PB1PB0=00B 其他位不變直接控制閉音返回開始調(diào)用02號DOS中斷顯示空格指

25、針指向顯緩區(qū)將BCD碼轉(zhuǎn)換為ASCII碼依次調(diào)用02號DOS中斷顯示顯緩區(qū)內(nèi)容顯示CR,將光標(biāo)移動到顯示區(qū)首位結(jié)束返回3.7屏幕實時顯示子程序4. 程序源代碼DATA SEGMENTAD574H EQU 200HAD574L EQU 201HAD574S EQU 205HKEEP_CS DW ?KEEP_IP DW ?COUNT_TIME DW 00H ;中斷計數(shù)器SETTIME DB 4 DB 0 DB 4 DUP (?) SETTIMEBCD DW ?,?,? x_p dw 10SETROOM DB 4 DB 0 DB 4 DUP(?)SETROOMBCD DW ?,?,? STEMP D

26、B 4 DB 0 DB 4 DUP(?)STEMPBCD DW ?,?,? STEMP16 DW ?CTEMP DW ?CTEMP16 DW ?CTEMPBCD DB ?,?,?,27H,'C','$' CHAZHI DW ?DELAYLOGO DW ? TIMECOUNT DW 0 HEATFLAG DB ?MUSICFLAG DB 0 MSG1 DB 0AH,0DH,'Room temperature:','$' MSG2 DB 0AH,0DH,'Desired temperature:','$'

27、; MSG3 DB 0AH,0DH,'The time:','$' MSG4 DB 0AH,0DH,'Current Temperature:',0AH,0DH,'$' MSG5 DB 0AH,0DH,'Press R to RESET the temperature',0ah,0dh DB 'Press Q to EXIT','$' DATA ENDS;-STCK SEGMENT PARA STACK 'STACK' DB 256 DUP(0)STCK ENDS;-

28、CODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STCK START: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX CLI ;中斷向量的設(shè)置及8259初始化 MOV AL,1CH MOV AH,35H INT 21H MOV KEEP_CS,CS MOV KEEP_IP,BX MOV AL,1CH MOV AH,25H MOV DX,SEG TIMER MOV DS,DX MOV DX,OFFSET TIMER INT 21H MOV AX,DATA MOV DS,AX MOV AL,36

29、H OUT 43H,AL MOV AX,59660D OUT 40H,AL MOV AL,AH jmp p_1 start_1: jmp start p_1: OUT 40H,AL IN AL,21H AND AL,0FCH OUT 21H,AL ;-8255初始化- MOV DX,20BH MOV AL,80H OUT DX,AL call tt LEA DX,MSG1 MOV AH,09H INT 21H CALL SETROM LEA DX,MSG2 MOV AH,09H INT 21H CALL SETEMP LEA DX,MSG3 MOV AH,09H INT 21H CALL SE

30、TIME LEA DX,MSG5 MOV AH,09H INT 21H LEA DX,MSG4 mov ah,09h int 21hMAINAGAIN: MOV AH,01H INT 16H JZ GOON2 MOV AH,0 INT 16H CMP AL,'R' JZ START_1 CMP AL,'r' JZ START_1 CMP AL,'Q' JZ EXITMAIN_1 CMP AL,'q' JZ EXITMAIN_1 GOON2: CALL TRANSTIME LEA SI,TIMECOUNT MOV AL,SI MOV

31、 BL,AL LEA SI,DELAYLOGO jmp mm_1 start_2: jmp start mm_1: MOV AL,SI CMP AL,BL JBE ENDMUSIC CALL TRANSCTEMPCALL DISP call point jmp pp_1 exitmain_1:jmp exitmain pp_1: CALL READTEMPCALL CMPTEMP MOV AH,01H INT 16H JZ GOON1 MOV AH,0 INT 16H CMP AL,'R' JZ START_2 CMP AL,'r' JZ START_2 CMP

32、 AL,'Q' JZ EXITMAIN CMP AL,'q' JZ EXITMAIN GOON1: CMP HEATFLAG,01H JZ H100 CMP HEATFLAG,02H JZ H80 CMP HEATFLAG,03H JZ H50 CMP HEATFLAG,04H JZ H20 CMP HEATFLAG,0FFH JZ HOKH100:CALL HEAT100JMP MAINAGAINH80:CALL HEAT80JMP MAINAGAINH50:CALL HEAT50JMP MAINAGAINH20:CALL HEAT20JMP MAINAGAI

33、NHOK:CALL HEATOKJMP MAINAGAINENDMUSIC: MOV AL,00H MOV DX,20AH OUT DX,AL ;. MOV CX,4D MUSICEND1:PUSH CXCALL SPEAKONMOV CX,5 SP4: CALL DELAY_1 LOOP SP4NOPNOP CALL SPEAKOFF MOV CX,5 SP5:CALL DELAY_1 LOOP SP5POP CXLOOP MUSICEND1 JMP STARTEXITMAIN: RET MAIN ENDP;- SETEMP PROC NEAR LEA DX,STEMP MOV AH,0AH

34、 INT 21H LEA SI,STEMP ADD SI,2 LEA DI,STEMPBCD MOV CX,3 TRANSBCD:MOV AL,SI XOR AH,AH SUB AX,30H MOV DI,AX INC SIINC DIINC DILOOP TRANSBCDRETSETEMP ENDP;-SET TIME- SETIME PROC NEAR LEA DX,SETTIME MOV AH,0AH INT 21H LEA SI,SETTIME ADD SI,2 LEA DI,SETTIMEBCD MOV CX,3 TRANSBCD2:MOV AL,SI XOR AH,AH SUB A

35、X,30H MOV DI,AX INC SIINC DIINC DILOOP TRANSBCD2RETSETIME ENDP;-SET ROOM TEMPERATURE- SETROM PROC NEAR LEA DX,SETROOM MOV AH,0AH INT 21H LEA SI,SETROOM ADD SI,2 LEA DI,SETROOMBCD MOV CX,3 TRANSBCD3:MOV AL,SI XOR AH,AH SUB AX,30H MOV DI,AX INC SIINC DIINC DILOOP TRANSBCD3RETSETROM ENDP;-讀取當(dāng)前溫度-READTE

36、MP PROC NEAR MOV DX,AD574S MOV AL,40H OUT DX,AL MOV CX,100H LP1:LOOP LP1 MOV AL,00H OUT DX,AL MOV CX,10 LP2:LOOP LP2 MOV AL,40H OUT DX,AL MOV DX,AD574L LP3: IN AL,DX TEST AL,01H JNZ LP3 MOV DX,AD574H IN AL,DX MOV AH,AL INC DX IN AL,DX AND AL,0F0H ROR AX,4 MOV CTEMP,AX RETREADTEMP ENDP;-比擬當(dāng)前溫度和設(shè)定溫度子程

37、序-CMPTEMP PROC NEAR;-BCD->16- LEA SI,STEMPBCD MOV AX,0000H ADD AX,SI MOV BX,0AH MUL BX ADD AX,SI+2 MUL BX ADD AX,SI+4 MOV STEMP16,AX ;-CTEMP TRANS- MOV AX,CTEMP MOV BX,0AH MUL BX MOV BX,88H DIV BX MOV CTEMP16,AX ;-COMPARE- MOV BX,STEMP16 SUB BX,AX MOV CHAZHI,BX ;-根據(jù)差值設(shè)定加熱標(biāo)志- CMP CHAZHI,50D JG SET

38、FLAG1 CMP CHAZHI,30D JG SETFLAG2 CMP CHAZHI,15D JG SETFLAG3 CMP CHAZHI,4D JG SETFLAG4 JMP SETFLAGOK SETFLAG1: MOV HEATFLAG,01H JMP CMPEXIT SETFLAG2: MOV HEATFLAG,02H JMP CMPEXIT SETFLAG3: MOV HEATFLAG,03H JMP CMPEXIT SETFLAG4: MOV HEATFLAG,04H JMP CMPEXIT SETFLAGOK: MOV HEATFLAG,0FFH CMPEXIT: RETCMP

39、TEMP ENDP ;-加熱子程序-HEAT100 PROC NEAR MOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,10 NEXT1:CALL DELAY_1LOOP NEXT1 RETHEAT100 ENDPHEAT80 PROC NEAR MOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,8 NEXT2:CALL DELAY_1LOOP NEXT2 MOV AL,00H OUT DX,AL MOV CX,2 NEXT3: CALL DELAY_1LOOP NEXT3RETHEAT80 ENDPHEAT50 PROC NEAR

40、 MOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,5 NEXT4: CALL DELAY_1LOOP NEXT4 MOV AL,00H OUT DX,AL MOV CX,5 NEXT5: CALL DELAY_1LOOP NEXT5RETHEAT50 ENDPHEAT20 PROC NEAR MOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,2 NEXT6: CALL DELAY_1LOOP NEXT6 MOV AL,00H OUT DX,AL MOV CX,8 NEXT7: CALL DELAY_1LOOP NEXT7RETHEA

41、T20 ENDPHEATOK PROC NEAR LEA SI,TIMECOUNT MOV AX,SI INC AX MOV SI,AX CMP MUSICFLAG,01H JZ SPK1 MOV MUSICFLAG,01H CALL SPEAKER MOV CX,3D SP1:CALL SPEAKON PUSH CX MOV CX,3D SP2:CALL DELAY_1 LOOP SP2NOPNOP MOV CX,3D CALL SPEAKOFF SP3: CALL DELAY_1LOOP SP3POP CX LOOP SP1 SPK1: MOV DX,20AH MOV AL,00H OUT

42、 DX,AL MOV CX,10 NEXT8: CALL DELAY_1 LOOP NEXT8 RET HEATOK ENDPSPEAKER PROC NEAR MOV AX,1208D PUSH AX MOV AL,0B6H OUT 43H,AL POP AX OUT 42H,AL MOV AL,AH OUT 42H,AL RETSPEAKER ENDPSPEAKON PROC NEAR PUSH AX IN AL,61H OR AL,03H OUT 61H,AL POP AX RETSPEAKON ENDPSPEAKOFF PROC NEAR PUSH AX IN AL,61H AND AL,0FCH OUT 61H,AL POP AX RETSPEAKOFF ENDP;-延時程序-DELAY_1 proc near MOV COUNT_TIME,0D STIDL1: CMP COUNT_TIME,1D JL DL1CLIRETDELAY_1 endp ;-顯示-DISP PROC NEAR PUSH BX PUSH SI PUSH DI L1: MOV DL,20H MOV AH,02H INT 21H LEA SI,CTEMPBCD MOV BL,SI ADD BL,30H MOV DL,BL MOV AH,02

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論