《微機原理課程設(shè)計》報告_第1頁
《微機原理課程設(shè)計》報告_第2頁
《微機原理課程設(shè)計》報告_第3頁
《微機原理課程設(shè)計》報告_第4頁
《微機原理課程設(shè)計》報告_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、江蘇科技大學(xué)(張家港) 微機原理課程設(shè)計 微機原理與接口技術(shù)課程設(shè)計姓名: 陸燕 學(xué)號: 1245712103 班級: 12電氣1班 專業(yè): 電氣工程及其自動化 學(xué)院: 電氣與信息工程學(xué)院 江蘇科技大學(xué)蘇州理工大學(xué)2015年3月 目 錄一、課程設(shè)計內(nèi)容1二、系統(tǒng)功能要求1 2.1 基本功能要求1 2.2 附件功能要求1三、系統(tǒng)硬件設(shè)計1 4.1 系統(tǒng)硬件原理1 4.2 功能模塊設(shè)計2四、系統(tǒng)軟件設(shè)計3 5.1 總體設(shè)計思想3 5.2 遇到問題及解決措施4五、總結(jié)4六、附錄4 模擬交通燈控制系統(tǒng)設(shè)計一、課程設(shè)計內(nèi)容模擬一個十字路口的交通燈控制系統(tǒng),南北方向用2個LED燈分別表示直行指示燈和左轉(zhuǎn)彎

2、指示燈,東西方向用2個LED燈分別表示直行指示燈和左轉(zhuǎn)彎指示燈。指示燈亮表示為綠燈,可以通行;指示燈閃亮表示為黃燈,要快速通過或停止通過;指示燈滅表示為紅燈,禁止通行。二、系統(tǒng)功能要求2.1 基本功能要求(1)南北方向直行指示燈亮9秒,閃亮3秒后熄滅,南北方向左轉(zhuǎn)指示燈亮10秒,閃3秒后熄滅。東西方向直行和左轉(zhuǎn)彎燈始終為滅。(2)東西方向直行指示燈亮9秒,閃亮3秒后熄滅,東西方向左轉(zhuǎn)指示燈亮10秒,閃3秒后熄滅。南北方向直行和左轉(zhuǎn)彎燈始終為滅。(3)用LED數(shù)碼管顯示指示燈亮的時間。(4)用8255A控制LED燈和LED數(shù)碼管。(5)用8254A計時,并在LED數(shù)碼管上顯示出來。2.2 拓展功

3、能要求(1) 若用2個LED數(shù)碼管顯示時間,加分。(2) 若用按鍵手動設(shè)置通行時間,加分。(3) 其它具有特色的功能,加分。三、系統(tǒng)硬件設(shè)計3.1 系統(tǒng)硬件原理1、8255A的方式選擇控制字如表1所示。表1. 8255A的方式選擇控制字D7D6D5D4D3D2D1D0特征位D7=1A口方式選擇控制A口8位輸入/輸出方向控制C口高4位輸入/輸出方向B口方式選擇控制A口8位輸入/輸出方向控制C口高4位輸入/輸出方向00:方式01:輸入1:輸入0:方式01:輸入1:輸入01:方式10:輸出0:輸出1:方式10:輸出0:輸出1-:方式2引腳信號:8255A的引腳如圖1所示,分為數(shù)據(jù)線、地址線、讀/寫控

4、制線、輸入/輸出端口線和電源線。D7D0:三態(tài)、雙向數(shù)據(jù)線,與CPU數(shù)據(jù)總線連接,用來傳送數(shù)據(jù)。CS:片選信號線,低電平有效時,芯片被選中。A1, A0:地址線,用來選擇內(nèi)部端口。XIOR:讀出信號線,低電平有效時,允許數(shù)據(jù)讀出。XIOW:寫入信號線,低電平有效時,允許數(shù)據(jù)寫入。RESET:復(fù)位信號線,高電平有效時,將所有內(nèi)部寄存器(包括控制寄存器)清。PA7PA0:A口輸入/輸出信號線。PB7PB0:B口輸入/輸出信號線。PC7PC0:C口輸入/輸出信號線。VCC:5V電源。GND:電源地線。2、8254的方式選擇控制字如表2所示。表2.8254的方式選擇控制字D7D6D5D4D3D2D1D

