多路溫度采集系統(tǒng)編程設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第1頁(yè)
多路溫度采集系統(tǒng)編程設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第2頁(yè)
多路溫度采集系統(tǒng)編程設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第3頁(yè)
多路溫度采集系統(tǒng)編程設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第4頁(yè)
多路溫度采集系統(tǒng)編程設(shè)計(jì)課程設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中南大學(xué) 微機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)與 綜合實(shí)驗(yàn)設(shè)計(jì)報(bào)告 設(shè)計(jì)題目多路溫度采集系統(tǒng)編程設(shè)計(jì) 指導(dǎo)老師 設(shè)計(jì)者 學(xué)號(hào) 專業(yè)班級(jí) 設(shè)計(jì)日期 目 錄 第一章微機(jī)應(yīng)用系統(tǒng)課程設(shè)計(jì)的目的意義 1.1 設(shè)計(jì)目的 1.2 課程在教學(xué)計(jì)劃中的地位和作用 第二章溫度采集系統(tǒng)軟硬件設(shè)計(jì)任務(wù) 2.1設(shè)計(jì)內(nèi)容及要求 2.2 實(shí)驗(yàn)設(shè)備 2.3 課程設(shè)計(jì)的內(nèi)容及要求 第三章 總體設(shè)計(jì)方案 3.1 設(shè)計(jì)思想 3.2 總體設(shè)計(jì)流程圖 第四章 硬件設(shè)計(jì) 4.1 硬件設(shè)計(jì)概要 4.2 硬件設(shè)計(jì)接線圖 4.3 所用到的芯片及其各自功能說(shuō)明 4.3.1 芯片列表 4.3.2 8086 的功能簡(jiǎn)介 4.3.3 8254 的功能簡(jiǎn)介 4.3.4

2、AD0809 的功能簡(jiǎn)介 第五章 實(shí)驗(yàn)結(jié)果 5.1 匯編程序結(jié)果 5.2 C 語(yǔ)言程序結(jié)果 第六章 源程序代碼 6.1 匯編程序代碼 6.2 C 語(yǔ)言程序代碼 第七章 系統(tǒng)的調(diào)試與使用 第八章 收獲、體會(huì) 參考文獻(xiàn) 第一章 微機(jī)應(yīng)用系統(tǒng)課程設(shè)計(jì)的目的意義 1.1 設(shè)計(jì)目的 微機(jī)原理與接口技術(shù) 是一門(mén)實(shí)踐性和實(shí)用性都很強(qiáng)的課程, 學(xué)習(xí)的目的 在于應(yīng)用。 本課程設(shè)計(jì)是配合課堂教學(xué)的一個(gè)重要的實(shí)踐教學(xué)環(huán)節(jié), 它能起到鞏 固課堂和書(shū)本上的知識(shí), 加強(qiáng)綜合能力, 提高系統(tǒng)設(shè)計(jì)水平, 啟發(fā)創(chuàng)新思想的效 果。通過(guò)本課程設(shè)計(jì)希望達(dá)到以下目地: 培養(yǎng)資料搜集和匯總的能力。 培養(yǎng)總體設(shè)計(jì)和方案論證的意識(shí)。 提高硬

