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

📄 freqtest.c

📁 用51单片机做的数字频率计
💻 C
字号:
#include <REG51.h>
#include <1602_Drive.h>

/******************************************************************
*	定义接口:													  *
*	液晶显示器的接口“1602_Drive.h”库函数中已经定义			  *
*	定义待测方波频率的接口:									  *
*																  *
******************************************************************/
sbit FreqIN=P3^2;

//==================================================================
//定义中间变量
unsigned int tmp;
float  cnttime;
unsigned char outcnt[8];
//==================================================================
//将测量的整数装换为标准有效的字符串
void NumToChar(void) 			
{	unsigned char i;
	outcnt[0]=tmp/10000+48;tmp%=10000;
	outcnt[1]=tmp/1000+48;tmp%=1000;
	outcnt[2]=tmp/100+48;tmp%=100;
	outcnt[3]=tmp/10+48;tmp%=10;
	outcnt[4]=tmp+48;
	outcnt[5]='H';
	outcnt[6]='z';
	outcnt[7]='\0';	
	for(i=0;i<4;i++)				//将字符中数字的最高有效位之前的'0'清空为‘ ’。
	{	if(outcnt[i]=='0')outcnt[i]=' ';			
		else break;
	}
}
//==================================================================
//静态显示文本
void Static_LCD_Print()			
{	GotoXY(0,0);
	Print("Loading....");
	GotoXY(1,1);
	Print("Made by wanxun");
}
//==================================================================
//动态显示数据
void Dynamic_LCD_Print()		 
{	NumToChar();
	GotoXY(0,0);
	Print("Freq is: ");
	Print(outcnt);
}

/******************************************************************
*以下为用测量脉冲周期来测量频率的方法							  *
******************************************************************/
void Initial_C51()
{	TH0=TL0=0; 
	TR0=0;
	TMOD=0x09;
}

void chkfreq()   
{	while(FreqIN==0);
	while(FreqIN==1);
	TR0=1;
	while(FreqIN==0);
	while(FreqIN==1);
	TR0=0;
	cnttime=500000/(TH0*256+TL0);
	TH0=TL0=0;
	tmp=(int)cnttime;	
	Dynamic_LCD_Print();
}


void main(void)
{
	Initial_C51();
	LCD_Initial();
	Static_LCD_Print();	
	chkfreq();			
	while(1);
}

⌨️ 快捷键说明

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