⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 有线 无线 双模式八路抢答器 使用无线收发模块 编码解码芯片
💻 TXT
字号:
#include"reg51.h"
unsigned char i;//显示抢答路数
int k ,s;
sbit set=P3^7;
sbit beeper=P3^6;
sbit time=P3^4;
sbit dp=P0^6;
sbit w1=P2^7;
sbit w2=P2^6;
sbit w3=P2^5;
sbit w4=P2^4;
unsigned char code table[]={
        0xC0,/*0*/
        0xF9,/*1*/
        0xA4,/*2*/
        0xB0,/*3*/
        0x99,/*4*/
        0x92,/*5*/
        0x82,/*6*/
        0xF8,/*7*/
        0x80,/*8*/
        0x90,/*9*/};
void init(void);
void t0init(void);
void mode1(void);//有线模式
void mode2(void);//无线模式
unsigned char mode1readkeys(void);
unsigned char mode2readkeys(void);
void display1(void);
void display2(void);
void displaytime(int k);
time0()interrupt 1 using 1//T0中断服务程序(50ms)
{ unsigned char a;
  a++;
  TH0=-50000/256;
  TL0=-50000%256;
  if(a>20)
     { 
       a=0;
       k++;
      }
	 if(k>99)
	 k=0;
}

void t0init(void)//T0初始化
{TMOD=0x61;
TH0=-50000/256;
TL0=-50000%256;
TH1=-10;
TH0=-10;
EA=1;
ET0=1;
TR0=1;
k=0;
}
void delay(void)//延时
{
for(s=0;s<700;s++)
;
}
void displaytime(int k)//LED显示时间
{unsigned char n,m;
 w3=0;
 n=k%10;
 P0=table[n];
 delay();
 delay();
 w3=1;
 delay();
 w4=0;
 m=k/10;
 P0=table[m];
 delay();
 delay();
 w4=1;
delay();
}
void clock(void)//
{  w1=1;
   w2=1;
  t0init();
  displaytime( k);
 }
void main(void)
{ 
  init();//系统初始化
  t0init();//T0初始化
  if(set==1)//默认为有线模式
     mode2();
  else
     mode1();
}

void init(void)//系统初始化
{
set=0;
P2=0xF0;
P0=0xFF;
P1=0xFF;
w1=1;
w2=1;
w3=1;
w4=1;
i=0;
}
/*unsigned char mode1readkeys(void)
{
  unsigned char j;
  int k;
  P1=0xFE;
  for(j=0;j<3;j++)
   {
     if((P1&0xF0)!=0xF0)
	  	{
	       switch (P1)
		     {
	          case 0xEE:
	          i=1;
	          break;
              case 0xDE:
           	  i=2;
	          break; 
              case 0xBE:
	          i=3;
         	  break;
              case 0xED:
	          i=4;
	          break;
              case 0xDD:
    	      i=8;
	          break;
              case 0xBD:
	          i=7;
	          break;
              case 0xEB:
 	          i=6;
	          break;
              case 0xDB:
	          i=5;
	          break;
              default:
              return 0;
              break;
             }
           return i;
         }
	 k=P1;
	 k=~k;
	 k=k<<1;
	 k=~k;
     P1=k;
   }
}*/
unsigned char mode1readkeys(void)//模式1读取按键
{
  P1=0xFE;
     if((P1&0xFE)!=0xFE)
	  	{
	       switch (P1)
		     {
	          case 0xEE:
	          i=1;
	          break;
              case 0xDE:
           	  i=2;
	          break; 
              case 0xBE:
	          i=3;
              break;
              default:
              return 0;
              break;
             }
           return i;
         }
   P1=0xFD;
     if((P1&0xFD)!=0xFD)
	  	{
	       switch (P1)
		     {
	          case 0xED:
	          i=4;
	          break;
              case 0xDD:
           	  i=8;
	          break; 
              case 0xBD:
	          i=7;
              break;
              default:
              return 0;
              break;
             }
           return i;
         }
     P1=0xFB;
     if((P1&0xFB)!=0xFB)
	  	{
	       switch (P1)
		     {
	          case 0xEB:
	          i=6;
	          break;
              case 0xDB:
           	  i=5;
	          break; 
              default:
              return 0;
              break;
             }
           return i;
         }
 
}
unsigned char mode2readkeys(void)//模式2读取按键
{
  unsigned char n;
  n=P2;
  n=(n&0x0F);
  i=n;
  return i;
}
void display1(void)
{
 w1=0;
 P0=table[i];
}
void display2(void)
{
 w2=0;
 P0=table[i];
}
void mode1(void)//模式1
{
 w1=0;
 dp=0;
 i=0;
 time=0;
   if(time==1)
       while(1)
		  {
		 
	       clock();
		   }
 while(i==0||i>8)
      { 
       mode1readkeys();
	   }
 P1=0xFF;
 beeper=0;
 display1();
 beeper=0;
 for( ; ; )
   ;
 }
void mode2(void)//模式2
{
 w2=0;
 dp=0;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
 i=0;
 time=0;
   if(time==1)
       while(1)
		  {
		 
	       clock();
		   }
 while(i==0||i>8)
      { 
       mode2readkeys();
	   }
 P1=0xFF;
 beeper=0;
 display2();
 beeper=0;
 for( ; ; )
    ;
 }





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -