微機課程設計--搶答計時器_第1頁
微機課程設計--搶答計時器_第2頁
微機課程設計--搶答計時器_第3頁
微機課程設計--搶答計時器_第4頁
微機課程設計--搶答計時器_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、東南大學自動化學院微機實驗及課程設計專業(yè)綜合設計報告姓 名: XXX 學 號: xxxxxxxx 專 業(yè): XXX 實 驗 室: 516 組 別: 同組人員: XXX 設計時間: 2011年 9月 19日 2011年 10月 17日評定成績: 審閱教師: 目 錄一專業(yè)綜合設計的目的與要求2二原理設計3三方案論證4四方案實現(xiàn)與測試8五分析與總結9附錄11一. 專業(yè)綜合設計的目的與要求1、課程設計目的(1)深入理解與運用匯編語言進行程序設計,加強對指令的靈活調用,以完成特定的課程設計課題要求;(2)將匯編程序設計與微機接口的連接相結合,從硬件角度深入理解與運用8255的并行輸入輸出功能;(3)通過

2、對實際應用中的問題分析解剖,細化為一個個小功能,分別構造微機實驗的模型。(4)加強團隊內部隊員交流、合作的能力,增強合作意識。2、課程設計的指標和要求搶答反應測試儀1)基本要求 (難度系數(shù)1.0)設計一個用于智力競賽的搶答計時器,同時能測試人的反應時間。按啟動鈕,測試開始,2 個八段碼倒計時開始(如從10 秒或20 秒倒計時),在隨機時間的內點亮搶答允許燈,參賽雙方(或三方)分別按各自的搶答按鈕參與搶答。一旦其中一位按下按鈕,相應的LED 顯示燈亮并響“嘟”的一聲,此時若其它按鈕按下均無效。若一直計數(shù)到零,無一人按下按鈕,則搶答結束(以后再按搶答鈕無效)。按測試鈕,在PC 機上顯示反應時間XX

3、.XX 秒。要求:(1) 編制1 個隨機數(shù)產(chǎn)生子程序,由隨機數(shù)決定從按啟動鈕到點亮搶答允許燈的時間(如在3 秒15 秒之間內任意變動),使被測試者對LED 亮的時間無法預見,以確保測試結果的可信;(2) 必須在見到LED 亮后按測試鈕才有效,即一直按著按鈕或提前按下按鈕無效;(3) 反應時間顯示XX.XX 秒,準確到百分之一秒。2)設計提示(1) 為確保從每次按啟動按鈕到LED 亮時間是不同的(真正隨機變化的),一開始可隨機讀取某100個RAM 單元值求和作為初始值,以后由測試到的反應時間作為下一個隨機初始值;(2) 搶答允許燈亮后立即檢測搶答按鈕狀態(tài),若未按下有效(若已按下無效),然后不斷掃

4、描按鈕狀態(tài),直到有按下代表“響應”動作。3)進一步設計要求(1)用88 點陣顯示反應時間XX.XX 秒(用紅色代表秒, 綠色代表0.01 秒,交替顯示);(2)在倒計時過程中附音樂伴奏;(3)增加測試功能,測試人對不同事物的反應(響應)時間。功能要求:按啟動鈕,測試開始,一旦紅燈亮,立即按紅燈測試鈕,一旦綠燈亮,立即按綠燈測試鈕,但黃燈亮為干擾。若按錯鈕,則顯示出錯并響“嘟”一聲。編制2 個隨機數(shù)產(chǎn)生子程序,一個決定從按啟動鈕到LED 亮的時間,另一個決定亮何種顏色燈。二. 原理設計實驗主要使用到8253和8255兩塊芯片。1、主體設計輸入為一系列開關量和時鐘,輸出為數(shù)碼管的7段碼和LED顯示

5、以及計算機屏幕信息。本次實驗使用8253和8255來實現(xiàn)搶答的功能,并且來測試選手的反應時間。數(shù)碼管用于倒計時,LED燈來顯示允許搶答以及選手對應的搶答燈,乒乓按鈕則用于主持人的各種操作和兩位選手的搶答。2、隨機數(shù)的產(chǎn)生為了使測試者對LED亮的時間無法預見,確保測試結果的可信性,程序使用隨機數(shù)(在3 秒15 秒之間內任意變動)來確定按下啟動鈕到點亮搶答允許燈的時間。為確保從每次按啟動按鈕到LED 亮時間是不同的(真正隨機變化的),一開始可隨機讀取某100個RAM 單元值求和作為初始值,以后由測試到的反應時間作為下一個隨機初始值。3、倒計時倒計時從20S開始,程序使用面板上的1MHZ脈沖,利用8

6、253進行 10000分頻得到0.01S的基本計數(shù)脈沖,然后利用計數(shù)器計數(shù),例如計到N個脈沖,則反應時間為(2000-N)*0.01S,取前兩位用于數(shù)碼管顯示倒計時,單位為S。4、數(shù)碼管顯示倒計時預置數(shù)碼管斷碼:LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共陰七段碼由于倒計時需使用兩位數(shù)碼管,故程序中將實現(xiàn)數(shù)碼管的動態(tài)顯示,電路參考實驗書中的動態(tài)顯示模塊,通過8255的輸出口C口的C0、C1控制數(shù)碼管的亮滅,將計數(shù)得到的整數(shù)時間逐個顯示出來。5、PC機顯示反應時間在檢測到測試牛按下后調用存在某內存中的反應時間進行顯示即可。主持人按下?lián)尨鹪试S鍵

7、則數(shù)碼管開始從20倒計時,一段隨機時間后,搶答允許燈亮,開始搶答,搶答到的選手對應的搶答燈亮,并且其他人不可以再做搶答。這是主持人再按下讀數(shù)按鈕,則在PC機上顯示該選手的反應時間。三. 方案論證1、系統(tǒng)實現(xiàn)硬件電路圖連接如圖2所示圖2 硬件連線圖8255設置為A口輸入,BC口輸出工作方式,A口檢測按鍵狀態(tài)。倒計時采用8253三個計數(shù)器級聯(lián)方式,計數(shù)器0接實驗箱上1MHZ脈沖,從計數(shù)器2的OUT端口輸出1HZ時鐘,設其初值為20,則從20開始倒計時,從而用硬件實現(xiàn)倒計時功能。2、程序流程圖圖1 程序流程圖3、重要模塊(1)倒計時 8253的計數(shù)器0接實驗箱上1MHZ脈沖,設初值為1000,工作方

8、式為2,OUT0產(chǎn)生頻率1KHZ低脈沖;OUT0接計數(shù)器1時鐘端,初值設為1000,工作方式為2,OUT1產(chǎn)生頻率為1HZ的第脈沖,所以計數(shù)器1表示倒計時MS;OUT1接計數(shù)器2時鐘端,初值設為20,工作方式設為2,實現(xiàn)20秒倒計時功能。 MOV DX , P8253M ; 8253初始化 MOV AL , 00111100B ;8253 CNT0=10000 方式2 B OUT DX , ALMOVAX , 1000 ;賦初值 MOV DX , P8253A OUT DX , AL MOVAL , AH OUTDX , AL MOV DX , P8253M MOV AL , 01011101

9、B ; CNT1=100 方式2 OUT DX , ALMOVAL , 1000 MOV DX , P8253B OUT DX , AL MOV DX , P8253M MOV AL , 10011101B ; CNT2=20 方式2 D OUT DX , ALMOVAL , 20H ;數(shù)碼管顯示初值為20 MOV DX , P8253C OUT DX , AL(2)隨機數(shù)產(chǎn)生為確保從每次按啟動鍵到LED燈點亮的時間是不同的,一開始可隨機讀取某100個RAM單元值求和作為初始值,這可以通過設置一個RANDOM變量,在程序初始化部分調用隨機數(shù)產(chǎn)生子程序RAND給其賦值實現(xiàn):PRORAND PRO

10、CPUSH CXPUSH SIMOV CX , 100MOV SI , 34HADDR: XOR AL,ALMOV AL , SIADDRANDOM , ALINC SILOOPADDRAND RANDOM 07HPOPSIPOPCXRETPRORAND ENDP(3)反應時間的計算在點亮搶答允許燈前提取當前時間,記錄為START_S , START_MS 。在檢測到有選手搶答后,再次提取當前時間,記錄為END_S,END_MS。兩次相減,考慮邊界條件,則得到反應時間 REACT_S,REACT_MS。按測試鍵,再將反應時間顯示在屏幕上。;取當前時間MOVDX , P8253CINAL ,DX

