智能測量儀表課程設(shè)計(jì)報(bào)告_第1頁
智能測量儀表課程設(shè)計(jì)報(bào)告_第2頁
智能測量儀表課程設(shè)計(jì)報(bào)告_第3頁
智能測量儀表課程設(shè)計(jì)報(bào)告_第4頁
智能測量儀表課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(jì)報(bào)告課程: 智能測量儀表 題目: 智能測量儀表 學(xué)生姓名: 專業(yè)年級: 自動化 指導(dǎo)教師: 信息與計(jì)算科學(xué)系2013年3月23日信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告智能測量儀表本次課程設(shè)計(jì)中智能溫度測量儀表所采用的溫度傳感器為LM35DZ。其輸出電壓與攝氏溫度成線性比例關(guān)系,無需外部校準(zhǔn),在 0。。?100℃溫度范圍內(nèi)精度為0.4℃~±0.75℃。,輸出電壓與攝氏溫度對應(yīng),使用極為方便。靈敏度為10.0mV/℃,重復(fù)性好,輸出阻抗低,電路接口簡單和方便,可單電源和正負(fù)電源工作。是一種得到廣泛使用的溫度傳感器。本次課程設(shè)計(jì)的主要目的在于讓學(xué)生把所學(xué)到的單片機(jī)原理、電子線路設(shè)計(jì)、傳感器技術(shù)與原理、過程控制、智能儀器儀表、總線技術(shù)、面向?qū)ο蟮某绦蛟O(shè)計(jì)等相關(guān)專業(yè)課程的內(nèi)容系統(tǒng)的總結(jié),并能有效的使用到項(xiàng)目研發(fā)中來,做到學(xué)以致用。課程設(shè)計(jì)的內(nèi)容主要分為三個部分,即使用所學(xué)編程語言(C或者匯編)完成單片機(jī)方面的程序編寫、使用VB或VC語言完成PC機(jī)人機(jī)界面設(shè)計(jì)(也可以用C+API實(shí)現(xiàn))、按照課程設(shè)計(jì)規(guī)范完成課程設(shè)計(jì)報(bào)告。信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告目錄TOC\o"1-5"\h\z\o"CurrentDocument"1.課程設(shè)計(jì)任務(wù)和要求 3\o"CurrentDocument"1設(shè)計(jì)任務(wù) 32設(shè)計(jì)要求 3\o"CurrentDocument"2.系統(tǒng)硬件設(shè)計(jì) 3\o"CurrentDocument"1 STC12C5A60S2單片機(jī)A/D轉(zhuǎn)換簡介 3\o"CurrentDocument"2 LM35DZ簡介 7\o"CurrentDocument"3硬件原理圖設(shè)計(jì) 7\o"CurrentDocument"3.系統(tǒng)軟件設(shè)計(jì) 10\o"CurrentDocument"1設(shè)計(jì)任務(wù) 10\o"CurrentDocument"2程序代碼 103系統(tǒng)軟件設(shè)計(jì)調(diào)試 17\o"CurrentDocument"4.系統(tǒng)上位機(jī)設(shè)計(jì) 18\o"CurrentDocument"1設(shè)計(jì)任務(wù) 18\o"CurrentDocument"2程序代碼 18\o"CurrentDocument"3系統(tǒng)上位機(jī)軟件設(shè)計(jì)調(diào)試 21\o"CurrentDocument"5.系統(tǒng)調(diào)試與改善 22\o"CurrentDocument"1系統(tǒng)調(diào)試 22\o"CurrentDocument"2 系統(tǒng)改善 22\o"CurrentDocument".系統(tǒng)設(shè)計(jì)時常見問題舉例與解決辦法 24\o"CurrentDocument".總結(jié) 25信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告.課程設(shè)計(jì)任務(wù)和要求課程設(shè)計(jì)任務(wù)本次課程設(shè)計(jì)要求設(shè)計(jì)出智能化溫度測量儀表,要求該測量儀表能夠?qū)⑺鶞y得的溫度數(shù)據(jù)和當(dāng)前電機(jī)設(shè)備的運(yùn)行狀況遠(yuǎn)傳給上位機(jī)。儀表測量范圍為0-100℃;測量精度為±1℃;可以進(jìn)行溫度整定,比如,溫度三30℃,啟動壓縮機(jī)外設(shè);溫度^20℃,關(guān)閉壓縮機(jī)外設(shè);要求上位機(jī)和下位機(jī)都能顯示溫度值和電機(jī)設(shè)備的運(yùn)行狀態(tài)并且都能獨(dú)立控制溫度數(shù)據(jù)采集狀態(tài)和電機(jī)設(shè)備的運(yùn)行狀態(tài);通訊方式可以采用RS232C或485。上位機(jī)要求人機(jī)界面在保證簡單實(shí)用的基礎(chǔ)上做的美觀。課程設(shè)計(jì)要求(1)利用所學(xué)專業(yè)課相關(guān)知識合理的選擇器材,使用Protel99se繪制出硬件原理圖。(2)使用C語言或者匯編語言完成下位機(jī)程序驅(qū)動,并且要盡量保證系統(tǒng)的穩(wěn)定性和可靠性以及實(shí)用性。(3)使用VB或VC語言或用C+API(應(yīng)用程序接口調(diào)用)實(shí)現(xiàn)上位機(jī)人機(jī)界面的設(shè)計(jì),要求上位機(jī)發(fā)送的命令下位機(jī)能及時的給予響應(yīng),并且上位機(jī)能夠?qū)崟r準(zhǔn)確的顯示下位機(jī)所上傳數(shù)據(jù)以及電機(jī)設(shè)備的運(yùn)行狀態(tài)。(4)按照課程設(shè)計(jì)規(guī)范撰寫課程設(shè)計(jì)報(bào)告。.系統(tǒng)硬件設(shè)計(jì)STC12C5A60S2單片機(jī)A/D轉(zhuǎn)換簡介STC12C5A60S2單片機(jī)集成有8路10位高速模數(shù)轉(zhuǎn)換器(ADC),速度可達(dá)到250KHz(25萬次/秒,可做溫度檢測、壓力檢測、電池電壓檢測、按鍵掃描、頻譜檢測等。STC12C5A60S2單片機(jī)片內(nèi)集成8通道10位模數(shù)轉(zhuǎn)換器(ADC)。ADC輸入通道與P1口復(fù)用,上電復(fù)位后P1口為弱上拉型I/O口,用戶可以通過軟件設(shè)置將8路中的任何一路設(shè)置為A/D轉(zhuǎn)換,不需作為A/D使用的口可繼續(xù)作為I/O口使用。信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告模數(shù)轉(zhuǎn)換器的結(jié)構(gòu)圖STC12C5A60S2單片機(jī)的模數(shù)轉(zhuǎn)換器由多路選擇開關(guān)、比較器、逐次比較寄存器、10位ADC、轉(zhuǎn)換結(jié)果寄存器(ADC_RES和ADC_RESL)以及ADC控制寄存器ADC_CONTR構(gòu)成。如圖2-1所示。圖2-1STC12C5A單片機(jī)內(nèi)部A/D轉(zhuǎn)換結(jié)構(gòu)圖模數(shù)轉(zhuǎn)換器的參考電壓STC12C5A60S2單片機(jī)A/D轉(zhuǎn)換模塊的參考電壓源是輸入工作電壓Vcc,所以一般不用外接參考電壓源。如三端穩(wěn)壓電路7805的輸出電壓是5V,但實(shí)際電壓可能是4.88V到4.96V,如果用戶需要的精度比較高,可在應(yīng)用產(chǎn)品出廠前將實(shí)際測出的工作電壓值記錄在單片機(jī)內(nèi)部的EEPROM里面,以供程序校正使用。如果Vcc不穩(wěn)定(例如電池供電的系統(tǒng)中,電池電壓常常在5.3V-4.2V之間漂移),則需要在8路A/D轉(zhuǎn)換的一個通道外接一個穩(wěn)定的參考電壓源,來計(jì)算出此時的工作電壓Vcc,再計(jì)算出其他幾路A/D轉(zhuǎn)換通道的電壓。例如,可在ADC轉(zhuǎn)換通道的第七通道外接一個1.25V的基準(zhǔn)參考電壓源,由此求出此時的工作電壓Vcc,再計(jì)算出其它幾路A/D轉(zhuǎn)換通道的電壓。信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告與ADC相關(guān)的寄存器1、P1口模擬功能控制寄存器P1ASF(地址為9DH,復(fù)位值為00H)位號D7D6D5D4D3D2D1D0位名稱P17ASFP16ASFP15ASFP14ASFP13ASFP12ASFP11ASFP10ASF如果要使用相應(yīng)口的模擬功能,需將P1ASF特殊功能寄存器中的相應(yīng)位置為‘1’。如,若要使用P1.6的模擬量功能,則需要將P16ASF設(shè)置為1。(注意,P1ASF寄存器不能位尋址,可以使用匯編語言指令ORLP1ASF,#40H,也可以使用C語言語句P1ASF|=0x40;)2、ADC控制寄存器ADC_CONTR(地址為BCH,復(fù)位值為00H)位號D7D6D5D4D3D2D1D0位名稱ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS01)ADC_POWER:ADC電源控制位。0:關(guān)閉ADC電源。1:打開ADC電源。2)SPEED1、SPEED0:ADC轉(zhuǎn)換速度控制位。3)ADC_FLAG:A/D轉(zhuǎn)換結(jié)束標(biāo)志位。A/D轉(zhuǎn)換完成后,ADC_FLAG=1,要由軟件清0。不管A/D轉(zhuǎn)換完成后由該位申請產(chǎn)生中斷,還是由軟件查詢該標(biāo)志位判斷A/D轉(zhuǎn)換是否結(jié)束,當(dāng)A/D轉(zhuǎn)換完成后,ADC_FLAG=1,一定要軟件清0。4)ADC_START:A/D轉(zhuǎn)換啟動控制位,ADC_START=1,開始轉(zhuǎn)換;ADC_START=0,停止轉(zhuǎn)換。5)CHS2、CHS1、CHS0:模擬輸入通道選擇,如表2-1所示。表2-1模擬通道選擇表CHS2CHS1CHS0AnalogChannelSelect模擬輸入通道選擇)000選擇P1.0作為人勺輸入來用001選擇P1.1作為人勺輸入來用010選擇P1.2作為人勺輸入來用011選擇P1.3作為人勺輸入來用100選擇P1.4作為人勺輸入來用101選擇P1.5作為人勺輸入來用110選擇P1.6作為人勺輸入來用111選擇P1.7作為人勺輸入來用信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告程序中需要注意的事項(xiàng):由于是2套時鐘,所以,設(shè)置ADC_CONTR控制寄存器后,要加4個空操作延時才可以正確讀到ADC_CONTR寄存器的值,原因是設(shè)置ADC_CONTR控制寄存器的語句執(zhí)行后,要經(jīng)過4個CPU時鐘的延時,其值才能夠保證被設(shè)置進(jìn)ADC_CONTR控制寄存器。3、A/D轉(zhuǎn)換結(jié)果寄存器ADC_RES、ADC_RESL特殊功能寄存器ADC_RES(地址為BDH,復(fù)位值為00H)和ADC_RESL(地址為BEH,復(fù)位值為00H)用于保存A/D轉(zhuǎn)換結(jié)果。A/D轉(zhuǎn)換結(jié)果存儲格式由輔助寄存器AUXR1(地址為A2H,復(fù)位值為00H)中的ADRJ控制,ADRJ是AUXR1中的D2位。(1)當(dāng)ADRJ=0時,10位A/D轉(zhuǎn)換結(jié)果的高8位放在ADC_RES寄存器,低2位放在ADC_RESL寄存器。存儲格式如下:D7D6D5D4DWD2DiDOADC_RESADC_RES9ADC_RES8ADC_RES6ADG_EtES5.A0心迎S4ADG3_RES3ADC_RES2ADCRESLADCEtESOAUXR1ADRJ=O(2)當(dāng)ADRJ=1時,10位A/D轉(zhuǎn)換結(jié)果的最高2位放在ADC_RES寄存器的低2位,低8位放在ADC_RESL寄存器。存儲格式如下:DT1)6D5D4D3D2皿DOADC_RESADC_.RES9ADC_.RE38ADCJtESLADC_RES7ADC_.RES6ADC_RES5ADC-RES4ADC..RES3'ADC..RJES2:ADC_KES1ADC_RES0AUXR1ADRJ=1模/數(shù)轉(zhuǎn)換結(jié)果計(jì)算公式如下:ADRJ=0時,取10位結(jié)果(ADC_RES[7:0],ADC_RESL[1:0])=1024.Vin/VccADRJ=0時,取8位結(jié)果ADC_RES[7:0]=256XVin/VccADRJ=1時,取10位結(jié)果(ADC_RES[1:0],ADC_RESL[7:0])=1024XVin/VccVin為模擬輸入通道輸入電壓,Vcc為單片機(jī)實(shí)際工作電壓,用單片機(jī)工作電壓作為模擬參考電壓。4、與A/D轉(zhuǎn)換中斷有關(guān)的寄存器中斷允許控制寄存器IE中的EADC位(D5位)用于開放ADC中斷,EA位(D7位)用于開放CPU中斷;中斷優(yōu)先級寄存器IP中的PADC位(D5位)和IPH中的PADCH位信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告(D5位)用于設(shè)置A/D中斷的優(yōu)先級。在中斷服務(wù)程序中,要使用軟件將A/D中斷標(biāo)志位ADC_FLAG(也是A/D轉(zhuǎn)換結(jié)束標(biāo)志位)清0。LMDZ35簡介TS-LM35溫度傳感器是由LM35CZ/DZ集成電路溫度傳感器外加金屬套密封組裝而成,其輸出電壓與攝氏溫度成線性比例關(guān)系,無需外部校準(zhǔn),在~55?+150℃溫度范圍內(nèi)精度為0.4℃?±0.75℃。,輸出電壓與攝氏溫度對應(yīng),使用極為方便。靈敏度為10.0mV/℃,重復(fù)性好,輸出阻抗低,電路接口簡單和方便,可單電源和正負(fù)電源工作。是一種得到廣泛使用的溫度傳感器。LM35技術(shù)特性:⑴溫度范圍:LM35DZ0℃?100℃;LM35CZ-40℃?110℃⑵在攝氏溫度下直接校準(zhǔn)⑶線性刻度系數(shù):+10.0mV/℃⑷精度:0.5℃(在25℃)⑸工作電壓為4?30V⑹功耗:小于60uA⑺自熱效應(yīng)小于0.08℃⑻非線性:±0。25℃⑼輸出阻抗:0.1Q/1mA⑽輸出電壓:+6V?-1.0V適合于遠(yuǎn)程應(yīng)用(11)輸出電流10mA:硬件原理圖設(shè)計(jì)該系統(tǒng)硬件原理圖可大體分為這幾個模塊:串行通信模塊、模擬信號處理模塊、4*7LED顯示模塊以及電源模塊等。1、串行通信模塊原理圖如下:8信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告本通信過程采用RS232方式進(jìn)行,由于單片機(jī)中的UART和電腦串口RS232的區(qū)別僅在于電平的不同,電腦串口采用232電平,而單片機(jī)UART則采用TTL電平,如果不進(jìn)行電平轉(zhuǎn)換,單片機(jī)跟電腦串口就不能進(jìn)行直接通信,RS232是UART的一種就意味著通信協(xié)議的格式是一樣的,只要電平統(tǒng)一了,兩者之間就可以直接通信,此處應(yīng)用了MAX232這一芯片,MAX232對兩者之間通信的數(shù)據(jù)沒有任何作用,僅僅是中介而已,而其只是負(fù)責(zé)將兩者之間的電平進(jìn)行統(tǒng)一,使兩者之間沒有通信障礙。另外,MAX232芯片采用單+5V電源供電,僅需幾個外接電容即可完成從TTL到RS232電平的轉(zhuǎn)換,共兩路。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DP9插頭;DP9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告此處,我們處理采集到的模擬量電壓信號是采用了LM324集成運(yùn)算放大器管腳排列圖見圖2-2。LM324系列由四個獨(dú)立的帶有差動輸入的,高增益,內(nèi)部頻率補(bǔ)償運(yùn)算放大器,其中專為從單電源供電的電壓范圍經(jīng)營。從分裂電源的操作也有可能和低電源電流消耗是獨(dú)立的電源電壓的幅度。與單電源應(yīng)用場合的標(biāo)準(zhǔn)運(yùn)算放大器相比,它們有一些顯著優(yōu)點(diǎn)。該四放大器可以工作在低到3.0伏或者高到32伏的電源下,靜態(tài)電流為MC1741的靜態(tài)電流的五分之一。共模輸入范圍包括負(fù)電源,因而消除了在許多應(yīng)用場合中采用外部偏置元件的必要性。每一組運(yùn)算放大器可用圖1所示的符號來表示,它有5個引出腳,其中“+”、“-”為兩個信號輸入端,“V+”、“V-”為正、負(fù)電源端,“Vo”為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的相位相同。圖2-2LM324集成運(yùn)算放大器管腳排列圖此模擬量處理模塊設(shè)計(jì)的使用起來比較靈活,圖中左邊的兩路放大器都設(shè)計(jì)成了電壓跟隨器的形式,這樣就減少了輸入信號的損失。我們可以將傳感器所測得標(biāo)準(zhǔn)電壓信號或者電流信號通過P9或者P10接入(也可以使用杜邦線通過J7或者J8接入信號)LM324的其中一路放大器,然后再經(jīng)過第二級放大使得處理后的電壓信號輸出到J9。做此課程設(shè)計(jì)時我們采用的是LM35DZ溫度測量傳感器,我們把它的輸出信號連接到J8的2腳,由此出輸入我們的采集到的信號。我們將上面的一路放大器的輸入調(diào)至10

信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告零,然后再經(jīng)過后一級放大器,將兩者之差放大5倍。3、4*7LED顯示模塊原理圖如下:P00RXDTZDALE/PPSEN35343332P00RXDTZDALE/PPSEN35343332PLi.739P0.0-Bit4>38P0.1-Bit337P0.2-Bit236P0.3-Bitl由圖中可以看出,我們將數(shù)碼管的斷碼端接到了單片機(jī)的P2口,控制端接到了P022P2.1723P2.2424P2.3225P2.4126P2.51027P2.6528P2.73PLI.4-Ctrll■PLl.5-Ctrl2'P0.6-18B2ULUExD11TkD口的低四位。圖中Q2、Q3、Q4、Q5為開關(guān)型三極管此處用作數(shù)碼管的選通控制。.系統(tǒng)軟件設(shè)計(jì)設(shè)計(jì)任務(wù)使用C或者匯編語言編寫程序代碼。程序代碼所實(shí)現(xiàn)的功能有:在四位數(shù)碼管上能夠顯示溫度,所顯示的溫度數(shù)據(jù)與使用其他精度較高的溫度計(jì)測量結(jié)果不能差的太多,并且可以把采集數(shù)據(jù)上傳給上位機(jī);溫度采集與否和電動機(jī)運(yùn)行狀態(tài)要能夠既可以通過獨(dú)立按鍵控制也可以使用上位機(jī)發(fā)送的命令進(jìn)行控制;提高系統(tǒng)的穩(wěn)定性,可靠性,以及上傳數(shù)據(jù)和接收命令以及溫度采集數(shù)據(jù)的準(zhǔn)確性。程序代碼根據(jù)下位機(jī)軟件設(shè)計(jì)任務(wù)的要求,我們可以把程序代碼分為一下幾個模塊:初始化模塊、按鍵掃描模塊、A/D轉(zhuǎn)換數(shù)據(jù)獲取模塊、串行口通信模塊、運(yùn)算處理模塊、延時模塊等。其中初始化模塊包括程序當(dāng)中使用的變量的初始化和串行口通信方式初始11信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告化還有A/D轉(zhuǎn)換模塊的初始化,按鍵掃描模塊是用于按鍵控制系統(tǒng)時用來響應(yīng)按鍵被按下時的,A/D轉(zhuǎn)換數(shù)據(jù)獲取模塊部分可以用查詢方式,也可以使用中斷的方式實(shí)現(xiàn),串行口通信模塊用來接收上位機(jī)發(fā)送來的命令,以控制和監(jiān)測系統(tǒng)狀態(tài),運(yùn)算處理模塊包括多字節(jié)之間的加減乘除運(yùn)算,延時模塊用于程序中一小段時間的等待。匯編語言編寫的程序代碼如下:$INCLUDE(STC12C5A.INC);定義變量千百十個QIANEQU60HBAIEQU61HSHIEQU62HGEWEIEQU63HTEMPMHEQU64HTEMPMLEQU65HCOUNTEQU66HTEMPMMHEQU67HTEMPMMLEQU68HORG0000HLJMPMAINORG0023HLJMPTONGXINORG002BHLJMPADC_ISRORG0080HMAIN:LCALLMAIN_INITLCALLUART1_INITLCALLADC_INITAAA:LCALLSCANFKEYVLCALLDISPLAYSJMPAAAMAIN_INIT:MOVSP,#70HMOVQIAN,#00HMOVBAI,#00HMOVSHI,#00HMOVGEWEI,#00HMOVCOUNT,#00HMOVKEYVALUE,#00HMOVTEMPMH,#00HMOVTEMPML,#00HMOVTEMPMMH,#00HMOVTEMPMML,#00HRETUART1_INIT:MOVAUXR,#11HMOVBRT,#0FDHMOVSCON,#50HMOVPCON,#00HSETBEASETBESRETSCANFKEYV:12信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告MOVP1,#0FFHMOVA,P1CJNEA,#0FDH,KEYS2LCALLDELAY10MSMOVA,P1CJNEA,#0FDH,KEYS2SETBEADCSJMPNOKEYKEYS2:CJNEA,#0EFH,KEYS3LCALLDELAY10MSMOVA,P1CJNEA,#0EFH,KEYS3CLREADCSJMPNOKEYKEYS3:CJNEA,#0DFH,KEYS4LCALLDELAY10MSMOVA,P1CJNEA,#0DFH,KEYS4CLRP0.4CLREAMOVR7,#04HA21:MOVA,#01HMOVSBUF,AJNBTI,$CLRTIDJNZR7,A21SETBEASJMPNOKEYKEYS4:CJNEA,#0BFH,NOKEYLCALLDELAY10MSMOVA,P1CJNEA,#0BFH,NOKEYSETBP0.4CLREAMOVR7,#04HA22:MOVA,#02HMOVSBUF,AJNBTI,$CLRTIDJNZR7,A22SETBEASJMPNOKEYNOKEY:RETADC_INIT:MOVP1ASF,#01HMOVADC_RES,#00HMOVADC_RESL,#00HMOVAUXR1,#04HMOVADC_CONTR,#088HLCALLDELAY10MS;SETBEADCRET13CLRCCLRCMOVA,TEMPMMLADDA,TEMPMLMOVTEMPMML,AMOVA,TEMPMMHADDCA,TEMPMHMOVTEMPMMH,AMOVA,COUNTCJNEA,#20H,OUT0MOVCOUNT,#00HMOVR6,TEMPMMHMOVR7,TEMPMMLMOVR4,#00HMOVR5,#20HLCALLDBDIVMOVTEMPMH,5FHMOVTEMPML,5CHMOVTEMPMMH,#00HMOVTEMPMML,#00HLCALLCONVERTMOVR7,#4MOVR0,#60HSENDTEMP:MOVA,@R0MOVSBUF,AJNBTI,$CLRTIINCR0DJNZR7,SENDTEMP信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告TONGXIN:CLRRIMOVA,SBUFCJNEA,#46H,COMPENDSETBEADCCOMPEND:CJNEA,#47H,STAR1CLREADCSTAR1:CJNEA,#51H,STAR2CLRP0.4STAR2:CJNEA,#03H,END1CLRP0.5END1:CJNEA,#54H,END2SETBP0.4END2:CJNEA,#04,OUTTONGXINSETBP0.5OUTTONGXIN:RETIADC_ISR:PUSHPSWPUSHACCINCCOUNTANLADC_CONTR,#0EFHMOVTEMPMH,ADC_RESMOVTEMPML,ADC_RESL14信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告LCALLDBDIVLCALLDBDIVMOVQIAN,5CHMOVR6,5DHMOVR7,5EHMOVR4,#00HMOVR5,#64HLCALLDBDIVMOVBAI,5CHMOVR6,5DHMOVR7,5EHMOVR4,#00HMOVR5,#0AHLCALLDBDIVMOVSHI,5CHMOVGEWEI,5EHOUT:RETDBMUL:MOVA,R3MOVB,R7MULABXCHA,R7MOVR5,BMOVB,R2MULABADDA,R5MOVR4,ACLRAADDCA,BMOVR4,#240A12:DJNZR4,A11SJMPOUT0A11:LCALLSCANFKEYVLCALLDISPLAYSJMPA12OUT0:ORLADC_CONTR,#08HPOPACCPOPPSWRETICONVERT:MOVR2,TEMPMHMOVR3,TEMPMLMOVR6,#03HMOVR7,#0E8HLCALLDBMULMOVR3,56HMOVR4,57HMOVR5,58HMOVR2,#04HMOVR1,#00HLCALLTDSDIVMOVR6,5BHMOVR7,5AHMOVR4,#03HMOVR5,#0E8H15MOVR5,AMOVR5,AMOVA,R6MOVB,R3MULABADDA,R4XCHA,R6XCHA,BADDCA,R5MOVR5,AMOVF0,CMOVA,R2MULABADDA,R5MOVR5,ACLRAMOVACC.0,CMOVC,F0ADDCA,BMOVR4,AMOV56H,R7MOV57H,R6MOV58H,R5MOV59H,R4RETTDSDIV:CLRCMOV30H,#0MOV31H,#0MOV32H,#0信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告TDSDIV_LOOP:CLRCMOVA,R3SUBBA,R1MOVR3,AMOVA,R4SUBBA,R2MOVR4,AMOVA,R5SUBBA,#0MOVR5,AJCTDSDIV_END_INC_SHANG:CLRCMOVA,30HADDCA,#1MOV30H,AMOVA,31HADDCA,#0MOV31H,AMOVA,32HADDCA,#0MOV32H,ALJMPTDSDIV_LOOPTDSDIV_END:CLRCMOVA,R1ADDCA,R3MOVA,R216ADDCA,R4ADDCA,R4MOVR3,30HMOVR4,31HMOV5AH,R3MOV5BH,R4RETDBDIV:CLRCCLRAMOVR2,AMOVR3,AMOVB,#10HLOOP:MOVA,R7RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,ACLRCMOVA,R3SUBBA,R5PUSHACC信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告MOVA,R2SUBBA,R4JBCCY,LOOP0MOVR2,APOPACCMOVR3,ASETBCSJMPLOOP1LOOP0:POPACCLOOP1:DJNZB,LOOPMOVA,R7RLCAMOVR7,AMOVA,R6RLCAMOVR6,AMOVA,R2MOVR4,AMOVA,R3MOVR5,AMOV5CH,R7MOV5DH,R4MOV5EH,R5MOV5FH,R6RETDISPLAY:MOVDPTR,#TABLE17MOVA,GEWEIMOVA,GEWEIMOVCA,@A+DPTRMOVP2,ACLRP0.0LCALLDELAY10MSSETBP0.0MOVA,SHIMOVCA,@A+DPTRORLA,#80HMOVP2,ACLRP0.1LCALLDELAY10MSSETBP0.1MOVA,BAIMOVCA,@A+DPTRMOVP2,ACLRP0.2LCALLDELAY10MSSETBP0.2MOVA,QIANMOVCA,@A+DPTRMOVP2,ACLRP0.33.3系統(tǒng)軟件設(shè)計(jì)調(diào)試信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告LCALLDELAY10MSSETBP0.3RETDELAY10MS:MOVR6,#10D1:MOVR7,#248DJNZR7,$DJNZR6,D1RETDELAY100MS:MOVR6,#200D2:MOVR7,#248DJNZR7,$DJNZR6,D1RETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,; 0 1 2 3 4 5DB7DH,07H7FH,6FH,00H,40H,; 6 78 9 + -END程序代碼編寫完成以后再開發(fā)環(huán)境中編譯看是否通過,如檢查到有錯誤編譯系統(tǒng)就會報(bào)錯,然后再根據(jù)提示進(jìn)行修改,至沒有錯誤時,再重新編譯文件并生成.hex文件。將此文件燒錄到STC12C5A60S2單片機(jī)中,連接好硬件電路,給系統(tǒng)上電。觀察四位共陰極數(shù)碼管上面是否顯示出我們想要顯示的溫度數(shù)據(jù),如不能再修改程序代碼,重新編譯,重新燒錄程序,觀察結(jié)果……此過程重復(fù)進(jìn)行,直到所采集溫度數(shù)據(jù)能在18信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告數(shù)碼管上面穩(wěn)定顯示并且準(zhǔn)確度較高。此模塊疏通后再加入串行通信部分代碼,首先用串口助手測試數(shù)據(jù)的收發(fā),看單片機(jī)與上位機(jī)之間能否正常收發(fā)數(shù)據(jù),如不能修改代碼,再編譯、燒錄、觀察,直到數(shù)據(jù)收發(fā)正常為止。最后將按鍵掃描部分加入,調(diào)試方法同上,直到下位機(jī)系統(tǒng)能正確的按照我們的意愿對某個按鍵進(jìn)行響應(yīng)為止。此三個模塊都疏通之后,下位機(jī)的軟件設(shè)計(jì)工作也就基本完成,接下來要做的就是簡化、優(yōu)化程序代碼。.系統(tǒng)上位機(jī)設(shè)計(jì)設(shè)計(jì)任務(wù)系統(tǒng)上位機(jī)設(shè)計(jì)可以使用VC或者VB語言編寫上位機(jī)程序,也可以使用C+API(應(yīng)用程序接口調(diào)用)實(shí)現(xiàn)。我們使用VB語言來完成系統(tǒng)上位機(jī)設(shè)計(jì),可以將其分為窗體設(shè)計(jì)和程序設(shè)計(jì)。其中窗體設(shè)計(jì)出來也就是我們可以看到的上位機(jī)界面,上面應(yīng)該能夠?qū)崿F(xiàn)最基本的功能包括:顯示出下位機(jī)測量出來的溫度值和能夠發(fā)送命令給下位機(jī)。程序程序設(shè)計(jì)能夠?qū)崿F(xiàn)的功能:對下位機(jī)上傳來的數(shù)據(jù)正確的分析并實(shí)時的在窗體上面顯示。程序代碼根據(jù)上位機(jī)軟件設(shè)計(jì)任務(wù)的要求,我們將其過程分為窗體設(shè)計(jì)和代碼編寫。1、根據(jù)設(shè)計(jì)要求我們可以在窗體上添加三個Text控件用來顯示溫度值和設(shè)定溫度上下限值。添加六個Lable控件來作為提示信息顯示比如“當(dāng)前溫度值(/℃)”、“溫度上(下)限值(/℃)”、“上(下)限報(bào)警提示"、“電動機(jī)運(yùn)行狀態(tài)監(jiān)控(紅色停止,綠色運(yùn)轉(zhuǎn))”。添加七個CommandButton控件作為控制按鈕,其名稱分別為“啟動測量”、“停止測量”、“啟動1號電機(jī)”、“停止1號電機(jī)”、“啟動2號電機(jī)”、“停止2號電機(jī)”、“結(jié)束系統(tǒng)”。再添加四個Shape控件,分別作為溫度上下限報(bào)警提示和兩個電動機(jī)的運(yùn)行狀態(tài)仿真。再在窗體的頂端居中位置添加一個Picture控件,在其里面放一個Lable控件其Caption屬性為課程設(shè)計(jì)名稱。然后再添加最為關(guān)鍵的一個控件,那就是MSComm控件。最后再添加兩個Timer控件,一個用來通過其Timer事件來定時的讀取下位機(jī)上傳來的溫度數(shù)據(jù)并作處理,另一個則是通過其Timer事件來是Picture控件19

信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告里面的Lable控件移動(達(dá)到程序運(yùn)行時課程設(shè)計(jì)題目在窗體頂端從右往左移動的效果)。最終設(shè)計(jì)窗體效果如圖4-1。圖4-1圖4-1系統(tǒng)上位機(jī)窗體設(shè)計(jì)效果圖2、代碼編寫根據(jù)系統(tǒng)上位機(jī)軟件設(shè)計(jì)要求結(jié)合窗體設(shè)計(jì)現(xiàn)初步編寫程序代碼如下:OptionExplicit2、代碼編寫根據(jù)系統(tǒng)上位機(jī)軟件設(shè)計(jì)要求結(jié)合窗體設(shè)計(jì)現(xiàn)初步編寫程序代碼如下:OptionExplicit要求變量聲明Dimlabel4_speedPrivateSubCommand1_Click()DimTT(1To1)AsByteTT(1)=0MSComm1.Output=TTEndSubPrivateSubCommand2_Click()DimTT(1To1)AsByteTT(1)=9MSComm1.Output=TTEndSubPrivateSubCommand3_Click()MSComm1.PortOpen=FalseEndEndSubPrivateSubCommand4_Click()DimTT(1To1)AsByteTT(1)=1MSComm1.Output=TTShape4.FillC010r=vbGreenEndSubPrivateSubCommand5_Click()DimTT(1To1)AsByte20

20信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告TT(1)=2TT(1)=2MSComml.Output=TTShape4.FillC010r=vbRedEndSubPrivateSubCommand6_Click()DimTT(1To1)AsByteTT(1)=3MSComm1.Output=TTEndSubPrivateSubCommand7_Click()DimTT(1To1)AsByteTT(1)=4MSComm1.Output=TTEndSubPrivateSubForm_Load()Form1.ShowMSComm1.CommPort=3MSComm1.Settings="9600,n,8,1MSComm1.InputModecomInputModeBinaryMSComm1.InputLen=4MSComm1.PortOpen=TrueText1.Text=""Text2.Text=""Text3.Text=""Text2.SetFocusShape1.FillC010r=vbWhiteShape2.FillC010r=vbWhiteShape3.FillC010r=vbRedLabe14.FontSize=20Labe14.Caption=〃中國石油大學(xué)勝利學(xué)院2009級信息與計(jì)算科學(xué)系自動化專業(yè)綜合設(shè)計(jì)〃Labe14.Left=0EndSubPrivateSubTimer1_Timer()Dimvalue%IfMSComm1.InBufferCount=0ThenText1.Text=〃〃ExitSubEndIfDimRR()AsByteDimk%,buf$buf=〃〃RR=MSComm1.Inputk=Len(MSComm1.Input)Fork=LBound(RR)ToUBound(RR)Ifk=0ThenIfStr(RR(k))=10Thenbuf1=〃+〃ElseIfStr(RR(k))=11Thenbuf1=〃-〃Else:buf1=Str(RR(k))EndIfElseIfk=3Thenbuf1=〃.〃+Str(RR(k))21信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告Else:bufl=Else:bufl=Str(RR(k))EndIfbuf=buf+buflNextMSComml.InBufferCount=0IfVal(buf)=111.1ThenShape4.FillC010r=vbGreenExitSubElseIfVal(buf)=222.2ThenShape4.FillC010r=vbRedExitSubEndIfIfVal(buf)<Val(Text3.Text)ThenShape2.FillC010r=vbRedShape1.FillC010r=vbWhiteText1.Text=Str(Val(buf))&“℃"ElseIfVal(buf)>Val(Text2.Text)ThenShape2.FillC010r=vbWhiteShape1.FillC010r=vbRedText1.Text=Str(Va1(buf))&"℃ElseShape1.Fi11C010r=vbWhiteShape2.Fi11C010r=vbWhiteText1.Text=Str(Va1(buf))&"℃EndIfEndSubPrivateSubTimer2_Timer()IfLabe14.Left>-14280ThenLabe14.Left=Labe14.Left-20ElseLabe14.Left=8115EndIfEndSub系統(tǒng)上位機(jī)軟件設(shè)計(jì)調(diào)試系統(tǒng)上位機(jī)軟件設(shè)計(jì)調(diào)試只是檢查程序運(yùn)行時有沒有語法錯誤和窗體上面的控件能否按照要求實(shí)現(xiàn)其功能或者顯示其效果。調(diào)試方法是:按照以上窗體設(shè)計(jì)和代碼設(shè)計(jì),程序單步運(yùn)行,直到整個程序都仿真運(yùn)行完成之后,看窗體的反應(yīng)是否和代碼的控制相對應(yīng),二者結(jié)合所實(shí)現(xiàn)的人機(jī)操作界面能否達(dá)到要求。如果不能則修改其中代碼或者修改窗體的控件的相關(guān)參數(shù),直到能使系統(tǒng)穩(wěn)定運(yùn)行為止。然后再將上位機(jī)與下位機(jī)用通信線連接起來,首先編寫簡單的下位機(jī)程序(可以使單字節(jié)或者雙字節(jié)數(shù)據(jù)的收發(fā))來進(jìn)行上位機(jī)與下位機(jī)之間的通信狀況,直到測試結(jié)果為,上位機(jī)接收到并顯示的數(shù)據(jù)正好就是下位機(jī)上傳的數(shù)據(jù)和下位機(jī)接收到的數(shù)據(jù)正好是上位機(jī)發(fā)送的數(shù)據(jù)為止,此間一定要注意上位機(jī)上面的端口號的選擇和波特率的設(shè)置,要保證上位機(jī)和下位機(jī)的通信方式保持一致。22信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告程序運(yùn)行時人機(jī)界面如圖4-2。圖4-2系統(tǒng)上位機(jī)軟件設(shè)計(jì)運(yùn)行圖.系統(tǒng)調(diào)試與改善系統(tǒng)調(diào)試本課程設(shè)計(jì)中系統(tǒng)調(diào)試部分就是把上位機(jī)和下位機(jī)的設(shè)計(jì)綜合起來進(jìn)行測試運(yùn)行狀態(tài),是否與預(yù)期的效果一樣。調(diào)試之前首先按照硬件原理圖將下位機(jī)系統(tǒng)準(zhǔn)備好(此處用發(fā)光二極管代替小電機(jī)),然后用通信線將上位機(jī)與下位機(jī)連接起來。然后通過下位機(jī)上面的按鍵或者上位機(jī)人機(jī)界面上面的按鈕測試系統(tǒng)運(yùn)行狀態(tài)并記錄問題,然后再根據(jù)所出現(xiàn)的問題,有針對性的修改,直到能實(shí)現(xiàn)課程任務(wù)要求。最后再在此基礎(chǔ)上對程序代碼進(jìn)行簡化,優(yōu)化,對人機(jī)界面進(jìn)行優(yōu)化,美化。系統(tǒng)上位機(jī)界面顯示第一階段性運(yùn)行效果如圖5-1。系統(tǒng)改善由圖5-1可以看出所設(shè)計(jì)的人機(jī)界面基本上已經(jīng)完成課程設(shè)計(jì)的相關(guān)任務(wù)要求,可是總感覺上面少了點(diǎn)兒東西,那是什么呢,應(yīng)該是時間吧。顯示時間可以用Timer控件再加上若干Text控件或者再加上若干Lable控件可以實(shí)現(xiàn),原先也是這么計(jì)劃布置窗體增加相關(guān)代碼的,可是一次偶然的機(jī)會讓我突然覺得若能以鐘表走針的形式顯23

信息與計(jì)算科學(xué)系課程設(shè)計(jì)報(bào)告示出來那該多好。所以這次改善就是在原來的基礎(chǔ)上增添了走表走針的內(nèi)容,這部分功能完全用程序代碼實(shí)現(xiàn),除了添加個Timer控件別的沒再加什么。運(yùn)行效果如圖5-2。過了一段時間再看看第二階段的上位機(jī)界面運(yùn)行狀態(tài),感覺還是有點(diǎn)兒少了什么。按照一般的情況,每個操作性的相關(guān)設(shè)備或者控制面板都應(yīng)該有使用說明,所以這個地方也加入了此項(xiàng)內(nèi)容。再就是指導(dǎo)老師給的建議,如果上位機(jī)人機(jī)界面反映下位機(jī)電機(jī)運(yùn)行狀態(tài)的時候使用旋轉(zhuǎn)的效果應(yīng)該比改顏色來反映的更好。所以呢,這次修改像串口助手一樣可以自己設(shè)置串口和波特率就好了,于是接下來的時間里也再這方面稍下功夫,比較幸運(yùn)的是這些修改都進(jìn)行的比較順利,基本上完成了上述修改任務(wù)。也將仿真電機(jī)的運(yùn)行狀態(tài)部分做了修改。再者就是我覺著如果我們自己做的界面能夠最終運(yùn)行的效果如圖5-3。FofbI|n|x|FofbI共國石油大學(xué)勝利學(xué)院2009級信息與計(jì)算科當(dāng)前溫度值(2|―15c溫度上限值t/r)當(dāng)前溫度值(2|―15c溫度上限值t/r)| 16溫度下限值(/r)| 14電動機(jī)運(yùn)行狀態(tài)監(jiān)控(紅色停止

溫馨提示

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

最新文檔

評論

0/150

提交評論