5、0計數(shù)器選擇讀/寫工作方式選擇計數(shù)碼制選擇00-計數(shù)器000-鎖存計數(shù)值000-方式00-二進制數(shù)01-計數(shù)器101-讀/寫低8位001-方式11-十進制數(shù)10-計數(shù)器210-讀/寫高8位010-方式211-讀出控制字標志11-先讀/寫低8位再讀/寫高8位011-方式3100-方式4101-方式53.2 功能模塊設(shè)計 實物鏈接如圖2所示。D7 PB0D6 PB1D5 PB2D4 PB3D3 PB4D2 PB5D1 PB6D0 PB7 PA0A1 PA1A0 PC7WR PC6RD PC5CS PC4 PA7 PA6 PA5 PA4 PA3 PA2 PC3 PC2 PC1 PC08255XD7X

6、D6XD5XD4XD3XD2XD1XD0XA3XA2XIOWXIORIOY3ABCDEFGDpX1X2D4D3D2D1X6X5X4X3GATE0 D7CLK0 D6 D5OUT0 D4GATE1 D3CLK1 D2OUT1 D1 D0 A1 A0GATE2CLK2 WROUT2 RD CS8254+5V1.8432HZINTR圖2 實物連線圖四、系統(tǒng)軟件設(shè)計4.1 總體設(shè)計思想通常情況下,東西路口和南北路口交替通車。交通燈的亮滅規(guī)律為:東西路口的綠燈亮,南北路口的紅燈亮,東西方向通車,數(shù)碼管顯示9秒倒計時東西路口綠燈滅,黃燈開始閃爍。閃爍若干次后,東西路口紅燈亮,而同時南北路口的綠燈亮,南北方

7、向開始通車,數(shù)碼管顯示9秒倒計時南北路口的綠燈滅,黃燈開始閃爍。閃爍若干次后,再切換到東西路口方向,重復(fù)上述過程。由于能力有限,只做了一個路口的紅綠燈交替。先紅燈亮,延時10s,數(shù)碼管計時,綠燈亮,延時10s,重復(fù)上述過程。4.2 遇到問題及解決措施問題1:黃燈不閃爍,只能用顯示成流水燈。解決措施:運用循環(huán)程序。問題3:運行時偶爾頁面沒有顯示跳動5,數(shù)碼管也不倒計時解決措施:運行后要不斷單擊鼠標問題2:不知該如何實現(xiàn)讓兩位數(shù)同時顯示。解決方法:使同一個數(shù)值的個位數(shù)與十位數(shù)交替顯示產(chǎn)生視覺欺騙效果。在單步調(diào)試時發(fā)現(xiàn)個位數(shù)會在十位顯示一遍,然后十位滅再在個位顯示。原因:先顯示十位數(shù)時已將第一位的L

8、ED數(shù)碼顯示管接通,因此在顯示完十位數(shù)后,便立即關(guān)閉顯示十位數(shù)的數(shù)碼管,個位同樣,顯示完后立即關(guān)閉五、總結(jié)通過此次微機原理課程設(shè)計,我感覺到自己受益匪淺,在正式開始實驗前,我也查了一些資料,但到了實際操作的時候還是遇到了很多問題。實驗絕對不是幾條簡短的程序這么簡單的。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的。過了一個寒假,上學(xué)期所學(xué)的微機原理都有些淡忘了,通過這次課程設(shè)計,我們再次拾起了這些知識,并且運用到設(shè)計中,讓書本知識變得更加有趣和生動。然而由于我們自身的能力有限,絕大部分同學(xué)都是直接拿了編好的程序來調(diào)試的,這一點是我們需要改進的。實驗中遇到的 一些

