自動(dòng)化工程訓(xùn)練設(shè)計(jì)報(bào)告溫度測(cè)控系統(tǒng)的設(shè)計(jì)_第1頁(yè)
自動(dòng)化工程訓(xùn)練設(shè)計(jì)報(bào)告溫度測(cè)控系統(tǒng)的設(shè)計(jì)_第2頁(yè)
自動(dòng)化工程訓(xùn)練設(shè)計(jì)報(bào)告溫度測(cè)控系統(tǒng)的設(shè)計(jì)_第3頁(yè)
自動(dòng)化工程訓(xùn)練設(shè)計(jì)報(bào)告溫度測(cè)控系統(tǒng)的設(shè)計(jì)_第4頁(yè)
自動(dòng)化工程訓(xùn)練設(shè)計(jì)報(bào)告溫度測(cè)控系統(tǒng)的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、自動(dòng)化工程訓(xùn)練設(shè) 計(jì) 報(bào) 告2007.09目錄第一章 微控制器應(yīng)用系統(tǒng)綜合設(shè)計(jì)的目的意義11.1 實(shí)驗(yàn)?zāi)康?1.2 課程設(shè)計(jì)在教學(xué)計(jì)劃中的地位和作用1第二章 溫度測(cè)控系統(tǒng)軟硬件設(shè)計(jì)任務(wù)22.1 設(shè)計(jì)內(nèi)容及要求22.2 課程設(shè)計(jì)的要求2第三章 總體設(shè)計(jì)方案33.1 設(shè)計(jì)思想33.2 總體設(shè)計(jì)流程圖4第四章 硬件設(shè)計(jì)54.1 硬件設(shè)計(jì)概要54.2 所用到的芯片及其各自功能說(shuō)明54.2.1 芯片列表54.2.2 80c32的功能簡(jiǎn)介54.2.3 adc0809的功能簡(jiǎn)介64.2.4 8279的功能簡(jiǎn)介84.2.5 液晶顯示lcd的功能簡(jiǎn)介104.3 硬件電路設(shè)計(jì)系統(tǒng)原理圖及其說(shuō)明10第五章 軟件設(shè)計(jì)

2、115.1 流程圖及其說(shuō)明115.1.1a/d轉(zhuǎn)換子程序115.1.2鍵盤(pán)掃描子程序125.1.3液晶顯示子程序135.1.4比較報(bào)警子程序155.1.5控制子程序165.2 源程序及其說(shuō)明17第六章 系統(tǒng)調(diào)試及使用說(shuō)明18第七章 收獲、體會(huì)19附錄一:硬件原理圖20附錄二:源程序清單21參考文獻(xiàn)49第一章 微控制器應(yīng)用系統(tǒng)綜合設(shè)計(jì)的目的意義1.1 實(shí)驗(yàn)?zāi)康奈⒖刂破鲬?yīng)用系統(tǒng)綜合設(shè)計(jì)是為測(cè)控專(zhuān)業(yè)微控制器技術(shù)課程而開(kāi)設(shè)的課程設(shè)計(jì)教學(xué)環(huán)節(jié),其目的在于培養(yǎng)學(xué)生綜合運(yùn)用理論知識(shí)來(lái)分析和解決實(shí)際問(wèn)題的能力,是通過(guò)設(shè)計(jì)以微控制器為核心的單片機(jī)檢測(cè)系統(tǒng),加深學(xué)生對(duì)微控制器技術(shù)的了解,進(jìn)一步掌握其程序設(shè)計(jì)與硬件

3、接口技術(shù)。本課程的主要任務(wù)是運(yùn)用所學(xué)微控制器技術(shù)、微機(jī)原理等方面的知識(shí),設(shè)計(jì)出一臺(tái)以80c32mcu為核心的單片機(jī)數(shù)據(jù)采集、通訊或測(cè)控系統(tǒng),完成信息的采集、處理、輸出及人機(jī)接口電路等部分的軟、硬件設(shè)計(jì)。1.2 課程設(shè)計(jì)在教學(xué)計(jì)劃中的地位和作用本課程設(shè)計(jì)涉及微控制器技術(shù)課程的基本概念和理論,主要要求學(xué)生掌握微控制器的指令系統(tǒng)、中斷技術(shù)、總線擴(kuò)展、模擬與數(shù)字i/o接口技術(shù)與通訊技術(shù)等,重點(diǎn)是培養(yǎng)學(xué)生利用微控制器的硬、軟件開(kāi)發(fā)技術(shù)進(jìn)行微控制器系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)能力及掌握微控制器在自動(dòng)化測(cè)控應(yīng)用系統(tǒng)中的設(shè)計(jì)與開(kāi)發(fā)法。通過(guò)課程設(shè)計(jì),使學(xué)生能夠更加了解單片機(jī)這種高科技技術(shù),增加學(xué)習(xí)的積極性,也為今后進(jìn)一步的

