抢答器是各种智力竞赛中必不可少的一种硬件设备。实现抢答器的方式有多种多样,传统的抢答器普遍采用模拟电路、数字电路或者模数混合电路来设计。这类抢答器所需元器件比较多,随着功能增多,电路也越复杂,并且成本偏高,故障率高,操作不方便,不便于参数调节及功能的升级换代。本文采用AT89C51为核心,结合键盘、数码管、蜂鸣器等外围设备,设计了具有抢答、计时、时间调整、蜂鸣器报警等功能的4路抢答器。
总体设计
设计需求
按照设计需求,本系统具有以下几个主要功能:(1)抢答器可同时供4名选手或四支参赛队伍使用;(2)抢答或回答时间主持人可自行设置;(3)能够显示抢答或答题时间的倒计时;(4)在有人犯规时可以显示选手号、闪烁显示以及蜂鸣器报警;(5)答题时间还剩5s时,蜂鸣器报警提示。
抢答器的工作原理
利用单片机控制各个功能模块实现抢答功能,单片机收集选手的抢答信号,运用寄存器来识别并记录第一个选手号,传输信息给数码管显示,同时内部定时器工作,记录有关时间并产生超时信号,在抢答成功、倒计时结束都伴随有蜂鸣器警报提醒,从而实现单片机抢答的功能。
根据设计需求,结合单片机的工作原理,设计抢答器的工作流程图如图1所示。
图1 抢答器的工作流图
硬件设计
在硬件设计方面利用单片机AT89C51控制抢答模块、显示模块、计时及调整模块、蜂鸣提示模块和复位模块,从而实现单片机的抢答。系统硬件设计原理图如图2所示。
图2中U1为单片机AT89C51,K1~K4分别为4路抢答按钮,分别接到p1.0到p1.3中;开始键和结束键分别接到单片机的10、11脚,由于单片机的10、11脚既有串行接口RXD、TXD功能又有P3.0、P3.1的IO端口功能,此处按键用到单片机10、11脚的IO端口功能。抢答时间调整按键和回答时间调整按键分别接到单片机的13,14管脚,“加一”按键和“减一”按键分别接到单片机的15、16管脚。4位七段数码管段选接P0口,位选接P2口的低3位,蜂鸣器输出信号端接P3.7口。
图2 硬件设计原理图
显示模块
显示模块采用常见的4位七段共阳数码管,利用其动态显示的方法来实现。数码管的7个输入端A~G段分别接到AT89C51的P0.0~P0.6,位选码COM1、COM3、COM4分别接到单片机P2.0、P2.1、P2.2,由单片机来决定当前该显示的是哪一位。由于AT89C51单片机的P0口没有内置上拉电阻,本系统采用外接10kΩ上拉电阻(采用A103排阻),保证P0口没有数据输出的时候是处于高电平状态。
按键输入模块
抢答器的输入信号采用11个按键控制,其中4个为抢答按键、4个为倒计时调整按键、1个开始按键、1个结束按键和1个复位按键。各按键均有一根信号线与单片机电路相连,所有按键有一公共端,各按键相互独立互不影响。当有键按下时,相应的单片机引脚作出反应,产生有效的输入信号。
蜂鸣提示模块
本设计中利用AT89C51的16引脚经驱动器驱动蜂鸣器发声。压电式蜂鸣器约需10mA的驱动电流,可以采用三极管的电流放大作用驱动蜂鸣器实现发声提示。复位模块
复位模块由复位键、电阻R1以及电解电容C3构成。由于单片机是高电平复位,所以当复位键按下时单片机9脚RESET管脚处于高电平,此时单片机处于复位状态,当上电后,由于电容的缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上电复位完毕,系统程序从0000H开始执行。
本设计中使用了硬件复位和软件复位两个功能。硬件复位后各个状态、寄存器以及存储器的值都恢复到了初始值。调整抢答和回答倒计时时间,需要记忆功能,故采用软复位,当程序执行完毕后,跳转指令将程序跳转到程序执行的起始地址。
软件设计
抢答器要求有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定,选手通过键盘按键进行抢答,再通过单片机将其转换成能在七段数码管上显示的字型码。抢答完毕,数码管上显示抢答选手号码表示抢答成功并开始倒计时。
图3 软件设计流程图
根据此设计思路,系统软件设计流程图如图3所示。系统采用Keil软件参照软件流程图编写汇编语言。以显示模块为例,相应程序段如下:
DISPLAY:MOV DPTR,#DAT1;查表显示程序,P0.0~P0.6段选,P2.0~P2.2位选;
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY
RET
DAT1B 00H, 06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,00H,71H;DAT2B 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,00H,71H 71H;
基于Proteus的系统仿真
Proteus软件不仅能仿真单片机的工作情况,还能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。本设计经仿真后,实现了预期的抢答器的功能。
抢答成功模块
图4显示4号选手抢答成功,并且答题时间还剩余52秒,当答题时间还剩5秒内时,会有蜂鸣警报。
图5显示的是1号选手在主持人未按下开始键下的非法抢答,此时数码管上不停的闪烁并伴有蜂鸣警报。
时间调整模块
图6显示通过“加一”或“减一”键来调整抢答时间和答题时间的时间,此时在数码管上显示的为时间设置成58秒。
复位模块
图7显示刚开始工作以及复位后,数码管上显示初始状态“FFF”。本设计采用了硬件复位和软件复位两种方式:在只采用系统默认的抢答时间和答题时间时,2种复位都能达到所需求的目的;当已经重新设置过倒计时时间时,需要应用软件复位,其只是执行命令后跳转,对片内通用寄存器的内容没有影响。而硬件复位会使专用寄存器的状态初始化。
硬件实现
在Proteus仿真实现预定目标的基础上,将单片机AT89C51、复位电路、蜂鸣器电路、显示电路、按键电路和电源电路进行焊接,制作完成的4路抢答器如图8所示。
图8 抢答器实物图
结语
本设计以实际电路作为最终成果形式,实现了预期的抢答、倒计时、报警等各项功能,可适用于一般的竞赛场合,具有一定的实用价值。此外,本设计具有较强的扩展性,如自动控制记分器进行记分,并通过串行口与PC机通信,用PC机统计选手得分情况,实现智能化、公平、公正的抢答,减小人为因素的影响。也可将抢答按键采用无线设备实现,如红外线,使抢答选手可以远距离地进行抢答,简化按键模块的线路布置。