• 大小: 680KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: 其他
  • 标签: c  protues  

资源简介

基于单片机的 四路抢答器课程设计,包含程序,protues仿真文件,可根据自己电路进行修改。

资源截图

代码片段和文件信息


 #include“reg51.h“
   sbit k1=P2^2;
   sbit k2=P2^3;
   sbit k3=P2^4;
   sbit q1=P3^0;
   sbit q2=P3^1;
   sbit q3=P3^2;
   sbit q4=P3^3;
   sbit bz=P1^5;
   int a=5;
   int m=10;
   int shige;
   int time=0; 
   int c=1;
  int zan=1;
  int f1f2f3f4;
  f1=0;f2=0;f3=0;f4=0;
char table[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x71};

   void delay(int time)//延时程序
  {int j;
    for(;time>0;time--)
     for(j=50;j>0;j--);}

  void shu()    //数字处理显示
{ shi=m/10;
 ge=m%10; }


  void anjian ()//按键扫描

{if((m!=0)&&(zan%2==0) )
{if(a==5)
{   if(q1==0)
  {delay(5);
    if(q1==0)
 a=2;
 f2++;TR0=0;
 while(!q1)  //抢答成功,蜂鸣器发声
{
bz=~bz;
delay(1); 
                } }
if(q2==0)
  {delay(5);
 if(q2==0)
 a=1; 
 f1++;TR0=0;while(!q2)  //抢答成功,蜂鸣器发声
{
bz=~bz;
delay(1); 
                }  }
  if(q3==0)
  {delay(5);
 if(q3==0)
 a=3;
 f3++;TR0=0;while(!q3)  //抢答成功,蜂鸣器发声
{
bz=~bz;
delay(1); 
                }  }
        if(q4==0)
  {delay(5);
if(q4==0)
 a=4;
 f4++; TR0=0; while(!q4)  //抢答成功,蜂鸣器发声
{
bz=~bz;
delay(1); 
                }  }
 }
   }   }

void xianshi ()  //数码管循环显示程序
{ k3=k2=k1=0;
     P0=table[f4];
 delay(5);
         P0=0x00;
 k3=k2=0;k1=1;
     P0=table[f3];
 delay(5);
         P0=0x00;
 k3=k1=0;k2=1;
     P0=table[f2];
 delay(5);
         P0=0x00;
k3=0;k2=k1=1;
     P0=table[f1];
 delay(5);
         P0=0x00;
k3=k2=k1=1;
     P0=table[c];
 delay(5);
         P0=0x00;
k3=k1=1;k2=0;
     P0=table[shi];
 delay(5);
         P0=0x00;
k3=1;k2=k1=0;
     P0=table[ge];
 delay(5);
         P0=0x00;
if(a<5)
 {k1=0;k2=k3=1;
 P0=table[a];
 delay(5);
         P0=0x00; }
}

 void fuwei()//复位程序
 {TH0=(65536-50001)/256;
           TL0=(65536-50001)%256;
  zan=1;
  a=5;
  m=10; 
  c++;
  TR0=1;
  time=0;
 }  
      
 void kerz ()       //矩阵按键扫描程序
   {P1=0x0f;
if(P1!=0x0f)
{delay(10);
  if(P1!=0x0f)
{     switch(P1)
   {case(0x07):zan++;break;
    case(0x0b):fuwei();break;
  /* case(0x0d):f1--;break;
    case(0x0e):f2--;break;*/} 
     while(P1!=0x0f); 
  }   }   }
 
  



 void  T0_interserve(void)  interrupt 1  using 1  //中断程序
 { TH0=(65536-50001)/256;
     TL0=(65536-50001)%256;
       time++;
   if(time==20)
   {    m--;  
        time=0;}
     if(m==0)
   {  
    fuwei();}
             }  
 
  void main()  //主程序
  {TMOD=0x01;            
     ET0=1;
 TH0=(65536-50001)%256;
 TL0=(65536-50001)%256;
    TR0=1;  
  while(1)   
   {  if(zan%2==1)
          EA=0;
      else
      EA=1;
      shu();
  xianshi();
      anjian();
 kerz

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-01-06 19:03  基于单片机的四路抢答器\
     目录           0  2019-01-06 19:03  基于单片机的四路抢答器\PROTUES仿真文件\
     文件      266760  2019-01-06 18:59  基于单片机的四路抢答器\PROTUES仿真文件\QQ图片20190106185913.png
     文件      266760  2019-01-06 18:59  基于单片机的四路抢答器\PROTUES仿真文件\QQ图片20190106185947.png
     文件      124845  2019-01-06 19:00  基于单片机的四路抢答器\PROTUES仿真文件\抢答器.DSN
     目录           0  2019-01-06 19:02  基于单片机的四路抢答器\单片机\
     文件        3096  2019-01-06 18:49  基于单片机的四路抢答器\单片机\2.c
     文件        2779  2019-01-06 18:49  基于单片机的四路抢答器\单片机\2.hex
     文件       13386  2017-12-03 10:08  基于单片机的四路抢答器\单片机\2.uvproj
     文件      414700  2016-10-11 08:55  基于单片机的四路抢答器\单片机\HC6800-ES V2.0.pdf
     文件         128  2019-01-06 19:05  基于单片机的四路抢答器\说明.txt

评论

共有 条评论