4、學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。第二章 溫度測(cè)控系統(tǒng)軟硬件設(shè)計(jì)任務(wù)2.1 設(shè)計(jì)內(nèi)容及要求題目是溫度測(cè)控系統(tǒng)的設(shè)計(jì)。要求設(shè)計(jì)相應(yīng)的a/d、d/a、鍵盤(pán)、顯示接口和熱電偶測(cè)溫及冷端補(bǔ)償電路,可在線鍵盤(pán)參數(shù)設(shè)置、定時(shí)檢測(cè)、顯示、報(bào)警,其中控制輸出采用二位式控制,輸出部分采用開(kāi)關(guān)量進(jìn)行控制。具體要求是: adc0809采樣,lcd 4位顯示,喇叭報(bào)警,開(kāi)關(guān)量輸出2.2 課程設(shè)計(jì)的要求課程設(shè)計(jì)的基本要求如下:1掌握單片微控制器硬件結(jié)構(gòu)和工作原理、中斷與定時(shí)系統(tǒng)、嵌入式應(yīng)用、現(xiàn)場(chǎng)總線等基本概念和原理;2熟悉8/16位單片微控制器(8x51/196系列)的主要功能單元和指令系統(tǒng);3熟悉測(cè)控網(wǎng)絡(luò)中嵌入式微控制器的應(yīng)用和現(xiàn)

5、場(chǎng)總線應(yīng)用技術(shù)。4利用微控制器的接口技術(shù)進(jìn)行簡(jiǎn)單的測(cè)控及自動(dòng)化應(yīng)用系統(tǒng)設(shè)計(jì);5每人提交系統(tǒng)設(shè)計(jì)報(bào)告一份,現(xiàn)場(chǎng)演示驗(yàn)收設(shè)計(jì)系統(tǒng)。第三章 總體設(shè)計(jì)方案3.1 設(shè)計(jì)思想這次課程設(shè)計(jì)的系統(tǒng)是一個(gè)溫度測(cè)量與控制系統(tǒng)。它可以測(cè)量09999度范圍內(nèi)的溫度。在硬件上它由三部分構(gòu)成,即測(cè)量部分、數(shù)字轉(zhuǎn)換與處理部分和控制部分。第一部分主要由溫度傳感器(本設(shè)計(jì)使用ad590),濾波電路和放大電路組成,其主要功能是把溫度信號(hào)轉(zhuǎn)換成05v以?xún)?nèi)的電壓信號(hào),為后面的電路所使用。第二部分的核心是單片機(jī),另外還有a/d轉(zhuǎn)換器,鍵盤(pán)接口電路,顯示接口電路及報(bào)警電路。其主要功能是把從放大電路送來(lái)的05v的電壓信號(hào)轉(zhuǎn)換成0255的數(shù)

6、字量,然后經(jīng)過(guò)標(biāo)度轉(zhuǎn)換,轉(zhuǎn)換成實(shí)際的溫度值在液晶顯示器上顯示出來(lái),而且可以通過(guò)鍵盤(pán)設(shè)置報(bào)警值,對(duì)超過(guò)給定范圍的溫度,系統(tǒng)喇叭報(bào)警。第三部分是通過(guò)開(kāi)關(guān)量輸出控制加熱和降溫,使溫度值維持在設(shè)定的范圍內(nèi)。而所有的這些操作都是在單片機(jī)的控制下有序進(jìn)行的。所以,其總體結(jié)構(gòu)圖如圖3.1所示:根據(jù)前面講述的系統(tǒng)結(jié)構(gòu)圖可以確定整個(gè)系統(tǒng)的信號(hào)流向和設(shè)計(jì)思路。根據(jù)系統(tǒng)的結(jié)構(gòu)和各部分的功能可知信號(hào)的流向是自左向右的,因此我們的設(shè)計(jì)應(yīng)該也是從左到右一步一個(gè)地進(jìn)行。被測(cè)量的溫度信號(hào)首先應(yīng)該轉(zhuǎn)換為電信號(hào)才能被處理。因此首先要選擇合適的傳感器,將溫度信號(hào)轉(zhuǎn)換為電信號(hào)。從傳感器來(lái)的電信好很微弱,且含有高頻噪聲,所以應(yīng)在后面設(shè)

7、計(jì)一個(gè)低通濾波器和一個(gè)放大電路,來(lái)濾除噪聲,并且把電信號(hào)放大到目前為止伏的范圍內(nèi)。因?yàn)橐脝纹瑱C(jī)處理該信號(hào),所以放大電路的后面應(yīng)跟一個(gè)a/d轉(zhuǎn)換器,轉(zhuǎn)換后的數(shù)字信號(hào)應(yīng)送單片機(jī)進(jìn)行顯示,所以要設(shè)計(jì)一個(gè)顯示電路,本次設(shè)計(jì)所使用的是lcd顯示器,根據(jù)設(shè)計(jì)任務(wù),要設(shè)計(jì)一個(gè)鍵盤(pán)和一個(gè)報(bào)警電路,實(shí)現(xiàn)輸入?yún)?shù)設(shè)定和超限報(bào)警功能,還要再設(shè)計(jì)控制電路,實(shí)現(xiàn)溫度超過(guò)上限時(shí)自動(dòng)降溫,低于下限時(shí)自動(dòng)升溫。這就是該系統(tǒng)的整個(gè)設(shè)計(jì)過(guò)程。上面的設(shè)計(jì)不僅牽涉到硬件的設(shè)計(jì),還牽涉到軟件的設(shè)計(jì)。在設(shè)計(jì)軟件的時(shí)候必須確定主程序的流程圖。然后再分別設(shè)計(jì)各個(gè)功能模塊,這樣才能有計(jì)劃有秩序地進(jìn)行系統(tǒng)的設(shè)計(jì)。下面給出了該系統(tǒng)的總程序框圖,

