基于单片机的八路抢答器的设计

本文介绍了一款由单片机为核心的八位抢答器设计,具备清除控制、锁存显示、定时抢答及蜂鸣提示功能。设计包括流程图、原理图和单片机代码实现,适用于团队竞赛,时间由主持人设定,抢答过程透明且公平公正。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.设计要求:

1.以单片机为核心,设计一个八位竞赛抢答器:同时供八名选手或八个代表队比赛,分别用八个按钮S0~S7表示。

2.设置一个系统清除和抢答控制开关S,开关由主持人控制。

3.抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。

5.当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。

6.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

7.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

2.流程图:

3.Protues原理图:

      效果图:

4.单片机代码:

#include<reg51.h>
#define u8 unsigned char
#define u16 unsigned int

sbit highone = P3^0;	                    //倒计时数码管高标志位
sbit lowone = P3^1;		                //倒计时数码管低标志位
sbit hightwo = P3^2;	                    //选手编号数码管高标志位
sbit lowtwo = P3^3;		                //选手编号数码管低标志位
sbit set = P3^5;		                    //清除/设置时间按钮
sbit start = P3^6;		                    //开始按钮
sbit voice = P3^7;		                    //蜂鸣器输出位
sbit key1=P1^0;			                //选手1号按钮
sbit key2=P1^1;			                //选手2号按钮
sbit key3=P1^2;			                //选手3号按钮
sbit key4=P1^3;			                //选手4号按钮
sbit key5=P1^4;			                //选手5号按钮
sbit key6=P1^5;			                //选手6号按钮
sbit key7=P1^6;			                //选手7号按钮
sbit key8=P1^7;			                //选手8号按钮

u8 code number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极
u8 xianshi[]={0x3f,0x3f,0x3f,0x3f};
u8 Tpointer=30;			                //时间指针
u8 Allpointer=0;		                    //总指针
u8 tp=30;				                    //时间副指针
u16 mm = 0;				                //寄存抢答选手号
u8 done = 0;			                    //计时完成标志和抢答完成标志
u16 i;
u16 q;
u16 w;

void delay(u16 h)		                    //延时函数
{
	while(h--);
}

void shujuchuli()		                    //数据处理函数
{									    //处理时间显示数据和选手号显示数据
	 xianshi[0]=number[tp/10];              //整除10作为倒计时十位
	 xianshi[1]=number[tp%10];	            //取余数运算作为倒计时个位
	 xianshi[2]=0x3f;
	 xianshi[3]=number[mm];		        //作为选手号个位
}

void xuanze()			                    //选择函数函数
{										//选择标志位接通对应的数码管
	u8 k;									
	for(k=0;k<4;k++)
	{
		switch(k)
		{
			case(0):						//显示倒计时数码管低位
					highone=0;lowone=1;hightwo=0;lowtwo=0;P0=xianshi[k];delay(10);break;        
			case(1):						//显示倒计时数码管高位
					highone=1;lowone=0;hightwo=0;lowtwo=0;P0=xianshi[k];delay(10);break;	
			case(2):						//显示选手编号数码管低位
					highone=0;lowone=0;hightwo=0;lowtwo=1;P2=xianshi[k];delay(10);break;	
			case(3):						//显示选手编号数码管高位
					highone=0;lowone=0;hightwo=1;lowtwo=0;P2=xianshi[k];delay(10);break;	
		}
		P0=0x00;	                        //消影
		P2=0x00;	                        //消影
	}
}

void checksetkey2()		                //检测设置时间按钮函数,用于调整抢答时间
{
	if(set==0)		  
	{	
		delay(1000);   	                //消抖
		if(set==0)	 
		{	
			if(Tpointer<60)
			{
				Tpointer= Tpointer+1;
				tp= tp+1;
			}
			else
			{
			 	Tpointer=0;
				tp=0;
			}			
		}		
		while(!set)
		{
			xuanze();	 
		}
	}		
}
代码完整版请转:https://download.csdn.net/download/weixin_47675608/74047012

由于篇幅有限相应的代码和仿真图已经上传(包括程序和课程设计报告),有需要的自取:https://download.csdn.net/download/weixin_47675608/74047012

压缩包内容包括(Protues仿真,单片机程序和单片机课程设计报告)

课程设计报告目录

对您有帮助的话,请点赞评论收藏转发关注您的鼓励才是作者创作的动力,求打赏

PCB 原理图引言 单片机把我们带入了智能化的电子领域,许多繁琐的系统都由单片机进行设计,便能收到电路更简单、功能更齐全的良好效果。若把经典的电子系统当作一个僵死的电子系统则是一个具有“生命”的电子系统。 随着技术的技术的进步,单片机与串口通信的结合更多地应用到各个电子系统中已成为一种趋势。本设计就是基于单片机设计抢答器系统,通过串口通信动态传输数据,使抢答系统有了更多更完善的功能。单片机系统的硬件结构给与了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。对于抢答器我们大家都知道那是用于选手做抢答题时用的,选手进行抢答,抢到题的选手来回答问题。抢答器不仅考验选手的反应速度同时也要求选手具备足够的知识面和一定的勇气。选手们都站在同一个起跑线上,体现了公平公正的原则。 1 8路数字抢答器的总体设计 1.1 方案的确定 采用MCS-51系列单片机AT89S51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改性。 CS-51单片机特点如下: 1. 可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU ,程序指令和数据都可以烧写在ROM许多信号通道都在同一芯片,因此可靠性高。 2. 易扩充:单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统. 3. 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。 所以采用单片机AT89S51组成的最小系统(AT89S51加复位电路和外界晶体振荡器)为主要部件,加按键作为选手抢答和主持人控制、4位共阴数码管为显示选手的编号和剩余的抢答时间。 1.2 抢答器的工作原理 抢答器的工作原理是利用单片机的定时器T0、T1中断完成,其余状态循环调用显示子程序,用4个共阴极LED数码管来显示,用P1口作为数码管的八个段选,由于P1口为高电平呈输入状态,当有按键按下时,P1口呈高电平与按键对应的发光二极管满足点亮条件点亮。用P0口中的P2.0、P2.1、P2.2、作为4个数码管其中3个位选,P2口接8个按键,提供选手抢答,P2.3接一个按键,主持人提供开始之用。它对整个抢答器起控制作用。当主持人按下开始按键后,选手就可以按下自己的抢答键进行抢答。当主持人没有按下开始键时,选手不能抢答。当选手答题完毕后,主持人要按下复位键,准备进行下一轮抢答。 蜂鸣器:蜂鸣器主要是起到提醒和警的作用,当主持人按下开始键时,蜂鸣器响,当有选手犯规时,蜂鸣器也要发出声音,还有就是当倒计时开始时,蜂鸣器就要发出警的声音。它是利用三极管处于开关状态时的导通与截止工作,在三极管导通时蜂鸣器工作,三极管截止时蜂鸣器不工作。 数码管显示:数码管主要显示两部分内容。一部分是参加选手的编号,另一部分是 显示倒计时。采用4位共阴数码管显示,其内部发光二极管为共阴极接低电平,当对应发光二极管一端为高电平时发光二极管点亮,显示的数字。 数码管使用条件: ﹙1﹚段及小数点上加限流电阻。 ﹙2﹚使用电压:段:根据发光颜色决定;小数点:根据发光颜色 决定。 ﹙3﹚使用电流:静态:总电流80mA(每段10mA);动态:平均电 流4-5mA,峰值电流100mA。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

緑豆君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值