11、MOVAH , ALMOVC_TIME , AL AND AL , 0FH MOVLEDL , AL MOVCL , 4RORAH , CLANDAH , 0FHMOVLEDH , AH;DOS功能調用取點亮搶答燈時的精確時間 用于計算反應時間PUSH CX PUSH DX MOVAH , 2CH INT21H MOVSTART_S , DHMOVSTART_MS , DLPOPDX POPCX;計算反應時間MOVAL,END_S MOVREACT_S , ALMOVAL , START_SSUBREACT_S , ALMOVAL,END_MSMOV REACT_MS , ALADD REAC

12、T_MS , 100DEC REACT_SMOVAL , START_MSSUBREACT_MS , ALCMP REACT_MS , 100JL NDEALSUBREACT_MS , 100INC REACT_S(4)搶答時“嘟”的響聲INT 21H的功能號02H 功能描述:響鈴。入口參數(shù):AH02H。通過DL輸入ASCII碼為07。本程序用這個中斷響鈴。MOV DL,7 ;響鈴 ASCII碼為07MOV AH,2INT 21H(5)使搶答按鍵在搶答允許燈亮后按下才有效設置ENABLEA、ENABLEB變量表示選手有無搶答,如果搶答則屏蔽其答題信息。首先在搶答允許燈亮之前使其值賦0。在點亮搶

13、答燈后立即(下一行程序)檢測按鍵狀態(tài),如果此時A鍵為1,則說明A提前按鍵了,跳過檢測B,否則使其賦1,表示沒有提前按鍵。同理檢測B有無提前。在檢測A、B誰先搶答前,要先判斷對應的ENABLE值,如果為1,則繼續(xù)檢測A鍵是否為1,否則跳過再次循環(huán)檢測。四. 方案實現(xiàn)與測試調試分硬件調試和軟件調試,在實驗時,應先進行硬件調試,確保試驗箱、各個芯片、連線均完好,在進行軟件調試。硬件調試可通過一個簡單的方法進行:選取一個以前實驗調試好的標準程序運行,所選程序要用到本次試驗用到的各個部件(8255各口,8253各口,280和288口),觀察運行結果是否正常,如果正確,基本上說明硬件完好。也可DEBUG相

14、關指令測試各個部件。軟件調試可以使用TD單步跟蹤,但是在前期這樣很浪費時間,前期最好分模塊進行調試,將每個小功能分別寫成一個程序,一個一個調試,調試小程序較為簡單。確保每個模塊均能實現(xiàn)相應功能的前提下,用“滾雪球”的方式,將他們拼起來。在調試拼接程序時盡量不要改每個模塊內部代碼,因為最有可能的問題是時序和跳轉關系的問題。如果還是有問題,就可以用TD跟蹤。測試方案及結果如下表所示:測試方案實驗結果主持人按搶答允許(START)數(shù)碼管開始倒計時, 倒計時至系統(tǒng)產(chǎn)生的一個隨機數(shù),搶答允許燈亮選手搶答搶答燈亮,并響“嘟”的一聲主持人按下讀數(shù)件PC機顯示反應時間主持人按復位鍵開始新一輪的搶答按ESC退出

15、搶答狀態(tài)由上面的測試方案及結果可得:設計的程序符合課程設計的要求。五分析與總結1、分析這個實驗僅完成了基礎實驗的部分,還可以通過改進實現(xiàn)更多的功能。但是由于時間的問題就沒能完成進一步設計要求。時候實驗只能進行一次搶答,通過做了一些其它的修改終于可以進行多次搶答。由于程序框架設計的問題,程序的跳轉關系看起來有一些混亂。雖然,我僅僅完成了實驗的基本要求,但是,我覺得自己已經(jīng)學到了很多。2、總結這個課程設計實驗的驗收,意味著微機系統(tǒng)與接口這門課程的結束。通過這門課程的學習,我對硬件設計有了一個較為系統(tǒng)的認識。而實驗課程的安排則讓我們對抽象理論知識有了一個更為直觀的認識,也幫助我們加深了對這門課程的理

16、解。之前的小實驗我們緊緊是完成一些簡單的輸入輸出、中斷、一些芯片的使用、A/D及D/A轉換等待,而這次實驗將以前的小實驗結合并且加以修改,則實現(xiàn)了許多可以在現(xiàn)實生活中應用的程序。雖然實驗的過程中遇到了一些問題,很多從未見過的問題都不知道該怎么解決,但是通過查閱書籍與其他同學的交流,最終還是克服了這些問題,完成了這個實驗。程序并不完美,還有許多可以加以修改的地方,但是在實驗的過程中學到了很多知識,并且弄明白了一些以前一直并不十分理解的問題。并且,通過本次設計實驗,我基本掌握了軟硬件調試問題,從硬件角度深入理解與運用8255的并行輸入輸出功能。同時這次課程設計也讓我體會到團隊合作的重要性和在已有的

