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

📄 main.c

📁 通过89S52测量频率。频率范围为10-100k 精度很高
💻 C
字号:
#include"reg52.h"
//P2为数据输出口
//p1为位选
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit fre=P3^2;
void delay(long int j);
char led[]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F,0x00};//0,1,2,3,4,5,6,7,8,9,全灭
void display(float x)
{
    long int y;
	int L1,L2,L3,L4,L5;
	y=(long int)(x*10);

    L1=y/100000;
	L2=y%100000/10000;
	L3=y%100000%10000/1000;
	L4=y%100000%10000%1000/100;
	L5=y%100000%10000%1000%100/10;
    
	 led1=1;
	 P2=led[L1];
	 delay(10);
     led1=0;

	 //第1个显示
	 led2=1;
	 P2=led[L2];
	  delay(10);
	 led2=0;
	
     //第2个显示
	 led3=1;
     P2=led[L3];
	 delay(10);
	 led3=0;
	 
     //第3个显示
     led4=1;
     P2=led[L4];
	 delay(10);
	 led4=0;
	 
     //第4个显示
	 led5=1;
     P2=led[L5];
	 delay(10);
	 led5=0;
	 
    //第5个显示

}
void delay(long int i)
{
  long int j;
  for(j=0;j<i;j++);
}
void main()
{
   float t;
   float f;
   led1=0;led2=0;led3=0;led4=0;led5=0;
  	TMOD=0x09;
 	TH0=0;
 	TL0=0;
	display(0000);
 while(1)
 {
   
   while(fre);  //变低
   TR0=1;  
   while(!fre);  //变高
   while(fre);//变低
   TR0=0;  //
   t=TH0*256+TL0;
   TH0=0;
   TL0=0;
   f=1000000/(2*t);  //HZ
   
   if(f<1000)
   {
    display(f);
   }
   else display(f+100);
   t=0;
   // delay(10000);
   //display(50000);
 }
}

⌨️ 快捷键说明

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