目录
一、主要功能
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;    
                                         }
                                         }       
                                           }
                                  }
                         }  
}
                }
                }
  }
 }
五、实验现象
演示视频:

