競賽搶答器課程設計微機接口課程設計報告sw_第1頁
競賽搶答器課程設計微機接口課程設計報告sw_第2頁
競賽搶答器課程設計微機接口課程設計報告sw_第3頁
競賽搶答器課程設計微機接口課程設計報告sw_第4頁
競賽搶答器課程設計微機接口課程設計報告sw_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、合肥學院計算機科學與技術系微機原理與接口技術課程設計報告20082009學年第2學期課程微機原理與接口技術課程設計名稱競賽搶答器學生姓名儲醒之學號0604032028專業(yè)班級計算機科學與技術專業(yè)(06網(wǎng)工2)指導教師肖連軍2009 年 2月一、題義分析及解決方案1.題義需求分析題目要求利用8086系統(tǒng)接口電路設計一個可供八人競賽使用的搶答器,并顯示競答者編號(18)。根據(jù)題義可知:本設計是要設計一個能夠提供給8個人使用的競賽搶答裝置,能夠使得搶答者的編號,顯示的裝置。首先是主持人發(fā)出搶答允許信號,當搶答者收到信號后,便立刻進行搶答,然后通過裝置,將最先搶答者的編號顯示出來。根據(jù)以上分析,提出以

2、下幾個問題:主持人如何發(fā)出搶答的信息?競賽者如何進行搶答?如何將分辨搶答的順序,誰是最先搶答的?如何顯示搶答者的編號?搶答的總體規(guī)則是什么?怎樣控制?2.解決問題的思路及其方法1)硬件部分(1)主控裝置,由主持人控制決定搶答有效與無效,共兩個量,因而考慮到邏輯開關、微動開關和小鍵盤,主控完成的是保持有效與無效兩種狀態(tài),而微動開關是輸入一個脈沖,故不符合要求,小鍵盤雖然可以實現(xiàn),但相對復雜,不便于實現(xiàn)。邏輯開關能很好地符合要求,優(yōu)點是簡單、易操作。本實驗使用新實驗箱,芯片8255的A、B、C口均被使用,故不能實現(xiàn)該主控功能,但設計思想中應包含此方面,以便設計完備。(2)搶答裝置,由競賽選手搶答使

3、用,每一個選手在搶答時均有兩種選擇情況,搶答或不搶答,同主控裝置道理一樣,“1”表示搶答動作發(fā)生,“0”表示不搶答,可見,邏輯開關可方便實現(xiàn),微動開關同樣滿足要求。然而現(xiàn)實生活中,更合理的應采用微動開關按鍵式完成搶答動作,以符合現(xiàn)實要求。(3)顯示裝置,可選擇LCD或LED,由于這里的輸出結果是選手編號,比較簡單,用LED即可實現(xiàn),用LCD也可以實現(xiàn),但相對復雜,且LCD價格高,故選LED。實現(xiàn)時可采用一人一個發(fā)光二極管,但這樣在搶答時不便于觀察與先后比較,所以選用七段LED數(shù)碼顯示最后竟比較先后處理過的數(shù)字編號。(4)規(guī)則設定,對于規(guī)則要用到可編程芯片,因為搶答結果的多種情況需要作不同的處理

4、,要有硬件實現(xiàn)。由于是八位選手在同一個時間段均可搶答,輸入搶答信號,所以應并行而不是串行??删幊绦酒?253、8251A以及8255等,8253主要用于定勢和計時器用,它的6種工作方式多以觸發(fā)方式,故不適用。8251A用于通信借口,并且是串行的,也不可用。而8255恰很好的滿足需求,是并行接口芯片,所以選用8255。(5)接口實現(xiàn),8086CPU與8255之間的數(shù)據(jù)總線經(jīng)數(shù)據(jù)總線收發(fā)器相連,地址線經(jīng)地址鎖存器相連,八個邏輯開關K0K7分別連接到8255的輸入口PA0PA7,輸出口PB0PB7連接到七段LED顯示器。在8255與LED連接時,要留心參數(shù)是否匹配,能否成功驅動LED顯示,LED的

5、標準編碼及顯示數(shù)字如下表所示:表1-1 LED的標準編碼數(shù)字DPgfEdcba二進制編碼(字形)0001111113FH10000001106H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FHE0111100179H通過上表,我們需要用到的編碼是0、1、2、3、4、5、6、7、8、E, LED完全符合要求,每一位選手的編號,顯示裝置采用七段LED二極管顯示八位選手的編號,即為搶答結果。2)軟件部分對于設計中的搶答規(guī)則由軟件來實現(xiàn),考慮到8位選手的各自按下?lián)尨鹧b置與自己的編號間

6、的對應關系,8個信號有可能在同一時間段內(nèi)有兩個或以上信號輸入,各自之間在時間上不會牽制,即涉及并行的方式輸入,后要對輸入的開關量進行處理、輸出,連接至LED顯示,其中需有一主控裝置,據(jù)此結合課程的所學的相關知識可知,使用可編程并行接口芯片8255能夠滿足要求,實現(xiàn)相關功能。實現(xiàn)時,可設置8255的A口作為八個輸入信號,用邏輯電平開關K0K7代表搶答裝置的搶答開關18號。當某個微動開關置“0”時,顯示有效,當有兩個或以上選手同時按下?lián)尨鹌鲿r,信號無效,顯示“E”。將B口輸出信號與7段LED的adp連接,即可用LED顯示器輸出搶答結果。在實驗中需設置C口位控制選用新實驗箱的八個LED顯示中的一個。

7、二、硬件設計1) 8255芯片(1) 8255引腳圖8255是可編程并行接口,內(nèi)部有3個相互獨立的8位數(shù)據(jù)端口,即A口口和口。三個端口都可以作為輸入端口或輸出端口??谟腥N工作方式:即方式、方式和方式,而口只能工作在方式或方式下,而口通常作為聯(lián)絡信號使用。8255的工作只有當片選CS有效時才能進行。而控制邏輯端口實現(xiàn)對其他端口的控制。(2) CPU接口1.數(shù)據(jù)總線緩沖器這是一個8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫控制邏輯控制的。這個緩沖器是8255A與CPU數(shù)據(jù)總線的接口。2.讀/寫控制邏輯它與CPU的6根控制線相連,控制8255A內(nèi)部的各種操作。控制線RESET用來使8255A復位。和地址線A

8、1及A0用于芯片選擇和通道尋址。控制線用來決定8位內(nèi)部和外部數(shù)據(jù)總線上信息傳送的方向,即控制把CPU的控制命令或輸出的數(shù)據(jù)送到相應的通道,或把狀態(tài)信息或輸入數(shù)據(jù)送到CPU。8255A的讀/寫控制邏輯的作用,是從CPU的地址和控制總線上接受輸入的信號,轉變成各種命令送到A組或B組控制電路進行相應的操作。 (3) 8255A的引腳信號1.與外設相連的PA7PA0:A口數(shù)據(jù)信號線。PB7PB0:B口數(shù)據(jù)信號線。PC7PC0:C口數(shù)據(jù)信號線。2.與CPU相連的RESET:復位信號。當此信號來時,所有寄存器都被清除。同時三個數(shù)據(jù)端口被自動置為輸入端口。D7D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。C

9、S:片選信號。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配若于低位地址組成各種芯片選擇碼,當這幾位地址組成某一個低電平,于8255A被選中。只有當有效時,讀信號寫才對8255進行讀寫。 RD:讀信號。當此信號有效時,CPU可從8255A中讀取數(shù)據(jù)。WR:寫信號。當此信號有效時,CPU可向8255A中寫入數(shù)據(jù)。A1、A0:端口選擇信號。8255A內(nèi)部有3個數(shù)據(jù)端口和1個控制端口,共4個端口。規(guī)定當A1、A0:為00時,選中A端口;為01時,選中B端口;為10時,選中C端口;為11時,選中控制口。表2-1 8255A的技術參數(shù)標識符最小最大測試條件輸入低電平(VIL)-0.5V0.8V輸入高電平(VIH)

