目录
一、主要功能
二、使用步骤
三、硬件资源
四、软件设计
五、实验现象
一、主要功能
1、数码管显示
2、主持人按下开始,8位选手开始抢答
3、第一次使用要设置抢答时间,支持掉电存储
4、选手抢答成功,数码管会显示其号码
5、按下主持人按键进入新一轮
二、使用步骤
基于51单片机的八路抢答器数码管系统设计主要包含硬件电路搭建和软件编程两部分,核心功能是通过数码管显示抢答选手编号及倒计时信息。
三、硬件资源
1、51单片机核心模块
2、按键模块
3、数码管显示模块
4、蜂鸣器模块
5、指示灯模块
四、软件设计
#include<reg52.h> //头文件
#include<SMG.h>
#include<EEPROM.h>
#include<INTERRUPT.h>
#define uchar unsigned char//宏定义
#define uint unsigned int
/**********************引脚定义************************/
sbit key_zhu=P2^2; //主持人键
sbit key_jia=P2^1; //加键
sbit key_jian=P2^0; //减键
sbit key_1=P1^1; //八位选手按键定义
sbit key_2=P1^3;
sbit key_3=P1^5;
sbit key_4=P1^7;
sbit key_5=P3^1;
sbit key_6=P3^3;
sbit key_7=P3^5;
sbit key_8=P3^7;
sbit led_1=P1^0; //八位LED灯按键定义
sbit led_2=P1^2;
sbit led_3=P1^4;
sbit led_4=P1^6;
sbit led_5=P3^0;
sbit led_6=P3^2;
sbit led_7=P3^4;
sbit led_8=P3^6;
/**********************变量定义************************/
uchar zhu_f=0; //比赛进行阶段标记位,=0表示没有按。=1表示在设置倒计时的时间。=2表示开始抢答
uchar qiang_f=0; //抢答犯规标记,=0没有犯规。=1表示有人犯规
uchar wan_f=0; //抢答完成标记,=0抢答没完成后还没有开始。=1表示抢答完成
uchar time=30; //倒计时时间
uchar T0_num; //定时器0计数
uchar number; //抢答成功选手的编号,或犯规选手的编号。=0的时候表示没有
/********************************************************
函数名称:void delayms(uint ms)
函数作用:毫秒延时函数
参数说明:
********************************************************/
void delayms(uint ms)
{
unsigned char i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********************************************************
函数名称:void bajing()
函数作用:抢答犯规报警提示
参数说明:
********************************************************/
void bajing()
{
buzz=0; //开蜂鸣器
delayms(10);
buzz=1; //关蜂鸣器
delayms(10);
}
/********************************************************
函数名称:uchar qianda()
函数作用:抢答按键检测,返回抢答编号
参数说明:
********************************************************/
uchar qianda()
{
uchar temp=0;
if(key_1==0) //一号犯规,下同
temp=1; //记录1号
else
if(key_2==0)
temp=2;
else
if(key_3==0)
temp=3;
else
if(key_4==0)
temp=4;
else
if(key_5==0)
temp=5;
else
if(key_6==0)
temp=6;
else
if(key_7==0)
temp=7;
else
if(key_8==0)
temp=8;
return temp;
}
五、实验现象
演示视频: