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八路竞赛抢答器的硬件框图
3.2通过译码器产生片选信号
3.3显示电路设计 8255芯片的A口分别与数码管的八个引脚相连。将8255芯片中需要显示的信息通过A口送入数码显示区,由数码管的亮灭显示出来。
3.4异或门实现禁止多位选手抢答 3.5抢答电路设计 3.6开始抢答和复位电路 (开始按钮要有对锁存信号的清除功能) 8255芯片的PC0口对应【抢答】按键,PC1口对应【复位】按键。将抢答开始和结束的信号(由开始按键和复位按键控制)通过C口送入8255芯片。二极管的作用:开始按钮清除锁存信号,而锁存信号不影响开始按钮。 4. 软件设计 4.1主程序流程图
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
抢答器压缩包: |