找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4382|回复: 6
收起左侧

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

[复制链接]
ID:697597 发表于 2020-2-24 19:38 | 显示全部楼层 |阅读模式
1.简易抢答器的设计内容和功能
l 以8086为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮SW1~SW8表示。
l 设置一个系统复位和抢答控制按钮,按钮由主持人控制。系统能进行多次抢答,选手1-8号任一按下抢答或者倒计时到0后能重新按下【抢答】按钮进行抢答。
l 抢答器具有锁存,清除锁存与显示功能。在主持人按【抢答】键开始之前出现抢答情况,虽然已经锁存,但开始按钮将锁存信号清零。并且每次停止后,重新开始也会将之前抢答者的锁存信号清除,进行下一轮的抢答。
l 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如10秒)。当主持人启动【抢答】键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
l 参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统复位清除为止。
l 如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
2. 设计思路
用8255A作为输入输出设备,A口输出,c口高位作为输出,B口作为键盘输入,c口低位作为主持人控制键输入。
8253A作为定时装置,由0计时器产生1秒为周期的方波,其中高电平0.5秒,用此0.5秒的高电平作为1计数器 的门控制信号,控制1计数器的通断!1计数器输出一定频率的脉冲,使扬声器发声!
用异或门配合组成电路实现禁止多位选手抢答
3. 硬件设计
3.1八路竞赛抢答器的硬件框图
1.PNG

3.2通过译码器产生片选信号
图片1.png

3.3显示电路设计
8255芯片的A口分别与数码管的八个引脚相连。将8255芯片中需要显示的信息通过A口送入数码显示区,由数码管的亮灭显示出来。
图片2.png

3.4异或门实现禁止多位选手抢答
图片3.png
3.5抢答电路设计
图片4.png
3.6开始抢答和复位电路  (开始按钮要有对锁存信号的清除功能)
8255芯片的PC0口对应【抢答】按键,PC1口对应【复位】按键。将抢答开始和结束的信号(由开始按键和复位按键控制)通过C口送入8255芯片。二极管的作用:开始按钮清除锁存信号,而锁存信号不影响开始按钮。
图片5.png
4. 软件设计
4.1主程序流程图
图片6.png

4.2程序设计
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初值设置0
CC1:  CALL BB1                    ;开始显示0
       MOV DX,0ECH                 ;读取C口低位值
       IN AL,DX
       AND AL,0FH               ;检查主持人开始抢答键是否按下
       CMP AL,0EH
       JNE CC1                     ;没按下,跳到cc1,继续显示0
       CALL BB2                   ;驱动扬声器
       MOV CX,0FFH
       MOV BP,10                     ;设置抢答时间20秒
CC2:  CALL BB1                    ;按下,开始显示20秒倒计时      
       MOV DX,0EAH               ;读取b口值,看是否有人抢答
       IN AL,DX
       CMP AL,0FFH
       JNE CC3                         ;有人抢,跳CC3处理
       DEC COUNT   
       JNZ CC2  
       MOV COUNT,50                    ;没人抢,倒计时,每延时一秒
       DEC BP
       JS CC4                            ;倒计时结束时跳CC4
       JMP CC2
   CC4:MOV BP,0
       CALL BB1
       CALL BB2                         ;倒计时结束响喇叭
       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此处响喇叭(复位响喇叭
       JMP CC1                            ;准备下一轮抢答
BB1 PROC NEAR                         ;显示子程序
       MOV AL,0B0H                       ;第三位显示
       MOV DX,0ECH                        ;C口高位
       OUT DX,AL            ; 此为了数码管完整显示必须先送位后送段码            
       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驱动发声子程序                           
       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                     ;关喇叭
       OUT 0F6H,AL
       RET
BB2   ENDP
DELAY PROC NEAR              ; 延时子程序
    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       ; 设置变量
  DATA ENDS

      END START

抢答器压缩包:
简易抢答器.zip (55.27 KB, 下载次数: 189)
回复

使用道具 举报

ID:705047 发表于 2020-3-19 16:13 | 显示全部楼层
这个实验里面的选手7与选手8反了要注意
开始抢答后倒数10秒,抢到显示抢到人的序号
复位后重新开始
回复

使用道具 举报

ID:705047 发表于 2020-3-19 16:23 | 显示全部楼层
本帖最后由 colorb 于 2020-3-20 17:36 编辑
colorb 发表于 2020-3-19 16:13
这个实验里面的选手7与选手8反了要注意,3与4也反了
开始抢答后倒数10秒,抢到显示抢到人的序号
复位后重新开始

原理图中U8的D2 D3脚
U7的D2 D3脚
的网络标号换一下即可恢复正常
回复

使用道具 举报

ID:796302 发表于 2020-7-4 15:54 | 显示全部楼层
运行后按下复位键再按抢答键为什么就不正常了呢,无论哪个选手按下输出C:\Users\cang'hai'yi'xiao\Desktop都变成0
回复

使用道具 举报

ID:801561 发表于 2020-7-13 10:53 | 显示全部楼层
有几个抢答按钮显示的数字不正确 没有显示对应的数字而是显示0
回复

使用道具 举报

ID:227463 发表于 2020-7-18 09:23 | 显示全部楼层
Maxwell23 发表于 2020-7-13 10:53
有几个抢答按钮显示的数字不正确 没有显示对应的数字而是显示0

常按按键就可以,都可以正常显示
回复

使用道具 举报

ID:806537 发表于 2020-7-21 23:59 | 显示全部楼层
正好这几天做这个八位竞赛器的设计,运行总是出现问题,而这个帖子给了一个比较好的参考。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表