標(biāo)題: Protuse7.8仿真8086搶答器 附源程序 [打印本頁(yè)]
作者: 土豆成精12138 時(shí)間: 2020-2-24 19:38
標(biāo)題: Protuse7.8仿真8086搶答器 附源程序
1.簡(jiǎn)易搶答器的設(shè)計(jì)內(nèi)容和功能
l 以8086為核心,設(shè)計(jì)一個(gè)8位競(jìng)賽搶答器:同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕SW1~SW8表示。
l 設(shè)置一個(gè)系統(tǒng)復(fù)位和搶答控制按鈕,按鈕由主持人控制。系統(tǒng)能進(jìn)行多次搶答,選手1-8號(hào)任一按下?lián)尨?font face="宋體">或者倒計(jì)時(shí)到0后能重新按下【搶答】按鈕進(jìn)行搶答。
l 搶答器具有鎖存,清除鎖存與顯示功能。在主持人按【搶答】鍵開(kāi)始之前出現(xiàn)搶答情況,雖然已經(jīng)鎖存,但開(kāi)始按鈕將鎖存信號(hào)清零。并且每次停止后,重新開(kāi)始也會(huì)將之前搶答者的鎖存信號(hào)清除,進(jìn)行下一輪的搶答。
l 搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如10秒)。當(dāng)主持人啟動(dòng)【搶答】鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間為0.5s左右。
l 參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)復(fù)位清除為止。
l 如果定時(shí)時(shí)間已到,無(wú)人搶答,本次搶答無(wú)效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。
2. 設(shè)計(jì)思路
用8255A作為輸入輸出設(shè)備,A口輸出,c口高位作為輸出,B口作為鍵盤輸入,c口低位作為主持人控制鍵輸入。
8253A作為定時(shí)裝置,由0計(jì)時(shí)器產(chǎn)生1秒為周期的方波,其中高電平0.5秒,用此0.5秒的高電平作為1計(jì)數(shù)器 的門控制信號(hào),控制1計(jì)數(shù)器的通斷!1計(jì)數(shù)器輸出一定頻率的脈沖,使揚(yáng)聲器發(fā)聲!
用異或門配合組成電路實(shí)現(xiàn)禁止多位選手搶答
3. 硬件設(shè)計(jì)
3.1八路競(jìng)賽搶答器的硬件框圖
1.PNG (6.95 KB, 下載次數(shù): 79)
下載附件
2020-2-24 19:36 上傳
3.2通過(guò)譯碼器產(chǎn)生片選信號(hào)
圖片1.png (8.37 KB, 下載次數(shù): 81)
下載附件
2020-2-24 19:36 上傳
3.3顯示電路設(shè)計(jì)
8255芯片的A口分別與數(shù)碼管的八個(gè)引腳相連。將8255芯片中需要顯示的信息通過(guò)A口送入數(shù)碼顯示區(qū),由數(shù)碼管的亮滅顯示出來(lái)。
圖片2.png (24.45 KB, 下載次數(shù): 93)
下載附件
2020-2-24 19:36 上傳
3.4異或門實(shí)現(xiàn)禁止多位選手搶答
圖片3.png (22.02 KB, 下載次數(shù): 74)
下載附件
2020-2-24 19:37 上傳
3.5搶答電路設(shè)計(jì)
圖片4.png (26.46 KB, 下載次數(shù): 86)
下載附件
2020-2-24 19:37 上傳
3.6開(kāi)始搶答和復(fù)位電路 (開(kāi)始按鈕要有對(duì)鎖存信號(hào)的清除功能)
8255芯片的PC0口對(duì)應(yīng)【搶答】按鍵,PC1口對(duì)應(yīng)【復(fù)位】按鍵。將搶答開(kāi)始和結(jié)束的信號(hào)(由開(kāi)始按鍵和復(fù)位按鍵控制)通過(guò)C口送入8255芯片。二極管的作用:開(kāi)始按鈕清除鎖存信號(hào),而鎖存信號(hào)不影響開(kāi)始按鈕。
圖片5.png (7.18 KB, 下載次數(shù): 82)
下載附件
2020-2-24 19:37 上傳
4. 軟件設(shè)計(jì)
4.1主程序流程圖
圖片6.png (28.49 KB, 下載次數(shù): 84)
下載附件
2020-2-24 19:37 上傳
4.2程序設(shè)計(jì)
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
;8255初始化
MOV DX,0EEH
MOV AL,10000011B ;A,B,C方式0,A,C輸出,B輸入
OUT DX,AL
MOV BP,00 ;BP初值設(shè)置0
CC1: CALL BB1 ;開(kāi)始顯示0
MOV DX,0ECH ;讀取C口低位值
IN AL,DX
AND AL,0FH ;檢查主持人開(kāi)始搶答鍵是否按下
CMP AL,0EH
JNE CC1 ;沒(méi)按下,跳到cc1,繼續(xù)顯示0
CALL BB2 ;驅(qū)動(dòng)揚(yáng)聲器
MOV CX,0FFH
MOV BP,10 ;設(shè)置搶答時(shí)間20秒
CC2: CALL BB1 ;按下,開(kāi)始顯示20秒倒計(jì)時(shí)
MOV DX,0EAH ;讀取b口值,看是否有人搶答
IN AL,DX
CMP AL,0FFH
JNE CC3 ;有人搶,跳CC3處理
DEC COUNT
JNZ CC2
MOV COUNT,50 ;沒(méi)人搶,倒計(jì)時(shí),每延時(shí)一秒
DEC BP
JS CC4 ;倒計(jì)時(shí)結(jié)束時(shí)跳CC4
JMP CC2
CC4:MOV BP,0
CALL BB1
CALL BB2 ;倒計(jì)時(shí)結(jié)束響喇叭
JMP CC1
CC3: MOV SI,08H ; 鍵值1-8
CALL BB2
NEXT: IN AL,DX
CMP AL,TABLE2[SI] ;檢查鍵值
JE DONE
DEC SI
JMP NEXT
DONE: MOV DX,0ECH ;顯示鍵值
MOV AL,0E0H
OUT DX,AL
LEA BX,TABLE1 ;取段碼
MOV AX,SI
XLAT
MOV DX,0E8H
OUT DX,AL
CALL DELAY
CALL BB1
MOV DX,0ECH
IN AL,DX
AND AL,0FH ; 檢查停止鍵
CMP AL,0DH
JNE DONE ; 按下,停止
MOV BP,0
CALL BB2 ;顯示00此處響喇叭(復(fù)位響喇叭
JMP CC1 ;準(zhǔn)備下一輪搶答
BB1 PROC NEAR ;顯示子程序
MOV AL,0B0H ;第三位顯示
MOV DX,0ECH ;C口高位
OUT DX,AL ; 此為了數(shù)碼管完整顯示必須先送位后送段碼
MOV AX,BP
MOV DL,0AH
DIV DL
MOV BX,OFFSET TABLE1
XLAT
MOV DX,0E8H
OUT DX,AL
CALL DELAY
MOV AL,70H ;第四位顯
MOV DX,0ECH ;C口高位
OUT DX,AL
MOV AL,AH
XLAT
MOV DX,0E8H
OUT DX,AL
CALL DELAY
RET
BB1 ENDP
BB2 PROC NEAR ;8253驅(qū)動(dòng)發(fā)聲子程序
MOV AL,16H
OUT 0F6H,AL
MOV AX,1000
OUT 0F0H,AL
MOV AH,AL
OUT 0F0H,AL
MOV AL,56H
OUT 0F6H,AL
MOV AL,2
OUT 0F2H,AL
MOV CX,50
L: CALL DELAY
LOOP L
AND AL,00H ;關(guān)喇叭
OUT 0F6H,AL
RET
BB2 ENDP
DELAY PROC NEAR ; 延時(shí)子程序
PUSH BX
PUSH CX
MOV BX,10
T0: MOV CX,0FFH
T1: LOOP T1
DEC BX
JNZ T0
POP CX
POP BX
RET
DELAY ENDP
CODE ENDS
DATA SEGMENT
TABLE1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
TABLE2 DB 0FFH,0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
COUNT DB 50 ; 設(shè)置變量
DATA ENDS
END START
搶答器壓縮包:
簡(jiǎn)易搶答器.zip
(55.27 KB, 下載次數(shù): 212)
2020-2-24 19:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: colorb 時(shí)間: 2020-3-19 16:13
這個(gè)實(shí)驗(yàn)里面的選手7與選手8反了要注意
開(kāi)始搶答后倒數(shù)10秒,搶到顯示搶到人的序號(hào)
復(fù)位后重新開(kāi)始
作者: colorb 時(shí)間: 2020-3-19 16:23
本帖最后由 colorb 于 2020-3-20 17:36 編輯
原理圖中U8的D2 D3腳
U7的D2 D3腳
的網(wǎng)絡(luò)標(biāo)號(hào)換一下即可恢復(fù)正常
作者: qianchen紅塵 時(shí)間: 2020-7-4 15:54
運(yùn)行后按下復(fù)位鍵再按搶答鍵為什么就不正常了呢,無(wú)論哪個(gè)選手按下輸出C:\Users\cang'hai'yi'xiao\Desktop都變成0
作者: Maxwell23 時(shí)間: 2020-7-13 10:53
有幾個(gè)搶答按鈕顯示的數(shù)字不正確 沒(méi)有顯示對(duì)應(yīng)的數(shù)字而是顯示0
作者: uStopRxy 時(shí)間: 2020-7-18 09:23
常按按鍵就可以,都可以正常顯示
作者: qinshan528 時(shí)間: 2020-7-21 23:59
正好這幾天做這個(gè)八位競(jìng)賽器的設(shè)計(jì),運(yùn)行總是出現(xiàn)問(wèn)題,而這個(gè)帖子給了一個(gè)比較好的參考。
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |