




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE19PAGE61第一章緒論溫度控制,在工業(yè)自動化控制中占有非常重要的地位。單片機系統(tǒng)的開發(fā)應(yīng)用給現(xiàn)代工業(yè)測控領(lǐng)域帶來了一次新的技術(shù)革命,自動化、智能化均離不開單片機的應(yīng)用。將單片機控制方法運用到溫度控制系統(tǒng)中,可以克服溫度控制系統(tǒng)中存在的嚴(yán)重滯后現(xiàn)象,同時在提高采樣頻率的基礎(chǔ)上可以很大程度的提高控制效果和控制精度。現(xiàn)代自動控制越來越朝著智能化發(fā)展,在很多自動控制系統(tǒng)中都用到了工控機,小型機、甚至是巨型機處理機等,當(dāng)然這些處理機有一個很大的特點,那就是很高的運行速度,很大的內(nèi)存,大量的數(shù)據(jù)存儲器。但隨之而來的是巨額的成本。在很多的小型系統(tǒng)中,處理機的成本占系統(tǒng)成本的比例高達(dá)20%,而對于這些小型的系統(tǒng)來說,配置一個如此高速的處理機沒有任何必要,因為這些小系統(tǒng)追求經(jīng)濟效益,而不是最在乎系統(tǒng)的快速性,所以用成本低廉的單片機控制小型的,而又不是很復(fù)雜,不需要大量復(fù)雜運算的系統(tǒng)中是非常適合的。溫度控制,在工業(yè)自動化控制中占有非常重要的地位,如在鋼鐵冶煉過程中要對出爐的鋼鐵進行熱處理,才能達(dá)到性能指標(biāo),塑料的定型過程中也要保持一定的溫度。隨著科學(xué)技術(shù)的迅猛發(fā)展,各個領(lǐng)域?qū)ψ詣涌刂葡到y(tǒng)控制精度、響應(yīng)速度、系統(tǒng)穩(wěn)定性與自適應(yīng)能力的要求越來越高,被控對象或過程的非線性、時變性、多參數(shù)點的強烈耦合、較大的隨機擾動、各種不確定性以及現(xiàn)場測試手段不完善等,使難以按數(shù)學(xué)方法建立被控對象的精確模型的情況。隨著電子技術(shù)以及應(yīng)用需求的發(fā)展,單片機技術(shù)得到了迅速的發(fā)展,在高集成度,高速度,低功耗以及高性能方面取得了很大的進展。伴隨著科學(xué)技術(shù)的發(fā)展,電子技術(shù)有了更高的飛躍,我們現(xiàn)在完全可以運用單片機和電子溫度傳感器對某處進行溫度檢測,而且我們可以很容易地做到多點的溫度檢測,如果對此原理圖稍加改進,我們還可以進行不同地點的實時溫度檢測和控制。1.1設(shè)計指標(biāo)設(shè)計一個溫度控制系統(tǒng)具體化技術(shù)指標(biāo)如下。1.被控對象可以是電爐或燃燒爐,溫度控制在0~100℃,誤差為±0.52.恒溫控制;3.LED實時顯示系統(tǒng)溫度,用鍵盤輸入溫度;1.2本文的工作詳細(xì)分析課題任務(wù),設(shè)計了電源電路,鍵盤電路,單片機系統(tǒng),顯示電路,執(zhí)行器電路,報警電路,復(fù)位電路,時鐘電路,A/D轉(zhuǎn)換電路等系統(tǒng)。然后根據(jù)課題任務(wù)的要求設(shè)計出實現(xiàn)控制任務(wù)的硬件原理圖和軟件,并進行訪真調(diào)試。
第二章設(shè)計思想實現(xiàn)溫度控制的方法有多種,可以用工控機作為控制器,用熱電阻測量溫度;也可以用單片機作為控制器,用熱電偶進行溫度測量。當(dāng)然每一種方案都有其各自的優(yōu)點。本章詳細(xì)列舉、說明了基于89C2051單片機的溫度控制的方案、并畫出了其原理方框圖,對方案的優(yōu)缺點進行了分析。2.1設(shè)計思想方案(1)硬件組成:單片機、A/D轉(zhuǎn)換器、LED顯示器、集成的熱電偶溫度變送器、固態(tài)繼電器、大功率發(fā)熱器。(2)工作原理:由集成的熱電偶變送器對系統(tǒng)溫度進行檢測,并完成信號標(biāo)準(zhǔn)化、變送功能。單片機執(zhí)行控制功能、由固態(tài)繼電器控制大功率發(fā)熱器電源的導(dǎo)通與斷開,從而達(dá)到控制溫度的目的。TL255189C20TL255189C2051固態(tài)繼電器LED顯示DDZ—Ⅲ熱電偶溫度變送器鍵盤電爐溫度圖2-1方案的原理框圖2.2論證分析最終方案論述:很顯然,方案較其它相比無論在經(jīng)濟上和實現(xiàn)容易程度上都要好。方案在實行控制的時候不像其它采用D/A轉(zhuǎn)換后再控制調(diào)節(jié)閥的方法,而是直接外接一個固態(tài)繼電器,通過內(nèi)部改變定時器的中斷時間來調(diào)節(jié)一個周期內(nèi)電子開關(guān)的導(dǎo)通和斷開時間。這樣既節(jié)省了材料也可以很大程度上減少硬件電路的結(jié)構(gòu)。綜上所述方案有如下的特點:(1)在完成所要求的任務(wù)的基礎(chǔ)之上還有著結(jié)構(gòu)簡單、明了的特點,很容易實現(xiàn),而且在一定的程度上節(jié)約成本。(2)由于采用了離線的方法,很大程度上的減少了編程的麻煩,實現(xiàn)起來較容易。(3)采用了無污染能源,保護環(huán)境。同時也省去了為建造燃料供應(yīng)子系統(tǒng)的費用,節(jié)約了成本。采用了模擬的PWM變換,和固態(tài)繼電器。可以將采樣頻率提高到很多的水平,使控制結(jié)果更準(zhǔn)確,實時性、控制效果更好。
第三章系統(tǒng)設(shè)計整個系統(tǒng)由軟件和硬件兩部分組成。本章詳細(xì)介紹了系統(tǒng)的硬件和軟件設(shè)計,并對硬件和軟件的每一個部分進行了分析,在后半部分還對系統(tǒng)模型進行了訪真與程序調(diào)試。硬件和軟件的每一個壞節(jié)都是深思熟慮而成,各自完成相應(yīng)的功能并組成一個統(tǒng)一的整體。3.1硬件設(shè)計系統(tǒng)硬件由電源電路,溫度檢測變送電路、模數(shù)接口轉(zhuǎn)換電路、單片機系統(tǒng)和人機接口等部分組成。系統(tǒng)電源為整個系統(tǒng)提供電能;溫度檢測變送電路將檢測到的溫度信號轉(zhuǎn)換成標(biāo)準(zhǔn)的電壓信號輸入到模數(shù)接口轉(zhuǎn)換電路;模數(shù)接口轉(zhuǎn)換電路輸出的數(shù)字信號進入單片機系統(tǒng);單片機系統(tǒng)根據(jù)輸入的數(shù)字信號以模糊控制算法為基礎(chǔ)求出控制值,控制執(zhí)行器的運行及溫度的顯示。原理框圖見圖2-1。3.1由于整個系統(tǒng)都是用單片機和各類芯片及電阻、電容組成的,其工作電壓為+5V,不需要負(fù)電壓,可采用三端固定正電壓集成穩(wěn)壓器7805系列的芯片[6]。其輸出電壓5V,按輸出電流不同可分為78M05、78L05,輸出電流分別為0.5A和1.0A,轉(zhuǎn)換成功率分別為2.5W和5W其主要電路如附圖中的電源電路圖所示。其中輸入電壓為交流220V,經(jīng)過變壓器其輸出為9.5V,再進行整流。整流可通過四個二極管進行全波整流,也可以利用集成整流堆來進行(同原理)。后面接電容C1、C2為濾波電容進行濾波,注意電解電容應(yīng)該要有一定裕量,否則不能起到很好的濾波效果。本電路中使用的電容大小為470uf,耐壓為25伏。78L05的輸出級接入兩個濾波電容,用于減小因為電源波動對系統(tǒng)造成的影響和濾波。其不需要采用大容量的電解電容器,容量大小為100uf耐壓為25伏,再接入0.1μF的電容器,便可減少因為電源波動的影響和濾去紋波,很好地改善負(fù)載的瞬態(tài)響應(yīng)。然而,隨之產(chǎn)生一個弊端,即一旦78M05的輸入出現(xiàn)短路時,輸出端大電容上存儲的電荷,將通過集成穩(wěn)壓器內(nèi)部放電,可能會造成內(nèi)部電路的損壞,故在其間跨接一個二極管,為放電提供放泄通路,對集成穩(wěn)壓器起到了分流保護作用。3.1.2溫度信號的檢測變送包含兩個方面,一是檢測環(huán)節(jié),另一個是變送環(huán)節(jié)。檢測環(huán)節(jié)至關(guān)重要,檢測元件的選型關(guān)系到檢測的精度和變送環(huán)節(jié)中信號變送的容易程度。在溫度的檢測過程中一般用熱電阻和熱電偶完成,熱電阻一般用在檢測精度要求不是很高的地方,而熱電偶則在靈敏度上比熱電偶更好,檢測精度能比熱電阻有一個數(shù)位的差異檢測與變送設(shè)備主要根據(jù)被檢測參數(shù)的性質(zhì)與系統(tǒng)設(shè)計的總體考慮來決定。被檢測參數(shù)性質(zhì)的不同,準(zhǔn)確度要求、響應(yīng)速度要求的不同以及對控制性能要求的不同都影響檢測、變送器的選擇,要從工藝的合理性、經(jīng)濟性加以綜合考慮。應(yīng)遵循以下原則:1.可能選擇測量誤差小的測量元件。盡可能選擇快速響應(yīng)的測量元件與變送設(shè)備。對測量信號作必要的處理。a測量信號校正。b測量信號噪聲(擾動)的抑制。對測量信號進行曲線線性化處理。溫度是工業(yè)生產(chǎn)過程中最常見、最基本的參數(shù)之一。所以,溫度的檢測與控制是自動控制工程的重要任務(wù)之一。測量溫度的方法有兩種,一種是接觸式、另一種是非接觸式。接觸式測量的主要特點是:方法簡單、可靠,測量精度高。但是由于測溫元件要與被測介質(zhì)接觸進行熱交換,才能達(dá)到平衡,因而產(chǎn)生了滯后現(xiàn)象。同時測量體可能與被測介質(zhì)產(chǎn)生化學(xué)。此外測量體還受到耐溫材料的限制,不能應(yīng)用于很高溫度的測量。非接觸式測溫是通過接收被測介質(zhì)發(fā)出的輻射熱來判斷的。其主要特點是:測溫原則上不愛限制;速度較快,可以對運動休進行測量。但是它受到物體的輻射率、距離、煙塵和水汽等因素影響,測溫誤差較大。由于本系統(tǒng)中測量的對象為電爐,測量溫度在0~100℃目前工業(yè)生產(chǎn)過程中常用的接觸式溫度測溫原理、與使用場合如表3-1:表3-1各類傳感元件的特點和使用場合表3-1各類傳感元件的特點和使用場合測溫原理溫度計名稱測溫范圍℃主要特點體積變化體積變化固體熱膨脹雙金屬溫度計--200~700結(jié)構(gòu)簡單,價格便宜,適用于就上測量,傳送距離不很遠(yuǎn)氣體熱膨脹玻璃液體溫度計液體熱膨脹壓力式溫度計-200~600電阻變化電阻變化利用尸體或半導(dǎo)體的電阻值隨溫度變化的性質(zhì)鉑、銅、鎳、銠、鐵熱敏電阻-270~900-270~900準(zhǔn)確度高,能遠(yuǎn)傳,適用于低、中溫測量鍺、碳、金屬氧化物熱敏電阻利用金屬的熱電效應(yīng)熱電效應(yīng)利用金屬的熱電效應(yīng)熱電效應(yīng)普通金屬熱電阻-200~1800-200~1800測量范圍廣,精度高,能遠(yuǎn)傳,適用于中、高溫測量貴重金屬熱電阻難熔金屬熱電阻非金屬熱電阻從表中所列的各種溫度測量儀表中,機械式大多用于就地指示;輻射式的精度較差,只有電的測溫儀表精度較高,信號又便于傳送。所以熱電偶和熱敏電阻溫度計在工業(yè)生產(chǎn)和科學(xué)研究領(lǐng)域中得到了廣泛地應(yīng)用。熱電偶溫度計在工業(yè)生產(chǎn)過程中極為廣泛。它具有測溫精度高,在小范圍內(nèi)熱電動勢與溫度基本呈單值、線性關(guān)系,穩(wěn)定性和復(fù)現(xiàn)性較好,測溫范圍寬,響應(yīng)時間較快等特點。其使用時一定要注意冷端溫度補償,在一般情況下采用補償電橋的方法較多。其具體實現(xiàn)過程見下面的分析過程。熱電阻溫度計是利用導(dǎo)體或半導(dǎo)體的電阻值隨溫度而變化的性質(zhì)來測量溫度的。常用的有鉑電阻、銅電阻、半導(dǎo)體熱敏電阻等,但與熱電偶相比較,在精度上,熱電偶精度比熱電阻高。變送器在數(shù)據(jù)采集過程中擔(dān)任了把傳感器檢測到的信號變成統(tǒng)一標(biāo)準(zhǔn)信號(DC4~20mA或DC1~5V),從而使處理器能夠識別數(shù)據(jù)的級別,便于在自運控制過程中進行運算和做出相應(yīng)的處理決策。DDZ-Ш熱電偶溫度變送器可以把溫度轉(zhuǎn)換成統(tǒng)一的標(biāo)準(zhǔn)信號(DC4~20mA或DC1~5V),其輸出送顯示儀表或調(diào)節(jié)器,調(diào)節(jié)器實現(xiàn)對溫度的顯示或自動控制。DDZ-Ш熱電偶溫度變送器具有熱電偶冷端溫度補償、零點調(diào)整、零點遷移、量程調(diào)整以及線性化等重功能。其具有以下幾個特點:(1)采用了線性集成電路,提高了儀表的可靠性、穩(wěn)定性及各項技術(shù)性能。(2)熱電偶溫度變送器中采用了線性化電路,使變送器的輸出電流。或電壓信號和被測溫度(輸入信號)成線性關(guān)系。(3)線路中采用了安全火花防爆措施,幫可用于危險場所中的溫度測量變送。由以上分析,我們可以得出結(jié)論,DDZ-Ш熱電偶溫度變送器是一種集成的自動化溫度傳感變送器,在量程和精度上都完全滿足設(shè)計中溫度測量、變送的要求。3.1.因為單片機不能直接處理模擬信號,所以必須將熱電偶檢測到的溫度模擬信號變化成數(shù)字信號,單片機才能做出相應(yīng)的處理。按照設(shè)計指標(biāo),精度要求在±0.5℃。采用8位A/D轉(zhuǎn)換器如果設(shè)定其成比例關(guān)系,即0~255,0℃~100℃。則其精確度為0.39用12位A/D器,其輸入電壓為0~5V時對應(yīng)的輸出為0~4096,設(shè)計要求溫度控制在0~100℃。我們可以將100℃時A/D輸出為1000,這樣其精度可以達(dá)到0.1℃,完全滿足設(shè)計的要求。前面已經(jīng)說明變送器的輸出為1~5V,所以可以調(diào)節(jié)送器的量程,0℃時變送器輸出為1.22V,而A/D轉(zhuǎn)換的輸出為1000;100TLC2551/2541是TI公司生產(chǎn)的串行12位A/D轉(zhuǎn)換器[8],其采用DIP-8封裝,簡單的微處理器接口,單通道差分輸入,轉(zhuǎn)換時間在Flock=400KHz時為3.2us,5V供電時輸入范圍:0~5V,輸入輸出完全兼容TTL和CMOS電路,全部非校準(zhǔn)誤差:±1LSB。單5V供電,工作溫度范圍:0℃~70℃;其接口電路如圖3-圖圖3-2模數(shù)轉(zhuǎn)換電路3.11單片機選型整個系統(tǒng)采用最小化設(shè)計,其外部所接組件大多采用了串行通信,所以在單片機選型時不需要很多的并行口,有一定的程序存儲器和定時器、外部中斷即可。圖3-389c2051及其引腳與網(wǎng)標(biāo)由ATMEL公司生產(chǎn)的AT圖3-389c2051(1)具有適于控制的8位CPU和指令系統(tǒng);(2)128字節(jié)的片內(nèi)RAM;2KB片內(nèi)ROM;(3)15線并行I/O口;(4)兩個16位定時/計數(shù)器;(5)一個全雙工串行口;(6)6個中斷源,兩個中斷優(yōu)先級的中斷結(jié)構(gòu);2晶振電路的設(shè)計單片機內(nèi)部帶有時鐘電路,因此,只需要在片外通過X1、X2引腳接入定時控制單元(晶體振蕩和電容),即可構(gòu)成一個穩(wěn)定的自激振蕩器。振蕩器的工作頻率一般在1.2~12MHz之間,當(dāng)然在一般情況下頻率越快越好。可以保證程序運行速度即保證了控制的實時性。一般采用石英晶振作定時控制元件;在不需要高精度參考時鐘時,也可以用電感代替晶振,有時也可以引入外部時鐘脈沖信號。C9、C10雖然沒有嚴(yán)格要求,但電容的大小影響振蕩器的振蕩的穩(wěn)定性和起振的快速性,通常選擇在10~30PF左右。在設(shè)計電路板時,晶振,電容等均應(yīng)盡可能靠近芯片,以減小分布電容,保證振蕩器振蕩的穩(wěn)定性。圖圖3-4復(fù)位電路和時鐘電路3.1在系統(tǒng)的設(shè)計過程中,考慮到加熱器在加熱過程中出現(xiàn)斷電的情況。當(dāng)這種情況發(fā)生時,系統(tǒng)應(yīng)該繼續(xù)加熱到斷電前設(shè)定的溫度。而設(shè)定的溫度存儲在單片機的數(shù)據(jù)在存儲器中,單片機斷電重啟動后存儲的設(shè)定溫度已經(jīng)消失。為了達(dá)到此功能,在單片機外部加入了一個基于I2C總線的E2I2C總線簡介:I2C總線由PHILIPS提出,是一種用于IC器件之間連接的二線制總線。它通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件:不管是單片機、存儲器、LCD驅(qū)動器還是鍵盤接口。采用I2C其協(xié)議定義的數(shù)據(jù)格式如下:開始7/10器件地址R/WACKSUBADDACKDATAACK……停止AT24C01是美國ATMEL公司的低功耗CMOS串行E2PROM,它是內(nèi)含128×8位存儲空間,具有工作電壓寬(2.5~5.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點。在系統(tǒng)中,用AT24C01存儲用戶設(shè)定的保持溫度,上限溫度和下限溫度。當(dāng)系統(tǒng)斷電再得電以后,系統(tǒng)將自動的讀出AT24C01中的保存值,并根據(jù)其內(nèi)容進行加熱,直到設(shè)定的溫度。從而達(dá)到了斷電后再加熱的目的。其實際電路連接圖如圖3-5,電阻R7、R8為I2C圖圖3-5AT24C01接口3.1.1顯示電路圖圖3-6顯示電路顯示部分用于顯示用戶設(shè)定的溫度、上限溫度、下限溫度和當(dāng)前溫度值等。當(dāng)然,從理論上而言,如果要很明了的顯示各種數(shù)值的話,應(yīng)該加上漢字顯示模塊,這樣就可以一目了然的識別出各種設(shè)定值。從這一方面來說LCD顯示器就占有很大的優(yōu)勢。但LCD顯示器也存在著很大的不足,如LCD顯示器一般都有8根數(shù)據(jù)線和5根控制線,即使是用串行的情況下也要占用單片機的8個I/O口[,或者6根線和幾個邏輯門。使用LED顯示器可以很容易解決I/O口的問題,采用51單片機的串行方式0,只要兩根線(數(shù)據(jù)與時鐘)就能完成顯示功能,而且串行口還可以跟其它芯片共用,只要加上一個邏輯門電路形成線選就可以了。但其有一個明顯的弱點就是顯示的時候只能看到一個值,讓人有一種不直觀的感覺,并且在鍵盤上設(shè)定好一個顯示管理鍵,要顯示什么值只有按這個鍵就可以達(dá)到循環(huán)顯示的目的。本顯示電路共設(shè)了四位,分別用于顯示溫度的百、十、個、小數(shù)位。所以顯示的溫度可以精確到小數(shù)點后一位,即0.1℃。但溫度的設(shè)定值只能輸入兩位,即十位百位。Disselec用于選通顯示。其具體電路圖3-62信號輸入電路鍵盤作為人機接口之一,在系統(tǒng)的功能實現(xiàn)過程中起著不可或缺的作用。在硬件的實現(xiàn)上,采用串行接口,由一個74HC164,其8個輸出口作為矩陣鍵盤的列線,再由89C2051的P1.1、P1.2作為行線組成,每根線上都加一個上拉電阻,用于減小干擾。整個鍵盤共設(shè)16個鍵,見圖3-7。其鍵名和功能如表3-2。圖3-7圖3-7鍵盤電路表3-2鍵盤設(shè)置與功能設(shè)定表3-2鍵盤設(shè)置與功能設(shè)定鍵名個數(shù)(標(biāo)號)功能數(shù)字鍵10(0~9)輸入0~100℃下限溫度1(15)設(shè)定上限溫度,正常顯示時輸入有限,數(shù)據(jù)輸入時無效,且報錯上限溫度1(14)設(shè)定下限溫度,正常顯示時輸入有限,數(shù)據(jù)輸入時無效,且報錯設(shè)定恒溫1(13)設(shè)定恒溫溫度,正常顯示時輸入有限,數(shù)據(jù)輸入時無效,且報錯停機鍵1(11)使其停止加熱,正常顯示時有限,停機時停止顯示,停止測量。確認(rèn)鍵1(10)確定輸入的數(shù)據(jù),輸入數(shù)據(jù)時有效,其它情況下報警。下翻1(12)循環(huán)顯示設(shè)定、上限、下限溫度,按下顯示2秒,不按則顯示溫度3報警電路為使系統(tǒng)的人機交互界面更好,設(shè)置了兩路報警信號,分別為兩路紅色的發(fā)光二極管,用于顯示越限報警和誤輸入報警。圖3-8報警電路圖3-8報警電路誤輸入報警(LED2)主要用于鍵盤管理中,當(dāng)用鍵盤進行恒溫設(shè)定、上、下限溫度設(shè)定時工作人員如果沒有按說明中所要求的步驟進行操作的話就是所謂的誤操作。當(dāng)出現(xiàn)誤操作時誤輸入報警燈點亮,此時工作人員應(yīng)進行輸入檢查,查看說明并更正。越限報警和誤輸入報警分別由P1.0和P1.5口引出,其上接的電阻為限流電阻,用于防止電流過大而引起的發(fā)光二極管燒毀。3.執(zhí)行機構(gòu)為一個固態(tài)繼電器,程序中采用了模擬的PWM變換方法。通過控制固態(tài)繼電器的導(dǎo)通與關(guān)斷達(dá)到控制電爐的通電和斷電的目的。圖3-圖3-9執(zhí)行器電路圖3.2軟件設(shè)計系統(tǒng)的軟件部分以主程序為入口,在初始化之后調(diào)用鍵盤管理程序,完成對鍵盤的掃描,讀入鍵值,并根據(jù)相應(yīng)的鍵值進行各類操作。溫度采樣頻率由定時器控制,在每一次采樣完成之后進行控制時間的計算和顯示刷新。3.2.主程序作為程序的入口,控制各類程序的調(diào)用。在系統(tǒng)中其主要的任務(wù)是調(diào)用鍵盤管理程序。然后其它的功能都由鍵盤管理程序和中斷程序完成。可以說主程序起到了重啟動后讀入E2PROM中的設(shè)計溫度和上、下限溫度;設(shè)計各類定時器和開中斷的,并調(diào)用鍵盤管理程序的功能。但這樣處理主程序起到了分散功能的作用,即主程序會變得很容易編寫,而具體的功能都由功能子程序完成。主程序流程如圖3-10所示。具體程序如下:開始初始化,開中斷開始初始化,開中斷移入設(shè)定值并顯示調(diào)用鍵盤管理子程序結(jié)束圖3-10主程序流程START:MOVSP,#70H;置堆棧,如堆棧超出會造成處理器復(fù)位。LCALLRDNBYT;讀入E2PROM中的初使會標(biāo)志、各類設(shè)定溫度。MOVR1,#SETTEMPLCALLVALUDISPMOVR1,#TEMPHIGHLCALLVALUDISPMOVR1,#TEMPLOWLCALLVALUDISP;單片機復(fù)位后,會分別顯示各類設(shè)定溫度2秒MOVTMOD,#11H;定時器0、1都為16位定時器MOVTH0,#3CHMOVTL0,#0B0HMOVTH1,#3CHMOVTL1,#0B0H;兩定時器第一周期內(nèi)的定時時間為0.05秒(12M)SETBPT1;定時器1優(yōu)先,定時器1用于控制加熱器的運行SETBEASETBET0SETBET1SETBTR0SETBTR1;開定時中斷和總中斷,兩個定時器開始定時LCALLKEYOPT;調(diào)用鍵盤管理程序,完成各類操作用于顯示設(shè)定;溫度、上、下限溫度、和變換的子程序3.2.1TLC2551的驅(qū)動前面已經(jīng)說明系統(tǒng)中采用的A/D轉(zhuǎn)換芯片是串行的,所以我們在使用其時必須按照其時序一步步的完成,其時序圖如圖3-11所示。圖3-11TLC2551的時序圖圖3-11TLC2551的時序圖ADC:PUSHACLRCS;選通ADCNOPSETBclkNOPNOPCLRC;清C標(biāo)志CLRclkMOVR3,#12;時序要求clra;清ACCNOPADCLK:SETBCLKNOPNOPCLRCLKMOVC,DO;移入ADC值RLCA;左移CJNER3,#8,NEXTMOVADCDATAH,A;存儲ADC高位值NEXT:DJNZR3,ADCLKMOVADCDATAL,A;存儲ADC低位值POPASETBCS;關(guān)A/DRET2由前面硬件部分的說明可以得出,設(shè)計要求的A/D轉(zhuǎn)換結(jié)果跟溫度值的關(guān)系是:A/D值=溫度×10。正如前面說所,由于變送器的限制,我們只能將0℃時所對應(yīng)的變送器輸出為1.22V,而100℃時對應(yīng)的變送器輸出是其量化順序為:讀入A/D轉(zhuǎn)換值、用二進制無符號除法將轉(zhuǎn)換值減去1000,再將其結(jié)果用二進制無符號數(shù)除法除以10,取商和余數(shù)。分別作為溫度的整數(shù)部分和小數(shù)部分,用于四位溫度顯示。流程圖如圖3-12所示。具體程序如下:圖3-12A/D轉(zhuǎn)換和量化流程圖圖3-12A/D轉(zhuǎn)換和量化流程圖入口啟動A/D,讀入數(shù)值A(chǔ)/D值-1000計算出溫度值返回;0~9的字形碼DISPLAY:SETBDISSELEC;選取通顯示MOVSCON,#00H;串口方式0MOVR1,#04H;顯示四位MOVR3,#0;用于判斷是否應(yīng)加入小數(shù)位MOVDPTR,#NUMDATA;數(shù)字字型碼地MOVR0,#DISPTEMP;移入顯示數(shù)據(jù)的地址LOOPDIS:MOVA,@R0;移入AMOVCA,@A+DPTR;取值MOV24H,A;加入一寄存器用于緩沖MOVA,R3CJNEA,#2,NOT2MOVA,24HSETBACC.7;判斷是否為個位,如是則點亮小數(shù)點AJMPDDNOT2:MOVA,24HDD:MOVSBUF,A;發(fā)送WAITDIS:JNBTI,WAITDIS;等待發(fā)送CLRTIDECR0;地址減1DJNZR1,LOOPDIS;發(fā)送完畢否?OUTDIS:CLRDISSELEC;不選通顯示RET3.2.3片外I2CE2PROM的作用已在前面說明,其內(nèi)部用連續(xù)的7個字節(jié)分別用于存儲首次開機標(biāo)志、設(shè)定溫度、上限溫度和下限溫度。其中標(biāo)志占一個字節(jié),其余各占2個字節(jié)。其時序圖如圖3-13圖3-圖3-13I2C總線的時序圖從上圖我們很容易看出I2C總線的時序。使用時最開始發(fā)起始位,然后是器件地址,接著是從地址、數(shù)據(jù)最后是結(jié)束位,中間還夾著應(yīng)答位。AT2401在電路中的器件地址為1010000(前4位為I2C協(xié)議規(guī)定的E2PROM的地址,后3位為其類地址,由圖3-6可知其類地址為000)。因為只用到了其中的10H~16H單元,其余單元空閑,所以SUBADD(圖中的第二個ADDESS3.2.圖3-14顯示程序流程要顯示的數(shù)據(jù)存儲于連續(xù)的四個數(shù)據(jù)存儲器之中。由圖3-6圖3-14顯示程序流程SUBF寄存器中即可。其要顯示的數(shù)據(jù)共四位位于從TEMPDATA開始的四個連續(xù)存儲空間中。流程如圖3-14,具體程序如下:ORG00hLJMPstart;程序開始 ORG03HRETI;軟件抗干擾ORG0bhLJMPintt0;定時器0的中斷服務(wù)程序ORG13HRETI;軟件抗干擾ORG1bhLJMPintt1;定時器1的中斷服務(wù)程序ORG23HRETI;軟件抗干擾SDABITP3.0;I2CSCLBITP3.1;SDA(數(shù)據(jù)),SCL(時鐘)CSBITP3.4;A/D轉(zhuǎn)換器的選通線LOCKBITP3.5;E2PROM的寫允許線OPEBITP3.7;執(zhí)行器的輸入(控制)LINE1BITP1.3LINE2BITP1.2;鍵盤的兩跟行線lineflagbit05h;(1)行線標(biāo)志,為第1行LED1BITP1.0;(1)越限報警指示燈LED2BITP1.4;(1)誤輸入報警指示燈DOBITP3.3;串行A/D的輸出CLKBITP3.2;串行A/D的時鐘線INITIALEQU30H;用于判斷是否為第一次開機SETTEMPEQU31H;用戶設(shè)定的溫度TEMPHIGHEQU32H;用戶設(shè)定的上限溫度,如超過則有越限報警TEMPLOWEQU33h;用戶設(shè)定的下限溫度,如低于則有越限報警KEYTEMPEQU34H;由鍵盤輸入的設(shè)定、上、下溫度,共三位。分別為;34H,35H,36H。KEYBOARDEQU37H;用于緩沖存儲用戶從鍵盤輸入的值。ADCHIGHEQU38H;ADC-1000后的高位暫存值A(chǔ)DCLOWEQU39H;ADC-1000后的低位暫存值A(chǔ)DCDATAHEQU3AH;A/D轉(zhuǎn)換的高位ADCDATALEQU3BH;A/D轉(zhuǎn)換的低位DISPTEMPEQU3CH;顯示溫度的暫存區(qū),共四位3C~3F。分別;為小數(shù)、個、;十、百位。MTDEQUINITIAL;I2CMRDEQUINITIAL;接收區(qū)的首址,同INITIALNUMBYTEQU04H;I2CSWAEQUA0H;I2CSRAEQUA1H;I2CSUBDAAEQU02H;I2CTIMEHEATEQU40H;加熱時間的存儲地址TIUNHEATEQU41H;不加熱的時間存儲地址TRANEQU42H;模糊量化結(jié)果的存儲地址DISPFLAGEQU43H;顯示標(biāo)志,用于識別設(shè)定、上、下限溫度;的顯示3.鍵盤管理程序包括鍵盤掃描程序(用于將輸入的鍵值讀入到數(shù)據(jù)存儲器中)、鍵值判斷轉(zhuǎn)移程序(判斷輸入的數(shù)值并根據(jù)數(shù)值的異同做出相應(yīng)的處理)。1鍵盤掃描子程序由圖3-7可知同顯示接口一樣,鍵盤接口同樣使用了串行口的方式0。當(dāng)檢測到有鍵按下時,程序?qū)z測是在第0行或者是在第1行,然后通過串行輸出不同的列值來掃描按下的鍵在哪一列。最后將鍵值讀入到keyboard存儲器中。鍵值=行值×8+列值。具體程序如下:keyscan:movscon,#00h;選擇串行模式nokey:setbline1setbline2movsbuf,#0;檢查重點已被選擇serial:jnbti,serial;等待發(fā)送串行時鐘clrtijnbline1,keyinjnbline2,keyin;或更關(guān)鍵的被選擇ajmpnokey;沒有關(guān)鍵keyin:lcalldelay_10ms;延遲10msjnbline1,keyline1jnbline2,keyline2ajmpnokeykeyline1:movr3,#0setblineflag;lineflag是第一線ajmpliescan;謊言掃描keyline2:movr3,#1liescan:movr5,#8;八謊言movr4,#0mova,#0feh;初步liescanmovsbuf,aserial2:jnbti,serial2;謊言掃描開始clrtijblineflagline1insetbline2jnbline2,okkey;尋找謊言line1in:setbline1jnbline1,okkeyrevote:setbcrlcaincr4djnzr5,liescanajmpnokey;系統(tǒng)erorrokkey:mova,r3movb,#8mulabadda,r4movkeyboarta;stort關(guān)鍵clrkeyflag;明確thekeyflagret2鍵值判斷轉(zhuǎn)移子程序圖3-15鍵盤管理程序流程由硬件部分可知鍵盤中除了幾個數(shù)字鍵外,還有幾個功能鍵。此程序用于判斷輸入的鍵是功能鍵還是數(shù)字鍵,如果是功能鍵則選擇相應(yīng)的功能或者在誤輸入的情況下報警,提醒操作者。其流程圖見圖3-15,圖3-15鍵盤管理程序流程keyopt:clrclcallkeyscan;調(diào)用用鍵盤掃描程序clr00hmova,keyboardcjnea,#10,wrong;0~9為數(shù)字鍵,10為確認(rèn)鍵,此是按下則報警wrong:setbled2lcalldelay_2sclrled2ajmpkeyoptn10:jcwrong;為0~9clrccjnea,#11,xiafangajmpshutupxiafang:cjnea,#12,tempin;為輸入各類溫度mova,disflagcjnea,#2,no2movdispflag,#0ajmpdispno2:adddispflag,#1;dispflag加一disp:mova,dispflagmovb,#31hadda,b;a+b=addresmovr1,a;顯示溫度lcallvaludispajmpkeyopttempin:cjnea,#13,highinsetb00hlcalldataajmpkeyopthighin:cjnea,#14,lowinsetb01hlcalldataajmpkeyoptlowin:setb02hlcalldataajmpkeyoptretshutup:cpl03hjb03h,turnoffsetbea;關(guān)掉中斷ajmpkeyoptturnoff:clroptclreaajmpkeyopt;關(guān)掉中斷3.1定時中斷0中斷服務(wù)子程序定時中斷0用于等周期的進行A/D轉(zhuǎn)換(即溫度的采樣點數(shù)固定),并將采樣后的值作為輸入量,再由控制程序?qū)崿F(xiàn)由輸入量到輸出量的計算,再將計算出的控制量存儲在fuzztime寄存器中。并調(diào)用顯示程序刷新當(dāng)前系統(tǒng)的溫度。整個程序為順序執(zhí)行。流程圖如圖3-16,具體程序如下:INTT0:PUSHPSWCLRTR0;關(guān)中斷SETBRS0SETBRS1;選寄存器組MOVTH0,#3CHMOVTL0,#0B0H;重置初值DJNZTIMEquickt0MOVTIME,#10;采樣周期為5秒LCALLADC;調(diào)用A/D轉(zhuǎn)換程序LCALLFUZZY;調(diào)用程序算出定時常數(shù)jB05H,QUICKT0;05H=1,為正在顯示數(shù)值時,不能顯示當(dāng)前溫度LCALLDISPLAY;顯示刷新quickt0:SETBTR0;開中斷POPPSWRETI2定時器1中斷服務(wù)子程序同定時器0類似,定時器實現(xiàn)了模擬的PWM變換。即定時器1中存在一個周期時間(為20MS)。在這個時間內(nèi)定時器1在fuzztime個周期的時間內(nèi)將執(zhí)行器通電,使加熱器加熱,其余的周期時間(20-fuzztime)執(zhí)行器不通電。整個程序采用順序執(zhí)行,流程圖如圖3-17。具體程序如下:INTT1:PUSHPSWSETBRS0;中斷1中全部用了通用寄存器1CLRTR1MOVTH1,#3CHMOVTL1,#0B0HMOVA,TIMEHEATCJNEA,TIMEHEAT,NOHEATJB06H,UNHEAT;用于判斷加熱是否完畢DJNZR3,QUICKT1NOHEAT:MOVR3,TIMEHEAT;移入加熱的時間SETB06HAJMPQUICKT1UNHEAT:DJNZR4,QUICKT1MOVR4,TIUNHEAT;移入不加熱的時間CLR06HQUICKT1:POPPSWSETBTR1RETI3.運算程序?qū)崿F(xiàn)了由A/D轉(zhuǎn)換值到控制值的運算。其中包含了求差量化和查表等子程序。偏差=現(xiàn)行溫度值─設(shè)定溫度值,其集合可以表示為{負(fù)大(NB)、負(fù)小(NS)、零(Z0)、正小(PS)、正大(PB)}并將其大小量化為九個等級:-4,-3,-2,-1,0,+1,+2,+3,+4。其論域E為E={-4,-3,-2,-1,0,+1,+2,+3,+4}。為簡化運算,可將控制量U的大小也量化成上述九個等級若根據(jù)專家經(jīng)驗,這些集的隸屬度量化為如表3-3:表表3-3集的隸屬度量量化等級語言變量量化等級語言變量-4-3-2-10+1+2+3+4PB000000.40.711PS0000.40.710.70.40ZO000.40.710.70.400NS00.40.710.70000NB110.70.400000根據(jù)熟練操作人員手工控制經(jīng)驗,控制規(guī)則如下:1)IFE=NBTHENU=PB2)IFE=NSTHENU=PS3)IFE=ZOTHENU=ZO4)IFE=PSTHENU=NS5)IFE=PBTHENU=NB上述控制規(guī)則為一多重條件語句,可用誤差論域E到控制量論域U的關(guān)系R表示為:接下來再由講法法則和上述計算關(guān)系進行矩陣運算,結(jié)果如表3-4表表3-4差值與控制量的等級對應(yīng)表-4-3-2-10+1+2+3+4U+4+3+2+10-1-2-3-4差值與實際溫度的量化關(guān)系如表3-5表表3-5量化等級與實際溫度的對應(yīng)表量化等級-4-3-2-10+1+2+3+4實際溫差℃-5-3-2-10+1+2+3+5控制U與實際輸出的量化關(guān)系如表3-6表表3-6控制量的量化等級與實際輸出之間的關(guān)系量化等級-4-3-2-10+1+2+3+4實際輸出20105321000注:數(shù)值為每20個周期內(nèi)的導(dǎo)通周期數(shù)實際運用過程中,可以將-4~4量化為0~8,減少符號數(shù)的運算。另外為了減少程序,可由差值量化后直接求出控制量,而不必要對控制量進行反量化。表表3-7簡化后的實際溫差與實際輸出的關(guān)系表實際溫差-50+0.+0.+0.5+5012345678實際輸出20105321000注:數(shù)值為每20個周期內(nèi)的導(dǎo)通周期數(shù)分析可知,可以通過查表程序來求得其控制值。程序流程圖如圖3-18。具體程序如下所;示:入口求差值并量化入口求差值并量化由差值量化值求fuzztime返回保存圖3-18運算子程序的流程圖timedb0h,0h,1h,2h,3h,5h,14hfuzzy:pushpswpushalcall2bytesub;調(diào)用2進制無符號數(shù)減法lcall2bytediv;調(diào)用2進制無符號數(shù)除法lcalltransmit;調(diào)用求差并量化子程序movdptr,#time;模糊時間入地址DPTRmova,tran;量化等級入Amovca,@a+dptr;模糊時間入Amovtimeheat,a;將所得時間放入加熱時間中clrc;清C,馬上要用減法mova,#20;總共為20個周期subba,timeheatmovtiunheat,a;求出不加執(zhí)熱時間popapoppswret入口差值為正?入口差值為正?直接量化負(fù)數(shù)求原碼去符號返回A/D值-1000圖3-19.求差量化子程序圖transmit:movr0,,#distempincr0mov22h,@r0;移入個位incr0mova,@r0;移入十位movb,#10mulab;十位值*10adda,22h;再加上個位mov22h,aincr0mova,@r0movb,#100mulabadda,22h;百位*100+十位*10+個位clrclrccjnza,temphigh,high;如上越限有報警high:jncoutsetbled1lcalldelay_2sclrled1out1:cjnea,templow,low;如上越限有報警low:jcout2setbled1lcalldelay_2sclrled1out2:subba,settempacalllianghuaret3.3抗干擾設(shè)計與軟件調(diào)試在系統(tǒng)的運行過程中可能出現(xiàn)各種干擾,如信號不穩(wěn)定、電路板搞干擾能力差、程序跑飛等,也可能在搬運或者使用過程中對電路板或者原器件的磨損等。所以在設(shè)計過程中應(yīng)做好搞干擾設(shè)計,以求將干擾對系統(tǒng)產(chǎn)生的影響降到最低。3.在硬件設(shè)計過程中為了減少外部信號對系統(tǒng)的影響采用了以下幾種抗干擾措施。I/O口外接濾波電容和上拉電阻,減小信號干擾。2制作PCB板時對重點信號線實行地線包絡(luò),并于導(dǎo)線集中的地方和過孔處補上淚滴,加強連接。3.PCB板的雙面分別填充電源層與地線層,并對沒有并線的地方進行覆銅PCB板布局實行模塊化分離,模塊之間進行信號隔離,對電源變壓器進行隔離。3.軟件抗干擾就有投資低的優(yōu)點,本文采用的軟件抗干擾措施如下:(1)指令冗余當(dāng)CUP受到干擾后,往往將一些操作數(shù)當(dāng)作指令碼來執(zhí)行,引起程序的混亂,我們首先要盡快將程序納入正軌,也就是讓程序彈飛到某一個單字節(jié)指令NOP,這就是指令冗余,自此,常在一些對程序的流向起決定作用的指令之前插入兩條NOP指令,以保證彈飛的程序迅速納入正確的控制軌道。在某些對系統(tǒng)工作狀態(tài)至關(guān)重要的指令前也可插入兩條NOP指令,以保證被正確執(zhí)行。(2)軟件陷阱當(dāng)彈飛的程序落到非程序區(qū)(如ROM中未使用的空閑和程序中的數(shù)據(jù)表格區(qū))時,就形成了死循環(huán),解決的辦法就是用一條引導(dǎo)指令強行將捕獲的程序印象到一個指定的地址,為了加強捕獲的效果,一般還在其前面加兩條NOP指令。因此,軟件陷阱由三條指令組成:NOPNOPLJIMPSTARTa.未使用的中斷向量區(qū)當(dāng)干擾未使用的中斷開放,并激活這些中斷時,就會進一步引起混亂,如果我們在這些地方布上陷阱,就能及時捕獲到中斷。可在中斷入口處加入RETI指令。b.未使用的大片ROM空間對于剩下的ROM空間,一般在每隔一段設(shè)置一個陷阱(02H00H00H)從頭開始,此時前兩個00H即是設(shè)置陷阱的地址,又是NOP指令,起到雙重的作用。3.1.模糊表的求取在軟件設(shè)計部分中已經(jīng)說明,運算中由于單片機的運算能力有限,所以將矩陣的運算部分采用了離線的方式,進行求取。其體的求取過程如下:將熟練操作人員得出的關(guān)系得出關(guān)系R。如圖3-20。(2)運行編好的程序,求出控制量。依次輸入各種情況下的隸屬度,并進行解求出控制表。如E=NS時有,U=[0.40.40.70.70.710.70.70.7]。圖3-20系統(tǒng)的模糊關(guān)系R圖3-2圖3-20系統(tǒng)的模糊關(guān)系R按照隸屬度最大原則,應(yīng)先取控制量為“+1”級。同理均可從R中確定一個相應(yīng)的值,列成控制表如表3-5。2.軟件的調(diào)試軟件的調(diào)試部分包括各類程序的調(diào)試,如主程序、鍵盤管理子程序、定時中斷程序。當(dāng)然最重要的是運算程序,它可以檢測運算的正確性,和在此運算方式下的控制效果及精度等。接好調(diào)試電路,輸入程序并進行查錯、編譯,運得程序觀察結(jié)果,并繪制曲線如下。(1)當(dāng)輸入溫度為95℃時,理想曲線、最終調(diào)試曲線及最初測試曲線對照如3-21圖3-圖3-21輸入溫度為95℃(2)選中最終參數(shù)后,輸入溫度為50℃時,理想曲線測試曲線對照如圖3-2圖圖3-22輸入溫度為50℃分析:(1)我們可以看出當(dāng)?shù)谝淮螠y試時,由于參數(shù)不準(zhǔn),所以出現(xiàn)了誤差較大,達(dá)不到系統(tǒng)指標(biāo)。而經(jīng)過不斷調(diào)整參數(shù),系統(tǒng)達(dá)到了預(yù)期的控制效果。(2)當(dāng)參數(shù)調(diào)好后,重新設(shè)置輸入溫度。可以看出在t1以前系統(tǒng)全速加熱,但由于自然散熱,曲線并不是直線。而溫度上升到48℃時上升斜率減小,到相差0.5℃綜上所述,在控制精度上完全達(dá)到了設(shè)計任務(wù)的要求。
第四章程序清單;**************************\;程序名:模糊溫度控制系統(tǒng);功能:實現(xiàn)了模糊控制的溫度控制,溫度的顯示和設(shè)定;**************************\ORG00hLJMPstart;程序開始 ORG03HRETI;軟件抗干擾ORG0bhLJMPintt0;定時器0的中斷服務(wù)程序ORG13HRETI;軟件抗干擾ORG1bhLJMPintt1;定時器1的中斷服務(wù)程序ORG23HRETI;軟件抗干擾SDABITP3.0;I2CSCLBITP3.1;SDA(數(shù)據(jù)),SCL(時鐘)CSBITP3.4;A/D轉(zhuǎn)換器的選通線LOCKBITP3.5;E2PROM的寫允許線OPEBITP3.7;執(zhí)行器的輸入(控制)LINE1BITP1.3LINE2BITP1.2;鍵盤的兩跟行線lineflagbit05h;(1)行線標(biāo)志,為第1行LED1BITP1.0;(1)越限報警指示燈LED2BITP1.4;(1)誤輸入報警指示燈DOBITP3.3;串行A/D的輸出CLKBITP3.2;串行A/D的時鐘線INITIALEQU30H;用于判斷是否為第一次開機SETTEMPEQU31H;用戶設(shè)定的溫度TEMPHIGHEQU32H;用戶設(shè)定的上限溫度,如超過則有越限報警TEMPLOWEQU33h;用戶設(shè)定的下限溫度,如低于則有越限報警KEYTEMPEQU34H;由鍵盤輸入的設(shè)定、上、下溫度,共三位。分別為;34H,35H,36H。KEYBOARDEQU37H;用于緩沖存儲用戶從鍵盤輸入的值。ADCHIGHEQU38H;ADC-1000后的高位暫存值A(chǔ)DCLOWEQU39H;ADC-1000后的低位暫存值A(chǔ)DCDATAHEQU3AH;A/D轉(zhuǎn)換的高位ADCDATALEQU3BH;A/D轉(zhuǎn)換的低位DISPTEMPEQU3CH;顯示溫度的暫存區(qū),共四位3C~3F。分別;為小數(shù)、個、;十、百位。MTDEQUINITIAL;I2CMRDEQUINITIAL;接收區(qū)的首址,同INITIALNUMBYTEQU04H;I2CSWAEQUA0H;I2CSRAEQUA1H;I2CSUBDAAEQU02H;I2CTIMEHEATEQU40H;加熱時間的存儲地址TIUNHEATEQU41H;不加熱的時間存儲地址TRANEQU42H;模糊量化結(jié)果的存儲地址DISPFLAGEQU43H;顯示標(biāo)志,用于識別設(shè)定、上、下限溫度;的顯示;*******************************;函數(shù)名:主函數(shù);功能:實現(xiàn)了開機顯示和調(diào)用鍵盤管理程序;*********************************org50hSTART:MOVSP,#70H;置堆棧,如堆棧超出會造成處理器復(fù)位。LCALLRDNBYT;讀入E2PROM中的初使會標(biāo)志、各類設(shè)定溫度。MOVR1,#SETTEMPLCALLVALUDISPMOVR1,#TEMPHIGHLCALLVALUDISPMOVR1,#TEMPLOWLCALLVALUDISP;單片機復(fù)位后,會分別顯示各類設(shè)定溫度2秒MOVTMOD,#11H;定時器0、1都為16位定時器MOVTH0,#3CHMOVTL0,#0B0HMOVTH1,#3CHMOVTL1,#0B0H;兩定時器第一周期內(nèi)的定時時間為0.05秒(12M)SETBPT1;定時器1優(yōu)先,定時器1用于控制加熱器的運行SETBEASETBET0SETBET1SETBTR0SETBTR1;開定時中斷和總中斷,兩個定時器開始定時LCALLKEYOPT;調(diào)用鍵盤管理程序,完成各類操作用于顯示設(shè)定;溫度、上、下限溫度、和變換的子程序;*****************************;函數(shù)名:數(shù)值顯示程序;功能:將要顯示的各類溫度量化并調(diào)用顯示程序;入口:R1(要顯示數(shù)據(jù)的地址);*****************************VALUDISP:PUSHPSWPUSHA;存儲斷點SETB05H;為正在顯示設(shè)定、上、下限值,此是不中斷顯示溫度MOVR0,#DISPTEMP;溫度存儲低地址MOV@R0,#0;設(shè)定溫度中沒有小數(shù)位,為0INCR0MOVA,@R1;移入數(shù)據(jù)MOVB,#10DIVAB;除以10再取余MOV@R0,B;余數(shù)作為顯示的個位數(shù)INCR0DIVABMOV@R0,B;十位入地址MOV@R0,A;設(shè)定的百位入地址LCALLDISPLAY;顯示刷新LCALLDELAY_2S;延時2秒CLR05H;可以顯示當(dāng)前溫度了POPAPOPPSWRET;****************************;函數(shù)名:A/D轉(zhuǎn)換程序;功能:進行A/D串行轉(zhuǎn)換;轉(zhuǎn)換結(jié)果高4位存于ADCDATAH中,低8位存儲于ADCDATAL中;******************************ADC:PUSHACLRCS;選通ADCNOPSETBclkNOPNOPCLRC;清C標(biāo)志CLRclkMOVR3,#12;時序要求clra;清ACCNOPADCLK:SETBCLKNOPNOPCLRCLKMOVC,DO;移入ADC值RLCA;左移CJNER3,#8,NEXTMOVADCDATAH,A;存儲ADC高位值NEXT:DJNZR3,ADCLKMOVADCDATAL,A;存儲ADC低位值POPASETBCS;關(guān)A/DRET;**************************;函數(shù)名:顯示程序;功能:串行顯示溫度;R0為顯示數(shù)據(jù)低字節(jié)地址;*************************NUMDATADBC0H,F9H,D8H,B0H,99H,92H,82HF8H,80H,98H;0~9的字形碼DISPLAY:SETBDISSELEC;選取通顯示MOVSCON,#00H;串口方式0MOVR1,#04H;顯示四位MOVR3,#0;用于判斷是否應(yīng)加入小數(shù)位MOVDPTR,#NUMDATA;數(shù)字字型碼地MOVR0,#DISPTEMP;移入顯示數(shù)據(jù)的地址LOOPDIS:MOVA,@R0;移入AMOVCA,@A+DPTR;取值MOV24H,A;加入一寄存器用于緩沖MOVA,R3CJNEA,#2,NOT2MOVA,24HSETBACC.7;判斷是否為個位,如是則點亮小數(shù)點AJMPDDNOT2:MOVA,24HDD:MOVSBUF,A;發(fā)送WAITDIS:JNBTI,WAITDIS;等待發(fā)送CLRTIDECR0;地址減1DJNZR1,LOOPDIS;發(fā)送完畢否?OUTDIS:CLRDISSELEC;不選通顯示RET;************************;函數(shù)名:雙字節(jié)的無符號數(shù)減法;功能:用于雙字節(jié)的無符號數(shù)減法;減數(shù)固定為1000,化為16進制后為3E8H,即高位為3,低為為E8;*************************2bytesub:pushapushpswclrc;借位標(biāo)志清0mova,ADCDATALsubba,#0e8h;減去低位movADCLOW,amova,ADCDATAHsubba,#3;減去高位movADCHIGH,a;存儲結(jié)果poppswpoparet;************************;函數(shù)名:雙字節(jié)的無符號數(shù)除法;功能:用于雙字節(jié)的無符號數(shù)減除法,分別求出溫度的小數(shù),個,十,百位;被除數(shù):雙字節(jié)的無符號數(shù)減法的剩余值;*************************2BYTEDIV:MOVR5,ADCHIGHMOVR4,ADCLOW;被除數(shù)的高低位MOVR3,#0MOVR2#10MOVR0,#DISTEMPLCALLSUBDIVMOV@R0,R6;小數(shù)位進入INCR0LCALLSUBDIV;其被除數(shù)地址不變MOV@R0,R6INCR0LCALLSUBDIV;每次的除數(shù)都相同為10MOV@R0,R6INCR0MOV@R0,R4;個、十、百位分別進入相應(yīng)的內(nèi)存單元中RET;***************************;(1)入口:R5(高)、R4(低),被除數(shù);R3(高)、R2(低),非零除數(shù)。;(2)出口:R5(高)、R4(低),商;R7(高)、R6(低),余數(shù)。;***************************SUBDIV:POPPSWSETBRS1;存儲前面的通用寄存器組,并重新選擇為2CLRA;部分余數(shù)單元清零MOVR7,AMOVR6,AMOVR0,#10;除法移位次數(shù)LP:CLRC;移位MOVA,R4RLCAMOVR4,AMOVA,R5RLCAMOVR5,AMOVA,R6RLCAMOVR6,AMOVA,R7RLCAMOVR7,ALP1:MOVA,R6;部分余數(shù)減法SUBBA,R2MOVR1,AMOVA,R7SUBBA,R3JCSMALLMOVR7,AMOVA,R1MOVR6,AINCR4;商加1SJMPLP1SMALL:DJNZR0,LPMOV20H,R7;四舍五入JB07H,ADD1CLRCMOVA,R6RLCAMOVR6,AMOVA,R7RLCASUBBA,R3JCRETURNJNZADD1MOVA,R6SUBBA,R2JCRETURNADD1:MOVA,R4;商加1ADDA,#01HMOVR4,AMOVA,R5ADDCA,#00HMOVR5,ARETURN:POPPSWRET;************************;函數(shù)名:定時器0服務(wù)程序;功能:用于定時中斷掃描,采樣溫度,計算模糊時間;************************INTT0:PUSHPSWCLRTR0;關(guān)中斷SETBRS0SETBRS1;選寄存器組MOVTH0,#3CHMOVTL0,#0B0H;重置初值DJNZTIMEquickt0MOVTIME,#10;采樣周期為5秒LCALLADC;調(diào)用A/D轉(zhuǎn)換程序LCALLFUZZY;調(diào)用模糊算法程序算出定時常數(shù)jB05H,QUICKT0;05H=1,為正在顯示數(shù)值時,不能顯示當(dāng)前溫度LCALLDISPLAY;顯示刷新quickt0:SETBTR0;開中斷POPPSWRETI;************************;函數(shù)名:定時器1服務(wù)程序;用于定時器1的定時中斷控制執(zhí)行器;************************INTT1:PUSHPSWSETBRS0;中斷1中全部用了通用寄存器1CLRTR1MOVTH1,#3CHMOVTL1,#0B0HMOVA,TIMEHEATCJNEA,TIMEHEAT,NOHEATJB06H,UNHEAT;用于判斷加熱是否完畢DJNZR3,QUICKT1NOHEAT:MOVR3,TIMEHEAT;移入加熱的時間SETB06HAJMPQUICKT1UNHEAT:DJNZR4,QUICKT1MOVR4,TIUNHEAT;移入不加熱的時間CLR06HQUICKT1:POPPSWSETBTR1RETI;**************************;函數(shù)名:鍵盤掃描程序;功能:掃描按鍵;出口:鍵值位于keyboard中;鍵值=行*8+列;**************************keyscan:movscon,#00h;選擇串行模式nokey:setbline1setbline2movsbuf,#0;檢查重點已被選擇serial:jnbti,serial;等待發(fā)送串行時鐘clrtijnbline1,keyinjnbline2,keyin;或更關(guān)鍵的被選擇ajmpnokey;沒有關(guān)鍵keyin:lcalldelay_10ms;延遲10msjnbline1,keyline1jnbline2,keyline2ajmpnokeykeyline1:movr3,#0setblineflag;lineflag是第一線
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3558-2019生活垃圾焚燒飛灰熔融處理技術(shù)規(guī)范
- DB31/T 858-2015鋼渣粉混凝土砌塊應(yīng)用技術(shù)規(guī)程
- DB31/T 677-2021木制品制造業(yè)職業(yè)病危害預(yù)防控制規(guī)范
- DB31/T 668.1-2012節(jié)能技術(shù)改造及合同能源管理項目節(jié)能量審核與計算方法第1部分:總則
- DB31/T 631-2012公共汽車燃油消耗定額
- DB31/T 601-2019地理標(biāo)志產(chǎn)品金山蟠桃
- DB31/T 329.1-2019重點單位重要部位安全技術(shù)防范系統(tǒng)要求第1部分:展覽館、博物館
- DB31/T 309-2015梨樹栽培技術(shù)規(guī)范
- DB31/T 1438.1-2023用水定額第1 部分:農(nóng)業(yè)
- DB31/T 1333-2021城市供水管網(wǎng)運行安全風(fēng)險監(jiān)測技術(shù)規(guī)范
- 相似三角形的判定與性質(zhì)復(fù)習(xí)課(原創(chuàng)修訂)課件
- 買賣車輛不過戶協(xié)議書
- 青春期學(xué)生性教育PPT資料
- 文博考研-博物館學(xué)名詞解釋
- DLT 1055-2021 火力發(fā)電廠汽輪機技術(shù)監(jiān)督導(dǎo)則
- 安全信息管理程序
- 電工基礎(chǔ)(中職)完整版教學(xué)課件
- (中職)《電子商務(wù)基礎(chǔ)》第1套試卷試題及答案
- 中共中央辦公廳、國務(wù)院辦公廳關(guān)于進一步穩(wěn)定和完善農(nóng)村土地承包關(guān)系的通知中辦發(fā)〔1997〕16號,1997年6
- 計算機應(yīng)用基礎(chǔ)-終結(jié)性考試試題國開要求標(biāo)準(zhǔn)
- 預(yù)制梁場驗收及質(zhì)量管理實施細(xì)則
評論
0/150
提交評論