8、如圖3.2所示:3.2總體設(shè)計(jì)流程圖第四章 硬件設(shè)計(jì)4.1 硬件設(shè)計(jì)概要本系統(tǒng)要測(cè)量的是溫度信號(hào)。溫度信號(hào)是非電量,必須要把它轉(zhuǎn)換成電量才能對(duì)它進(jìn)行處理。因此選擇合適的傳感器是很重要的。這里選用ad590溫度傳感器,再經(jīng)濾波放大電路,得到05v的電壓輸出,然后經(jīng)由adc0809轉(zhuǎn)換成數(shù)字量輸出,轉(zhuǎn)換成的電壓信號(hào)通過(guò)通道0輸入,數(shù)據(jù)量輸出到80c32的p0口,同時(shí)8279的數(shù)據(jù)輸出口d0d7接到80c32的p0口,再接到lcd液晶顯示器的數(shù)據(jù)輸入口。adc0809、8279、lcd的片選信號(hào)分別接到y(tǒng)1、y3、y0,將各芯片的wr、rd信號(hào)分別接到80c32的xwr、xrd口,并選用適當(dāng)?shù)臅r(shí)鐘信

9、號(hào)。這樣經(jīng)adc0809轉(zhuǎn)換成的數(shù)字量,經(jīng)過(guò)程序中的標(biāo)度變換在lcd上顯示出來(lái),利用8279和擴(kuò)展鍵盤(pán)隨時(shí)設(shè)定上下限值并在lcd上顯示出來(lái),為了實(shí)現(xiàn)報(bào)警功能,將p1.7口接到喇叭,這樣當(dāng)測(cè)量的溫度值超過(guò)上限或低于下限時(shí)就喇叭報(bào)警,將p1.6口、p1.5口都接到繼電器,繼電器輸出端分別接加熱部分和電扇。當(dāng)喇叭報(bào)警時(shí),p1.6口或p1.5口輸出一個(gè)低電平,對(duì)應(yīng)的使溫度升高或降低,從而實(shí)現(xiàn)對(duì)溫度的控制功能。4.2 所用到的芯片及其各自功能說(shuō)明4.2.1 芯片列表80c32單片機(jī)8279可編程鍵盤(pán)/顯示器接口芯片adc0809數(shù)模轉(zhuǎn)換器液晶顯示lcd4.2.2 80c32的功能簡(jiǎn)介80c32是inte

10、l公司mcs-51系列單片機(jī)中基本的產(chǎn)品,它采用intel公司可靠的chmos工藝技術(shù)制造的高性能8位單片機(jī),屬于標(biāo)準(zhǔn)的mcs-51的hcmos產(chǎn)品。它結(jié)合了hmos的高速和高密度技術(shù)及chmos的低功耗特征,標(biāo)準(zhǔn)的mcs-51單片機(jī)體系結(jié)構(gòu)和指令系統(tǒng)。80c32內(nèi)置8位中央處理單元、256字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器ram、32個(gè)雙向輸入/輸出(i/o)口、3個(gè)16位定時(shí)/計(jì)數(shù)器和5個(gè)兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路。但80c32片內(nèi)并無(wú)程序存儲(chǔ)器,需外接rom。此外,80c32還可工作于低功耗模式,可通過(guò)兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)cpu而ram定時(shí)器、串行口和中

11、斷系統(tǒng)維持其功能。掉電模式下,保存ram數(shù)據(jù),時(shí)鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。80c32有pdip(40pin)和plcc(44pin)兩種封裝形式。4.2.3 adc0809的功能簡(jiǎn)介adc0809是一個(gè)逐次逼近式8位a/d轉(zhuǎn)換器,它可以把0-5伏的電壓信號(hào)轉(zhuǎn)換成0-255的數(shù)字量。adc0809是采用cmos工藝制成的八位八通道單片a/d逐次逼近型轉(zhuǎn)換器,逐次逼近型轉(zhuǎn)換器包括1個(gè)比較器,1個(gè)數(shù)模轉(zhuǎn)換控制器,1個(gè)逐次逼近寄存器(sar)和1個(gè)邏輯控制單元,轉(zhuǎn)換中的逐次逼近是按對(duì)分原理由控制邏輯單元完成的,它原理簡(jiǎn)單,便于實(shí)現(xiàn),不存在延遲問(wèn)題。其轉(zhuǎn)換精度達(dá)0.4%。adc0809有28個(gè)

12、引腳,其中:d0-d7:輸出數(shù)據(jù)線; in0-in7:8路模擬電壓輸入端; adda,addb,addc:路地地址輸入,adda是最低位,addc是最高位; start:啟動(dòng)信號(hào)輸入端,下降沿有效; ale:路地址鎖存信號(hào),用來(lái)鎖存adda-addc的地址輸入,上升沿有效; eoc:變換結(jié)束狀態(tài)信號(hào),高點(diǎn)平表示一次變換已結(jié)束; oe:讀允許信號(hào),高電平有效; clk:時(shí)鐘輸入端; vref(+),vrer(-):參考電壓輸入端; vcc:5v電源輸入; gnd:地。 其管腳圖如圖4.2.31所示:圖4.2.31 adc0809管腳圖 adc0809 需要外接參考電源和參考時(shí)鐘。外接時(shí)鐘頻率為1

