基于AT89C51单片机的抢答器的设计(数码管:四位一体共阳)

该博客介绍了基于AT89C51单片机设计的一个8人抢答器,具备10秒倒计时和60秒答题时间的功能。当选手按下对应按键,数码管会显示编号并伴随声音提示。设计包括按键扫描、倒计时处理和数码管显示等部分,并提供了源代码实现。
摘要由CSDN通过智能技术生成

设计要求

基于AT89C51单片机设计制作一个抢答器,具体要求如下:

设计一个智力竞赛抢答器,可同时共8名选手参加比赛,编号为1、2、3、4、5、6、7、8,各用一个按键。

用一个按键作为主持人总开关,用来控制系统的清零和抢答的开始。

抢答器开始后,数码管开始10秒倒计时,若有选手按动抢答按钮,在LED数码管上显示选手的编号,同时灯亮且伴随声音提示;倒计时完成后,选手不能再抢答;有人抢答成功后,要禁止其他选手抢答,同时开始显示60秒回答时间倒计时提示;最先抢答选手的编号一直保留到主持人将系统清零。

仿真与调试

 

 

 

 

 

源代码:

#include<at89x51.h>
#define uchar unsigned char
#define uint unsigned int
char s;
uchar num=0;
char time=10;    //抢答时间
char datitime=60;    //答题限时时间
uint tt,t1;    //T0,T1定时器定一秒时
bit flag,s_flag=1,b_flag,fall_flag;    //标志位
bit K_startcountflag,K_timecountflag;    //时间调整标志位
sbit K0=P3^0;
sbit beep=P3^7;         //蜂鸣器输出口
sbit rled=P3^1;        //指示灯输出口
sbit K1=P1^0;        
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit K_Time=P3^2;    //答题计时键
sbit K_startcount=P3^3;    //开始抢答时间调整键
sbit K_timecount=P3^4;    //答题计时时间调整键
void delay(uchar ms)
{
    uchar y;
    for(;ms>0;ms--)
        for(y=120;y>0;y--);
}
uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar code tablewe[]={0XFE,0XFD,0XFB,0XF7};
void T0_Init(void)
{
    TMOD=0X01;
    TH0=(65536-2000)/256;
    TL0=(65536-2000)%256;
    TH1=(65536-2000)/256;
    TL1=(65536-2000)%256;
    ET0=1;
    ET1=1;
    EA=1;
    P0=0;
}
void Key_Scan(void)        //开始键扫描
{
    if(K0==0)
    {
        delay(10);
        i

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值