基于51单片机的数字抢答器研究设计

2021-11-24 17:55段学涛郭子洋刘鑫胡亮达赵锶婷
科学与生活 2021年18期

段学涛 郭子洋 刘鑫 胡亮达 赵锶婷

摘要:抢答器是一种在知识竞赛中十分常用的器件,本设计主要采用了AT89C52单片机来作为数字抢答器的MCU,运用按键I/O状态采集,定时器的配置与使用以及数码管的显示。采用Proteus仿真软件进行仿真,并通过Altium Designer完成了PCB板的制作,通过焊接完成了实物的制作,经过软件调试,完成了十路抢答器的设计

关键词:AT89C52;抢答器;状态采集;Proteus;PCB

0 引言

知识竞赛不仅是中小学常见的“游戏”方式,在大学中很多的科技竞赛也是作为常用的一种抢答工具,从中我们不仅可以感受到很多的乐趣也可以学到很多书本上很多学不到的知识。但是,在进行科技竞赛过过程中,参赛者抢答的先后顺序的确定,如果仅通过主持人的主观意识来判断决定,很容易产生误判的现象。因此,本文就通过使用AT89C52主控芯片来实现十路抢答,具有锁存、清零和设定时间的功能。并且还加入了语音播报模块,对选手的抢答顺序进行播报。利用该十路数字抢答器可以使知识竞赛更加顺利的进行,使抢答比赛更加公平。

1 系统整体方案设计

本系统主要分为硬件和软件两大部分,主控采用AT89C52芯片,采用7.2V锂电池供电,因为主控MCU和系统器件都是5V的工作电压,通过5V稳压电路为系统提供稳定的5V电压,通过按键实现抢答与时间的设定,完成人机交互,通过定时器来实现准确定时。通过两位数码管显示设定的时间,一位数码管显示0-9为10位抢答选手的编号。一共有十位选手进行抢答,单片机反应时间低于0.1ms,反应时间短,一旦有选手按下抢答键,系统将会对其进行锁存,直至裁判按下清零键,清零键可对系统进行清零,裁判可重新设定时间,选手重新进行抢答。本系统在原有的要求上加了SYN6288语音识别模块,其模块采用串口通信可直接输出语音,默认波特率为9600bit/s,如果波特率设置不对发出的声音会出错,为此务必要确保单片机的串口波特率保持正确,使得播报正常。

2 系统硬件电路设计

2.1最小系统

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其最小系统由复位及时钟电路组成。

2.2按键电路

AT89C52的I/O默认准双向输出,由于其具有32个通用引脚,故采用独立按键的模式更加方便,SW1—SW10为选手进行抢答的按键,UP1、DOWN1按键分别用于定时时间的加减,START1为裁判的启动按键。

2.3数码管电路

本系统一共需要两个显示部分,第一个NUM1是显示抢答选手的编号,第二个是系统定时的时间显示。本数码管都采用共阴极驱动,其中通过选择SEG1、SEG2、SEG3来选择不同的数码管,利用人眼的余晖效应,可实现不同信息的显示。

2.4蜂鸣器电路

本系统采用有源蜂鸣器,在其正负极直接加上额定电压,就会发出响声。由于单片机I/O输出电流有限,不足直接以驱动蜂鸣器,故使用一个NPN的三极管对其进行驱动,此时电流足以驱动蜂鸣器使其发生声音,R6为基极限流电阻,当beep为高电平时三极管导通,蜂鸣器发出响声。

2.5稳压电路

本系统采用两节3.7V的锂电池进行供电,电压在7.2V左右,但单片机额度电压在5V,故需要对电源电压进行稳压后输出,稳压芯片采用AMS117-5.0,此芯片直接将7.2V转化为5V,并通过两个10uf的钽电容对其电源进行滤波,提供相对稳定的电压。LED1用于指示系统是否通电,具有指示作用。

3 系统软件设计

3.1软件流程

软件设计流程主要先对定时器进行初始化、对系统的I/O进行初始化,定时器采用10ms定时一次,之后在while(1)里面进行按键的判断,在设定好时间后按下启动按键,蜂鸣器响0.5s,开启定时器,即TR0置1,在设定时间内如果有抢答按键按下,通过不同的I/O检测到低电平来判断哪一个选手进行了抢答,此时立即停止计时,显示抢答人的编号,如果在设定时间内一直没有抢答,那么蜂鸣器会进行报警,定时器停止计时,双位数码管显示00,直至按下清零键。

3.2定时器设计

AT89C52采用12MHZ的晶振,由于其机器周期是(1/12M)*12为1us,采用10ms定时器中断一次,即10ms溢出一次,当其溢出次数达到一百次时计时1s。选用定时器0,定时模式,方式0,十六位自动重装,此时TMOD=0x00。

3.3按键扫描

按键判断是直接读取I/O的状态,按键程序关键是消抖,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。软件处理方法即第一次判断按键按下后延时20ms左右再进行一次按键的判断,此时按键判断为还是属于按下时才对其操作,通过软件消抖解决了需要再硬件上面加电容的操作,在最开始按一次按钮,数据会加或者减少很多次,最后在按键判断的后面加上一个while(KEY==0)就是为了按键松开才执行下面的程序,这样子在按键松开后才会进行下一次的加减。

3.4数码管显示

本系统使用包括时间和选手的编号,通过P0口加上拉电阻,接数码管的八个I/O,通过给不同的I/O赋值,来实现取不同的数值用P20、P21、P22选用不同的数码管,数码管需要显示对其进行消隐,即显示后在下次显示之前对所有的I/0变成低电平,数码管在极短的时间内灭掉,但是肉眼无法观察到,然而有利于观察下一次要显示的值,数据同时还需要对时间两位数进行取值,即分别取个位和十位来进行显示。

4 结束语

本次的抢答器设计与平常所用的普通抢答器设計相比,通过AT89C52内置的定时计数计算抢答的时间更具可靠性,且可以检测抢答时间内有无选手抢答,更具有适用性,将为未来知识竞赛抢答提供更多有利的帮助。

5 参考文献

[1]丁向荣.单片机原理与接口技术-基于STC15系列单片机[M].北京:电子工业出版社,2018:150-380.

[2]米阁,何建军,谢日华,侯颖,何汶俊.数字抢答器的设计与实现[J].中国新通信,2016,18(16):157.

[3]宋昕一,万宏飞.基于Proteus的数码管动态显示与计数设计[J].电子制作,2021(08):73-75.

[4]吴中华.Altium Designer 10使用快速入门[J].电子制作,2012(06):75-78.

[5]宋昕一,万宏飞.基于Proteus的数码管动态显示与计数设计[J].电子制作,2021(08):73-75.

[6]宋春华,刘江涛,王贵恩,裴小英.基于单片机控制的数字抢答器[J].河南机电高等专科学校学报,2005(05):32-33.