13、0khz到1.2khz。在時(shí)鐘為640khz時(shí),依次變換時(shí)間為100us,且隨時(shí)鐘降低而增加。在ad變換時(shí),路地址應(yīng)先送到adda-addc輸入端然后在ale輸入端加一個(gè)正跳變脈沖,將路地址鎖存到adc0809內(nèi)部的路地址寄存器中。為了啟動(dòng)ad變換,必須在start端加一個(gè)負(fù)跳變信號(hào),此后變換工作就開(kāi)始進(jìn)行。標(biāo)志adc0809正在工作的狀態(tài)信號(hào)是eoc,他由高電平變換成低電平。一旦變換結(jié)束,eoc信號(hào)就又由低電平變?yōu)楦唠娖?。此時(shí)只要在oe端加一個(gè)高電平,即可打開(kāi)數(shù)據(jù)線的三態(tài)緩沖器而從d0-d7數(shù)據(jù)線讀得一次變換后的數(shù)據(jù)。ac0809可以直接和單片機(jī)相連。其硬件接線圖如圖4.2.32所示:圖4.

14、2.32 ad0809的硬件連線圖4.2.4 8279的功能簡(jiǎn)介8279可同時(shí)提供鍵盤(pán)和數(shù)碼顯示的可編程接口,鍵盤(pán)部分也可作傳感器開(kāi)關(guān)陣列的接口,適合中小規(guī)模的鍵盤(pán)及最大16位的數(shù)碼顯示的場(chǎng)合,可與8位微處理器總線相連。使用8279可以代替單片機(jī)完成鍵盤(pán)和顯示器的許多接口操作,大大減輕了單片機(jī)的負(fù)擔(dān).而且鍵掃描的內(nèi)容已在8279芯片中有硬件電路自動(dòng)完成,減少了編制程序的麻煩。8279芯片的接口管腳圖如圖4.2.41所示:圖4.2.41 8279管腳圖40個(gè)引腳除5v電源接線和地線外,依功能分為3組:與cpu的接口連線、與鍵盤(pán)的接口線以及與顯示器的接口線。與cpu的接口線(a)d0d7:雙向數(shù)據(jù)

15、總線。cpu通過(guò)這組接線向芯片寫(xiě)入工作方式控制命令字和顯示輸出的數(shù)據(jù),讀回芯片的工作狀態(tài)和鍵盤(pán)編碼。(b)cs:片選輸入線。低電平允許對(duì)芯片的讀、寫(xiě)操作。(c)a0:地址碼最低位輸入線。低電平選中片內(nèi)數(shù)據(jù)寄存器,高電平選中片內(nèi)命令和狀態(tài)寄存器。(d)rd、wd:讀、寫(xiě)控制線。分別控制數(shù)據(jù)命令和狀態(tài)的讀、寫(xiě)。(e)reset(復(fù)位輸入線)、irq(中斷請(qǐng)求線)及clk(時(shí)鐘線,系統(tǒng)送入時(shí)鐘作芯片內(nèi)部定時(shí))。與鍵盤(pán)的接口線(a)sl0sl3:掃描信號(hào)線,用作鍵盤(pán)的行掃描信號(hào),以及數(shù)碼的位選信號(hào)??删幊淌剐酒ぷ髟诰幋a方式或譯碼方式,前者按sl0sl34位編碼輸出16種編碼正脈沖,后者按sl0sl3

16、順序輸出負(fù)脈沖,按編程的時(shí)鐘頻率周而復(fù)始地輸出。(b)rl0rl7:回饋信號(hào)輸入線,與鍵盤(pán)的列線相連。當(dāng)芯片輸出行掃描信號(hào)時(shí),芯片自動(dòng)接收這些列線回饋信號(hào)。當(dāng)有按鍵按下時(shí),經(jīng)約10ms消抖處理,被按下的鍵所在的列輸出低電平信號(hào),其他列輸出高電平。(c)shift、cntlstb:位移、控制選通輸入方式信號(hào)線。在鍵盤(pán)方式時(shí),此兩線的狀態(tài)和閉合鍵的參數(shù)一起決定鍵的定義。8279支持64個(gè)鍵的鍵盤(pán),加上此兩線的4種編碼,鍵定義碼可達(dá)256個(gè)。在選通輸入方式時(shí),cntlstb線用作數(shù)據(jù)送入fifo的選通線。與顯示器的接口線(a)sl0sl3掃描信號(hào)線也是數(shù)碼顯示器的位選信號(hào)線。(b)oa0oa3、ob

17、0ob3:數(shù)據(jù)輸出線。數(shù)據(jù)顯示器的段碼從這兩組線輸出,它們與位選線sl0sl3同步,實(shí)現(xiàn)分時(shí)數(shù)據(jù)顯示。芯片內(nèi)部有一個(gè)16字節(jié)長(zhǎng)的顯示存儲(chǔ)器,存儲(chǔ)欲顯示的段碼,最大可支持16位數(shù)碼顯示。(c)bd:消隱信號(hào)線。此輸出信號(hào)用來(lái)在顯示數(shù)據(jù)切換時(shí)進(jìn)行消隱,以免顯示跳動(dòng),此信號(hào)也可由消隱命令產(chǎn)生。8279的主要工作方式有掃描鍵盤(pán)輸入方式、掃描傳感器開(kāi)關(guān)陣列輸入方式、選通輸入方式,以及顯示器輸出方式。鍵盤(pán)接口輸入方式電路原理圖如圖4.2.42所示:圖4.2.42 鍵盤(pán)顯示原理圖4.2.5 液晶顯示lcd的功能簡(jiǎn)介液晶顯示器件(lcd)由于具有顯示信息多、體積小、重量輕、功耗低、壽命長(zhǎng)、價(jià)格低、接口控制方便