17、學習實驗任務重的情況下如何合理安排時間和協(xié)調組員工作進度的重要性。總之,這次綜合設計實驗讓我收獲很多。參考書目:1 楊素行微型計算機系統(tǒng)原理及應用,北京,清華大學出版社,2004年2 微機實驗及課程設計教程(試用版3.0),東南大學微機系統(tǒng)與接口課程組,2010年3月附錄DATA SEGMENTMESS1 DB *,0AH,0DH DB * QIANG DA QI *,0AH,0DH DB * 08009313 08009303 *,0AH,0DH DB * DU CONGYUAN WO YINGGE *,0AH,0DH DB *,0AH,0DH,$IOPORT EQU 0EC00H-280H

18、P8255A EQU IOPORT+288H;開關輸入P8255B EQUIOPORT+289HP8255CEQU IOPORT+28AHP8255M EQUIOPORT+28BHIO0832 EQU IOPORT+298HP8253AEQUIOPORT+280HP8253B EQUIOPORT+281HP8253C EQUIOPORT+282HP8253M EQUIOPORT+283HLED7EQUIOPORT+289H ;接數(shù)碼管七段輸入LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共陰七段碼START_S DB ?START_MS DB?

19、END_SDB?END_MSDB?REACT_S DB 0REACT_MS DB ?LEDHDB?LEDLDB?RANDOMDB0 C_TIMEDB?ENABLEADB?ENABLEBDB?DATA ENDSSTACKSSEGMENT STACKDB100 DUP(?)STACKSENDSCODE SEGMENTASSUME CS:CODE , DS:DATA,SS:STACKSSTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS1 ;顯示提示信息 INT 21H MOV AX , DATA MOV DS ,

20、AX MOV AX , STACKS MOVSS , AX MOVDX , P8255M ;8255初始化 MOV AL , 90H ;初始化8255控制字 A口輸入,B、C輸出 OUT DX , AL MOV DX , P8253M ;8253初始化 MOV AL , 00111100B ;8253 CNT0=10000 方式2 B OUT DX , ALMOVAX , 10000;賦初值 MOV DX , P8253A OUT DX , AL MOVAL , AH OUTDX , AL MOV DX , P8253M MOV AL , 01011101B ;8253 CNT1=100 方式

21、2 D OUT DX , ALMOVAL , 100 MOV DX , P8253B OUT DX , AL MOV DX , P8253M MOV AL , 10011101B ;8253 CNT2=20 方式2 D OUT DX , ALMOVAL , 20H MOV DX , P8253C OUT DX , AL CALL PRORAND ;產(chǎn)生初始隨機數(shù)WAIT_FOR_START : MOVAL , 00000110B MOVDX , P8255M OUTDX , ALMOVAL , 00001000B MOVDX , P8255M OUTDX , ALMOVAL , 0000110

22、0B MOVDX , P8255M OUTDX , ALMOVAL , 00001010B MOVDX , P8255M OUTDX , AL MOVAL , 0;7段LED滅 MOVDX , LED7 OUTDX , AL MOVAL , 00000100B MOVDX , P8255M OUTDX , AL;關斷7段MOVAL , 00000000B; 數(shù)字低位MOVDX , P8255M OUTDX , ALMOVAL , 00000010B ;數(shù)字高位MOVDX , P8255M OUTDX , AL MOV DX , P8255A IN AL , DX TEST AL , 01H ;

23、判斷主持人開關是復位還是啟動 JZ WAIT_FOR_START ;按下啟動鈕MOVAL , 00000111B MOVDX , P8255M OUTDX , AL;開始計數(shù);C2-GATE0,1,2MOVAL , 00000101B MOVDX , P8255M OUTDX , ALSTART_GAME : MOV DX , P8255A IN AL , DX TEST AL , 01H ;判斷主持人開關是復位還是啟動JZ WAIT_FOR_START;按下啟動鈕取當前時間MOVDX , P8253CINAL ,DXMOVAH , ALMOVC_TIME , AL AND AL , 0FH

