競賽搶答器的設(shè)計與制作硬件課程設(shè)計報告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計背景完整報告等內(nèi)容
《競賽搶答器的設(shè)計與制作硬件課程設(shè)計報告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計背景完整報告等內(nèi)容》由會員分享,可在線閱讀,更多相關(guān)《競賽搶答器的設(shè)計與制作硬件課程設(shè)計報告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計背景完整報告等內(nèi)容(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、計算機學(xué)院2006級硬件課程設(shè)計 硬件課程設(shè)計報告 競賽搶答器設(shè)計與制作 學(xué)院:計算機科學(xué)與技術(shù)學(xué)院 班級:信息安全06-2班 成員: XXX(總體思想的確立和方案流程的設(shè)計) XXX(鍵盤掃描程序的編程和實現(xiàn)) XXX(定時和延時程序的實現(xiàn)) 2008年7月 目錄 1、需求分析 2、總體方案與說明 2-1搶答器的基本組成及原理 2-2指標要求 2-3實現(xiàn)的原理與電路 3、電路原理圖與說明 3-1-1 8255A的原理及鍵盤接線圖 3-1-2 8255A的三種工作方式 3-2-1 8253的原理圖及接線圖
2、 3-2-2 8253A的工作方式 4、軟件主要模塊流程圖 4-1-1 主流程圖 4-1-2 8255A流程圖 4-1-3函數(shù)WAIT1 4-1-4函數(shù)WAIT2 5、源程序清單與注釋 6、問題分析與解決方案 7、結(jié)論與體會 8、參考資料 課程設(shè)計指導(dǎo)教師評閱書 指導(dǎo)教師評語: 成 績: 指導(dǎo)教師簽字: 年 月
3、 日 搶答器的設(shè)計與制作 1. 需求分析 可顯示性搶答器可使用于各種搶答競賽中,作為判斷搶答先后的重要工具。搶答器是為智力競賽參賽者答題時進行搶答而設(shè)計的一種優(yōu)先判決器電路,競賽者可以分為若干組,搶答時各組對主持人提出的問題要在最短的時間內(nèi)做出判斷,并按下?lián)尨鸢存I回答問題。當?shù)谝粋€人按下按鍵后,則在顯示器上顯示該組的號碼?;卮鹜陠栴}后,由主持人將所有按鍵恢復(fù),重新開始下一輪搶答。因此要完成搶答器的邏輯功能,該電路至少應(yīng)包括按鍵輸入、數(shù)字顯示、計數(shù)。 2.總體方案與說明 2-1搶答器的基本組成及原理 1、基本組成:可編程外圍接口芯片8255,定
4、時器8253,七段數(shù)碼管, 小鍵盤 2、工作原理:選用8個鍵盤按鍵作為按鈕,每個按鍵對應(yīng)一個數(shù)字,在有效時間內(nèi)按下按鍵則顯示該選手的號碼。鍵盤采用行列式,2行4列共8個鍵,由8255 C口低四位讀列,B口PB0、PB1送行,行線同時接到PC4、PC5上,這樣讀C口狀態(tài)就可以同時讀取鍵盤的行列信號。A口做輸出,輸出信號由七段數(shù)碼管顯示,B口,C口均輸入。為了體現(xiàn)搶答功能,鍵盤采用動態(tài)掃描的方法。利用8259中斷,先將掃描的狀態(tài)讀入8259并用鎖存器74LS244將其鎖存,根據(jù)鎖存的狀態(tài)判斷最先按下的是哪個鍵。將由8255的C口最高位接一個開關(guān)作為控制開關(guān)S,執(zhí)行時先對8255的PC7進行檢查
5、,如果為1則啟動8253開始計時,否則繼續(xù)檢查等待。數(shù)碼管可以動態(tài)顯示所有按下的鍵的號碼。 選用8253定時20秒,并將倒計時的時間由屏幕顯示出來。并將8253的輸出接到8255的PC6口,以便檢測定時是否結(jié)束。計時開始的同時對鍵 盤進行掃描,20秒內(nèi)有鍵按下則搶答成功,無鍵按下則搶答無效。 2-2指標要求 1.基本功能: (1) 搶答器同時供8名選手或8個代表隊比賽,分別用8個按鈕S0 至S7表示。 (2) 設(shè)置一個系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。 (3) 搶答器具有顯示功能。即選手按動按鈕,并在DPY_7-SEG七段數(shù)碼管上顯示選手號碼。 (4) 參賽選手
6、在設(shè)定的時間內(nèi)進行搶答,搶答有效,顯示器上顯示選手的編號。如果定時時間已到,無人搶答,本次搶答無效并進行報警。 2.擴展功能: (1) 搶答器具有定時搶答功能,且一次搶答的時間由主持人設(shè)定(如20秒)。當主持人啟動"開始"鍵后,定時器進行減計時,并且倒計時可以由屏幕顯示出來。 (2) 數(shù)碼管動態(tài)顯示。數(shù)碼管可以動態(tài)的顯示所有按下的鍵的序號。 2-3實現(xiàn)的原理與電路 1.數(shù)字搶答器總體方框圖 ??????如圖1所示為總體方框圖。其工作原理為:接通電源后,主持人將開關(guān)撥到"清零"狀態(tài),搶答器處于禁止狀態(tài),編號顯示器滅燈,定時器顯示設(shè)定時間;主持人將開關(guān)置;開始"狀態(tài),宣布"開始"搶
7、答器工作。定時器倒計時。選手在定時時間內(nèi)搶答時,搶答器完成:優(yōu)先判斷、編號顯示。當一輪搶答之后,定時器停止、禁止二次搶答。如果再次搶答必須由主持人再次操作"清除"和"開始"狀態(tài)開關(guān). 圖1 總體框圖 2.鍵盤掃描的原理 我們所設(shè)計的鍵盤是一個8位鍵的,分別為16進制數(shù)字0-7,其中,鍵盤的排列,連線及接口電路如下圖所示,8個鍵排成2行×4列的矩陣,接到微機的一對端口上。端口由8255A構(gòu)成,其中端口B作輸入,端口C口作為輸入。矩陣4條列線到輸入端口C口的PC3~PC0,用程序能改變這4條線上的電平。2條行線連到B口的PB0~PB1.行線同時接在C口的P
8、C4,PC5端,這樣,用輸入指令讀取C口狀態(tài)時,可同時讀取鍵盤的行列信息。 在無鍵壓下時,由于接到+5V上的上拉電阻的作用,列線和行線接通。這時,如果向下鍵所在的行線上輸出一個低電平信號,則對應(yīng)的列線也呈現(xiàn)低電平。當從B口讀取列線信號時,便能檢測到該列線的低電平。讀取B口的狀態(tài)時,還能確定哪個鍵被按下了。 識別鍵盤上哪個鍵被壓下的過程稱為鍵盤掃描,上述鍵盤的掃描包含以下幾步: 1 測是否所有鍵都松開了,若沒有則反復(fù)檢測。 2 當所有鍵都松開了,再檢測是否有鍵壓下,若無鍵壓下則反復(fù)檢測。 3 若有鍵壓下,要消除鍵抖動,確認有鍵壓下。 4 對壓下的鍵進行編碼,將該鍵行列的信號轉(zhuǎn)換16
9、進制碼,由此確定哪一個鍵被壓下了。如出現(xiàn)多鍵重按的情況,只有在其他鍵均釋放后,僅剩下一個鍵閉合時,才把此鍵當作本次壓下的鍵。 5 該鍵釋放后,再回到2。 6 檢測矩陣中是否有鍵壓下的一種簡單方法,自輸出口向所有列線輸出0電平,檢測B口的低兩位讀取行值,若其中有0值,便是有鍵壓下了。 在開始一次掃描時,先應(yīng)確認上一次壓下的鍵是否已松開。既先向所有行線輸出低電平,再讀入各列線值,只有當所有的行線和列線均為高電平,表示以前壓下的鍵都已釋放,才開始檢測是否有鍵壓下。 當檢測到有鍵壓下后,必須消除鍵抖動(DEBANCE)。即當檢測到有鍵按下后,延長一定時間(通常延遲20MS),再檢查該鍵
10、是否仍被壓者。若是,才認定該鍵確實被按下后,而不是其他的振動干擾。 確認有鍵按下后,再確定被壓下鍵所在的行號。為獲取行列信息,先從B口輸出一個低電平到一列線上,再從C口讀入各行的值,若沒有一列為低電平,說明壓下的鍵不在此行。于是,再向下一行輸出一個低電平,再檢測各列線上是否有低電平,依次對每一行重復(fù)這個過程,直至查到某一列線上出現(xiàn)低電平為止。被置成低電平的行和讀到該低電平的列,便是被壓下鍵所在的行列值。 3、電路原理圖與說明 3-1-1 8255A的原理及鍵盤接線圖 8255是一種通用可變成并行輸入輸出接口芯片,通過對它進行編程,芯片可工作于不同的工作方式,用8255作接口時,通
11、常不需要附加外部邏輯電路就可直接為CPU與外設(shè)之間提供數(shù)據(jù)通道,8255內(nèi)部包含3個8位輸入輸出端口A,B,C,通過外部24跟輸入輸出線與外設(shè)交換數(shù)據(jù)或進行通信聯(lián)絡(luò)。端口A和端口B都可以用作一個8位的輸入口或8位的輸出口,出口既可作8位輸入輸出口又可分為兩個4位輸入輸出口,還常常用來配合A口和B口工作,用來產(chǎn)生A口和B口的端口狀態(tài)信號,8255A有兩類控制字,一類控制字用來定義各端口的工作方式,稱為方式選擇控制字,另一類控制字用于對C端口的任一位置進行置位或者復(fù)位操作,稱為置位復(fù)位控制字對8255A進行編程時這兩種控制字都要寫入控制字寄存器中,但方式選擇控制字的D7位總是1,而置位復(fù)位控制字的
12、D7位總是0。 +5V 10K PB0 PB1 D0~D7 7 4 5 6 10K 0 1 2 3 8255A PC5 PC4 PC3 PC2 PC1 PC0 8255A 圖2 鍵盤接口電路 3-1-2 825
13、5A的三種工作方式及控制字格式 方式0 ——基本輸入輸出方式 方式1 ——選通輸入輸出方式 方式2 ——雙向總線I/O方式 通過用輸出指令對8255A的控制字寄存器編程,寫入設(shè)定工作方式的控制字,可以讓3個數(shù)據(jù)口以不同的方式工作,端口A可工作于3種方式的任一種,端口B只能工作于方式0和方式1,端口C除了用于輸入輸出端口外,還能配合A口和B口工作,為這兩個端口的輸入輸出操作提供聯(lián)系信號。 ………………………………………………………………………………………… 3-2-1 8253的原理圖及接線圖 8253有6種工作方式,對它們的操作遵守以下3條基本原則: (1
14、)當控制字寫入8253時,所有的控制邏輯電路自動復(fù)位,這時輸出端OUT進入初始態(tài)。 (2)當初始值寫入計數(shù)器以后,要經(jīng)過一個時鐘周期,減法計數(shù)器才開始工 作,時鐘脈沖的下降沿使計數(shù)器進行減1計數(shù)。計數(shù)器的最大初始值是0,用二進制計數(shù)時0相當于216,用BCD碼時,0相當于104。 (3)對于一般情況下,在時鐘脈沖CLK的上升沿時,采樣門控信號。對門控信號(GATE)的觸發(fā)方式是有具體規(guī)定的: 門控信號為電平觸發(fā)的有:方式0,方式4。 門控信號為上升沿觸發(fā)的有:方式1,方式5。 門控信號可為電平觸發(fā)也可為上升沿觸發(fā)的有:方式2,方式3。 計數(shù)方式的有:方式0,方式1,
15、方式4,方式5 定時方式的有:方式2,方式3。 3-2-2 8253A的工作方式 對8253A的工作方式只介紹本實驗中用到的兩種: (1)方式0(計數(shù)結(jié)束產(chǎn)生中斷的計數(shù)器) 寫入方式控制字后,輸出端OUT為低電平;寫入計數(shù)常數(shù)后,開始計數(shù)。計數(shù)器減為0之前,輸出端OUT維持低電平。當計數(shù)值為0時,輸出端OUT才變?yōu)楦唠娖?,向CPU發(fā)出中斷請求,直到CPU寫入新的控制字或者寫入新的計 數(shù)值為止。 方式0可由門控信號控制暫停,GATE為低電平時,計數(shù)器暫停,GATE信號變高后,就接著計數(shù)。 (2)方式3 (方波發(fā)生器) 寫入方式3的控制字后,OUT變高,設(shè)GATE為
16、高先到,計數(shù)器對CLK計數(shù),設(shè)計數(shù)初值為N。當寫入的計數(shù)初值為偶數(shù),則計數(shù)時,每輸入一個計數(shù)脈沖,均使計數(shù)值減2。計數(shù)值減為0時,OUT由高變低,同時自動裝入計數(shù)初值,繼續(xù)進行計數(shù)。當計數(shù)值尖為0時,OUT又回到高電平,同時再次裝入計數(shù)值,開始下一輪循環(huán)計數(shù)。如果寫入的計數(shù)值為奇數(shù),則當輸出端為高電平時,第一個輸出脈沖使計數(shù)器減1,以后來的每一個時鐘脈沖,都使計數(shù)器減2,計數(shù)值為0時,OUT由高電平變?yōu)榈碗娖?,同時自動重新裝入計數(shù)初值進行計數(shù)。這時第一個時鐘脈沖使計數(shù)器減3,以后每個計數(shù)脈沖都使計數(shù)器減2,計數(shù)值為0時,OUT端又回到高電平,并重新裝入計數(shù)初值,開始下一輪循環(huán)計數(shù)。 3
17、-2-3 8253控制字格式 4、軟件主要模塊流程圖 4-1-1 主流程圖 開始 檢測PC0是否為1 是 “開始”口令落下 進入搶答定時20秒 判斷是否有鍵按下 否 犯規(guī)燈亮 超過20s 是 延時,判斷鍵號 確定第一個按下的鍵號 同時按下 出錯,輸出0 送入數(shù)碼管顯示 口令未完有鍵按下 搶答結(jié)束 開 始 4-1-2 8255A流程
18、圖 初始化8255A C口低四位讀列,PB0,PB1送行,A口輸出 讀鍵盤 若有被按下,繼續(xù)檢測 WAIT_1檢測是否所有鍵都松開 若均松開 若沒有則繼續(xù)等待 若松開則繼續(xù)檢測 WAIT_2檢測是否有鍵按下 有按下 延時20ms,消抖動 仍按著 仍被壓著,確定哪一個鍵被壓下,查表確定按鍵編碼 轉(zhuǎn)換成數(shù)碼管顯示編碼 顯示該按鍵 結(jié) 束 4-1-3函數(shù)WAIT1: 說明:
19、檢測是否有鍵仍被按下,若仍有鍵按下,繼續(xù)等待該鍵被松開,若未檢測到有鍵按下,繼續(xù)進行檢測是否有鍵被按下轉(zhuǎn)到WAIT2. 進 入 向PC0,PC1輸出0 檢測C口低四位即四列的值 WAIT2 檢測是否全為1 若不全為1,即有鍵仍被按下 若是,即說明無鍵按下 4-1-4函數(shù)WAIT2: 說明: 檢測是否有鍵按下,若有,則去抖動,排除外界干擾的可能,進一步確認是否有鍵按下,否則,繼續(xù)等待. WAIT1 確認各鍵均松開 進 入 檢測C口低4為的狀態(tài) 與0F
20、H比較? 不等 延遲20MS,去抖動 查是否有鍵按下 相等 說明有鍵被按下 5、源程序清單與注釋 源程序: DATA SEGMENT TABLE1 DB 03h,9FH,25H,0DH,99H,49H,41H,1FH TABLE2 DB 40H,79H,24H,30H,19H,12H,02H,78H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ;主程序 START: MOV
21、 AX,DATA MOV DS,AX MOV DX,30BH ;8255初始化 MOV AL,10001001B ;B口要輸出,C輸入 OUT DX,AL OPEN: MOV DX,30AH ;C口 IN AL,DX TEST AL,80H ;檢查C口最高位是否為1 JZ OPEN ;不為1重新檢查 CALL TIME ;為1,調(diào)用定時 CALL SAOMIAO ;鍵盤掃描 CALL
22、 XIANSHI ;顯示程序 ;定時20秒 TIME PROC NEAR MOV AL,00110111B ;通道0控制字,先讀低字節(jié)后高字節(jié),方式3,BCD計數(shù) MOV DX,303H OUT DX,AL MOV AL,00H ;計數(shù)初值低字節(jié) MOV DX,300H OUT DX,AL MOV AL,50H ;計數(shù)初值高字節(jié) OUT DX,AL MOV DX,303H
23、 MOV AL,01110001B ;通道1制字,先讀低字節(jié)后高字節(jié),方式0,BCD計數(shù) OUT DX,AL MOV DX,301H MOV AL,00H ;計數(shù)初值低字節(jié) OUT DX,AL MOV AL,80H ;計數(shù)初值高字節(jié) OUT DX,AL RET TIME ENDP ;鍵盤掃描 SAOMIAO PROC NEAR MOV DX,309H ;B口 MOV AL,00H OUT DX,AL
24、;向B口即行送0 CALL IEND ;判斷定時是否結(jié)束 ;檢測是否所有鍵都松開 WAIT1: MOV DX,30AH ;C口 IN AL,DX ;讀入C口狀態(tài) CALL IEND AND AL,0FH ;只查低四位 CMP AL,0FH ;是否都為1 JNE WAIT1 ;否,繼續(xù)查 ;檢測是否有鍵按下 WAIT2: IN AL,DX ;讀B口 CALL IEND AND AL,0FH ;只查低四位
25、CMP AL,0FH ;是否有鍵按下 JE WAIT2 ;無,等待 ;有鍵按下,延時消除抖動 MOV CX,16EAH DELAY: LOOP DELAY CALL IEND ;再查列,看鍵是否還被壓下 IN AL,DX AND AL,0FH CMP AL,0FH JE WAIT2 CALL IEND MOV AL,0FEH MOV CL,AL ;CL=1111 1110B NEXT: MO
26、V DX,309H ;B口 OUT DX,AL ;向行輸入低電平 MOV DX,30AH ;C口 IN AL,DX ;讀入C口狀態(tài) CALL IEND AND AL,0FH ;取列值 CMP AL,0FH ;是否均為1 JNE ENCODE ;否,表示有鍵按下,轉(zhuǎn)去編碼 ROL CL,01 ;均為1,使下一行輸出0 MOV AL,CL JMP NEXT ;查看下
27、一行 CALL IEND ENCODE:MOV BX,0007H ;建立地址指針,先指向7鍵對應(yīng)的地址 CALL IEND MOV DX,309H IN AL,DX ;從B口讀入行列值 NEXT2: CMP AL,TABLE1[BX] ;讀入的行列值與表中查得的相等嗎? JE DONE ;相等,轉(zhuǎn)出 CALL IEND DEC BX ;不等,指向下一個地址 JNS NEXT2 ;若地址尚末減為負值,繼續(xù)查
28、 CALL IEND MOV AH,01 ;若減為負值,置出錯碼01給AH中 JMP EXIT ;退出 CALL IEND DONE: MOV AL,BL ;BL中存有鍵的16進制代碼 MOV AH,00 ;AH=0,讀到有效鍵值 EXIT:HLT RET SAOMIAO ENDP ;檢查定時是否結(jié)束結(jié)束 IEND PROC NEAR MOV DX,30AH IN,AL,DX ;讀入C品狀態(tài) TEXT A
29、L,40H ;檢測PC6是否為1 JNZ S ;為1,定時結(jié)束,從新開始 S: JMP OPEN RET IEND ENDP ;顯示鍵號 XIANSHI PROC NEAR MOV BX,OFFSET TABLE2 ;表格首地址給BX XLAT TABLE2 ;查表 MOV DX,308H OUT DX,AL ;A口輸出 RET XIANSHI ENDP CODE ENDS END 6、問題分析
30、與解決方案 1、直接的鍵盤掃描不能很好的體現(xiàn)搶答的效果,因為逐行逐列的掃描會有先后的時間問題,這樣先掃描的一行會比較有優(yōu)勢。利用8259中斷和鎖存器進行鍵盤的動態(tài)的掃描和數(shù)碼管的動態(tài)顯示能很好的解決這個問題,但這個步驟較為的麻煩和困難,所以該步驟沒有實現(xiàn)。 2、通過軟件程序不斷的檢測定時是否結(jié)束雖然容易實現(xiàn)但是參賽者不容易知道,為了更好的表現(xiàn)定時并且很好的顯示出來,可以從定時開始就將時間倒計時的顯示出來。 7、結(jié)論與體會 1、通過本次的設(shè)計,使我們對整個設(shè)計的原理有比較深刻的理解,在設(shè)計的過程中,我們遇到了很多的困難,特別在剛開始時,由于是第
31、一次,我們對有關(guān)設(shè)計方面的知識非常的缺乏,對如何設(shè)計仍是一個問號,但也正是由于這樣要求我們需要很強的自學(xué)的能力,通過圖書館查閱相關(guān)的知識和利用網(wǎng)絡(luò)搜索有關(guān)的資料,同時在老師的指導(dǎo)下,讓我們從未知漸漸變的清晰,而且有了一定的設(shè)計的思路。經(jīng)過我們多次的嘗試與改變,終于獲得了滿意的結(jié)果。我們也因此深刻體會到自己動手獲得勞動成果的喜悅。 2、在設(shè)計過程中,我覺的團隊的合作精神是非常重要的,在設(shè)計過程中,我們肯定要遇到許多我們以前未曾遇到過的一些難題,沒有我們的共同的努力是很難很好地完成的,在這次的硬件課程設(shè)計中的確讓我們知道有許多知識需要我們自己去獲取,去領(lǐng)悟,去消化的,而不是等著老師來喂的,在設(shè)計中,更讓學(xué)習(xí)了如何與別人進行合作,而這正是我們以前所欠缺的,無論是自學(xué)能力還是團隊的合作精神,相信對我們以后無論是學(xué)習(xí)還是工作都將有著非常重要的意義的。 8、參考資料 [1] 微型計算機原理與接口技術(shù) 中國科學(xué)技術(shù)大學(xué)出版社 吳秀清 編著 [2] 微型計算機技術(shù)及應(yīng)用 清華大學(xué)出版社 戴梅萼 編著 [3] 80X86匯編語言程序設(shè)計教程 清華大學(xué)出版社 楊季文 編著 [4] 匯編語言程序設(shè)計案例精編 中國水利水電出版社 李珍香 編著 21
- 溫馨提示:
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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。