分享

基于单片机的多路抢答器设计

 共同成长888 2016-05-28
电路功能:

电路可实现9路抢答器功能,一人按下后,其他人再按无效,需复位后方可重新抢答。

下图为Proteus仿真图:


下图为原理图:



下图为PCB图:



下图为实物图,手机拍摄 ,不是很清晰



以下为源程序:

#include
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={             //不带小数点的数码管编码
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
uchar num;
sbit beep=P3^6;
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 k9=P3^0;
void keyscan();
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
 for(y=5000;y>0;y--);
}

 

void main()
{
 while(1)
 {
  keyscan();
 }
}

 


void keyscan()

 P0=0xc0;
 P2=0xfe;
 if(k1==0)
 {
  beep=0;
  delay(5);
  beep=1;
  P0=table[1];
  delay(10000);
 }
 else if(k2==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[2];
  delay(10000);
 }
 else if(k3==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[3];
  delay(10000);
 }
 else if(k4==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[4];
  delay(10000);
 }
 else if(k5==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[5];
  delay(10000);
 }
 else if(k6==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[6];
  delay(10000);
 }
 else if(k7==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[7];
  delay(10000);
 }
 else if(k8==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[8];
  delay(10000);
 }
 else if(k9==0)
 
  beep=0;
  delay(5);
  beep=1;
  P0=table[9];
  delay(10000);
 }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多