競賽搶答器的設(shè)計(jì)與制作硬件課程設(shè)計(jì)報(bào)告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計(jì)背景完整報(bào)告等內(nèi)容_第1頁
競賽搶答器的設(shè)計(jì)與制作硬件課程設(shè)計(jì)報(bào)告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計(jì)背景完整報(bào)告等內(nèi)容_第2頁
競賽搶答器的設(shè)計(jì)與制作硬件課程設(shè)計(jì)報(bào)告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計(jì)背景完整報(bào)告等內(nèi)容_第3頁
競賽搶答器的設(shè)計(jì)與制作硬件課程設(shè)計(jì)報(bào)告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計(jì)背景完整報(bào)告等內(nèi)容_第4頁
競賽搶答器的設(shè)計(jì)與制作硬件課程設(shè)計(jì)報(bào)告 包含電氣原理圖、流程圖、模塊分析、源代碼設(shè)計(jì)背景完整報(bào)告等內(nèi)容_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、硬件課程設(shè)計(jì)報(bào)告競賽搶答器設(shè)計(jì)與制作學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院班級(jí):信息安全06-2班成員:xxx(總體思想的確立和方案流程的設(shè)計(jì)) xxx(鍵盤掃描程序的編程和實(shí)現(xiàn))xxx(定時(shí)和延時(shí)程序的實(shí)現(xiàn))2008年7月目錄1、需求分析2、總體方案與說明2-1搶答器的基本組成及原理2-2指標(biāo)要求2-3實(shí)現(xiàn)的原理與電路3、電路原理圖與說明 3-1-1 8255a的原理及鍵盤接線圖3-1-2 8255a的三種工作方式3-2-1 8253的原理圖及接線圖3-2-2 8253a的工作方式4、軟件主要模塊流程圖4-1-1 主流程圖4-1-2 8255a流程圖4-1-3函數(shù)wait14-1-4函數(shù)wait25、源

2、程序清單與注釋6、問題分析與解決方案7、結(jié)論與體會(huì)8、參考資料課程設(shè)計(jì)指導(dǎo)教師評(píng)閱書指導(dǎo)教師評(píng)語:成 績: 指導(dǎo)教師簽字: 年 月 日搶答器的設(shè)計(jì)與制作1. 需求分析可顯示性搶答器可使用于各種搶答競賽中,作為判斷搶答先后的重要工具。搶答器是為智力競賽參賽者答題時(shí)進(jìn)行搶答而設(shè)計(jì)的一種優(yōu)先判決器電路,競賽者可以分為若干組,搶答時(shí)各組對主持人提出的問題要在最短的時(shí)間內(nèi)做出判斷,并按下?lián)尨鸢存I回答問題。當(dāng)?shù)谝粋€(gè)人按下按鍵后,則在顯示器上顯示該組的號(hào)碼?;卮鹜陠栴}后,由主持人將所有按鍵恢復(fù),重新開始下一輪搶答。因此要完成搶答器的邏輯功能,該電路至少應(yīng)包括按鍵輸入、數(shù)字顯示、計(jì)數(shù)。2總體方案與說明2-1搶

3、答器的基本組成及原理1、基本組成:可編程外圍接口芯片8255,定時(shí)器8253,七段數(shù)碼管,小鍵盤2、工作原理:選用8個(gè)鍵盤按鍵作為按鈕,每個(gè)按鍵對應(yīng)一個(gè)數(shù)字,在有效時(shí)間內(nèi)按下按鍵則顯示該選手的號(hào)碼。鍵盤采用行列式,2行4列共8個(gè)鍵,由8255c口低四位讀列,b口pb0、pb1送行,行線同時(shí)接到pc4、pc5上,這樣讀c口狀態(tài)就可以同時(shí)讀取鍵盤的行列信號(hào)。a口做輸出,輸出信號(hào)由七段數(shù)碼管顯示,b口,c口均輸入。為了體現(xiàn)搶答功能,鍵盤采用動(dòng)態(tài)掃描的方法。利用8259中斷,先將掃描的狀態(tài)讀入8259并用鎖存器74ls244將其鎖存,根據(jù)鎖存的狀態(tài)判斷最先按下的是哪個(gè)鍵。將由8255的c口最高位接一個(gè)

4、開關(guān)作為控制開關(guān)s,執(zhí)行時(shí)先對8255的pc7進(jìn)行檢查,如果為1則啟動(dòng)8253開始計(jì)時(shí),否則繼續(xù)檢查等待。數(shù)碼管可以動(dòng)態(tài)顯示所有按下的鍵的號(hào)碼。選用8253定時(shí)20秒,并將倒計(jì)時(shí)的時(shí)間由屏幕顯示出來。并將8253的輸出接到8255的pc6口,以便檢測定時(shí)是否結(jié)束。計(jì)時(shí)開始的同時(shí)對鍵盤進(jìn)行掃描,20秒內(nèi)有鍵按下則搶答成功,無鍵按下則搶答無效。2-2指標(biāo)要求1基本功能:(1) 搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕s0 至s7表示。(2) 設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)s,該開關(guān)由主持人控制。(3) 搶答器具有顯示功能。即選手按動(dòng)按鈕,并在dpy_7-seg七段數(shù)碼管上顯示選手號(hào)碼。

5、(4) 參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,顯示器上顯示選手的編號(hào)。如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效并進(jìn)行報(bào)警。2擴(kuò)展功能:(1) 搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如20秒)。當(dāng)主持人啟動(dòng)開始鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),并且倒計(jì)時(shí)可以由屏幕顯示出來。(2) 數(shù)碼管動(dòng)態(tài)顯示。數(shù)碼管可以動(dòng)態(tài)的顯示所有按下的鍵的序號(hào)。2-3實(shí)現(xiàn)的原理與電路1數(shù)字搶答器總體方框圖如圖1所示為總體方框圖。其工作原理為:接通電源后,主持人將開關(guān)撥到清零狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置;開始狀態(tài),宣布開始搶答器工作。定時(shí)器倒計(jì)時(shí)。選手在定時(shí)時(shí)間內(nèi)搶

6、答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)顯示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答。如果再次搶答必須由主持人再次操作清除和開始狀態(tài)開關(guān).圖1 總體框圖2鍵盤掃描的原理我們所設(shè)計(jì)的鍵盤是一個(gè)8位鍵的,分別為16進(jìn)制數(shù)字0-7,其中,鍵盤的排列,連線及接口電路如下圖所示,8個(gè)鍵排成2行4列的矩陣,接到微機(jī)的一對端口上。端口由8255a構(gòu)成,其中端口b作輸入,端口c口作為輸入。矩陣4條列線到輸入端口c口的pc3pc0,用程序能改變這4條線上的電平。2條行線連到b口的pb0pb1.行線同時(shí)接在c口的pc4,pc5端,這樣,用輸入指令讀取c口狀態(tài)時(shí),可同時(shí)讀取鍵盤的行列信息。在無鍵壓下時(shí),由于接到+5v上的

7、上拉電阻的作用,列線和行線接通。這時(shí),如果向下鍵所在的行線上輸出一個(gè)低電平信號(hào),則對應(yīng)的列線也呈現(xiàn)低電平。當(dāng)從b口讀取列線信號(hào)時(shí),便能檢測到該列線的低電平。讀取b口的狀態(tài)時(shí),還能確定哪個(gè)鍵被按下了。 識(shí)別鍵盤上哪個(gè)鍵被壓下的過程稱為鍵盤掃描,上述鍵盤的掃描包含以下幾步:1 測是否所有鍵都松開了,若沒有則反復(fù)檢測。2 當(dāng)所有鍵都松開了,再檢測是否有鍵壓下,若無鍵壓下則反復(fù)檢測。3 若有鍵壓下,要消除鍵抖動(dòng),確認(rèn)有鍵壓下。4 對壓下的鍵進(jìn)行編碼,將該鍵行列的信號(hào)轉(zhuǎn)換16進(jìn)制碼,由此確定哪一個(gè)鍵被壓下了。如出現(xiàn)多鍵重按的情況,只有在其他鍵均釋放后,僅剩下一個(gè)鍵閉合時(shí),才把此鍵當(dāng)作本次壓下的鍵。5 該

8、鍵釋放后,再回到2。6 檢測矩陣中是否有鍵壓下的一種簡單方法,自輸出口向所有列線輸出0電平,檢測b口的低兩位讀取行值,若其中有0值,便是有鍵壓下了。 在開始一次掃描時(shí),先應(yīng)確認(rèn)上一次壓下的鍵是否已松開。既先向所有行線輸出低電平,再讀入各列線值,只有當(dāng)所有的行線和列線均為高電平,表示以前壓下的鍵都已釋放,才開始檢測是否有鍵壓下。 當(dāng)檢測到有鍵壓下后,必須消除鍵抖動(dòng)(debance)。即當(dāng)檢測到有鍵按下后,延長一定時(shí)間(通常延遲20ms),再檢查該鍵是否仍被壓者。若是,才認(rèn)定該鍵確實(shí)被按下后,而不是其他的振動(dòng)干擾。確認(rèn)有鍵按下后,再確定被壓下鍵所在的行號(hào)。為獲取行列信息,先從b口輸出一個(gè)低電平到一

9、列線上,再從c口讀入各行的值,若沒有一列為低電平,說明壓下的鍵不在此行。于是,再向下一行輸出一個(gè)低電平,再檢測各列線上是否有低電平,依次對每一行重復(fù)這個(gè)過程,直至查到某一列線上出現(xiàn)低電平為止。被置成低電平的行和讀到該低電平的列,便是被壓下鍵所在的行列值。3、電路原理圖與說明3-1-1 8255a的原理及鍵盤接線圖8255是一種通用可變成并行輸入輸出接口芯片,通過對它進(jìn)行編程,芯片可工作于不同的工作方式,用8255作接口時(shí),通常不需要附加外部邏輯電路就可直接為cpu與外設(shè)之間提供數(shù)據(jù)通道,8255內(nèi)部包含3個(gè)8位輸入輸出端口a,b,c,通過外部24跟輸入輸出線與外設(shè)交換數(shù)據(jù)或進(jìn)行通信聯(lián)絡(luò)。端口a

10、和端口b都可以用作一個(gè)8位的輸入口或8位的輸出口,出口既可作8位輸入輸出口又可分為兩個(gè)4位輸入輸出口,還常常用來配合a口和b口工作,用來產(chǎn)生a口和b口的端口狀態(tài)信號(hào),8255a有兩類控制字,一類控制字用來定義各端口的工作方式,稱為方式選擇控制字,另一類控制字用于對c端口的任一位置進(jìn)行置位或者復(fù)位操作,稱為置位復(fù)位控制字對8255a進(jìn)行編程時(shí)這兩種控制字都要寫入控制字寄存器中,但方式選擇控制字的d7位總是1,而置位復(fù)位控制字的d7位總是0。+5v10k pb0pb1 d0d7 745610k01238255apc5pc4pc3pc2pc1pc08255a圖2 鍵盤接口電路3-1-2 8255a的

11、三種工作方式及控制字格式方式0 基本輸入輸出方式方式1 選通輸入輸出方式方式2 雙向總線i/o方式通過用輸出指令對8255a的控制字寄存器編程,寫入設(shè)定工作方式的控制字,可以讓3個(gè)數(shù)據(jù)口以不同的方式工作,端口a可工作于3種方式的任一種,端口b只能工作于方式0和方式1,端口c除了用于輸入輸出端口外,還能配合a口和b口工作,為這兩個(gè)端口的輸入輸出操作提供聯(lián)系信號(hào)。3-2-1 8253的原理圖及接線圖8253有6種工作方式,對它們的操作遵守以下3條基本原則: (1)當(dāng)控制字寫入8253時(shí),所有的控制邏輯電路自動(dòng)復(fù)位,這時(shí)輸出端out進(jìn)入初始態(tài)。(2)當(dāng)初始值寫入計(jì)數(shù)器以后,要經(jīng)過一個(gè)時(shí)鐘周期,減法計(jì)

12、數(shù)器才開始工作,時(shí)鐘脈沖的下降沿使計(jì)數(shù)器進(jìn)行減1計(jì)數(shù)。計(jì)數(shù)器的最大初始值是0,用二進(jìn)制計(jì)數(shù)時(shí)0相當(dāng)于216,用bcd碼時(shí),0相當(dāng)于104。 (3)對于一般情況下,在時(shí)鐘脈沖clk的上升沿時(shí),采樣門控信號(hào)。對門控信號(hào)(gate)的觸發(fā)方式是有具體規(guī)定的: 門控信號(hào)為電平觸發(fā)的有:方式0,方式4。 門控信號(hào)為上升沿觸發(fā)的有:方式1,方式5。 門控信號(hào)可為電平觸發(fā)也可為上升沿觸發(fā)的有:方式2,方式3。 計(jì)數(shù)方式的有:方式0,方式1,方式4,方式5 定時(shí)方式的有:方式2,方式3。3-2-2 8253a的工作方式對8253a的工作方式只介紹本實(shí)驗(yàn)中用到的兩種:(1)方式0(計(jì)數(shù)結(jié)束產(chǎn)生中斷的計(jì)數(shù)器)寫入

13、方式控制字后,輸出端out為低電平;寫入計(jì)數(shù)常數(shù)后,開始計(jì)數(shù)。計(jì)數(shù)器減為0之前,輸出端out維持低電平。當(dāng)計(jì)數(shù)值為0時(shí),輸出端out才變?yōu)楦唠娖剑騝pu發(fā)出中斷請求,直到cpu寫入新的控制字或者寫入新的計(jì)數(shù)值為止。方式0可由門控信號(hào)控制暫停,gate為低電平時(shí),計(jì)數(shù)器暫停,gate信號(hào)變高后,就接著計(jì)數(shù)。(2)方式3 (方波發(fā)生器)寫入方式3的控制字后,out變高,設(shè)gate為高先到,計(jì)數(shù)器對clk計(jì)數(shù),設(shè)計(jì)數(shù)初值為n。當(dāng)寫入的計(jì)數(shù)初值為偶數(shù),則計(jì)數(shù)時(shí),每輸入一個(gè)計(jì)數(shù)脈沖,均使計(jì)數(shù)值減2。計(jì)數(shù)值減為0時(shí),out由高變低,同時(shí)自動(dòng)裝入計(jì)數(shù)初值,繼續(xù)進(jìn)行計(jì)數(shù)。當(dāng)計(jì)數(shù)值尖為0時(shí),out又回到高電平

14、,同時(shí)再次裝入計(jì)數(shù)值,開始下一輪循環(huán)計(jì)數(shù)。如果寫入的計(jì)數(shù)值為奇數(shù),則當(dāng)輸出端為高電平時(shí),第一個(gè)輸出脈沖使計(jì)數(shù)器減1,以后來的每一個(gè)時(shí)鐘脈沖,都使計(jì)數(shù)器減2,計(jì)數(shù)值為0時(shí),out由高電平變?yōu)榈碗娖?,同時(shí)自動(dòng)重新裝入計(jì)數(shù)初值進(jìn)行計(jì)數(shù)。這時(shí)第一個(gè)時(shí)鐘脈沖使計(jì)數(shù)器減3,以后每個(gè)計(jì)數(shù)脈沖都使計(jì)數(shù)器減2,計(jì)數(shù)值為0時(shí),out端又回到高電平,并重新裝入計(jì)數(shù)初值,開始下一輪循環(huán)計(jì)數(shù)。 3-2-3 8253控制字格式4、軟件主要模塊流程圖4-1-1 主流程圖開始檢測pc0是否為1是“開始”口令落下進(jìn)入搶答定時(shí)20秒判斷是否有鍵按下否犯規(guī)燈亮超過20s是延時(shí),判斷鍵號(hào)確定第一個(gè)按下的鍵號(hào)同時(shí)按下出錯(cuò),輸出0送入數(shù)

15、碼管顯示口令未完有鍵按下?lián)尨鸾Y(jié)束開 始4-1-2 8255a流程圖初始化8255ac口低四位讀列,pb0,pb1送行,a口輸出讀鍵盤若有被按下,繼續(xù)檢測wait_1檢測是否所有鍵都松開若均松開若沒有則繼續(xù)等待若松開則繼續(xù)檢測wait_2檢測是否有鍵按下有按下延時(shí)20ms,消抖動(dòng)仍按著仍被壓著,確定哪一個(gè)鍵被壓下,查表確定按鍵編碼轉(zhuǎn)換成數(shù)碼管顯示編碼顯示該按鍵結(jié) 束4-1-3函數(shù)wait1: 說明: 檢測是否有鍵仍被按下,若仍有鍵按下,繼續(xù)等待該鍵被松開,若未檢測到有鍵按下,繼續(xù)進(jìn)行檢測是否有鍵被按下轉(zhuǎn)到wait2. 進(jìn) 入向pc0,pc1輸出0檢測c口低四位即四列的值wait2檢測是否全為1若

16、不全為1,即有鍵仍被按下若是,即說明無鍵按下4-1-4函數(shù)wait2: 說明: 檢測是否有鍵按下,若有,則去抖動(dòng),排除外界干擾的可能,進(jìn)一步確認(rèn)是否有鍵按下,否則,繼續(xù)等待.wait1確認(rèn)各鍵均松開 進(jìn) 入檢測c口低4為的狀態(tài)與0fh比較?不等延遲20ms,去抖動(dòng)查是否有鍵按下相等說明有鍵被按下5、源程序清單與注釋源程序:data segmenttable1 db 03h,9fh,25h,0dh,99h,49h,41h,1fhtable2 db 40h,79h,24h,30h,19h,12h,02h,78hdata endscode segment assume cs:code,ds:data

17、;主程序start: mov 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)用定時(shí) call saomiao;鍵盤掃描 call xianshi;顯示程序;定時(shí)20秒time proc near mov al,00110111b;通道0控制字,先讀低字節(jié)后高字節(jié),方式3,bcd計(jì)數(shù) mov dx,303h out dx,al

18、 mov al,00h;計(jì)數(shù)初值低字節(jié) mov dx,300h out dx,al mov al,50h;計(jì)數(shù)初值高字節(jié) out dx,al mov dx,303h mov al,01110001b;通道1制字,先讀低字節(jié)后高字節(jié),方式0,bcd計(jì)數(shù) out dx,al mov dx,301h mov al,00h;計(jì)數(shù)初值低字節(jié) out dx,al mov al,80h;計(jì)數(shù)初值高字節(jié) out dx,al rettime endp;鍵盤掃描saomiao proc near mov dx,309h;b口 mov al,00h out dx,al;向b口即行送0 call iend ;判斷定時(shí)

19、是否結(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;只查低四位 cmp al,0fh;是否有鍵按下 je wait2 ;無,等待 ;有鍵按下,延時(shí)消除抖動(dòng) mov cx,16eahdelay: loop delay call iend;再查列,看鍵是否還被壓下 in al,dx and al,0fh cmp al,0fh

20、je wait2 call iendmov al,0feh mov cl,al ;cl11111110bnext: mov 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 ;查看下一行 call iendencode:mov bx,0007h ;建立地址指針,先指向7鍵對應(yīng)的地址 call ie

21、nd mov dx,309h in al,dx ;從b口讀入行列值next2: cmp al,table1bx;讀入的行列值與表中查得的相等嗎? je done ;相等,轉(zhuǎn)出 call iend dec bx ;不等,指向下一個(gè)地址 jns next2 ;若地址尚末減為負(fù)值,繼續(xù)查 call iend mov ah,01 ;若減為負(fù)值,置出錯(cuò)碼01給ah中 jmp exit ;退出 call ienddone: mov al,bl ;bl中存有鍵的16進(jìn)制代碼 mov ah,00 ;ah0,讀到有效鍵值exit:hltretsaomiao endp;檢查定時(shí)是否結(jié)束結(jié)束iend proc nearmov dx,30ahin,al,dx ;讀入c品狀態(tài) text al,40h ;檢測pc6是否為1jnz s ;為1,定時(shí)結(jié)束,從新開始s:jmp open retiend endp;顯示鍵號(hào)xianshi proc near mov bx,offset table2;表格首地址給bx xlat table2 ;查表 mov dx,308h out dx,al ;a口輸出retxianshi endpcode ends end6、問題分析與解決方案 1、直接的鍵盤掃描不能很好的體現(xiàn)搶答的效果,因?yàn)橹鹦兄鹆械膾呙钑?huì)有先后的時(shí)間問題,這樣

溫馨提示

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

評(píng)論

0/150

提交評(píng)論