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

📄 led.c

📁 简易信号发生器:有原理图
💻 C
字号:
#include <AT89X51.H>
unsigned char code LEDTAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};/*0-9LED编码*/ 
unsigned char code LED[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};/*数码管自左向右0-7*/
unsigned char NUM[8];
unsigned char k=9;
void delay(unsigned char g){/*延时gms*/
     unsigned char i,j;
	 for(i=0;i<g;i++){
	 for(j=0;j<121;j++){;}}
}

void calculate()		  //计算频率值,最后一位四舍五入
{
   unsigned char i;
   unsigned int yu,jin;
   NUM[0]=1000/(360*k);
   yu=1000%(360*k);
   for(i=1;i<8;i++){
      yu*=10;
	  NUM[i]=yu/(360*k);
	  yu=yu%(360*k);
   }
   yu*=10;
   jin=yu/(360*k);
   if(jin>=5)
      NUM[7]++;
	  if(NUM[7]>9) 
	  {NUM[7]--;
	   NUM[6]++;
		 if(NUM[6]>9) 
	  {NUM[6]--;
	   NUM[5]++;
		  if(NUM[5]>9) 
	  {NUM[5]--;
	   NUM[4]++;
		if(NUM[4]>9) 
	  {NUM[4]--;
	   NUM[3]++;
		 if(NUM[3]>9) 
	  {NUM[3]--;
	   NUM[2]++;
		if(NUM[2]>9) 
	  {NUM[2]--;
	   NUM[1]++;
		if(NUM[1]>9) 
	  {NUM[1]--;
	   NUM[0]++;

	  }
	  }
	  }
	  }
	  }
	  }
	  }
}
void display()interrupt 2 using 0
{
  unsigned char	i,temp;
  calculate();
  while(1){
  	     P2=LED[0];
		 temp=NUM[0];
		 P0=LEDTAB[temp]&0x7F;
		 delay(1);
  	  for(i=1;i<8;i++){
	     P2=LED[i];
		 temp=NUM[i];
		 P0=LEDTAB[temp];
		 delay(1);
		 if(P3_3==1)
		   return;
	  }
  }
}

void main()
{
  EA=1;
  EX1=1;
  while(1)
   P2=0;
}

⌨️ 快捷键说明

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