找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 5796|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

Protuse7.8仿真8086搶答器 附源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
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口作為鍵盤(pán)輸入,c口低位作為主持人控制鍵輸入。
8253A作為定時(shí)裝置,由0計(jì)時(shí)器產(chǎn)生1秒為周期的方波,其中高電平0.5秒,用此0.5秒的高電平作為1計(jì)數(shù)器 的門(mén)控制信號(hào),控制1計(jì)數(shù)器的通斷!1計(jì)數(shù)器輸出一定頻率的脈沖,使揚(yáng)聲器發(fā)聲!
用異或門(mén)配合組成電路實(shí)現(xiàn)禁止多位選手搶答
3. 硬件設(shè)計(jì)
3.1八路競(jìng)賽搶答器的硬件框圖

3.2通過(guò)譯碼器產(chǎn)生片選信號(hào)

3.3顯示電路設(shè)計(jì)
8255芯片的A口分別與數(shù)碼管的八個(gè)引腳相連。將8255芯片中需要顯示的信息通過(guò)A口送入數(shù)碼顯示區(qū),由數(shù)碼管的亮滅顯示出來(lái)。

3.4異或門(mén)實(shí)現(xiàn)禁止多位選手搶答
3.5搶答電路設(shè)計(jì)
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)始按鈕。
4. 軟件設(shè)計(jì)
4.1主程序流程圖

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                         ;有人搶?zhuān)鳦C3處理
       DEC COUNT   
       JNZ CC2  
       MOV COUNT,50                    ;沒(méi)人搶?zhuān)褂?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)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:705047 發(fā)表于 2020-3-19 16:13 | 只看該作者
這個(gè)實(shí)驗(yàn)里面的選手7與選手8反了要注意
開(kāi)始搶答后倒數(shù)10秒,搶到顯示搶到人的序號(hào)
復(fù)位后重新開(kāi)始
回復(fù)

使用道具 舉報(bào)

板凳
ID:705047 發(fā)表于 2020-3-19 16:23 | 只看該作者
本帖最后由 colorb 于 2020-3-20 17:36 編輯
colorb 發(fā)表于 2020-3-19 16:13
這個(gè)實(shí)驗(yàn)里面的選手7與選手8反了要注意,3與4也反了
開(kāi)始搶答后倒數(shù)10秒,搶到顯示搶到人的序號(hào)
復(fù)位后重新開(kāi)始

原理圖中U8的D2 D3腳
U7的D2 D3腳
的網(wǎng)絡(luò)標(biāo)號(hào)換一下即可恢復(fù)正常
回復(fù)

使用道具 舉報(bào)

地板
ID:796302 發(fā)表于 2020-7-4 15:54 | 只看該作者
運(yùn)行后按下復(fù)位鍵再按搶答鍵為什么就不正常了呢,無(wú)論哪個(gè)選手按下輸出C:\Users\cang'hai'yi'xiao\Desktop都變成0
回復(fù)

使用道具 舉報(bào)

5#
ID:801561 發(fā)表于 2020-7-13 10:53 | 只看該作者
有幾個(gè)搶答按鈕顯示的數(shù)字不正確 沒(méi)有顯示對(duì)應(yīng)的數(shù)字而是顯示0
回復(fù)

使用道具 舉報(bào)

6#
ID:227463 發(fā)表于 2020-7-18 09:23 | 只看該作者
Maxwell23 發(fā)表于 2020-7-13 10:53
有幾個(gè)搶答按鈕顯示的數(shù)字不正確 沒(méi)有顯示對(duì)應(yīng)的數(shù)字而是顯示0

常按按鍵就可以,都可以正常顯示
回復(fù)

使用道具 舉報(bào)

7#
ID:806537 發(fā)表于 2020-7-21 23:59 | 只看該作者
正好這幾天做這個(gè)八位競(jìng)賽器的設(shè)計(jì),運(yùn)行總是出現(xiàn)問(wèn)題,而這個(gè)帖子給了一個(gè)比較好的參考。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表