八路抢答器系统51单片机设计【附Proteus仿真、C程序、原理图及PCB文件、元器件清单和论文等】「建议收藏」

八路抢答器系统51单片机设计【附Proteus仿真、C程序、原理图及PCB文件、元器件清单和论文等】「建议收藏」获取全套设计资源,请见后文说明…设计要求1)抢答器同时供8名选手或2个代表队比赛,分别用8个按钮S0-S7表示;2)设置一个系统清除和抢答控制开关S,该开关由主持人控制;3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止;4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30s等)。当主持人启动“开始”按键后,定时…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

设计要求
1)抢答器同时供8名选手或2个代表队比赛,分别用8个按钮S0-S7表示;
2)设置一个系统清除和抢答控制开关S,该开关由主持人控制;
3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止;
4)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30s等)。当主持人启动“开始”按键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续时间为0.5s左右;
5)参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手编号和抢答时间,并保持到主持人将系统清除为止;
6)如果定时时间到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00;
7)设计出软件编程方法,并写出源代码;
8)主机与从机实现无线抢答;
9)用Proteus进行仿真,Altium Designer绘制原理图和PCB;

概述
本文介绍了数码显示八路抢答器电路的组成、设计及功能,该抢答器除具有基本的抢答功能外,还具有计时和报警的功能。主持人通过时间预设开关预设供抢答的时间,系统将完成自动倒计时。

若在规定的时间有人抢答,则计时将自动停止,若在规定的时间无人抢答,则系统中的蜂鸣器将发响,提示主持人本轮抢答无效,实现报警功能,若超过抢答时间则抢答无效。

本系统采用51单片机作为整个控制核心。控制系统主要由:显示模块、控制模块、报警模块和抢答模块组成。

工作时,该系统通过矩阵键盘输入抢答信号,经单片机的处理后,输出控制信号,利用一个4位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。
在这里插入图片描述
proteus仿真电路图
在这里插入图片描述
在这里插入图片描述

系统原理图
在这里插入图片描述
PCB图
在这里插入图片描述
仿真结果分析
加载“八路抢答器.hex”文件到51单片机,点击运行。八路抢答器程序初始化后,数码管显示:—-。等待主持人按键输入。
在这里插入图片描述
按下“主持人”键,数码管显示:00-0。此时,可以通过“计时+”和“计时-”键,设置计时时间。本例中,我们设置计时时间为30秒。
在这里插入图片描述
在这里插入图片描述
再次按下“主持人”键,蜂鸣器哔的一声,倒计时开始,8位选手可以开始进行抢答。假设3号选手,在计时时间内抢答成功。此时,计数停止,数码管显示剩余计时数和当前选手号,其对应的3号LED灯点亮。
在这里插入图片描述
倒计时,还剩5秒时,若仍没有选手抢答,此时蜂鸣器发出连续提示音。若计时结束,无人抢答,此时数码管显示:00-0;按下“主持人”键,数码管显示:—-;再次按下“主持人”键,显示30-0;如果不对计时时间作修改,再次按下“主持人”键,新一轮计时开始。

如果,在主持人未开始计时时,即抢答未开始前,有人抢答。假设2号选手抢答,此时数码管显示:FF-2,蜂鸣器长鸣,2号红色LED灯点亮。选手犯规抢答后,按下‘主持人’键,蜂鸣器停止,数码管显示:00-0,主持人设置时间,重新开始。
在这里插入图片描述
部分C代码

/******************************************************** 函数名称:void scan(void) 函数作用:按键检测函数 参数说明: ********************************************************/ 
void scan(void)
{ 
	
uchar qiangda_num=0;
//主持人键
if(key_zhu==0)		   //按键按下
{ 

delayms(7);		   //显示消抖
if(key_zhu==0&&zhu_f!=2&&qiang_f==0&&wan_f==0)//判断是否有人犯规或者抢答是否开始或者抢答是否完成
{ 

zhu_f++;	   //比赛阶段标记+1
if(zhu_f==2)   //比赛正式开始
{ 

TR0=1;	   //比赛开始,开启定时
wan_f=0;   //清除比赛完成标志
bajing();  //提示比赛开始
}			
}
else
if(key_zhu==0&&qiang_f==1)   //判断是否有人犯规
{ 

buzz=1;					 //清除报警
qiang_f=0;				 //清除抢答标志
number=0;				 //清除选手编号
time=EEPROM_read(0x2000);//重新读取存储的抢答总时长
led_kongzhi(0,0,0);
}
else						 
if(key_zhu==0&&wan_f==1) //判断是否有人完成
{ 

buzz=1;				 //清除报警
wan_f=0;			 //清除完成标志
number=0;			 //清除选手编号
time=EEPROM_read(0x2000);//重新读取存储的抢答总时长
led_kongzhi(0,0,0);
}
else
if(key_zhu==0&&zhu_f==2) //暂停比赛
{ 

TR0=0;				 //关闭定时
zhu_f=1;			 //重新回到设置比赛时间阶段
bajing();			 //提示暂停比赛
}
while(!key_zhu);//检测按键松开
}
//加值键,支持连按
if(key_jia==0&&zhu_f==1&&qiang_f==0)	 //判断是否在设置倒计时时间
{ 

delayms(7);							 //延时消抖
if(key_jia==0)						 //再次判断按键按下
{ 

if(time<99)	                     //比赛时间最大值99S
time++;					 	 //比赛时间+1S
EEPROM_delete(0x2000);			 //擦除EEPROM煽区
EEPROM_write(0x2000,time);		 //写入【比赛时间】数据保存
display(time/10,time%10,10,0);	 //显示设置比赛时间
}
}
//减值键,支持连按
if(key_jian==0&&zhu_f==1&&qiang_f==0)	 //判断是否在设置倒计时时间
{ 

delayms(7);							 //延时消抖
if(key_jian==0)						 //再次判断按键按下
{ 

if(time!=0)	  					 //比赛时间最小值0S
time--;		                 //比赛时间-1S
EEPROM_delete(0x2000);			 //擦除EEPROM煽区
EEPROM_write(0x2000,time);		 //写入【比赛时间】数据保存
display(time/10,time%10,10,0);	 //显示设置比赛时间
}
}
//选手按键
qiangda_num=qianda();
if(qiangda_num!=0)                              //判断是否有选手按下按键
{ 
 
if(zhu_f!=2&&qiang_f==0&&wan_f==0)//如果还没有开始抢答时按下
{ 

zhu_f=1;
buzz=0;						  //蜂鸣器报警
qiang_f=1;					  //抢答犯规标记
number=qiangda_num;
led_kongzhi(number,1,0);
}
else
if(zhu_f==2&&wan_f==0)			 //在开始抢答时按下
{ 

wan_f=1;					 //标记抢答完成
zhu_f=0;					 //主持人标记复位
TR0=0;						 //关闭倒计时定时器
number=qiangda_num;
led_kongzhi(number,1,0);
bajing();					 //提示有人抢答完成
}
}  
}
/********************************************************* 函数名称:void main() 函数作用:主函数函数 参数说明: *********************************************************/
void main()
{ 

uchar i=0;
T0_init();						 //定时器初始化
if(key_jian==0)	  
{ 

delayms(100);
if(key_jian==0)
{ 

EEPROM_delete(0x2000);	 //擦除EEPROM煽区
EEPROM_write(0x2000,30); //写入【比赛时间】数据保存 
}
}
time=EEPROM_read(0x2000);		 //读取存储的【比赛时间】数据
for(i=0;i<9;i++)
{ 

led_kongzhi(i,1,1);
delayms(10);	
}
for(i=9;i>0;i--)
{ 

led_kongzhi(i-1,0,1);
delayms(10);	
}
led_kongzhi(0,0,0);
while(1)						 //死循环
{ 

scan();						 //按键检测处理
if(zhu_f==0&&wan_f==0)		 //判断是否还没进入比赛阶段

分享的资源有
(1)基于51单片机的八路抢答器系统设计毕业论文完整版;
(2)Proteus仿真文件;
(3)Keil C程序文件;
(4)元器件清单;
(5)Visio流程图;
(6)原理图及PCB文件;

资源分享如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源获取方法
资源获取方法
资源获取方法
重要的事情说三遍!!!!!!!!!!!,
获取完整的八路抢答器设计论文、Proteus仿真、C程序、PCB及原理图、Visio流程图、元器件清单等全套资料。请微信搜索关注公众号:交院小智

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194199.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mac电脑如何快速显示桌面及切换应用「建议收藏」

    mac电脑如何快速显示桌面及切换应用

  • python解释器找不到_python解释器路径

    python解释器找不到_python解释器路径Pycharm“nothingtoshow”ininterpreters(解决Pycharm无法找到编译器的问题)问题描述解决方案问题原因解决过程问题描述暑假放假两周,两周没写代码,打开PyCharm发现编译器找不到了(PythonInterpreterNothingtoshow),程序自然也无法运行,如图:解决方案解决方案来自StackOverflow,原出处:link.(https://stackoverflow.com/questions/67297284/pycharm

  • flowable流程详解

    flowable流程详解flowable图例解释请假流程bpmn20.xml文件请假流程示例图例解释开始事件:图中用细线圆圈来表示,是流程实例的开始点箭头:表示节点之间的流转指向。用户任务:在图中用左上角有人的圆角矩形表示,这些是需要用户来操作的节点。图中有两个,第一个表示需要经理进行审批来同意或拒绝,第二个表示用户来确认销假。排它网关:用叉形符号填充的菱形表示,从该图中出来的箭头往往有多个,但只有一个满足条件,流程会沿着满足条件的方向流转。自动化任务:左上角有齿轮形状的的圆角矩形,表示自动执行的节点。图中

  • Kafka 是什么?

    Kafka 是什么?前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系正文Kafka的诞生背景2011年年初,美国领英公司(Linkedin)开源了一款基础架构软件,以奥地利作家弗兰兹・卡夫卡(FranzKafka)的名字命名。之后Linkedin将其贡献给Apache基金会,随后该软件于2012年10月成功完成孵化并顺利晋升为Apache

    2022年10月13日
  • not found for libcrypto「建议收藏」

    not found for libcrypto「建议收藏」解决方法sudocp/usr/lib/libcrypto.35.dyliblibcrypto.35.dylib参考:Unabletoconfigureopenssl,libcryptonotfounderrorwithopenssllibraryinstalled

  • LCD Keypad Shield

    LCD Keypad Shieldhttp://wiki.dfrobot.com.cn/index.php/(SKU:DFR0009)LCD_Keypad_Shield(Arduino兼容)简介LCDKeypadShield是一款提供2行16字符液晶显示的Arduino扩展板。扩展了多个按键输入,可供用户作为LCD显示屏的菜单选择按键或者操控按键使用。一个扩展板就能让你与Arduino设备进行互动。我们还扩展Ardui…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号