巢国强
摘 要:本文介紹了以STC89C52 单片机为核心控制器件的8路抢答器。采用C语言编程及12864液晶显示器,实现了8路选手抢答、统计选手得分、倒计时显示、超时报警等功能。目前已制作出实物,实际运行可靠,性能良好,有一定的实用价值。
关键词:单片机;12864;八路抢答器
一、抢答器的背景
在知识竞赛时,特别是在抢答过程中,仅靠人的视觉(或者是听觉)是很难判断出哪一组(或哪个选手)先抢答到题。为了准确地知道哪一组或哪一位选手先抢答到题,最好设计一个装置来完成这个任务。单片机控制的8路抢答器,就可以使以上问题得以解决,即使两组选手的抢答时间只相差几微秒,也能轻松地分辨出哪一组(或哪个选手)先抢答到题。
二、系统的组成
本系统采用STC89C52单片机为核心控制芯片,由四个部分组成:单片机最小系统、主持人控制按键和选手抢答按键部分、报警部分、显示部分。
三、硬件设计
单片机最小系统由SCT89C52单片机芯片、时钟电路和复位电路组成。系统中使用了硬件复位和软件复位两种复位。硬件复位可使寄存器及存储器都恢复到初始值。但是倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软件复位。软件复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。
主持人控制按键由复位按键、开始抢答按键、加分按键和查看得分按键四个按键组成,另外还有8路选手抢答按键。这些常开按键电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“抖动”现象就可以了。我们采用最常用的软件延时方法。其原理为:因为“抖动”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延一段时间(这里取延时10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。
显示部分采用带中文字库的12864液晶显示器,可方便地显示汉字、数字和英文字母,也很容易实现与CPU的连接。
本系统中采用蜂鸣器报警,利用程序来控制单片机P3.0口反复输出高电平或低电平,即在该口线上产生一定频率的矩形波。由于单片机输出电流较小,所以用三极管9013来驱动蜂鸣器发出一定频率的声音。
四、工作过程
本抢答器由主持人操纵,主持人按下“开始抢答”按键,倒计时15秒,若无人抢答,蜂鸣器报警,本次抢答无效。若有选手按下“选手抢答”按键,液晶显示器12864显示抢答选手的号码、选手得分情况及剩余答题的时间。如果选手回答问题正确,主持人按下“加分”按键,给选手加1分。主持人按下“查分”按键,可依次查询各个选手的得分情况。
五、软件流程图
图1 软件流程图 图2 实物图
本文用单片机控制的8路抢答器已制作出实物,实际运行可靠,性能良好,有一定的实用价值。
参考文献:
[1]李光飞.单片机课程设计实例指导[M].北京:北京航天航空大学出版社,2004.
[2]冯育长.单片机系统设计与实例指导[M].西安:西安电子科技大学出版社,2007.