10、2.0V5V輸出低電平(VOL)DB0.45VIOL=2.5mA輸出低電平(VOL)PER045VIOL=1.7mA輸出高電平(VOH)DB24VIOH=-400A輸出高電平(VOH)PER24VIOH=-200A驅動電流-1.0mA-4.0mAREXT=750,VEXT=1.5V供應電流120 mAIIL(INPUT LOAD CURRENT±10AVIN=0V5VIOFL(Output float leakage±10AVOUT=0.455V輸入最低電壓:min -0.5V,max 0.8 V,輸入最高電壓:2.0 V。輸出最低電壓:0.45 V,輸出最高電壓:2.4

11、V。(3)8255A的方式控制字D7 D6 D5 D4 D3 D2 D1 D0100100001:工作方式 A口方式0輸入 B口方式0輸出 C口高4位輸出 C口低4位輸出圖2-1 8255A的方式控制字方式0的工作特點是通常不用聯(lián)絡信號,不使用中斷,三個通道中的每一個都有可以由程序選定為輸入或輸出。其功能為:兩個8位通道:通道A、B。兩個四位通道:通道C高四位和低四位;任何一個通道可以作輸入/輸出;輸出是鎖存的;輸入是不鎖存的;在方式0時各個通道的輸入/輸出可有16種不同的組合。2)顯示器件LED(1) LED在本設計中的作用LED功能分析如下:1.物理構造:LED發(fā)光二級管,采用砷化鎵、鎵鋁

12、砷、和磷化鎵等材料制成,其內(nèi)部結構為一個PN結,具有單向導電性。2.工作原理:當在發(fā)光二極管PN結上加正向電壓時,PN結勢壘降低,載流子的擴散運動大于漂移運動,致使P區(qū)的空穴注入到N區(qū),N區(qū)的電子注入到P區(qū),這樣相互注入的空穴與電子相遇后會產(chǎn)生復合,復合時產(chǎn)生的能量大部分以光的形式出現(xiàn)。3.數(shù)字成像:將七個發(fā)光管進行組合,排列成數(shù)字圖形8,再根據(jù)需要控制七個管的亮與滅,即可顯示出定義數(shù)字。LED技術參數(shù)如下:1.發(fā)光二極管的壓降一般為1.52.0 V,其工作電流一般取1020 mA為宜。2.發(fā)光二極管的發(fā)光顏色有:紅色光、黃色光、綠色光、紅外光等。3.發(fā)光二極管應用電路有四種,即直流驅動電路、

13、交流驅動電路、脈沖驅動電路、變色發(fā)光驅動電路。表2-2 LED顯示管段選碼編碼表數(shù)字DPgfedcba二進制編碼(字形)0001111113FH10000001106H2010110115BH3010011114FH40110011066H5011011016DH6011111017DH70000011107H8011111117FHE0111100179H圖2-2 LED數(shù)碼管及其框圖上面兩圖分別為外形圖和原理圖,當七段數(shù)碼管點亮其中幾段可顯示數(shù)字和簡單的字符,將七段數(shù)碼管負極連接到一起稱為公共端,而發(fā)光二極管的正極則分別由引腳引出,便于控制哪個發(fā)光二極管點亮。由于將8個發(fā)光二極管負極全部連

14、接在一起,稱為共陰極數(shù)碼管,還有將8個發(fā)光二極管的正極連接在一起,故稱之為共陽極數(shù)碼管。本次實驗用的數(shù)碼管需動態(tài)掃描顯示,其接口電路將所有數(shù)碼管的筆畫控制段與ah同名端連在一起,接到一個并行端口,每個公共極COM端由獨立的I/O線控制,CPU向字模輸出口送出字形碼時,所有數(shù)碼管接收到相同的字形碼,究竟哪個數(shù)碼管顯示,取決于每個LED的COM端,所謂動態(tài)掃描,就是顯示一位信息時,其他位不能顯示,必須采用分時方法,輪流控制COM端。3) 微動開關(1)微動開關及其編碼16 / 16文檔可自由編輯打印開關高電平:+5V、低電平:0V表2-4微動開關及其編碼編碼數(shù)字編碼數(shù)字00000100080001

15、110019001021010A001131011B010041100C010151101D011061110E011171111F4) 硬件總邏輯圖及其說明圖2-3 硬件電路圖說明:8086的數(shù)據(jù)線接8255A的數(shù)據(jù)線,8086的地址線形成地址通過譯碼器與8255A的片選信號相連。8086的分別接8255A的A0,A1。PA0PA7接微動開關K0K7。PB0PB7接顯示管的adp,PC0PC7接LED顯示裝置,用于位選擇。3、控制程序說明3.1控制程序設計思路說明1) 定義十六進制數(shù)字符的七段代碼表。2) 初始化8255A的工作方式。3) 置LED燈全滅。4) 輸出顯示零表示等待搶答。5)

16、讀A口狀態(tài),若有兩個或兩個以上的搶答信號,顯示輸出E。若只有一個搶答信號,則查詢輸出其編號。6) 繼續(xù)觀察LED是否輸出顯示零,若為0,進行下一次搶答。3.2程序流程圖開始初始化8255A置LED全滅LED顯示0?YNA口一個信號?LED顯示E找到輸入信號查表輸出選手號碼LED顯示0?YN圖3-1 程序流程圖3.3控制程序.MODELTINYPCIBAR3EQU1CH;8位I/O空間基地址(它就是實驗儀的基地址, 也為DMA & 32 BIT RAM板卡上的8237提供基地址) Vendor_IDEQU 10EBH;廠商ID號Device_IDEQU8376;設備ID號.STACK10