18、等優(yōu)點(diǎn),正在測(cè)量及控制領(lǐng)域被廣泛地推廣和應(yīng)用。液晶顯示器按其功能可分為筆段式和點(diǎn)矩陣式兩種。后者又可以分成字符點(diǎn)陣式和圖形點(diǎn)陣式,圖形點(diǎn)陣式液晶顯示器不僅可顯示數(shù)字、字符等內(nèi)容,還能顯示漢字和任意圖形。目前用于圖形液晶模塊的控制器很多。本次設(shè)計(jì)采用的是6963c圖形點(diǎn)陣式液晶顯示控制器,它能直接與80 系列的8 位微處理器接口。在t6963c中內(nèi)嵌有128種字符點(diǎn)陣的cgrom(字符發(fā)生器rom),同時(shí)t6963c還可管理一定大小的顯示緩沖區(qū)。顯示緩沖區(qū)ram的具體大小由不同顯示尺寸的模塊決定,點(diǎn)陣越大ram越多,本設(shè)計(jì)采用的64128模塊帶有8kb的ram。4.3 硬件電路設(shè)計(jì)系統(tǒng)原理圖及其

19、說(shuō)明見(jiàn)附錄第五章 軟件設(shè)計(jì)5.1 流程圖及其說(shuō)明本系統(tǒng)真正說(shuō)來(lái)在軟件上可分為以下幾個(gè)部分:a/d轉(zhuǎn)換,鍵盤(pán)接口,顯示電路、報(bào)警和控制。以下分別從軟件的角度來(lái)說(shuō)明:5.1.1a/d轉(zhuǎn)換子程序根據(jù)第四章的接線圖可以得出a/d的口地址是9000h。a/d轉(zhuǎn)換的程序流程圖如圖5.11所示:根據(jù)上面的流程圖,編制a/d轉(zhuǎn)換程序如下:change: mov a,#00h mov dptr,#9000h movx dptr,a mov a,#00h mov sbuf,a mov sbuf,amovx a,dptr轉(zhuǎn)換完以后,轉(zhuǎn)換的結(jié)果存在累加器a中,然后通過(guò)標(biāo)度變換送到顯示程序。5.1.2鍵盤(pán)掃描子程序鍵盤(pán)

20、掃描子程序框圖如圖5.12所示:鍵盤(pán)掃描程序?yàn)?keyset:setbit1;開(kāi)中斷movie,#84hclr0d4hmov 2eh,#00h mov 2fh,#00hmovdptr,#0b001h;命令口mova,#00h;8*8字符顯示,左邊輸入 外部譯碼鍵掃描movx dptr,amov a,#32h;內(nèi)部時(shí)鐘,18分頻movx dptr,amov a,#0dfh;消除顯示movxdptr,aclr22h;設(shè)置參數(shù)標(biāo)志位清零clr21hmov40h,#00hmov50h,#09hmov51h,#09hmov52h,#09hmov53h,#00h mov 54h,#00h mov 55h,

21、#00hret5.1.3液晶顯示子程序由于本系統(tǒng)是液晶顯示,所以這里的程序是液晶顯示初始化程序,其子程序流程圖如圖5.13所示:液晶屏初始化程序如下圖所示:cdset:mov r2,#00h mov r3,#00h mov r4,#42h acall cdcm1;圖形區(qū)首址0000h mov r2,#10h mov r3,#00h mov r4,#43h acall cdcm1;圖形區(qū)寬度16字節(jié)/行 mov r2,#00h mov r3,#10h mov r4,#40h acall cdcm1;文本區(qū)首址1000h mov r2,#10h mov r3,#00h mov r4,#41h ac

22、all cdcm1;文本區(qū)寬度16字節(jié)/行 mov r4,#0a7h acall cdcm3;光標(biāo)形狀8列*7行 mov r2,#00h mov r3,#00h mov r4,#24h acallcdcm1;置地址指針位置顯示緩沖區(qū)ram 0000h mov r4,#80h acall dcm3;字符發(fā)生器為cgram,顯示方式為邏輯或 mov r4,#9bh acall cdcm3;啟用圖形顯示,光標(biāo)閃爍 mov r2,#00h mov r3,#00h mov r4,#21h acall cdcm1;光標(biāo)指針00,00 ret5.1.4比較報(bào)警子程序本系統(tǒng)使用的是喇叭報(bào)警,將p1.7口接到喇

23、叭的輸入端,這樣當(dāng)采樣的溫度值大于上限值或小于下限值時(shí)就喇叭報(bào)警,其程序流程圖如下:報(bào)警子程序?yàn)椋簑arning: mov 20h,#0a0hwarning1: setb p1.7 acall ha2s6 clr p1.7 acall ha2s6 djnz 20h,warning1 clr p1.7 acall ha2s6 retha2s6: mov r2,#06h acall delay retdelay: push 02h ;延時(shí)delay1: push 02hdelay2: push 02hdelay3: djnz r2,delay3 pop 02h djnz r2,delay2 pop

24、 02h djnz r2,delay1 pop 02h djnz r2,delay ret5.1.5控制子程序控制部分,要將溫度控制在一定的范圍內(nèi),把p1.6、p1.5口通過(guò)繼電器分別接到加熱和降溫部分,低電平有效。當(dāng)溫度高于上限或低于下限值時(shí),就從對(duì)應(yīng)的p1.6或p1.5口輸出低電平,使系統(tǒng)加熱或降溫,使溫度穩(wěn)定在要控制的范圍內(nèi)。程序?yàn)椋篶lrp1.6clrp1.55.2 源程序及其說(shuō)明見(jiàn)附錄第六章 系統(tǒng)調(diào)試及使用說(shuō)明在系統(tǒng)調(diào)試的過(guò)程中,我首先選擇進(jìn)行的是lcd的顯示調(diào)試。要在lcd上顯示相關(guān)的信息及數(shù)據(jù),就要把對(duì)應(yīng)的字模正確地放入顯示緩沖區(qū),同時(shí)顯示定位也很重要,這就需要設(shè)置地址指針,之后

