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

📄 hz1.c

📁 c51 频率表 可测30----1000hz 信号频率 使用中断来计数信号单位时间内数量
💻 C
字号:
#include <AT89x051.H>
#define uchar unsigned char
#define uint  unsigned int
sbit qianwei=P3^0;
sbit baiwei=P3^1;
sbit shiwei=P3^7;
sbit gewei=P3^5;
  uchar code table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,                          
                           0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
  uint  num ,temp,t,num1[2]; 
  uchar ge,shi,bai,qian,flag;
void delay(uchar ms)    // 延时毫秒@12M,ms最大值255    
{
   uchar i;
   while(ms--)
   for(i = 0; i < 124; i++);
} 
void init(void)
{ 
  P1=0xff;
  qianwei=0;
  baiwei=0;
  shiwei=0;
  gewei=0;
  num=0;
  temp=0;
  t=0;
  flag=0;
  //P3_2=1;
 
 TMOD=0x01;
 TH0=0xD8;
 TL0=0xF0;
 TR0=0;
 IT0=1;
 EX0=1;
 ET0=1; 
 EA=1;
}
void display(uchar ge,uchar shi, uchar bai ,uchar qian)
{          
       

  		   gewei=1;
		   P1=table[ge];
           delay(1);
		   gewei=0;


  if(num>=10){		   
    	   shiwei=1;
		   P1=table[shi];
           delay(1);
		   shiwei=0;}
		  	  	   

   if(num>=100){
		   baiwei=1;
		   P1=table[bai];
           delay(1);
		   baiwei=0;
		 	   }

   if(num>=1000){
		   qianwei=1;
		   P1=table[qian];
           delay(1);
		   qianwei=0;
		   }
}
void timer0() interrupt 1  
{
 TH0=0xD8;
 TL0=0xF0;
  if(t>=100)
      {
		   EX0=0;
		   t=0;
	       temp=temp-1;
	       flag=~flag;
		  if(flag)
		       num1[0]=temp;
		  else
		       num1[1]=temp;
	   
	  // if(temp<400)
	   // {;}
		//else//
		// {num=temp-temp/200;}
	       num=(num1[1]+num1[0])/2;
		   if(num>557)
		         num=num-1;
          // if(num<100)
              num=num*10;              
		   temp=0;	   
	       ge=num%10;
	       shi=(num%100)/10;
	       bai=(num%1000)/100;
	       qian=num/1000;
	       TR0=0;
		   EX0=1;	  
    }
      t++;
}
void exter0()interrupt 0
{ 
  TR0=1;
  temp++;
  P3_4=~ P3_4;
}
void main(void)
{
   init();
   while(1)
   {
     display(ge ,shi, bai, qian);
   }  
}






⌨️ 快捷键说明

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