问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求51单片机的8路抢答器,在普中开发板上实现

发布网友 发布时间:2022-04-25 01:27

我来回答

1个回答

热心网友 时间:2023-10-19 13:06

单片机源程序如下:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define WHO P0
sbit player1=P1^0;
sbit player2=P1^1;
sbit player3=P1^2;
sbit player4=P1^3;
sbit Ensure=P3^7;
sbit beep=P1^6;
sbit LSA=P3^2;
sbit LSB=P3^3;
sbit LSC=P3^4;
uchar state=0;
uchar ssec=0;
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar OUT[]={0x71,0x77,0x38,0x38};
void delay(uint time)
{
uint x,y ;
for(x=time;x>0;x--)
for(y=130;y>0;y--);
}
void Delay2(uint i)
{
while(i--);
}
void Show(uchar content[])
{
uchar i;
for(i=0;i<4;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
}
P2=content[i];//发送段码
Delay2(100); //间隔一段时间扫描
P2=0x00;//消隐
}
}
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0D8;
TL0 = 0x0F0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main()
{
Ensure=1;
while(1)
{
if(player1==0) //玩家1进入抢答状态
{
delay(10); //延时,按键消抖
if(player1==0) //再次判断是否进入抢答状态
{
if(state==0) //前方无人抢答状态
{
InitTimer0();
state=1; //将抢答状态置为1,防止其他玩家抢答
while(!player1) //抢答成功,蜂鸣器发声
{
beep=~beep;
delay(1);
}
WHO=table[1]; //数码管显示抢答成功的玩家编号
}
}
}
if(player2==0) //以下结构类似于玩家1
{
delay(10);
if(player2==0)
{
if(state==0)
{
InitTimer0();
state=1;
while(!player2)
{
beep=~beep;
delay(1);
}
WHO=table[2];
}
}
}
if(player3==0)
{
delay(10);
if(player3==0)
{
if(state==0)
{
InitTimer0();
state=1;
while(!player3)
{
beep=~beep;
delay(1);
}
WHO=table[3];
}
}
}
if(player4==0)
{
delay(10);
if(player4==0)
{
if(state==0)
{
InitTimer0();
state=1;
while(!player4)
{
beep=~beep;
delay(1);
}
WHO=table[4];
}
}
}
}
}
void Timer0() interrupt 1
{
TH0=(65536-45872)/255; //给定时器赋初值,定时50ms
TL0=(65536-45872)%255;
ssec++;
if(Ensure)
{
if(ssec>=100) //5s
{
EA=0;
while(1)
Show(OUT);
}
}
else
{
delay(10);
if(Ensure==0)
{
while(!Ensure);
Ensure=0;
if(ssec>=100)
{
EA=0;
}
}
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
挖矿笔记本电脑一般什么配置 ...全五分截图就可以返现两元,可是我截图了发了好评,他们就问我支付宝... 桂林数之城澜庭值得买吗? 华联都市澜庭可以买吗 云荟澜庭可以买吗 海和澜庭值得买吗 澜庭雅致能买吗 仿"瞧"写四个与"看"有关的词 用目旁表示眼的器官的字有那些 用瞅,瞧,盯,瞪,眺,瞥填空。你不要一直怎么着我,我又没做错事 ti是什么? TI图形计算如何画出一个定义域内的函数 给牛仔裤换一条拉链大约需要多少钱? TI图形计算器的相关简介 TI图形计算器是什么?主要干什么用? 关于封神榜与西游记里面的人物关系,背景问题。 封神榜里是道教与什么教的纷争 三教一起共同签订封神榜,为什么通天教主最后会一直阻挠? 《封神榜》中三教起争端的根源是什么? 请问封神榜中的 人物关系,如下 封神榜里,三教本是一家,为何通天教主会与元始天尊翻脸? 封神演义里三教分别是哪三教? 封神三教是指哪三教,教主是谁? 封神榜中多次提到三教,你觉得书中的三教和现实中的三教有关系吗? 道教的三清都是谁啊?他们的关系怎样?他们是怎样产生的?《封神演义》中说的三教是哪三教啊 ? 封神榜的人物关系图谱 安卓手机怎么下pubg+mobile 封神榜中的“三教”是指哪三教,最终他们怎么样了? 《封神榜》中三教佥定封神榜,三教是哪三教?老子和原始天尊的关系? 绝地求生手机安卓版叫什么?怎么下载? 我去给裤子补了个拉链要十块是不是被坑了? 电脑显卡二手的在哪里买? TI图形计算器的TI图形计算器应用范围 单片机八路抢答器程序 TI图形计算器的TI图形计算器型号 ti图形计算器实验班是什么 请问裤子拉链的成本是多少?分别作答,YKK,RIRI,IDEAL。 单片机八人抢答器程序设计 正常上一条西裤拉链多少钱? 帮我设计单片机课程设计实验,用c语言程序写,题目是:抢答器,要求制作一个四人抢答器,4个灯跑马循环 服装厂裤子上门巾(装拉链) 工序价格一般是多少钱一条。 TI图形计算器那个好用? 前两天买的真维斯的牛仔裤,今天发现时ykk的拉链,可ykk成本很高的,真维斯的裤子也不贵啊 关于TI图形计算器 急求最简单的单片机4人抢答器c51程序 ti图形计算器如何编辑几何等量关系 单片机C51抢答器的原理图和程序 万分感谢 急!SOS 基于单片机52八路抢答器的编程 TI图形计算器,如何画三维心形图形,求大神解答。 TI图形计算器怎么充电啊?买电池?还是USB充?