- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
基于单片机的四路抢答器的设计
?
?
陈娟顾吴华
摘要:随着人们生活的多样性,抢答器作为一个重要的设备广泛应用于各类竞赛中。文章设计的四路抢答器以STC89C51单片机作为主控芯片,实现的功能主要是:主持人按下“抢答开始”按键后,倒计时3秒钟,选手抢答并且显示抢答成功的小组号。该系统软硬件相结合,并且通过校“强国知识竞赛”活动验证了抢答器产品的良好性能。
关键词:单片机;抢答器;数码管
中图分类号:TP368.1???文献标识码:A
文章编号:1009-3044(2021)26-0168-03
开放科学(资源服务)标识码(OSID):
1引言
抢答器作为一款能准确、直观、公正地判断出第一抢答者的电子应用设备,常用于各种各样的竞赛中,抢答器的种类和功能也层出不穷。然而,传统的抢答器大多采用一些基本的数字电路来实现,不仅体积大,而且布线复杂烦琐、成本较高。随着科技的发展,集成度高、控制能力强的单片机已经深入到了各个应用领域[1-3]。
2整体设计介绍
本系承担了校“强国知识竞赛”的组织任务,要求设计一款功能准确的四路抢答器应用于竞赛活动中。将该任务功能设计为:主持人按下“抢答开始”按键,然后3秒倒计时,如果单片机检测到有选手按下抢答器按键,则显示该选手的编号,如果再次抢答,必须由主持人再次按下“抢答开始”按键。
3硬件设计
3.1总体设计
在本设计中采用STC公司生产的STC89C51单片机作为主控芯片,结合简单的外围电路来实现设计任务。该系统可以进行运算控制、抢答信号识别与处理以及显示功能的实现。具体表现为:用四个独立按键作为选手抢答键,一个独立按键作为主持人键,数码管用作显示组号和倒计时时间,利用4个LED灯作为选手抢答成功的指示灯。如果主持人按键没有按下,而选手按键提前按下抢答,则单片机不予处理选手按键,即抢答无效。硬件电路的总体设计框图如图1所示。
3.2单片机及独立按键电路
STC89C51单片机是STC公司推出的51内核单片机,包含有4个8位的并行I/O接口,分别为P0、P1、P2和P3口;其中P1、P2、P3口都是带内部上拉电阻的双向I/O口,因此在使用时不需要再外接上拉电阻,可简化电路;而且P1口是唯一的单功能口,仅能作通用的数据输入/输出口[4-5]。所以将P1.0—P1.3作为四路抢答信号输入端,K0—K3为四个选手抢答按键;P1.4是主持人宣布开始信号输入端,K4为主持人的“抢答开始”按键,单片机在中断中循环检测P1口的信号,当有按键按下时,I/O口相应的位为低电平。具体电路如图2所示。
3.3显示电路
本系统采用1个4位0.56寸小型共阳极数码管,数码管均采用三极管驱动,5V电源,当显示倒计时和选手组号时,数码管工作。P0.0—P0.7为信号的输出端,接数码管的a—dp管脚。具体电路图如图3所示。
4软件设计
4.1流程图
本系统的单片机编程在keiluVision4环境下完成,用单片机程序控制系统,实现的功能比较灵活,能较方便地对系统进行功能的扩张和改进。抢答器开始工作时,先进行初始化,完成对相关参数进行配置,以及对定时器进行设置等工作。
然后判断主持人按键是否按下,如果未按下,则返回等待;否则进入倒计时状态,倒计时结束,再判断是否有选手抢答按鍵按下,如果未按下,则原处等待;否则显示该抢答成功的选手组号;如进行新的一轮抢答,由需主持人按键重新按下。
主程序的流程图如图4所示。
4.2主程序
voidmain()//主程序
{
Timer0Init();//初始化定时器0
TR0=0;//定时器0停止计时
while(1)//主循环
{
if(Cont==0)//初始化抢答器
{
Display(3,0);//调用显示子程序
Display(4,0);//调用显示子程序
Cont=1;//进入抢答开始工作状态
}
if(Cont==1)//抢答开始
{
Display(3,0);//调用显示子程序
Display(4,0);//调用显示子程序
if(K4==0)//判断主持人按键是否按下
{
Delay(50);//调用延时子程序
if(K4==0)//再次判断主持人按键是否再次按下
{
Miao=3;//初始化倒计时时间为3秒
TR0=1;//定时器0开始计时
Cont=2;//进入倒计时3秒工作状态
}while(K4!=1);//判断主持人按键是否释放
}
}
if(Cont==2)//倒计时3秒
{
Display(4,Miao);//调用显示子程序
if(Miao==0)//判断倒计时3秒结束
{
TR0=0;//定时器0停止计时
Cont=3;////进入选手抢答工作状态
}
}
if(Cont==3)//选手抢答
{
Display(3,
文档评论(0)