3、件,軟件設(shè)計(jì)與開(kāi)發(fā)的綜合能力。 提高軟件和硬件聯(lián)合調(diào)試的能力。 熟練掌握相關(guān)測(cè)量?jī)x器的使用方法。 掌握相關(guān)開(kāi)發(fā)軟件,仿真軟件的使用方法。 1.2 課程在教學(xué)計(jì)劃中的地位和作用 現(xiàn)在計(jì)算機(jī)科學(xué)在應(yīng)用上得到飛速發(fā)展,因此,學(xué)習(xí)這方面的知識(shí)必須緊跟 實(shí)際連接。 掌握這方面的知識(shí)更重要強(qiáng)調(diào)解決實(shí)際問(wèn)題的能力。 該課程設(shè)計(jì)給我 們提供了一個(gè)很好的機(jī)會(huì), 它要求我們結(jié)合課堂上和書(shū)本中學(xué)到的知識(shí)去獨(dú)立設(shè) 計(jì)一個(gè)硬件系統(tǒng), 它是我們邁向?qū)嵺`和應(yīng)用的橋梁, 我們學(xué)習(xí)書(shū)本上的知識(shí)是一 個(gè)不斷積累的過(guò)程, 而該課程設(shè)計(jì)卻使得我們能夠盡情發(fā)揮他們, 讓我們更了解 計(jì)算機(jī)的結(jié)構(gòu),工作原理以及軟硬件的結(jié)合使用,雖然課程設(shè)

4、計(jì)的時(shí)間比較短, 但它卻在整個(gè)教學(xué)計(jì)劃中占據(jù)了及其重要的位置。 第二章 溫度采集系統(tǒng)軟硬件設(shè)計(jì) 任務(wù) 2.1 實(shí)驗(yàn)?zāi)康?為了實(shí)現(xiàn)計(jì)算機(jī)對(duì)生產(chǎn)過(guò)程及對(duì)象的控制, 需要將對(duì)象的各種測(cè)量參數(shù)按照 要求轉(zhuǎn)換成數(shù)字信號(hào)送入計(jì)算機(jī)。 經(jīng)計(jì)算機(jī)運(yùn)算處理后再再轉(zhuǎn)換成適合于對(duì)生產(chǎn) 過(guò)程進(jìn)行控制的量。 所以在微機(jī)和生產(chǎn)過(guò)程之間, 必須設(shè)置信息的變換和傳遞通 道。而我們所做的模擬輸入通道, 主要功能就是隨時(shí)間變化的模擬輸入信號(hào)變成 數(shù)字信號(hào)送入計(jì)算機(jī),主要有多路轉(zhuǎn)換器,采樣保持器和 A/D 轉(zhuǎn)換器等組成。 本實(shí)驗(yàn)通過(guò)設(shè)計(jì)一個(gè)微機(jī)控制的溫度采集系統(tǒng),旨在使學(xué)生能做到以下幾 點(diǎn): 八、 1了解微機(jī)控制的溫度采集系統(tǒng)軟硬

5、件設(shè)計(jì)原理和方法。 2進(jìn)一步掌握定時(shí) /計(jì)數(shù)器、并行接口芯片和中斷控制器的工作原理與使用 方法。 3學(xué)會(huì)利用 A/D 轉(zhuǎn)換芯片實(shí)現(xiàn)信號(hào)的 A/D 轉(zhuǎn)換。 2.2 實(shí)驗(yàn)設(shè)備 l 80X86 系列微機(jī)一臺(tái) 2微機(jī)硬件實(shí)驗(yàn)平臺(tái)。 3定時(shí) /計(jì)數(shù)器 8254 4ADC0809。 2.3 實(shí)驗(yàn)內(nèi)容及要求 (1)、分別用 C 語(yǔ)言和匯編語(yǔ)言編程完成硬件接口功能設(shè)計(jì); ( 2)、基于 80 x86 微機(jī)接口的控制器硬件電路設(shè)計(jì)與調(diào)試; (3)、功能要求:具有報(bào)警功能(如:聲、光、電形式) ,系統(tǒng)可 實(shí)現(xiàn)6路溫度信號(hào)的巡回采集檢測(cè)、各路巡回檢測(cè)的溫度范圍01020 片選 IOY0 對(duì)應(yīng)的端口始地址 EQU30

6、40H;片選 IOY1 對(duì)應(yīng)的端口始地址 * J IOY0 IOY1 MY8254_COUNT0 EQU IOY0+00H*4 ;8254 計(jì)數(shù)器 0 端口地址 MY8254_COUNT1 EQU IOY0+01H*4 ;8254 計(jì)數(shù)器 1 端口地址 MY8254_COUNT2 EQU IOY0+02H*4 ;8254 計(jì)數(shù)器 2 端口地址 MY8254_MODE EQU IOY0+03H*4 ;8254 控制寄存器端口地址 * AD0809 EQU IOY1+00H ;AD0809 的端口地址 AD0809_MODE EQU IOY1+08H*4 ;AD0809 的狀態(tài)口地址 DATA S

7、EGMENT ;數(shù)據(jù)段 DBUF DB 100 DUP(?) ;數(shù)據(jù)區(qū) STR1 DB line temperature $;顯示的字符串 STR2 DB The temperature is below than 60 degree $ ;顯示提示信息 STR3 DB degree $ FREQ_LIST DW 400,800,556,495,556,0 ;頻率表 TIME_LIST DB 1,3,2,1,4,0;時(shí)間表 ALARMDB DB DATA ENDS STACK1 SEGMENT STACK STACK ;堆棧段 ST1 STACK1 CODE START: DB 100 DUP

8、(?) ENDS SEGMENT ;代碼段 ASSUME CS:CODE,DS:DATA,SS:STACK1 MOV AX,STACK1 MOV SS,AX MOV AX,DA TA MOV DS,AX ;DS 指向數(shù)據(jù)區(qū)段址 CLD ;清方向標(biāo)志 MOV AX,0000H MOV ES,AX MOV AL,50H ;保存原中斷向量入口地址 MOV AH,35H INT 21H PUSH ES PUSH BX PUSH DS MOV AX,SEG ADINT;設(shè)置中斷向量入口地址 MOV DS,AX MOV DX,OFFSET ADINT MOV AL,50H MOV AH,25H INT 2

9、1H POP DS INT 50H ;中斷調(diào)用 WAIT1: CMP ALARMDB ,0 JZ SDD CALL ALARM SDD: mov ALARMDB,0 PUSHCX;延時(shí) PUSHAX PUSH DX PUSH BX MOV CX,0FFFFH D1: MOV AX,0FFFFH D2: DECAX JNZD2 LOOPD1 MOV AH,6;清屏 MOV AL,0 MOV CX,0 MOV DH,24 MOV DL,79 MOV BH,7 INT 10H MOV AH,2;置光標(biāo)到頁(yè)面左上角 MOV DH,0 MOV DL,0 MOV BH,0 INT 10H POP BX P

10、OP DX POPAX POPCX MOV AH,1 ;判斷是否有按鍵按下 INT 16H JZ WAIT1 ;無(wú)按鍵則跳回繼續(xù)等待,有則退出 QUIT: POP DX ;退出 POP DS MOV AL,50H MOV AH,25H INT 21H MOV AX,4C00H ;返回到 DOS INT 21H ;中斷服務(wù)程序,對(duì)每個(gè)通道均采集一個(gè)數(shù)據(jù),存進(jìn)DBUF ADINT PROC NEAR ;調(diào)用子程序 STARTA: MOV CX,0006H ;設(shè)置通道計(jì)數(shù)器初值 MOV DX,AD0809 ; DX 指向 ADC 通道 TRANS2:CALL NEXT ;調(diào)用轉(zhuǎn)換子程序 LOOP T

11、RANS2 ;循環(huán)采集六路信號(hào) IRET ;自中斷返回 ADINT ENDP DALL Y1 PROC NEAR 成 PUSH CX PUSH AX PUSH DX MOV CX,4000H ;軟件延時(shí)子程序, 用于 ADC 轉(zhuǎn)換時(shí)延時(shí)保證轉(zhuǎn)換完 D5: MOV AX,0600H D6: DEC AX JNZ D6 LOOP D5 POP DX POP AX POP CX RET DALL Y1 ENDP DALL Y2 PROC ;延時(shí)子程序,用于 8254 產(chǎn)生方波時(shí)延時(shí),為揚(yáng)聲器 發(fā)生報(bào)警提供信號(hào)延時(shí) PUSH PUSH CX AX D10: MOV CX,0F00H D9: MOV A

12、X,0FFFFH D8: DEC AX JNZ D8 LOOP D9 DEC DL JNZ D10 POP AX POP CX RET DALL Y2 ENDP ALARMTITLE PROC PUSH DX MOV DX,OFFSET STR2 ;顯示溫度低于某一值 MOV AH,9 INT 21H POP DX RET ALARMTITLE ENDP ALARM PROC ;報(bào)警子程序 PUSH DX PUSH AX PUSH SI PUSH DI MOV DX,MY8254_MODE;初始化 8254 工作方式 MOV AL,36H;定時(shí)器 0、方式 3 OUT DX,AL BEGIN:

13、MOV SI,OFFSET FREQ_LIST;裝入頻率表起始地址 MOV DI,OFFSET TIME_LIST ;裝入時(shí)間表起始地址 PLAY: MOV DX,0FH ;輸入時(shí)鐘為 1.0416667MHz , 1.0416667M 0FE502H MOV AX,0E502H DIV WORD PTR SI ;取出頻率值計(jì)算計(jì)數(shù)初值, 0F4240H / 輸出頻率 MOV DX,MY8254_COUNT0 OUT DX,AL ;裝入計(jì)數(shù)初值 MOV AL,AH OUT DX,AL CALL DALL Y2 ADD SI,2 INC DI CMP WORD PTR SI,0 JE srr ;

14、判斷是否到曲末? MOV AH,1 INT 16H JZ PLAY srr: MOV DX,MY8254_MODE MOV AL,10H OUT DX,AL POPDI POPSI POPAX POPDX RET ALARM ENDP ;判斷是否有按鍵按下? ;退出時(shí)設(shè)置 8254 為方式 2, OUT0 置 0 NEXT PROC ;信號(hào)巡回采集子程序 NEXT1: MOV SI,OFFSET DBUF ;SI 指向 WENDU 偏移地址 MOV BL,05H;為采集提供計(jì)數(shù)依據(jù) NEXT2: MOV AH,0000H OUT DX,AL;啟動(dòng)一次轉(zhuǎn)換 CALL DALL Y1 ; 延時(shí)保證

15、轉(zhuǎn)換完成 MOV AL,00H IN AL,DX;讀取結(jié)果 TRANS: MOV SI,AL;將采集的 5 個(gè)數(shù)據(jù)保存 INCSI DECBL JNZ PUSH MOV MOV MOV C1: MOV INC CMP JA MOV F1: LOOP MOV AL,00H MOV MOV MOV MOV C2: MOV INC CMP JA MOV F2: LOOP MOV AL,00H MOV NEXT2 CX;選中值 CL,04H ;選出五個(gè)數(shù)中的最大值 SI,OFFSET DBUF BX,SI AL,BX SI AL,SI F1 BX,SI C1 ;將最大值置零 BX,AL ;SI 指向

16、WENDU 偏移地址 CX,04H ;再一次選擇五個(gè)數(shù)的最大值 SI,OFFSET DBUF BX,SI AL,BX SI AL,SI F2 BX,SI C2 BX,AL ;SI 指向 WENDU 偏移地址 ;將新的最大值置零 MOV CX,04H MOV SI,OFFSET DBUF MOV BX,SI C3: MOV AL,BX INC SI CMP AL,SI JA F3 MOV BX,SI F3: LOOP C3 ;第三次選擇最大值 ;SI 指向 WENDU 偏移地址 MOV AL,BX;第三次選出的最大值即為原數(shù)據(jù)的中值 POP CX SUB AH,AH MOV SI,AX;將中值保

17、存到 SI 寄存器 PUSH DX;保存通道號(hào) PUSH AX MOV DL,07H;顯示爐號(hào)數(shù) SUBDL,CL ADDDL,30H MOVAH,02H INT21H MOVDX,OFFSET STR1;顯示字符串號(hào)爐溫度 MOVAH,9 INT21H POP AX ;將采集的數(shù)據(jù)進(jìn)行數(shù)值轉(zhuǎn)換 POP DX MOVBL,04H MULBL PUSHCX PUSHDX SUB DX,DX MOV CX,1000 DIV CX XCHG AX,DX PUSH AX ADD DL,30H MOV AH,02H INT 21H POP AX MOV CL,100 DIV CL PUSH AX ADD

18、 AL,30H MOV DL,AL MOV AH,02H INT 21H POP AX XCHG AL,AH SUB AH,AH MOV CL,10 DIV CL PUSH AX ADD AL,30H MOV DL,AL MOV AH,02H INT 21H POP AX ADD AH,30H ;分離出千位數(shù)并顯示 ;分離出百位數(shù)并顯示 ;分離出十位數(shù)并顯示 MOV DL,AH ;顯示個(gè)位數(shù) MOVAH,02H INT21H MOVDX,OFFSET STR3;顯示 degree MOVAH,9 INT21H CMPSI,0FH;與 60 攝氏度比較 JA S ; 若在指定范圍內(nèi)則繼續(xù)轉(zhuǎn)換 M

19、OV ALARMDB,1 CALL ALARMTITLE;若不在指定范圍則報(bào)警 S: MOV DL,0AH;換行 MOV AH,02H INT 21H MOV DL,0DH;將光標(biāo)置行首 MOV AH,02H INT 21H POPDX POPCX ADD DL,04H ;DX 指向下一個(gè)通道 RET NEXT ENDP CODE ENDS END START 6.2 C 語(yǔ)言源程序 #include #include #include #include #include #include void key(void); /判斷是否右鍵按下,有則退出 void delay1(int time)

20、; /延時(shí)函數(shù) void alarm(void); /報(bào)警函數(shù) void delay2(int time); /延時(shí)函數(shù) /* 根據(jù)查看配置信息修改下列符號(hào)值 * #define IOY0 0 xE400 /8254 端口地址 #define IOY1 0 xE440 / ADC0809 端口地址 /* #define MY8254_ COUNT0 IOY0 + 0 x00*4 #define MY8254_ COUNT1 IOY0 + 0 x01*4 #define MY8254_ COUNT2 IOY0 + 0 x02*4 #define MY8254_ MODE IOY0 + 0 x03

21、*4 #define AD0809 IOY1 + 0 x00*4 char a = degree; int b5; int FREQ_LIST = 556,495,556,624,495 ; / 頻率表 int TIME_LIST = 6, 2, 4, 4, 6 ; /時(shí)間表 void main() while(6) / 循環(huán)采集 int i,j,k,temp; for(k=1;k=6;k+) for(i=0;i=4;i+) int AD08091;/設(shè)置采集的端口號(hào) AD08091=AD0809+0 x04*(k-1); outp(AD08091, 0 x00);/啟動(dòng)轉(zhuǎn)換 delay1(0

22、 x100);/延時(shí)保證轉(zhuǎn)換完成 bi= inp(AD08091);/ 將采集的 5 個(gè)數(shù)據(jù)存入數(shù)組 for(i=0;i4;i+)/將采集的 5 個(gè)數(shù)據(jù)排序 for(j=i+1;jbj) temp=ai; ai=aj; aj=temp; printf(%d,k); b2=b2*4; printf(haoluwendu:%d, b2); printf(degree); if(b20 x3C)/判斷數(shù)據(jù)是否在指定范圍內(nèi) alarm(); /超出范圍則報(bào)警 printf(n);/ 換行 for(k=0;k=0 x09;k+)/在進(jìn)行第二次轉(zhuǎn)換時(shí)的延時(shí) for(i=0;i=0 x4fff;i+) fo

23、r(j=0;j=0 x4fff;j+) clrscr(); key();/判斷是否右鍵按下 void key(void)/ 判斷是否右鍵按下,有則退出 if (bioskey(1) != 0) exit(0); void delay1(int time)/ 提供 AD 轉(zhuǎn)換過(guò)程中的延時(shí),保證抓換完成 int i; int j; for(i=0;i=time;i+) for(j=0;j=0 x7000;j+) return; void alarm(void) / 報(bào)警函數(shù) /輸出字符提示 int i, count; printf(The tempeture is below than 60 de

24、gree); outp(MY8254_MODE,0 x36); / 發(fā)聲報(bào)警 for(i=0;i= 8; outp(MY8254_COUNT0, count); delay2(TIME_LISTi); outp(MY8254_MODE,0 x10); return; void delay2(int time)/延時(shí)函數(shù),為揚(yáng)聲器發(fā)聲提供延時(shí) int i; long j; for(i=0;i=time;i+) for(j=0;j=0 x4000;j+) return; 第七章 系統(tǒng)調(diào)試與使用 本次實(shí)驗(yàn)前面時(shí)間主要用于熟悉實(shí)驗(yàn)操作平臺(tái), 系統(tǒng)調(diào)試時(shí)間只 花了短短的兩天時(shí)間。 剛開(kāi)始我是滿懷信心的想

25、把自己寫(xiě)好的程序一 次運(yùn)行成功,但結(jié)果卻慘不忍睹,什么功能都沒(méi)有,甚至連寫(xiě)在程序 的最前面的那些芯片的初始化操作都沒(méi)達(dá)到預(yù)期的效果, 這對(duì)我的信 心造成極大的沖擊,我翻著書(shū)仔細(xì)的把程序重新讀了一次 ,希望能 發(fā)現(xiàn)出某個(gè)錯(cuò)誤。 但就根據(jù)書(shū)本上教的,實(shí)在是無(wú)錯(cuò)可查。我不得 已把程序一塊一塊的肢解開(kāi)來(lái), 從最基本的做起, 看他們能否都實(shí)現(xiàn), 最后看能否連接起來(lái)運(yùn)行。 首先,我把最前面的初始化留下來(lái),把 后面的主程序及中斷服務(wù)子程序都刪去,仍沒(méi)有成功,我不得已,再 把程序中的 8254 初始化分開(kāi)調(diào)試,結(jié)果發(fā)現(xiàn)它們能夠運(yùn)行,并有相 應(yīng)的輸出結(jié)果顯示。后來(lái)我們請(qǐng)教了學(xué)長(zhǎng),在他不停的調(diào)試過(guò)程中, 讓我們學(xué)到了很多, 首先我們要對(duì)我們所做的課題要有一個(gè)整體的結(jié) 構(gòu)框圖,那樣思路才比較清晰,而且出現(xiàn)問(wèn)題后,不應(yīng)該無(wú)從下手或 整體動(dòng)手,而是應(yīng)該一個(gè)環(huán)節(jié)一個(gè)環(huán)節(jié)的不停調(diào)試,找出問(wèn)題所在, 然后針對(duì)那一環(huán)節(jié)修改程序或者線路圖。 在調(diào)試

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論