25、要實(shí)現(xiàn)實(shí)時(shí)設(shè)定上下限值的功能,需要進(jìn)行循環(huán)的鍵盤(pán)掃描,設(shè)定exec、next鍵為功能鍵,從鍵盤(pán)輸入數(shù)字并在lcd上顯示出來(lái),再加入a/d采樣,采樣進(jìn)來(lái)的溫度值為0ffh,需經(jīng)標(biāo)度變換后轉(zhuǎn)換為四位的十進(jìn)制數(shù)才能在lcd上顯示,思考后我是將采樣進(jìn)來(lái)的16進(jìn)制數(shù)乘以40,再分別除以1000、100、10得到千位、百位、十位、個(gè)位數(shù)分別放入四個(gè)存儲(chǔ)單元中再一一顯示出來(lái),所遇到的問(wèn)題是一開(kāi)始采樣的溫度值經(jīng)標(biāo)度變換后一直顯示不出來(lái),后來(lái)經(jīng)反復(fù)調(diào)試,我將a/d采樣子程序放在主程序的最前面,緊接者就放入顯示緩沖區(qū)進(jìn)行顯示溫度值,然后再掃描鍵盤(pán)是否有鍵按下,再跳到最前面如此循環(huán)運(yùn)行。報(bào)警電路和控制電路相對(duì)來(lái)說(shuō)比

26、較簡(jiǎn)單實(shí)現(xiàn),要解決的問(wèn)題是子程序段在主程序中放置的位置,多次調(diào)試后我選擇將二者放在顯示采樣的溫度值的子程序中,即通過(guò)把采樣的溫度值與設(shè)定的上下限值相比較,如果在上下限范圍內(nèi)則顯示溫度值,如果高于上限值或低于下限值,則給p1.7口輸出方波信號(hào),使喇叭報(bào)警,同時(shí)給p1.5口或p1.6口輸出低電平控制相應(yīng)的降溫或加熱。本裝置上電啟動(dòng)后,運(yùn)行程序,液晶屏上會(huì)首先顯示系統(tǒng)名稱(chēng)和設(shè)計(jì)者姓名,然后進(jìn)入操作/顯示界面,在操作/顯示界面下,上限值默認(rèn)為9999,下限值為0000,同時(shí)顯示采樣進(jìn)來(lái)的溫度值,第一次按下exec鍵后進(jìn)入上限值的設(shè)置,輸入四位數(shù)字,設(shè)定上限值,再次按下next鍵進(jìn)入下限值的設(shè)置,輸入四

27、位數(shù)字,設(shè)定下限值,第二次按下exec鍵,則上下限值設(shè)置完成。在程序運(yùn)行過(guò)程中可以隨時(shí)設(shè)定上限值。在設(shè)置時(shí)如果上限值小于下限值時(shí),則在lcd上顯示error,表示出錯(cuò),電路自動(dòng)報(bào)警并返回操作/顯示界面。系統(tǒng)在正常使用時(shí)將現(xiàn)場(chǎng)采集的溫度,送到adc0809轉(zhuǎn)換成數(shù)字信號(hào)后送到80c32,然后進(jìn)行標(biāo)度轉(zhuǎn)換,送顯示。若采樣進(jìn)來(lái)的溫度值高于上限值或者低于下限值,喇叭報(bào)警,lcd上顯示overflow或overrange,同時(shí)對(duì)應(yīng)控制風(fēng)扇或加熱,使溫度值穩(wěn)定在設(shè)定的上下限范圍內(nèi)。第七章 收獲、體會(huì)為期三周的微控制器課程設(shè)計(jì)已經(jīng)結(jié)束了。通過(guò)本次課程設(shè)計(jì),讓我掌握了不少東西,鞏固了在上微型控制器課程時(shí)所學(xué)的

28、理論知識(shí)。通過(guò)這次親手設(shè)計(jì),能夠很好地把理論知識(shí)和實(shí)踐相結(jié)合,既鍛煉了我的思維,又提高了我的動(dòng)手操作能力,為今后的學(xué)習(xí)和工作打好基礎(chǔ)。當(dāng)然,這次設(shè)計(jì)也讓我認(rèn)識(shí)到了我的不足,讓我能在以后的學(xué)習(xí)中去彌補(bǔ)。開(kāi)始設(shè)計(jì)之前,老師安排做了幾個(gè)與此次設(shè)計(jì)有關(guān)的幾個(gè)實(shí)驗(yàn),使我們知道自己要干什么。然后就按照自己的設(shè)計(jì)思路去找資料,寫(xiě)程序,越到后面,我的思路越清晰,做事情也更有目的。因此,才能順利地完成設(shè)計(jì)任務(wù)。在本設(shè)計(jì)過(guò)程中曾經(jīng)遇到過(guò)一些問(wèn)題,例如在液晶顯示的時(shí)候,子程序單獨(dú)運(yùn)行很正常,但加入到系統(tǒng)中就發(fā)現(xiàn)輸入無(wú)反應(yīng),后來(lái)經(jīng)過(guò)一步一步的斷點(diǎn)運(yùn)行時(shí)發(fā)現(xiàn)是延時(shí)的問(wèn)題,還有其他的問(wèn)題都是平時(shí)的實(shí)驗(yàn)無(wú)法發(fā)現(xiàn)的,在老師和