24、MOVLEDL , AL MOVCL , 4RORAH , CLANDAH , 0FHMOVLEDH , AH ;動態(tài)顯示7段MOV BL , LEDHMOV BH , 0LEA SI , LEDADD SI , BXMOV AL , BYTE PTR SIMOV DX , LED7OUT DX , AL;開啟CS0MOVAL , 0000001B MOVDX , P8255M OUTDX , ALCALLDELAY;延時一點 ;關閉CS0MOVAL , 00000000B MOVDX , P8255M OUTDX , ALMOV BL , LEDLMOV BH , 0LEA SI , LED

25、ADD SI , BXMOV AL , BYTE PTR SIMOV DX , LED7OUT DX , AL ;開啟CS1MOVAL , 00000011B MOVDX , P8255M OUTDX , ALCALLDELAY;延時一點;關閉CS1MOVAL , 00000010B MOVDX , P8255M OUTDX , AL MOVENABLEA , 0 ;屏蔽先搶答行為 MOVENABLEB , 0 MOVBL , C_TIME SUB BL , 20NEG BL ;求 20-BL MOVDL , RANDOM CMPBL , DL ;是否到了點亮搶答燈的時間 JGLIGHT1 J

26、MPSTART_GAME LIGHT1: PUSH CX ;DOS功能調用取點亮搶答燈時的精確時間 用于計算反應時間 PUSH DX MOVAH , 2CH INT21H MOVSTART_S , DH MOVSTART_MS , DL POPDX POPCXLIGHT:MOVAL , 00001001B MOVDX , P8255M OUTDX , ALMOVDX , P8255A ;檢測開關狀態(tài)INAL , DX TESTAL , 01000000B;如果燈亮的時候是沒有按下就開啟搶答使能JNZNEXT1MOVENABLEA , 1NEXT1: TESTAL , 00100000B JNZ

27、NEXT2MOVENABLEB , 1NEXT2:CMPENABLEA , 1;如果搶答使能而且按下了搶答鍵JNENEXTBTEST AL , 01000000BJZNEXTBMOVAL , 00001101B ;點亮A搶答燈MOVDX , P8255M OUTDX , AL MOV DL,7 ;響鈴 ASCII碼為07MOV AH,2INT 21HJMPQUITNEXTB:CMPENABLEB , 1JNENEXT;B搶到了,亮L7TEST AL , 00100000BJZNEXTMOVAL , 00001111B ;點亮B搶答燈MOVDX , P8255M OUTDX , AL MOV D

28、L,7 ;響鈴 ASCII碼為07MOV AH,2INT 21HJMPQUITSKIP1: JMP WAIT_FOR_START;跳板NEXT:;A、B都搶答無效或A、B都沒搶答 MOV DX , P8255A IN AL , DX TEST AL , 01H ;判斷主持人開關是復位還是啟動 JZ SKIP1;取當前時間MOVDX , P8253CINAL ,DXMOVAH , ALMOVC_TIME , AL AND AL , 0FH MOVLEDL , AL MOVCL , 4RORAH , CLANDAH , 0FHMOVLEDH , AH ;7段燈掃描不能停止MOV BL , LEDH

29、MOV BH , 0LEA SI , LEDADD SI , BXMOV AL , BYTE PTR SIMOV DX , LED7OUT DX , AL;開啟CS0MOVAL , 0000001B MOVDX , P8255M OUTDX , ALCALLDELAY;延時一點 ;關閉CS0MOVAL , 00000000B MOVDX , P8255M OUTDX , ALMOV BL , LEDLMOV BH , 0LEA SI , LEDADD SI , BXMOV AL , BYTE PTR SIMOV DX , LED7OUT DX , AL ;開啟CS1MOVAL , 000000

30、11B MOVDX , P8255M OUTDX , ALCALLDELAY;延時一點;關閉CS1MOVAL , 00000010B MOVDX , P8255M OUTDX , ALJMPLIGHT;繼續(xù)檢測按鍵,是否有人搶答QUIT:PUSH CX PUSHDX MOVAH , 2CH INT21H MOVEND_S , DHMOVEND_MS , DLPOPDX POPCXMOV AL,END_S ;計算反應時間MOV REACT_S , ALMOV AL , START_SSUB REACT_S , ALMOV AL,END_MSMOV REACT_MS , ALADD REACT_MS , 100DEC REACT_SMOV AL , START_MSSUB REACT_MS , ALCMP REACT_MS , 100JL NDEALSUB REACT_MS , 100INC REACT_SNDEAL:MOVDX , P8

溫馨提示

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

評論

0/150

提交評論