版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告姓 名: 學(xué) 號(hào): 專 業(yè): 自動(dòng)化學(xué)院 實(shí) 驗(yàn) 室: 計(jì)算機(jī)硬件實(shí)驗(yàn)室 組 別: 無(wú) 同組人員: 無(wú) 設(shè)計(jì)時(shí)間: 2013 年 5 月 17 日 2013 年 6 月 8日評(píng)定成績(jī): 審閱教師: 目 錄一 課程設(shè)計(jì)目的與要求3二 方案論證于原理設(shè)計(jì)3三 原理闡述及設(shè)計(jì)4四 發(fā)難實(shí)現(xiàn)與測(cè)試6五 分析與總結(jié)7六 附錄.8一. 課程設(shè)計(jì)目的與要求設(shè)計(jì)目的:微機(jī)課程綜合設(shè)計(jì)用于檢驗(yàn)和提高學(xué)生在原理與接口綜合應(yīng)用方面分析問(wèn)題與解決問(wèn)題的能力,同時(shí)也給學(xué)生提供更多、更好的訓(xùn)練機(jī)會(huì),課程給出了10 道微機(jī)硬件應(yīng)用綜合測(cè)試題。為完成每道測(cè)試題,至少需要選用TPC 微機(jī)實(shí)驗(yàn)裝置中
2、三部分以上的硬件電路(還需將它們有機(jī)組合起來(lái))并編制相應(yīng)的應(yīng)用。通過(guò)試驗(yàn)還能夠讓學(xué)生更好的了解所學(xué)知識(shí)在實(shí)際控制中的運(yùn)用,增加對(duì)本專業(yè)的認(rèn)識(shí)和學(xué)習(xí)興趣。設(shè)計(jì)要求:1)基本要求 (難度系數(shù)1.0)L7、L6、L5 作為南北路口的交通燈,L2、L1、L0 作為東西路口的交通燈。編程使六個(gè)燈按交通燈變化規(guī)律亮滅。要求進(jìn)行周期性重復(fù)控制:(1) 南北路口的綠燈、東西路口的紅燈同時(shí)亮20 秒;(2) 南北路口的黃燈閃爍3 秒,同時(shí)東西路口的紅燈閃3 秒;微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)教程 (3) 南北路口的紅燈、東西路口的綠燈同時(shí)亮90 秒;(4) 南北路口的紅燈、同時(shí)東西路口的黃燈亮閃爍3 秒;(5) 在8 段L
3、ED 上同步顯示倒計(jì)時(shí)。2)設(shè)計(jì)提示(1) 要求精確計(jì)時(shí),采用實(shí)驗(yàn)系統(tǒng)8253 定時(shí)器中斷或主機(jī)8253 定時(shí)器;(2) 利用軟件定時(shí)器。3)進(jìn)一步設(shè)計(jì)要求(1) 88 點(diǎn)陣顯示當(dāng)前車(chē)流運(yùn)行方向, 上下對(duì)應(yīng)南北,左右對(duì)應(yīng)東西。綠色箭頭對(duì)應(yīng),紅色箭頭對(duì)應(yīng)黃燈狀態(tài);(2) 允許南北向路口設(shè)置人工按鈕, 請(qǐng)求行人提前過(guò)街, 如東西綠燈已亮40 秒則按鈕后10 秒南北綠燈亮,否則按鈕后40 秒南北綠燈亮;(3) 考慮其他復(fù)雜情況。二.方案論證與原理設(shè)計(jì)1)在考慮程序的整體要求和框架后,決定把程序總共分為四個(gè)模塊,分別為交通燈顯示模塊,數(shù)碼管顯示的模塊,中斷程序模塊,中斷初始化模塊。交通燈顯示模塊是整個(gè)
4、程序的主模塊,其主要功能就是判斷交通狀態(tài)的運(yùn)行方向和顯示模式,還有顯示的時(shí)間長(zhǎng)短,并且還有人工緊急按鈕的功能。顯示模塊則由交通燈狀態(tài)來(lái)判斷并在數(shù)碼管上顯示倒計(jì)時(shí)。中斷則主要用作計(jì)時(shí)。中斷初始化程序用來(lái)初始化9054和一些基本的置取中斷向量的功能。2)各模塊的實(shí)現(xiàn)交通燈模塊通過(guò)一個(gè)全局變量irq_times來(lái)計(jì)時(shí),通過(guò)中斷服務(wù)子程序來(lái)改變它,在該模塊中通過(guò)判斷該變量的值去選擇程序流程,并結(jié)合開(kāi)關(guān)量來(lái)判斷人工按鈕有無(wú)按下。并在不同 流程去顯示交通燈和流向問(wèn)題。并且調(diào)用數(shù)碼管顯示程序。 數(shù)碼管顯示模塊,通過(guò)irq_times來(lái)判斷并顯示。中斷服務(wù)模塊每調(diào)用一次說(shuō)明已經(jīng)過(guò)去一秒鐘,則irq_times
5、變化一次1可編程定時(shí)/計(jì)數(shù)器8253定時(shí)/計(jì)數(shù)器8253主要是用于定時(shí)1s,觸發(fā)中斷把全局變量減一。電路連線是CLOCK0接1MHZ,分頻后頻率為1KHz,OUT0接中斷CLKCK1,分頻后為1HZ,OUT1接IRQ,每一秒觸發(fā)一次中斷,GATE0,GATE1接5v。計(jì)數(shù)器的初值應(yīng)都是1000;28255并行接口單元8255主要是用于數(shù)碼管和發(fā)光二極管的數(shù)據(jù)輸出。所以用8255A口高三位和低三位接6個(gè)發(fā)光二極管,B口接數(shù)碼管的數(shù)據(jù)端,C口低兩位接數(shù)碼管位控制,最高位接開(kāi)關(guān)K13.點(diǎn)陣使用由于提高要求需要顯示上下箭頭,所以使用8*8點(diǎn)陣顯示箭頭。由地址譯碼電路的地址控制點(diǎn)陣。4 微機(jī)控制器程序在
6、純Dos下運(yùn)行三.詳細(xì)(機(jī)理)設(shè)計(jì)1) 軟件流程圖(總流程圖)本設(shè)計(jì)的軟件設(shè)計(jì)的思路:通過(guò)軟件編程使8253輸出定時(shí)信號(hào)申請(qǐng)中斷,在中斷服務(wù)程序中改變?nèi)钟?jì)數(shù)變量。在主程序體中通過(guò)判斷全局變量的值來(lái)控制程序流向。中斷初始化8255,8253初始化Irq_times賦值36Irq_times26?Irq_times23 狀態(tài)1Irq_times3狀態(tài)2PC7=1?Irq_times13?Irq_times=3Irq_times=8Irq_times3Irq_times0狀態(tài)4狀態(tài)3有無(wú)按鍵退出圖表 1交通燈系統(tǒng)總流程圖2) 中斷模塊進(jìn)入中斷后,關(guān)閉中斷,然后壓棧,顯示提示信息,最后處理數(shù)據(jù)算法實(shí)
7、現(xiàn):利用irq_times全局變量減一來(lái)實(shí)現(xiàn)倒計(jì)時(shí)。3) LED顯示程序:本設(shè)計(jì)只用到了2個(gè)LED,只要將時(shí)間轉(zhuǎn)換為相應(yīng)的段碼。先輸出位碼,再輸出段碼,循環(huán)輸出就可以動(dòng)態(tài)顯示。將LED作偏移碼,利用XLAT,很簡(jiǎn)單就可以實(shí)現(xiàn)譯碼。 VCC4) 硬件連接圖 IRQ/CS CLK0 GATE0 OUT0 CLK1 GATE1 OUT18253/CS PA0-7 PB0-7 PC7 PC0-182551MHz288H280HLED燈 數(shù)碼管數(shù)碼管位選四. 方案實(shí)現(xiàn)與測(cè)試(或調(diào)試)首先根據(jù)設(shè)計(jì)思路,選擇采用8253和8255芯片,使用較為復(fù)雜的中斷。然后調(diào)試硬件,確定位選、芯片等工作正常。這可以通過(guò)手
8、動(dòng)輸入控制字,進(jìn)行簡(jiǎn)單輸入輸出實(shí)現(xiàn)。然后確定8253、8255芯片的地址,開(kāi)始軟件編程。軟件編程首先完成整體的邏輯框架,然后具體編寫(xiě)子程序。剛開(kāi)始時(shí)采用軟件延時(shí),優(yōu)先調(diào)試8255。采用8255的A、B口的0方式,A、B口的變化將反映在八段碼和LED燈上。子程序的編寫(xiě)即將設(shè)計(jì)好的算法轉(zhuǎn)換為程序流,用程序流的方向?qū)崿F(xiàn)選擇,用調(diào)用子程序?qū)崿F(xiàn)具體操作。 然后加入8253的硬件中斷加以調(diào)整全局計(jì)數(shù),將OUT1連至IRQ,通過(guò)查詢PC7口的狀態(tài)進(jìn)行判斷人工按鈕有無(wú)按下。由于前面8255已經(jīng)調(diào)好,所以8253的調(diào)試比較順利。 最終將全部硬件連線接好,進(jìn)行整機(jī)聯(lián)調(diào)。當(dāng)中發(fā)現(xiàn)許多問(wèn)題,有編譯問(wèn)題,但在調(diào)整后都編
9、譯通過(guò)了,對(duì)軟件進(jìn)行單步,這時(shí)由于有現(xiàn)象,進(jìn)行軟件調(diào)試的時(shí)候也更有針對(duì)性。通過(guò)設(shè)置斷點(diǎn),逐步跟蹤寄存器值,調(diào)試時(shí)發(fā)現(xiàn)在中斷程序返回時(shí)始終是不對(duì)的,這導(dǎo)致一運(yùn)行程序就會(huì)跑飛。無(wú)論如何都排查不了這個(gè)問(wèn)題,一般這種問(wèn)題都是由于堆棧不平衡引起的,但檢查程序并未發(fā)現(xiàn)有堆棧錯(cuò)誤。最終在一個(gè)偶然的瞬間我把主程序中的幾句用來(lái)顯示提示信息的語(yǔ)句刪除后發(fā)現(xiàn)程序這次可以正確運(yùn)行了,最后發(fā)現(xiàn)在中斷外面運(yùn)用INT21功能號(hào)為9的中斷顯示字符串會(huì)導(dǎo)致中斷返回不了的問(wèn)題。在最后調(diào)好這問(wèn)題后運(yùn)行程序達(dá)到了理想的目的與與要求,實(shí)現(xiàn)的拓展功能。 實(shí)物連接圖:五分析與總結(jié)1)題目要求要用到8255經(jīng)確定時(shí),所以考慮到用中斷來(lái)實(shí)現(xiàn)這
10、個(gè)功能要求。3)由于想到各種顯示輸出需要很多鎖存,而8255卻可以很好地解決這個(gè)問(wèn)題,于是就用8255實(shí)現(xiàn),而且8255C口的高四位與低四位輸入輸出不一樣,這位人工按鈕提供方便。2) 編程中遇到的很多是邏輯問(wèn)題.另一個(gè)遇到的問(wèn)題就是跳轉(zhuǎn)語(yǔ)句超出范圍的錯(cuò)誤,這個(gè)錯(cuò)誤的解決是通利用兩個(gè)跳轉(zhuǎn)實(shí)現(xiàn)(一個(gè)條件一個(gè)無(wú)條件)。3) 我的主程序是用來(lái)控制程序流向的,但其實(shí)也包括了程序顯示的一部分任務(wù),其中不同的流向中就用不同的顯示方案,這樣也簡(jiǎn)化了顯示子程序的任務(wù)。使得程序編寫(xiě)比較方便和控制。4) 對(duì)終端的初始化是主要參考實(shí)驗(yàn)書(shū)上的中斷試驗(yàn)程序。5)中斷調(diào)試時(shí)由于要進(jìn)入純DOS所以比較麻煩,所以調(diào)試也比較耗時(shí)
11、間,最主要的問(wèn)題是該種中斷問(wèn)題很少遇到,要不是最后自己出于簡(jiǎn)化程序來(lái)找錯(cuò)誤的思想,可能就根本發(fā)現(xiàn)不了在中斷的外邊用顯示功能回事中斷的返回出問(wèn)題,導(dǎo)致程序跑飛掉。6)交通燈的這個(gè)題目狀態(tài)還好不多,但由于中斷的引入使得程序變得復(fù)雜,但其實(shí)也就是初始化和退出程序比較復(fù)雜,而對(duì)于主程序來(lái)說(shuō)沒(méi)有多大影響,還有就是對(duì)調(diào)試用較高的要求。這個(gè)題目做下來(lái)還是有不少收獲的,至少經(jīng)驗(yàn)上要多了一些。參考書(shū)目:1 楊素行等,微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用,北京,清華大學(xué)出版社,2009年2 東南大學(xué)微機(jī)系統(tǒng)與接口課程組,微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)教程試用版3.0,南京,東南大學(xué)出版社,2010年附錄代碼程序ioport equ 0e
12、c00h-0280hioport_82530 equ ioport+0280h ;8253io地址ioport_82531 equ ioport+0281hioport_82533 equ ioport+0283hio82550 equ ioport+0290hio82551 equ ioport+0291h;8255io地址io82552 equ ioport+0292hio82553 equ ioport+0293hioportCequ ioport+0298hioportRrequ ioport+02a0h;點(diǎn)陣控制地址ioportRy equ ioport+02a8hint_vect
13、EQU 72H ;中斷0-7 的向量為:08h-0fh,中斷8-15 的向量為:70h-77hirq_mask_2_7 equ 11111011b ;中斷掩碼,中斷0-7 時(shí)從低至高相應(yīng)位為零,中斷8-15 時(shí)第2 位為零irq_mask_9_15 equ 11111011b;中斷0-7 時(shí)全一,中斷8-15 時(shí)從低至高相應(yīng)位零ioport_cent equ 0e800h ;tpc 卡中9054 芯片的io 地址data segmentcsreg dw ?ipreg dw ? ;舊中斷向量保存空間irq_times dw ? ;中斷計(jì)數(shù)buffer0 db 00h,01h,02h,03h,04
14、h,05h,06h,07hbuffer1 db 10h,38h,10h,10h,10h,20h,7eh,20hgewei dw 0shiwei dw 0Led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;碼msg1 db 0dh,0ah,display,0dh,0ah,$msg3 db 0dh,0ah,interrupt ! ,0dh,0ah,$data endsstacks segment stackdb 256 dup (?)stacks endscode segmentassume cs:code,ds:data,ss:stacks,es:dat
15、amain proc far ;Enable Local Interrupt Inputstart:climov ax,datamov ds,axmov es,axmov ax,stacksmov ss,axmov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054 芯片io 口,使能中斷in ax,dxor ax,0900hout dx,axmov al,int_vect ;保存原中斷向量mov ah,35hint 21hmov ax,esmov csreg,axmov ipreg,bxmov ax,cs ;設(shè)置新中斷向量mov ds,axmov dx,offset int_
16、procmov al,int_vectmov ah,25hint 21hin al, 21h ;設(shè)置中斷掩碼and al, irq_mask_2_7out 21h, alin al, 0a1hand al, irq_mask_9_15out 0a1h, almov ax,datamov ds,ax;以上為中斷初始化部分;8253初始化部分mov dx,ioport_82533mov al,36hout dx,almov dx,ioport_82530mov ax,1000out dx,almov al,ahout dx,almov dx,ioport_82533mov al,76hout dx
17、,almov dx,ioport_82531mov ax,1000out dx,almov al,ahout dx,al;8255初始化mov dx,io82553mov al,88hout dx,alsti;開(kāi)中斷beg: mov irq_times,36go1:cmp irq_times,26 jl go2mov ax,irq_timessub ax,26 call dispmov al,24h;南北綠燈和東西紅燈亮10秒mov dx,io82550out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d1:mov al,simov bx,
18、offset buffer1;箭頭顯示橫向紅,列項(xiàng)綠xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRyout dx,alnext1:mov dx,ioportRrshl,ahinc sipush cxmov cx,0fffhloop1:loop 1oop1pop cxloop d1jmp lllgo2:cmp irq_times,23 jl go3mov ax,irq_timessub ax,23 call leddispmov al,0mov dx,io82550 out dx,almov dx,iopo
19、rtCout dx,al cmp irq_times,24 je turn jmp go2turn: mov al,44h;南北黃燈和東西紅燈閃3秒mov dx,io82550out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d2:mov al,simov bx,offset buffer1;箭頭閃爍顯示橫向紅,列項(xiàng)綠xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRyout dx,alnext2:mov dx,ioportRrshl,ahinc sipu
20、sh cxmov cx,0fffhloop2:loop 1oop2pop cxloop d2 jmp lllbeg_mid:jmp beggo3:cmp irq_times,3 jl go4mov ax,irq_times sub ax,3 call leddisp ;南北紅燈東西綠燈亮20秒 mov al,81h mov dx,io82550 out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d3:mov al,simov bx,offset buffer1;箭頭顯示橫向綠,列項(xiàng)紅xlatmov dx,ioportCout dx,almo
21、v al,ahcmp 20h,ahjb next0mov dx,ioportRrout dx,alnext3:mov dx,ioportRyshl,ahinc sipush cxmov cx,0fffhloop3:loop 1oop3pop cxloop d3 mov dx,io82553;中間人工按鍵時(shí)可以調(diào)整 in al,dx and al,80h cmp al,80h je qq ;按下時(shí)跳到qq jmp lllqq: cmp irq_times,13 jl qq1 mov irq_times,8 ;根據(jù)題目要求東西已亮十秒則三秒后南北綠亮;則8秒后亮 jmp goonqq1: mov
22、irq_times,3 jmp goongoon: cmp irq_times,3 jl go4 mov ax,irq_times sub ax,3 call leddisp mov al,81h mov dx,io82550 out dx,almov cx,0008hmov ah,01hmov si,offset buffer0dgoon:mov al,simov bx,offset buffer1;箭頭顯示橫向綠,列項(xiàng)紅xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRrout dx,alnextgoon
23、:mov dx,ioportRyshl,ahinc sipush cxmov cx,0fffhloopgoon:loop 1oopgonpop cxloop dgoon mov ah,1 int 16h jnz exit ;南北紅燈和東西綠燈亮20 jmp goongo4:cmp irq_times,0 jl beg_midmov ax,irq_times call leddispmov al,0mov dx,io82550 ;南北紅燈和東西黃燈閃3out dx,almov dx,ioportCout dx,al cmp irq_times,1 je turn1 jmp go4turn1: m
24、ov al,82hmov dx,io82550out dx,almov cx,0008hmov ah,01hmov si,offset buffer0d4:mov al,simov bx,offset buffer1;箭頭顯示橫向綠,列項(xiàng)紅xlatmov dx,ioportCout dx,almov al,ahcmp 20h,ahjb next0mov dx,ioportRrout dx,alnext4:mov dx,ioportRyshl,ahinc sipush cxmov cx,0fffhloop4:loop 1oop4pop cxloop d4 jmp llllll: mov ah,1
25、 int 16h jnz exit ;按任意鍵退出 jmp go1exit: climov bl, irq_mask_2_7 ;恢復(fù)中斷掩碼not blin al, 21hor al, blout 21h, almov bl, irq_mask_9_15not blin al, 0a1hor al, blout 0a1h, almov dx,ipreg ;恢復(fù)原中斷向量mov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054 芯片io 口,關(guān)閉中斷in ax,dxand ax,0f7ffhout dx,axmov ax,4c00hint 21hmain endpint_proc proc far ;中斷處理程序clipush dspush axpush dxmov ax,datamov ds,axmov dx,offset msg2mov ah,09hint 21hdec irq_times;倒計(jì)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年房產(chǎn)認(rèn)購(gòu)訂金合同
- 2025年粵教新版八年級(jí)地理上冊(cè)月考試卷含答案
- 2025年滬科版選擇性必修1歷史上冊(cè)月考試卷
- 2025年人教A新版九年級(jí)歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年滬科版選修歷史上冊(cè)月考試卷含答案
- 2025年人教新課標(biāo)九年級(jí)語(yǔ)文下冊(cè)階段測(cè)試試卷含答案
- 2025年粵教版高三歷史上冊(cè)月考試卷含答案
- 二零二五版嬰幼兒奶粉跨境電商進(jìn)口合同范本4篇
- 二零二五年度農(nóng)藥企業(yè)信息化管理系統(tǒng)開(kāi)發(fā)合同
- 二零二五版門(mén)窗行業(yè)綠色制造體系建設(shè)合同4篇
- 河道綜合治理工程技術(shù)投標(biāo)文件
- 專題24 短文填空 選詞填空 2024年中考英語(yǔ)真題分類匯編
- 再生障礙性貧血課件
- 產(chǎn)后抑郁癥的護(hù)理查房
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 電能質(zhì)量與安全課件
- 醫(yī)藥營(yíng)銷團(tuán)隊(duì)建設(shè)與管理
- 工程項(xiàng)目設(shè)計(jì)工作管理方案及設(shè)計(jì)優(yōu)化措施
- 圍場(chǎng)滿族蒙古族自治縣金匯螢石開(kāi)采有限公司三義號(hào)螢石礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 小升初幼升小擇校畢業(yè)升學(xué)兒童簡(jiǎn)歷
- 資金支付審批單
評(píng)論
0/150
提交評(píng)論