29、同學(xué)們的指導(dǎo)和幫助下,這些問(wèn)題得以解決。由于自己理解錯(cuò)誤,并沒(méi)有在系統(tǒng)中設(shè)計(jì)單獨(dú)的要控制的溫度范圍,而是把報(bào)警的溫度上下限作為了要控制的溫度范圍,不過(guò)總的說(shuō)來(lái),這次課程設(shè)計(jì)還是基本上成功的,我從中學(xué)到了很多東西,這些經(jīng)驗(yàn)和教訓(xùn)將會(huì)對(duì)我以后的工作產(chǎn)生很大的幫助。附錄一:硬件原理圖附錄二:源程序清單org6000h qianwei equ 79h ;溫度轉(zhuǎn)化后的;千位 baiwei equ 78h ;溫度轉(zhuǎn)化后的;百位 shiwei equ 77h ;溫度轉(zhuǎn)化后的:十位 gewei equ 76h ;溫度轉(zhuǎn)化后的:個(gè)位 temp equ 75h ;暫存數(shù)據(jù) sx_qianwei equ 53h ;

30、溫度設(shè)定上限值千位 sx_baiwei equ 52h ;溫度設(shè)定上限值百位 sx_shiwei equ 51h ;溫度設(shè)定上限值十位 sx_gewei equ 50h ;溫度設(shè)定上限值個(gè)位 xx_qianwei equ 57h ;溫度設(shè)定下限值千位 xx_baiwei equ 56h ;溫度設(shè)定下限值百位 xx_shiwei equ 55h ;溫度設(shè)定下限值十位 xx_gewei equ 54h ;溫度設(shè)定下限值個(gè)位 ljmpmainorg6100hmain: mov sp,#60h lcall scr;lcd初始化lcallcdclrlcallscrset;屏幕濕度顯示lcallkeyse

31、t;8279初始化ha7s1:movdptr,#0b001h;命令口movx a,dptr;讀狀態(tài)字jb acc.7,ha7s1 ;顯示無(wú)效則等待mov dptr,#0b000h;數(shù)據(jù)口ha7s3: lcall changemov dptr,#0b001hmovx a,dptranl a,#07hcjne a,#00h,ha7s4;等到fiforam中有數(shù)據(jù)時(shí)繼續(xù)ajmp endscanha7s4:movie,#00h;關(guān)中斷mov dptr,#0b000hmovx a,dptr;讀入數(shù)據(jù)mov b,acjnea,#0c3h,goonajmpmaingoon:cjnea,#0e1h,goons

32、can;如果按下的鍵不是exec鍵jb22h,clearsta ;判斷是否第一次按exec,如不是,則清標(biāo)志位errgoon:lcallcdclrlcallsetpara;設(shè)置參數(shù)顯示setb22hajmpgoonscanclearsta:;第二次按下exec鍵,清標(biāo)志柆clr21hmov30h,#00hmov40h,#00hclrcmova,53hsubba,57h;比較輸入的參數(shù)大小53h-57hjcerr;如果上限千位小于下限千位,則錯(cuò)誤mova,53hcjnea,57h,cleclrcmova,52hsubba,56h;比較輸入的參數(shù)大小52h-56hjcerr ;如果上限百位小于下限

33、百位,則錯(cuò)誤mova,52hcjnea,56h,cle clr c mov a,51h ;比較輸入的參數(shù)大小51h-55h subb a,55h ;如果上限十位小于下限十位,則錯(cuò)誤 jc err mov a,51h cjne a,55h,cleclr c mov a,50h ;比較輸入的參數(shù)大小50h-54h subb a,54h ;如果上限個(gè)位小于下限個(gè)位,則錯(cuò)誤jc err mov a,50h cjne a,54h,cleerr:lcallshowerr;上限小于下限,錯(cuò)誤ajmperrgoon;重新輸入cle:lcallcdclrclr22hlcallscrset;屏幕濕度顯示ajmps

34、etendgoonscan:jnb22h,setend ;沒(méi)按下exec,不響應(yīng)cjnea,#0e2h,go1;是否next鍵setb21h;next標(biāo)志位mov40h,#00hgo1:mov r1,#00hmov dptr,#keytabha7s5:mov a,#00hmovc a,a+dptrcjne a,b,ha7s6ajmp ha7saha7s6:inc dptrinc r1mov a,r1jb acc.4,endscanajmp ha7s5ha7sa:mova,r1clr csubb a,#0ah;如果r1為a-f則不顯示jnc endscanmov30h,r1inc40h;30h為

35、需顯示數(shù)據(jù)暫存,40h為數(shù)據(jù)個(gè)數(shù) clrcmov a,40hsubba,#05h;鍵入超過(guò)四個(gè)數(shù)則無(wú)響應(yīng) jnc endscanlcallshowkey;顯示按鍵ajmpendscansetend:movie,#84hendscan:lcallchange ajmpha7s3ret;-lcd初始化cdset:mov r2,#00hmov r3,#00hmov r4,#42hacall cdcm1;圖形區(qū)首址0000hmov r2,#10hmov r3,#00hmov r4,#43hacall cdcm1;圖形區(qū)寬度16字節(jié)/行mov r2,#00hmov r3,#10hmov r4,#40ha

