基于51单片机的八路抢答器【代码+仿真+论文+原理图+PPT等16个文件夹】

 一、项目功能简介

整个设计系统由STC89C52单片机+数码管显示模块+74LS138模块+LEDD灯模块+按键模块组成。

具体功能:

1. 抢答功能当主持人按下开始抢答按键后,八路按键中任一路按键首先按下都将闭锁其他各路按键,抢答成功,通过单片机程序处理后在数码管上显示抢答者的分组号。

2. 限时抢答 设定抢答时间 20s(可调整),当主持人按下抢答按键后,20s 内抢答有效,抢答时间已过,报警并封锁各路按键,抢答无效。

3. 显示功能 在数码管上可显示抢答时间倒计时、 答题倒计时及抢答成功者的号码。

4. 抢答成功提示,本设计给每位选手设置了二极管,当抢答成功后,对应得红的会亮起来。

二、系统构成图


三、仿真

本次项目采用proteus8.11软件实现仿真设计。由于proteus软件版本原因,不能确保proteus其他版本软件能够正常运行,请安装好对应软件版本(版本一致或者高于这个版本都可以)

四、程序


/* 主函数 */
void main(void)
{
  DataPort0 = 0x40;        //显示"----"
  Seg1 = 0;
  Seg2 = 0;
  Seg3 = 0;
  Seg4 = 0;
  
  delayms(1000);          //延时大约1s 
  T0_Init();            //定时器初始化
  dis_buf[0] = duan_ma[0];
  dis_buf[1] = 0x40;
  dis_buf[2] = duan_ma[Countdown_num/10];
  dis_buf[3] = duan_ma[Countdown_num%10];
  BUZZ_OPEN            //蜂鸣器响一次
  LED0 ;              //LED全关掉
  while(1)
  {  
    KeyNumber = Key();      //检测哪个按键被按下
    Key_Set();          //按键处理函数
    delayms(2);
    
  }
}

五、原理图

本原理图利用AD17软件设计。

六、参考论文

总共有12k字的论文,都是自己收集资料纯手打的。

论文仅限于参考,内容跟项目对应。

七、全部资料


八、资料获取

关注公众号,后台回复:51八路抢答器

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于数字电路设计的八路抢答器原理图+说明文档+Multisim仿真源文件,可以做为你的学习设计,实验参考。 一、设计要求 本设计要求的时钟具有如下功能: 1、总共有八位选手参与抢答; 2、当主持人没有按下开始时,任何抢答都无效; 3、当主持人按下开始按键后,开始30秒倒计时,此时任何选手都可以参与抢答; 4、当第一个选手抢答成功后,会显示选手的编号,同时倒计时停止,并且后面的其他选手抢答均无效; 5、当倒计时到最后五秒时,指示灯会闪烁,并且如果倒计时到0了还没有选手抢答,那么此次无效。 二、总体思路 本设计主要分成两大块电路:抢答电路和倒计时电路。 抢答电路要解决如下几个问题: 1、计算出选手的编号,这个可以采用8-3编码器。 2、要保证只有第一个选手的抢答是有效的,后面其他的无效,这个就需要采取锁存电路,当还没有任何人抢答的时候,锁存器是不生效的,处于直通的工作状态,当有第一个人抢答了,锁存器就开始起作用,将该号码固定下来,后面的即使有人抢答,其编号也无法通过锁存电路,实现该电路可以采用4个D触发器。前三个触发器用来输出选手编号,后面一个触发器用来控制锁存器的工作状态(是直通还是锁存),只需要让D触发器的CLK端控制得当,就可以实现锁存。
基于AT89C51单片机八路抢答器程序代码仿真图及课程设计说明书 一、设计说明书 1. 设计目的: 该课程设计旨在通过使用AT89C51单片机,设计并实现一个八路抢答器系统,用于课堂教学或活动中的抢答竞赛。 2. 设计原理: 该系统由单片机、按键、LED灯等组成。参赛选手通过按下手中的按键进行抢答,其中最先按下的选手将通过LED灯亮起的方式显示其抢答成功。 3. 系统功能: (1) 抢答器:实现八路抢答器功能,当选手按下按键抢答后,系统能够及时判断出最先抢答的选手。 (2) 亮灯显示:通过LED灯的亮灭来显示选手的抢答顺序,亮灯即为抢答成功。 4. 硬件设计: (1) AT89C51单片机:作为系统的核心控制器。 (2) 按键:每个选手手中都有一个按键,用于进行抢答操作。 (3) LED灯:显示抢答顺序。 5. 软件设计: (1) 初始化:设置IO口,使其对应到按键和LED灯。 (2) 主程序循环: a. 检测选手按键是否按下。 b. 若按键按下,则判断是否有选手先前按下。 c. 若无选手先前按下,则该选手抢答成功,点亮LED灯,并记录抢答顺序。 d. 若有选手先前按下,则忽略此次按键。 二、程序代码仿真图 ```c #include <reg51.h> #define KEY P1 // 按键 #define LED P2 // LED灯 void delay(unsigned int t) { while (t--) { unsigned char i = 0xFF; while (i--); } } void main() { unsigned char order = 0; // 记录抢答顺序 KEY = 0xFF; // 高电平表示未按下按键 LED = 0x00; // 灭灯 while (1) { if (KEY != 0xFF) { // 检测到按键按下 delay(1000); // 延时消抖 if (KEY != 0xFF) { // 再次检测按键状态 if (order < 8) { // 最多只能有8个选手抢答 LED |= (1 << order); // 点亮对应顺序的LED灯 order++; // 抢答顺序自增 } } } } } ``` 以上是基于AT89C51单片机八路抢答器程序代码的简单示例,具体实现中需要根据实际需求进行相应的优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值