引 言
抢答器是一种应用非常广泛的设备,在各种竞赛中,能迅速、客观、公正地给出最先抢答的选手。答题一般分为必答和抢答两种,必答有时间限制,到时要告警;抢答则要求参赛者做好充分准备,由主持人宣读完题目后,参赛者开始抢答,谁先按下按钮,就由谁答题。针对目前市场上抢答器电路复杂,功能简单等问题,设计了基于AT89S52单片机的8路抢答器,该抢答器电路简单,制作方便,操作简单,性能可靠,适用于多种智力竞赛活动[ 1 ]。
该抢答器能供8人使用,它主要实现以下功能:(1)为8位参赛选手各提供一个抢答按钮,分别编号S1,S2,S3,S4,S5,S6,S7,S8;(2)电路具有清零和抢答开关;(3)电路具有锁存和显示功能;(4)电路具有定时抢答和报警功能。抢答器设计基本满足了实际比赛应用中的各种需要。
1 抢答器系统总体设计
采用AT89S52单片机为核心控制元件,发光二极管、数码管、蜂鸣器等构成8路抢答器,利用了单片机的延时电路、按键时钟电路、复位电路、报警电路、显示电路、控制电路和抢答电路。设计的抢答器具有实时显示抢答选手的号码和抢答时间,重新开始新一轮抢答竞赛的特点,同时利用C语言编程,使其实现一些基本的功能。 抢答器系统设计框图如图 1所示。
![]() | 图 1 抢答器系统设计框图Fig. 1 Rush-answer system design diagram |
2 系统硬件设计
系统采用单片机作为整个控制核心,其四个模块分别为:显示模块、控制模块、报警模块和抢答模块[ 2 ]。工作时,该系统通过矩阵键盘输入抢答信号,经单片机的处理,输出控制信号,利用一个4位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题的,从而实现整个抢答过程。当主持人按下开始键时,向单片机P3.2引脚输入一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示00),后两位显示倒计时剩余时间。若在25 s内仍然无人抢答,蜂鸣器在最后5 s发出连续报警,提示抢答时间即将结束;若在30 s内有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答的选手此题已被人抢答成功。若在抢答过程中遇到特殊情况,主持人则可以通过时间加,时间减按键来进行时间调节。若要开始新一轮抢答,主持人按下复位键再按开始键即可。
2.1 控制器模块
控制器主要用于各模块控制对显示、抢答等。采用ATMEL公司的AT89S52作为系统控制器的CPU方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。
2.2 显示模块
显示模块如图 2所示。它包括显示和驱动,显示采用4位7段共阴数码管,驱动用P0的低四位,违规者编号、抢答30 s倒计时、正常抢答者编号和回答问题时间60 s倒计时,数码管采用动态显示。驱动电路P2口,查询显示程序利用P0口做段选码口输出P2低3位做位选码输出,当为低电平则能驱动数码管使其显示数字。在+5 V电压下接10 kΩ的电阻,保证正常压降。
![]() | 图 2 显示与显示驱动电路Fig. 2 Display and display driver circuit |
2.3 报警模块
通过控制不同频率的矩形脉冲来控制蜂鸣器发声[ 3 ]。设计中只需要简单的提示声音和稍微显眼的灯控,有抢答违规,开始抢答,抢答时间结束和回答时间到的提示声和亮灯提醒。报警电路如图 3所示。
![]() | 图 3 报警电路Fig. 3 Warning circuit |
2.4 抢答电路
AT89S52的P1口作为选手抢答的输入按键引脚,P1.0至P1.7轮流输出低电位,给每一个选手编号1至8,当选手按下按钮时,P1口端口的电平变化从P1口输入,经单片机处理后从P0输出由数码管显示抢答者编号。选手抢答电路如图 4所示。
![]() | 图 4 选手抢答电路Fig. 4 Rush-answer in the competitor circuit |
2.5 抢答器硬件电路图
基于用单片机AT89S52设计的抢答器思路简单明了,可操作性强,可靠性高,扩展功能强,能够完全实现普通抢答器的基本功能。 抢答器原理图如5所示。
![]() | 图 5 抢答器原理图Fig. 5 Principle diagram of the rush-answer system |
3 软件设计 3.1 定时中断模块
抢答器中需要显示倒计时来提示选手在规定时间内作答,需要有定时中断模块。当时间小于6 s时,抢答器需要提供警告,以及当抢答时间结束时,要关闭外部中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。
3.2 外部中断模块
抢答器主要外部中断来自于选手的抢答,当选手抢答时,抢答器同时判断被按下的键号并显示在数码管之上,然后在数码管上显示剩余时间,同时关闭中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。
3.3 控制模块
控制模块主要作用是对抢答器的开始和复位功能进行控制,主要由主持人来实现其功能[ 4 ]。当开始键被按下时,抢答器开始正常工作;当抢答器停止工作时,可以按下复位键使抢答器处于初始化状态。
3.4 报警模块
报警模块主要作用,一是当时间还剩5 s时,蜂鸣器发出报警,提示选手抢答时间将要结束;二是当有选手第一时间抢答成功时发出报警声,提示其他选手不必再抢答。
3.5 主程序模块
主程序主要完成硬件初始化,子程序调用和程序间的切换,由于本设计要求抢答器具有开始、复位、抢答三种方式切换功能[ 4 ],所以主程序除了要进行硬件部分的初始化以外还要进行各个程序之间的调用和切换。主程序流程图如图 6所示。
![]() | 图 6 抢答器主程序流程图Fig. 6 Flow chart of rush-answer system main program |
void main()
{
huang=0;red=0;EA=1;
TMOD=0x11;T2CON=0x01;
TH0=(65536-50000)/256;TL0=(65536-50000)%256;
TH1=(65536-5000)/256;TL1=(65536-5000)%256;
TH2=(65536-50000)/256;TL2=(65536-50000)%256;
ET0=1;TR0=0;ET1=1;TR1=1;ET2=1;TR2=0;IT0=1;EX0=1;IT1=1;
EX1=1;aa=0;bb=0;shijian=30;
while(1)
{
keyscan();
}
4 系统的仿真
采用Proteus软件进行仿真,仿真如图 7所示:
![]() | 图 7 抢答器的Proteus仿真图Fig. 7 Proteus simulation diagram of rush-answer system |
5 结 论
该系统利用AT89S52单片机及外围接口实现的抢答系统,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。实际应用表明该系统稳定可靠,达到了设计要求。
| [1] | ] 王冬梅,张建秋.基于单片机的八路抢答器的设计与实现[J].佳木斯大学学报,2009,27(3):350-352. |
| [2] | ] 段德功,丁莹亮.单片机原理及应用[M].北京:经济科学出版社,2010:168-200. |
| [3] | ] 李素敏.抢答器的设计[J].职业,2011(23):123. |
| [4] | ] 邹显圣.基于单片机控制的智能抢答器研究[J].电子设计工程,2011,19(13):138-140. |
| [5] | ] 康丽杰,康 迪.基于单片机的8路抢答器简单设计[J].信息系统工程,2010(2):60-61. |
| [6] | ] 宋春华,刘江涛,王贵恩,等.基于单片机控制的数字抢答器[J].河南机电高等专科学校学报,2005,13(5):28-29. |
2014, Vol.36
Issue (2): 156-160