9、小問題在同學(xué)的幫助下我們也很好的解決了。我們需要提高自己實際動手能力和獨立思考的能力。在此次課程設(shè)計的過程中遇到了許多問題,同時也發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,對匯編語言掌握得不透徹,在接下來的學(xué)習(xí)中我們應(yīng)該更加仔細的運用好每一次強化自身的機會,多動手實驗,不至于在實際操作中手忙腳亂。六、附錄IOY0 EQU 3000H ;片選IOY0對應(yīng)的端口始地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址MY8255_B EQU IOY0+01H*4 ;8255的B口地址MY8255_C EQU IOY0+02H*4 ;8255的C口地址

10、MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址IOY1 EQU 3040H ;片選IOY1對應(yīng)的端口始地址MY8254_COUNT0 EQU IOY1+00H*4 ;8254計數(shù)器0端口地址MY8254_COUNT1 EQU IOY1+01H*4 ;8254計數(shù)器1端口地址MY8254_COUNT2 EQU IOY1+02H*4 ;8254計數(shù)器2端口地址MY8254_MODE EQU IOY1+03H*4 ;8254控制寄存器端口地址INTR_IVADD EQU 01C8H ;INTR對應(yīng)的中斷矢量地址INTR_OCW1 EQU 0A1H ;INTR對應(yīng)PC

11、機內(nèi)部8259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR對應(yīng)PC機內(nèi)部8259的OCW2地址INTR_IM EQU 0FBH ;INTR對應(yīng)的中斷屏蔽字IOY2 EQU 3080HMY8259_ICW1 EQU IOY2+00H ;實驗系統(tǒng)中8259的ICW1端口地址MY8259_ICW2 EQU IOY2+04H ;實驗系統(tǒng)中8259的ICW2端口地址MY8259_ICW3 EQU IOY2+04H ;實驗系統(tǒng)中8259的ICW3端口地址MY8259_ICW4 EQU IOY2+04H ;實驗系統(tǒng)中8259的ICW4端口地址MY8259_OCW1 EQU IOY2+04H

12、 ;實驗系統(tǒng)中8259的OCW1端口地址MY8259_OCW2 EQU IOY2+00H ;實驗系統(tǒng)中8259的OCW2端口地址MY8259_OCW3 EQU IOY2+00H ;實驗系統(tǒng)中8259的OCW3端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HMES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,&#

13、39;$'CS_BAK DW ? ;保存INTR原中斷處理程序入口段地址的變量IP_BAK DW ? ;保存INTR原中斷處理程序入口偏移地址的變量IM_BAK DB ? ;保存INTR原中斷屏蔽字的變量TIME DW ?;計時NB_S DW 9;南北直行時間NB_T DW 9;南北左轉(zhuǎn)時間DX_S DW 1;東西直行時間DX_T DW 1;東西左轉(zhuǎn)時間YELLO DW 3;閃爍時間STATE DB 1;狀態(tài)標志SHAN DB 0 ;閃爍標志DATA ENDS ;鍵值表,0F對應(yīng)的7段數(shù)碼管的段位值CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV

14、 AX,DATA MOV DS,AX MOV DX,OFFSET MES ;顯示退出提示 MOV AH,09H INT 21H CLI MOV AX,0000H ;替換INTR的中斷矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX ;保存INTR原中斷處理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;設(shè)置當(dāng)前中斷處理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_BAK,AX ;保存INTR原中斷處理程序入口段地址 MOV AX,SEG MYISR MOV ES

15、:DI,AX ;設(shè)置當(dāng)前中斷處理程序入口段地址MOV DX,INTR_OCW1 ;設(shè)置中斷屏蔽寄存器,打開INTR的屏蔽位 IN AL,DX MOV IM_BAK,AL ;保存INTR原中斷屏蔽字 AND AL,INTR_IM OUT DX,AL STI MOV SI,3000H ;建立緩沖區(qū),存放要顯示的鍵值 MOV AL,10H ;先初始化鍵值為0 MOV SI,AL MOV SI+1,AL MOV SI+2,AL MOV SI+3,AL MOV SI+4,AL MOV SI+5,AL MOV DI,3005H MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,

16、81H ;方式0,A口、B口輸出,C口低4位輸入 OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0B6H ;計數(shù)器2,方式3 OUT DX,AL MOV DX,MY8254_COUNT2 ;裝入計數(shù)初值 MOV AL,64H ;100分頻 OUT DX,AL MOV AL,00H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;計數(shù)器0,方式3 OUT DX,AL MOV DX,MY8254_COUNT0 ;裝入計數(shù)初值 MOV AL,00H ;18432分頻 OUT DX,AL M

17、OV AL,48H OUT DX,AL MOV STATE,1 ;初始狀態(tài) MOV TIME,9 MOV DX,MY8255_MODE ;C口輸出設(shè)置 MOV AL,0FH OUT DX,ALBEGIN: CALL DIS ;顯示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;掃描按鍵 JNZ GETKEY1 ;有鍵按下則跳置GETKEY1 MOV AH,1 ;判斷PC鍵盤是否有按鍵按下 INT 16H JZ BEGIN ;無按鍵則跳回繼續(xù)循環(huán),有則退出QUIT: CLI MOV AX,0000H ;恢復(fù)INTR原中斷矢量 MOV ES,AX MOV DI,INTR_IVADD

18、MOV AX,IP_BAK ;恢復(fù)INTR原中斷處理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK ;恢復(fù)INTR原中斷處理程序入口段地址 MOV ES:DI,AX MOV DX,INTR_OCW1 ;恢復(fù)INTR原中斷屏蔽寄存器的屏蔽字 MOV AL,IM_BAK OUT DX,AL STI MOV AX,4C00H ;返回到DOS INT 21HGETKEY1:CALL DIS ;顯示刷新 CALL DALLY CALL DALLY CALL CLEAR ;清屏 CALL CCSCAN ;再次掃描按鍵 JNZ GETKEY2 ;有鍵按下則跳置GET

19、KEY2 JMP BEGIN ;否則跳回開始繼續(xù)循環(huán)GETKEY2:MOV CH,0FEH MOV CL,00H ;設(shè)置當(dāng)前檢測的是第幾列COLUM: MOV AL,CH ;選取一列,將X1X4中一個置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;讀Y1Y4,用于判斷是哪一行按鍵閉合 IN AL,DXL1: TEST AL,01H ;是否為第1行 JNZ L2 ;不是則繼續(xù)判斷 MOV AL,00H ;設(shè)置第1行第1列的對應(yīng)的鍵值 JMP KCODEL2: TEST AL,02H ;是否為第2行 JNZ L3 ;不是則繼續(xù)判斷 MOV AL,04H

20、;設(shè)置第2行第1列的對應(yīng)的鍵值 JMP KCODEL3: TEST AL,04H ;是否為第3行 JNZ L4 ;不是則繼續(xù)判斷 MOV AL,08H ;設(shè)置第3行第1列的對應(yīng)的鍵值 JMP KCODE L4: TEST AL,08H ;是否為第4行 JNZ NEXT ;不是則繼續(xù)判斷 MOV AL,0CH ;設(shè)置第4行第1列的對應(yīng)的鍵值KCODE: ADD AL,CL ;將第1列的值加上當(dāng)前列數(shù),確定按鍵值 CALL PUTBUF ;保存按鍵值PUSH AXKON: CALL DIS ;顯示刷新 CALL CLEAR ;清屏 CALL CCSCAN ;掃描按鍵,判斷按鍵是否彈起 JNZ KO