36、call cdcm1;文本區(qū)首址1000hmov r2,#10hmov r3,#00hmov r4,#41hacall cdcm1;文本區(qū)寬度16字節(jié)/行mov r4,#0a7hacall cdcm3;光標(biāo)形狀8列*7行mov r2,#00hmov r3,#00hmov r4,#24hacallcdcm1;置地址指針位置顯示緩沖區(qū)ram 0000hmov r4,#80hacall cdcm3;字符發(fā)生器為cgram,顯示方式為邏輯“或”(指令代碼80h)mov r4,#9bhacall cdcm3;啟用圖形顯示,光標(biāo)閃爍mov r2,#00hmov r3,#00hmov r4,#21hacal

37、l cdcm1;光標(biāo)指針00,00ret;-cdclr:push acc;清屏子程序mov r2,#00hmov r3,#00hmov r4,#24hacall cdcm1;置地址指針位置顯示緩沖區(qū)ram 0000hmov r4,#0b0hacall cdcm3;設(shè)置lcd為自動(dòng)寫(xiě)入狀態(tài)mov r2,#04hcdcr1:mov r3,#00hcdcr2:acall lcds3;連續(xù)寫(xiě)過(guò)程每次寫(xiě)都要確認(rèn)sta3=1clr aacall cdwdt;將a寫(xiě)入lcd狀態(tài)字=清屏djnz r3,cdcr2djnz r2,cdcr1mov r4,#0b2hacall cdcm3;結(jié)束自動(dòng)寫(xiě)狀態(tài)pop a

38、ccret;-cdcm1:mov a,r2;將r2/r3/r4依此寫(xiě)入lcd狀態(tài)字acall cdwdt;將a寫(xiě)入lcd狀態(tài)字mov a,r3acall cdwdt;將a寫(xiě)入lcd狀態(tài)字acall cdcm3;將r4寫(xiě)入lcd狀態(tài)字ret;-cdcm3:push dph;將r4寫(xiě)入lcd狀態(tài)字push dplacall cdtts;判sta0/sta1mov a,r4mov dptr,#8001hmovx dptr,apop dplpop dphret;-cdwdt:push dph;將a寫(xiě)入lcd數(shù)據(jù)口push dplpush accacall cdtts;判sta0/sta1mov dpt

39、r,#8000hpop accmovx dptr,apop dplpop dphret;-cdtts:mov b,#40h;判別sta0sta1狀態(tài)位子程序cddep:mov dptr,#8001h;讀標(biāo)志字movx a,dptrjnb acc.0,cdddp;判別sta0jb acc.1,wcdtu;判別sta1cdddp:djnz b,cddep;在寫(xiě)指令的讀寫(xiě)數(shù)據(jù)前,這兩個(gè)標(biāo)志位必須同時(shí)為1wcdtu:ret;-lcds3:push dph;連續(xù)寫(xiě)過(guò)程每次寫(xiě)都要確認(rèn)sta3=1push dplpush accpush bmov b,#20hcdfwp:mov dptr,#8001hmov

40、x a,dptr;讀出狀態(tài)字jb acc.3,lcdtt;判斷自動(dòng)寫(xiě)標(biāo)志位sta3djnz b,cdfwplcdtt:pop bpop accpop dplpop dphret;-hzxsr:clr a;依此取字碼輸出lcd,0ffh結(jié)束movc a,a+dptrcpl ajnz hzxsg;將有效字碼送顯ret;0ffh則結(jié)束;-hzxsg:cpl a;分析字碼表取出的數(shù)據(jù)是命令/asc/漢字?轉(zhuǎn)相應(yīng)處理mov r0,aclr csubb a,#20h;命令?字符?jc ddcom;轉(zhuǎn)命令碼處理mov a,r0clr csubb a,#80h;asc?漢字?jnc hzdxs;轉(zhuǎn)漢字處理mo

41、v a,r0push dphpush dpllcall xsasc;轉(zhuǎn)asc處理pop dplpop dphinc dptrajmp hzxsr;處理下一個(gè)字碼顯示;-ddcom:mov a,r0;命令碼分析&發(fā)送xrl a,#1bhjz xsadd;1bh命令處理nxxsd:inc dptrajmp hzxsr;處理下一個(gè)字碼顯示;-hzdxs:mov a,r0;漢字碼顯示push dphpush dpllcall xshzf;取相應(yīng)字模送顯pop dplpop dphinc dptrajmp hzxsr;-xsasc:clr c;asc字符顯示subb a,#20hmov b,#10hmo

42、v dptr,#ascddlcall hadnx;計(jì)算當(dāng)前字碼的字模表首址dptrmov a,r2push accmov a,r3push accmov r6,#10hxsdlp:lcall xsdcn;送出一個(gè)數(shù)據(jù)顯示mov b,#10hlcall hadrx;計(jì)算顯示坐標(biāo)r2,r3djnz r6,xsdlp;發(fā)送完一組16行*8列一個(gè)字符pop accmov r3,apop accmov r2,amov b,#01hlcall hadrx;計(jì)算顯示首址坐標(biāo)r2,r3ret;-xsadd:inc dptr;1bh命令處理/地址指針設(shè)置clr amovc a,a+dptrmov b,#10hmul abmov r2,amov r3,binc dptrclr amovc a,a+dptrmov b,#08hdiv abmov b,alcall hadrx;計(jì)算顯示首址坐標(biāo)r2,r3mov r4,#24hlcall cdcm1;將計(jì)算好的顯示位置寫(xiě)lcdinc dptrajmp hzxsr;下一數(shù)據(jù)處理;-hadrx:mov a,r2;計(jì)算顯示首址坐標(biāo)r2列,r3行add a,bmov r2,amov a,r3addc a,#00hm

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論