八路抢答器c语言程序,八路抢答器-51单片机(附Proteus仿真、C代码、原理图及PCB、论文和元器件清单)…

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

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

Jetbrains全系列IDE稳定放心使用

获取全套设计资源,请见后文说明…

设计要求

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位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。

5fdd9da95419

系统结构图.jpg

proteus仿真电路图

5fdd9da95419

仿真电路图.jpg

5fdd9da95419

操作说明.jpg

系统原理图

5fdd9da95419

原理图.jpg

PCB图

5fdd9da95419

PCB.jpg

仿真结果分析

加载“八路抢答器.hex”文件到51单片机,点击运行。八路抢答器程序初始化后,数码管显示:—-。等待主持人按键输入。

5fdd9da95419

图1.jpg

按下“主持人”键,数码管显示:00-0。此时,可以通过“计时+”和“计时-”键,设置计时时间。本例中,我们设置计时时间为30秒。

5fdd9da95419

图2.jpg

5fdd9da95419

图3.jpg

再次按下“主持人”键,蜂鸣器哔的一声,倒计时开始,8位选手可以开始进行抢答。假设3号选手,在计时时间内抢答成功。此时,计数停止,数码管显示剩余计时数和当前选手号,其对应的3号LED灯点亮。

5fdd9da95419

图4.jpg

倒计时,还剩5秒时,若仍没有选手抢答,此时蜂鸣器发出连续提示音。若计时结束,无人抢答,此时数码管显示:00-0;按下“主持人”键,数码管显示:—-;再次按下“主持人”键,显示30-0;如果不对计时时间作修改,再次按下“主持人”键,新一轮计时开始。

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

5fdd9da95419

图5.png

部分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文件;

资源分享如下

5fdd9da95419

资源.jpg

5fdd9da95419

资源.jpg

5fdd9da95419

资源.jpg

5fdd9da95419

资源.jpg

5fdd9da95419

资源.jpg

资源获取方法

资源获取方法

资源获取方法

重要的事情说三遍!!!!!!!!!!!,

获取完整的八路抢答器设计论文、Proteus仿真、C程序、PCB及原理图、Visio流程图、元器件清单等全套资料。请搜索关注我的公众号:交院小智

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

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

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

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

(0)


相关推荐

  • jar包提示没有主清单属性_jar什么意思

    jar包提示没有主清单属性_jar什么意思看pom.xml。将同事写的一个java项目打包成jar包,发布,运行提示没有主清单属性。究其原因,在pom.xml里的build设置。原设置:<!–maven的插件–><build><!–配置java版本不配置的话默认父类配置的是1.6–><pluginManagement><plugins><plugin&g

  • linux日志审计系统_linux查看审计记录命令

    linux日志审计系统_linux查看审计记录命令Linux日志审计常用命令find、grep、egrep、awk、sedLinux中常见日志以及位置位置名称/var/log/cron记录了系统定时任务相关的日志/var/log/auth.log记录验证和授权方面的信息/var/log/secure同上,只是系统不同/var/log/btmp登录失败记录使用lastb命令查看/var/log/wtmp登录失成功记录使用last命令查看/var/log/lastlog最后一次登录

    2022年10月31日
  • QueueUserWorkItem 初步学习

    QueueUserWorkItem 初步学习 DWORDWINAPITestThreadPool(PVOIDpContext);CRITICAL_SECTIONg_cs;int_tmain(intargc,_TCHAR*argv[]){ InitializeCriticalSection(&g_cs); SECURITY_ATTRIBUTESsa; sa.bInheritHandle=TRUE; sa.nLen

  • ajax跨域的解决办法_jsonp解决跨域问题

    ajax跨域的解决办法_jsonp解决跨域问题才发送请求,然后执行servlet,servlet给它响应一段js代码回去,它接收到js代码解释并执行,显示效果,它并没有达到局部刷新的效果,我们让它达到局部刷新的效果,我们点击某一个按钮,我们让它局部刷新,显然上面让页面打开的时候加载script标签就不行了,我们可以让他先加载完,点击页面某一个按钮去加载script标签,来达到页面的局部刷新,整个过程跟ajax没有关系。当out.print(“sayHello({\”name\”\”jackson\”})”)重新刷新页面响应成功。……

  • 腾讯云服务器php+mysq+nginx配置出现的问题及解决方法(亲测)

    腾讯云服务器php+mysq+nginx配置出现的问题及解决方法(亲测)

    2021年10月14日
  • C# Winform 让整个窗口都可以拖动

    C# Winform 让整个窗口都可以拖动

发表回复

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

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