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

📄 frequency.c

📁 高频频率计 最高能测2.4G 单片机用的AT89S52
💻 C
字号:
#include <AT89X52.H> 
#include <LCD1602.h>
unsigned char T0count; 
unsigned char timecount; 
bit flag; 
unsigned long x; 
//unsigned char code menu[2][16]={"Frequency is:MHz","Frequency is: Hz"};

/*************************************************************************************************************
主函数
*************************************************************************************************************/

void main(void) 
{ 
 // unsigned char i,j,k,l; 
  P1=0;
  TMOD=0x15; 
  TH0=0; 
  TL0=0; 
  TH1=(65536-49989)/256; 
  TL1=(65536-49989)%256; 
  TR1=1;
  ET0=1; 
  ET1=1;
  EA=1;
  TR0=1; 	 
  p=LCD_PutStr("Frequency is: Hz\n",-1);           //显示一段文字
  while(1) 
   { 
     if(flag==1) 
       { 
         flag=0; 
         x=(T0count*65536+TH0*256+TL0)*16384+P0;  //计算频率
		 P1_0=1;
		 P1_0=0;
         timecount=0; 
         T0count=0; 
         TH0=0; 													
         TL0=0; 
         TR0=1;	
		 //LCD_init( );
	     p=LCD_PutStr("\n",16);  
	     p=LCD_PutNum(x,0,p);                     //显示数
		 									    
       } 
   } 
} 



/*************************************************************************************************************
定时器、计数器设置
*************************************************************************************************************/

void t0(void) interrupt 1 using 0  //计数满后T0count加1
{ 
  T0count++; 
} 




void t1(void) interrupt 3 using 0   //定时1S钟
{ 
  TH1=(65536-50045)/256; 
  TL1=(65536-50045)%256; 
  timecount++; 
  if(timecount==20) 
    { 
      TR0=0;                       //关闭记数器 
      timecount=0; 
      flag=1; 				       //1S定时到标志
    } 
}

⌨️ 快捷键说明

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