【51单片机】【protues仿真】 基于51单片机八路抢答器系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示

2、主持人按下开始,8位选手开始抢答

3、可以进行简单的加减乘除运算

4、倒计时最后5秒蜂鸣器会滴滴提醒

5、选手抢答成功,数码管会显示其号码

6、按下清楚按键进入新一轮

7、抢答成功后蜂鸣器响2秒

二、使用步骤

基于51单片机的八路抢答器设计支持8路独立抢答输入,主持人通过"开始"键启动抢答流程,抢答成功后锁定其他输入。数码管实时显示抢答者编号,同时对应LED灯点亮。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、LED指示灯模块

4、继电器模块

5、数码管显示模块

四、软件设计

#include<reg51.h>

#include<intrins.h>

sbit smg1=P2^4;

sbit smg2=P2^6;

sbit smg3=P2^7;

sbit smg4=P2^5;

sbit keyks=P2^2;

sbit keytz=P2^1;

sbit keyqc=P2^0;

sbit key1=P1^4;

sbit key2=P1^5;

sbit key3=P1^6;

sbit key4=P1^7;

sbit key5=P3^4;

sbit key6=P3^5;

sbit key7=P3^6;

sbit key8=P3^7;

sbit spk=P1^0;

int djs=60,js=0;

unsigned char flag=0;

int table[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0x80};

void main()

{

int djs1=60;

Timer0_init();

spk=1;

djs=60;

while(1)

{

LOOP1: djs=djs1;

djsxs22();

if(key1==0)

{

delayms(3);

if(key1==0)

{

while(!key1);

djs=60;

while(1)

{

TR0=0;

djsxs();

if(key2==0)

{

delayms(8);

if(key2==0)

{

do

{

while(!key2);

delayms(5);

}

while(key2!=1);

djs++;

djs1=djs;

}

}

if(key3==0)

{

delayms(8);

if(key3==0)

{

do

{

while(!key3);

delayms(5);

}

while(key3!=1);

djs--;

djs1=djs;

}

}

if(key1==0)

{

delayms(3);

if(key1==0)

{

while(!key1);

goto LOOP1;

}

}

}

}

}

if(keyks==0)

{

delayms(3);

if(keyks==0)

{

while(!keyks);

TR0=1;

while(1)

{

djsxs();

if(keytz==0)

{

delayms(3);

if(keytz==0)

{

while(!keytz);

{

TR0=0;

flag=0;

spk=1;

}

}

}

if(keyks==0)

{

delayms(3);

if(keyks==0)

{

while(!keyks);

TR0=1;

}

}

if((key1==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key1==0)

{

while(!key1);

{

spk=1;

flag=0;

}

while(1)

{

TR0=0;

djsxs1();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key2==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key2==0)

{

while(!key2);

{

spk=1;

flag=0;

while(1)

{

TR0=0;

djsxs2();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key3==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key3==0)

{

while(!key3);

{

spk=1;

flag=0;

while(1)

{

TR0=0;

djsxs3();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key4==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key4==0)

{

while(!key4);

{

spk=1;

flag=0;

}

while(1)

{

TR0=0;

djsxs4();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key5==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key5==0)

{

while(!key5);

{

spk=1;

flag=0;

}

while(1)

{

TR0=0;

djsxs5();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key6==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key6==0)

{

while(!key6);

{

spk=1;

flag=0;

}

while(1)

{

TR0=0;

djsxs6();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key7==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key7==0)

{

while(!key7);

{

spk=1;

flag=0;

}

while(1)

{

TR0=0;

djsxs7();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

if((key8==0)&&(TR0==1))

{ spk=0;

delayms(3);

if(key8==0)

{

while(!key8);

{

spk=1;

flag=0;

}

while(1)

{

TR0=0;

djsxs8();

djsxs30();

djsxs();

if(keyqc==0)

{

delayms(3);

if(keyqc==0)

{

while(!keyqc);

goto LOOP1;

}

}

}

}

}

}

}

}

}

}

五、实验现象

演示视频:

相关推荐
似水এ᭄往昔9 小时前
【C++】--list的使用和模拟实现
开发语言·c++
程序员大雄学编程9 小时前
「用Python来学微积分」18. 微分
开发语言·python·数学·微积分
我命由我123459 小时前
PDFBox - PDF 页面坐标系、PDF 页面尺寸获取、PDF 页面位置计算
java·服务器·开发语言·笔记·后端·java-ee·pdf
小苏兮10 小时前
【数据结构】二叉搜索树
开发语言·数据结构·c++·学习·1024程序员节
ᐇ95910 小时前
Java 程序运行原理与内存模型解析
java·开发语言
ai安歌10 小时前
【Rust编程:从新手到大师】 Rust 控制流深度详解
开发语言·算法·rust
czhc114007566310 小时前
JAVA1027抽象类;抽象类继承
android·java·开发语言
练习时长一年10 小时前
jdk动态代理的实现原理
java·开发语言
无限进步_10 小时前
深入理解C语言scanf函数:从基础到高级用法完全指南
c语言·开发语言·c++·后端·算法·visual studio
清风66666610 小时前
基于单片机的鱼缸监测与远程管理系统设计
单片机·毕业设计·课程设计·1024程序员节·期末大作业