基于单片机的四路抢答器

系统设计软件:Proteus8.10和keil4 。proteus8.10版本安装包可在微信公众号下载

系统源代码和仿真等资料可在文末的链接中下载

系统组成:单片机最小系统、八位共阳极数码管(前五位用于显示时间,第六位不显示,最后两位用于显示玩家)、七个LED、八个NPN三极管、独立按键(分为两个部分:一是时间设置和抢答等按键、二是四位玩家操作按键)

系统功能:系统具有时间设置,开始抢答,重新开始、抢答完成等

初始上电显示时间设置 可对时间的分和秒进行设置 设置完成后 ,然后按下开始抢答按键进行抢答,此时时间由你设置好的时间开始倒计时,对应的LED灯点亮。四位玩家可以进行抢答,当有任何一位玩家抢答后,时间停止倒计时。其他玩家抢答无效。一轮抢答结束后,此时按下新一轮按键,进入时间设置界面,可设置时间进行第二轮抢答。

具体组成如下图所示:

上电 ,前面四位数码管显示时间 后面两位数码管显示玩家序号

抢答结束界面:

部分代码:

#include "reg52.h"
#include "intrins.h"
#include "key.h"
#define uchar unsigned char 
#define uint unsigned int
uchar dd[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
//共阳极数码管断码表 
uchar count=0; //定义计数时间变量
uchar fen=1,miao=20;  //定义时间初始值

sbit k0=P3^7; //分秒切换按键

    //定义按键接口
sbit k1=P1^0;//时间+
sbit k2=P1^1; //时间-
sbit k3=P1^2; //开始
 sbit k4=P1^3; //重新开始
sbit k5=P1^4;  //  1号
 sbit k6=P1^5;    // 2号
sbit k7=P1^6;    //3号
 sbit k8=P1^7;      // 4号
//定义按键标志位 用于后期的切换和判断
bit k0_flag=0, k3_flag=0, k5_flag=0,k6_flag=0, k7_flag=0, k8_flag=0;

uchar yi=0,er=0;  //定义玩家变量

void delay1ms()    //@11.0592MHz 延时函数
{
  unsigned char i, j;

  _nop_();
  _nop_();
  _nop_();
  i = 11;
  j = 190;
  do
  {
    while (--j);
  } while (--i);
}

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