📄 freqtest.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 + -