17、0.DATAIO_Bit8_BaseAddressDW?msg0DB'BIOS不支持訪問PCI $'msg1DB'找不到Star PCI9052板卡 $'msg2DB'讀8位I/O空間基地址時出錯$'COM_ADD DW00F3H;控制口偏移量PA_ADDDW00F0H;PA口偏移量PB_ADDDW00F1H;PB口偏移量PC_ADDDW00F2H;PC口偏移量.CODESTART:MOV AX,DATAMOV DS,AXNOPCALL InitPCICALL ModifyAddress;根據(jù)PCI提供的基地址,將偏移地址轉化為實地址mov dx

18、,COM_ADD ;控制口地址mov ax,90h ;10010000out dx,ax step0:mov ax,00h ;禁止顯示LED全滅mov dx,PB_ADD ;B口地址輸出out dx,axstep3:mov dx,PB_ADDmov ax,3fh ;輸出顯示0表示允許搶答out dx,ax mov dx,PC_ADD ;設置數(shù)碼管位選碼mov al,7Fh ;只使用最左邊一位out dx,alstep2:mov dx,PA_ADD ;通過A口地址讀輸入信號in ax,dx ;讀A口狀態(tài)not ax ;取反,因為微動開關按下為低電平有效cmp al,00h ;檢測是否有輸入jz

19、step2 ;沒有則繼續(xù)檢測mov dl,almov bl,00h ;bl用于記錄有幾人同時按鍵mov cx,8h ;循環(huán)次數(shù)test1:ror dl,1 ;循環(huán)右移一位,末位進CFjnc test2 ;若沒有進位,即CF=0則跳轉retest繼續(xù)測試inc bl ;有進位,bl自加記錄同時搶答人數(shù)test2:loop test1;循環(huán)測試8次cmp bl,1ja error ;有一人以上同時搶答,則報錯mov bl,00h ;bl清零next:ror al,1 ;有搶答信號jc print ;有則輸出inc bl ;bl用來記錄是哪一位選手jmp nexterror:mov bl,8prin

20、t:mov al,bllea bx,ssegment ;查表xlat ;將BX的內(nèi)容(代碼表首地址)+AL的內(nèi)容(表格偏移量)作為有效地;址,最終內(nèi)容存入AL中mov dx,PB_ADDout dx,almov dx,PC_ADD ;設置數(shù)碼管位選碼一位顯示mov al,7Fh ;只使用最左邊一位out dx,alstep5:mov dx,PA_ADD in ax,dx cmp al,0ffh ;檢測開關是否已松開jnz step5 ;沒有松開繼續(xù)檢測jmp step6step6:mov al,clmov dx,PB_ADDout dx,almov dx,PC_ADD ;設置數(shù)碼管位選碼一位顯

21、示mov al,0FEh ;只使用最右邊一位out dx,alcall DL500ms ;調(diào)用延遲程序jmp step0 ssegment:db 06hdb 5bhdb 4fhdb 66hdb 6dhdb 7dhdb 07hdb 7fhdb 79hDL500ms PROC NEARpush axpush dxmov dx,500mov ah,0ffhint 21hpop dxpop axRETDL500ms ENDPInitPCIPROCNEARMOVAH,00HMOVAL,03HINT10H ;清屏MOVAH,0B1HMOVAL,01HINT1AHCMPAH,0JZInitPCI2LEADX

22、,msg0InitPCI1:MOVAH,09HINT21HJMPExitInitPCI2:MOVAH,0B1HMOVAL,02HMOVCX,Device_IDMOVDX,Vendor_IDMOVSI,0INT1AHJNCInitPCI3;是否存在Star PCI9052板卡LEADX,msg1JMPInitPCI1InitPCI3:MOVDI,PCIBAR3MOVAH,0B1HMOVAL,09HINT1AH ;讀取該卡PCI9052基地址JNCInitPCI4LEADX,msg2JMPInitPCI1InitPCI4:ANDCX,0FFFCHMOVIO_Bit8_BaseAddress,CXR