21、N ;未彈起則繼續(xù)循環(huán)等待彈起 POP AXNEXT: INC CL ;當(dāng)前檢測的列數(shù)遞增 MOV AL,CH TEST AL,08H ;檢測是否掃描到第4列 JZ KERR ;是則跳回到開始處 ROL AL,1 ;沒檢測到第4列則準備檢測下一列 MOV CH,AL JMP COLUMKERR: JMP BEGINCCSCAN PROC NEAR ;掃描是否有按鍵閉合子程序 MOV AL,00H MOV DX,MY8255_A ;將4列全選通,X1X4置0 OUT DX,AL MOV DX,MY8255_C IN AL,DX ;讀Y1Y4 NOT AL AND AL,0FH ;取出Y1Y4的反

22、值 RETCCSCAN ENDPCLEAR PROC NEAR ;清除數(shù)碼管顯示子程序 MOV DX,MY8255_B ;段位置0即可清除數(shù)碼管顯示 MOV AL,00H OUT DX,AL RETCLEAR ENDPDIS PROC NEAR ;顯示鍵值子程序 PUSH AX ;以緩沖區(qū)存放的鍵值為鍵值表偏移找到鍵值并顯示 MOV SI,3000H MOV DL,0DFH MOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;設(shè)置X1X4,選通一個數(shù)碼管 MOV AL,SI ;取出緩沖區(qū)中存放鍵值 MOV BX,OFFSET DTABLE AN

23、D AX,00FFH ADD BX,AX MOV AL,BX ;將鍵值作為偏移和鍵值基地址相加得到相應(yīng)的鍵值 MOV DX,MY8255_B OUT DX,AL ;寫入數(shù)碼管ADp CALL DALLY INC SI ;取下一個鍵值 POP DX MOV AL,DL TEST AL,01H ;判斷是否顯示完? JZ OUT1 ;顯示完,返回 ROR AL,1 MOV DL,AL JMP AGAIN ;未顯示完,跳回繼續(xù)OUT1: POP AX RETDIS ENDPPUTBUF PROC NEAR ;保存鍵值子程序 ;MOV SI,DI ;MOV SI,AL ;DEC DI ;CMP DI,2

24、FFFH ;JNZ GOBACK ;MOV DI,3005HGOBACK: RETPUTBUF ENDPDALLY PROC NEAR ;軟件延時子程序 PUSH CX MOV CX,00FFHD1: MOV AX,00FFHD2: DEC AX JNZ D2 LOOP D1 POP CX RETDALLY ENDPMYISR PROC NEAR ;中斷處理程序MYISR PUSH AXMOV SI,3000H SUB TIME,1 ;計時遞減 MOV AX,TIME ;數(shù)碼管顯示 MOVBL,10 DIVBL MOV SI,AH MOV SI+1,AL JNZ OVER CALLLIGHT

25、;計數(shù)歸零,換燈OVER: MOV AL,35H MOV AH,0EH INT 10H MOV AL,20H INT 10H MOV DX,INTR_OCW2 ;向PC機內(nèi)部8259發(fā)送中斷結(jié)束命令 MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL POP AX IRET MYISR ENDPLIGHT PROC NEARA1: CMP STATE,1;南北直行,轉(zhuǎn)南北左轉(zhuǎn) JNZA2 MOV DX,MY8255_MODE ;C口輸出設(shè)置 MOV AL,0EH OUT DX,AL MOV DX,MY8255_MODE ;C口輸出設(shè)置 MOV AL,0DH O

26、UT DX,AL MOV STATE,2 MOV AX,NB_T MOV TIME,AX JMP GOOBACKA2: CMP STATE,2;南北左轉(zhuǎn),轉(zhuǎn)東西直行 JNZA3 MOV DX,MY8255_MODE ;C口輸出設(shè)置 MOV AL,0CH OUT DX,AL MOV DX,MY8255_MODE ;C口輸出設(shè)置 MOV AL,0BH OUT DX,AL MOV STATE,3 MOV AX,DX_S MOV TIME,AX JMP GOOBACKA3: CMP STATE,3;東西直行,轉(zhuǎn)東西左轉(zhuǎn) JNZA4 MOV DX,MY8255_MODE ;C口輸出設(shè)置 MOV AL,0AH OUT DX,AL MOV

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論