23、ETInitPCIENDPModifyAddressPROCNEARADDCOM_ADD,CXADDPA_ADD,CXADDPB_ADD,CXADDPC_ADD,CXRETModifyAddressENDPExit:MOVAH,4CHINT21HENDSTART4、上機調(diào)試過程4.1硬件調(diào)試 按照硬件連接圖接好線后,運行程序,發(fā)現(xiàn)LED顯示的不是0,經(jīng)檢查發(fā)現(xiàn)二進制編碼是11000000而并不是0的編碼00000011。后在老師提示下,原因是PB口的連接的并不是a-dp,而是dp-a。后采用將數(shù)據(jù)線反過來接,結果正確顯示0。4.2軟件調(diào)試 剛開始調(diào)試程序時,總是出現(xiàn)錯誤,后經(jīng)老師提示,原因是新

24、實驗箱沒有8086CPU,它采用的運行方式是上位機的CPU模擬實現(xiàn)下位機的8086CPU實現(xiàn)功能,所以加入了老師給的地址轉換程序,得以實現(xiàn)。繼而相應的刪去了一些重復不必要的初始化程序。4.3聯(lián)機調(diào)試在聯(lián)機調(diào)試時出現(xiàn)了兩個問題:(1)起初一直堅守“1”有效,運行錯誤,后仔細閱讀了實驗箱使用說明,認識微動開關按下時的狀態(tài)為“0”,松開為“1”,于是在程序中讀信號的代碼段中入NOT AX,將讀取的微動開關按位取反,以使得開關按下“0”時有效,彈開“1”時無效,結果成功實現(xiàn)。(2)程序反復調(diào)試并運行了多次,幾經(jīng)測試,起初都正確,可是后來同樣正確的程序運行LED顯示卻出現(xiàn)故障,下位機重置仍然不行,后經(jīng)老

25、師指導,將上位機重啟,問題被解決。4.4調(diào)試結果及問題的提出(1)數(shù)碼管顯示數(shù)字的筆畫不對,盡管數(shù)碼管編碼正確無誤,經(jīng)檢查原因是控制編碼段的定位變化未能有效設置好,隨著程序的運行,值變化混亂,后經(jīng)單步調(diào)試,仔細分析并改正優(yōu)化,成功解決。(2)在聯(lián)機調(diào)試結果正確后,全速運行情況下,LED顯示始終會全部顯示,后在老師的提示下,程序中顯示代碼段的位置出加入mov ax,00h ,mov dx,PB_ADD 以禁止顯示,LED全滅,同時應考慮到人眼視網(wǎng)膜的分辨率,設置顯示延遲時間,以便于觀察。(3) 在老師的要求下,應該能夠觀察到選手的編號。而微動開關按下是瞬間的且選手不能一直按著開關不放,對于觀察結

26、果不方便,故老師要求在最右邊的一位LED上顯示出選手編號。設計時在測試微動開關是否松開后,再加一個B口輸出在LED上顯示。開始的很多次,在單步調(diào)試中可以觀察到在最右邊的LED上顯示了選手編號,而在全速運行中卻看不到。經(jīng)老師檢查后,發(fā)現(xiàn)在顯示程序后立刻執(zhí)行了LED全滅,在人眼的能力內(nèi)是看不到的,在老師的建議下,加入一個延遲程序即可解決問題。5、設計結果分析及問題討論5.1 課程設計結果在允許搶答信號發(fā)出后,七段LED顯示器上會顯示首先按下開關的選手編號。由于響應速度非常快,若有兩人或兩人以上同時撥下開關是,七段LED顯示器上始終會靈敏的顯示第一個按下開關的搶答者,當起初有兩個或以上選手搶答,則顯

27、示“E”表示出錯,搶答無效。5.2設計結果分析由于芯片8255的三個端口A、B、C全部都被使用,起初的主控思想便無法實現(xiàn),從 8255A的A口讀入輸入信號,即為選手編號。然后從B口輸出搶答結果到七段LED顯示器上,C口控制LED數(shù)碼管的位控制,采用最左邊的一位LED顯示,并設置延遲在最右邊的一位LED上顯示最終的搶答者號碼,便于觀察和比較。5.3問題討論在考慮如何確定有幾人同時撥下開關的問題中,用BL記下在A口的輸入信號,將BL循環(huán)右移八次,看八位選手中有哪幾位發(fā)出了搶答動作,即所在的位有效,有幾個一被移出,就有多少個人同時按下開關。將BL與1比較,如果大于1,說明有多人同時搶答,七段LED顯示器上顯示E,表示搶答無效。否則,滿足一位選手動作,LED顯示器即

溫馨提示

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

評論

0/150

提交評論