#include <REG51.h>
#include <1602_Drive.h>
/******************************************************************
* 定义接口: *
* 液晶显示器的接口“1602_Drive.h”库函数中已经定义 *
* 定义待测方波频率的接口: *
* *
******************************************************************/
sbit FreqIN=P3^2;
//==================================================================
//定义中间变量
unsigned int tmp;
volatile unsigned int tmc;
volatile unsigned int tnc;
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("www.opmcu.com");
}
//==================================================================
//动态显示数据
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;
tmc=tmp;
Dynamic_LCD_Print();
}
sbit P1_0=P1^0;
void T0_INT(void) interrupt 3 //定时器0中断类型号为1
{
TH1=0x3c; //50ms定时初值
TL1=0xb0;
// IT0=0;
if(tmc<=58)
{
tnc++;
if(tnc<10)
P1_0=~P1_0;
else if(tnc<20)
P1_0=0;
else tnc=0;
}
else
{
tnc=0;
P1_0=0;
}
}
void time_init(void)
{
TMOD=0x10; //定时器0工作方式1
TH1=0x3c; //50ms定时初值
TL1=0xb0;
EA=1; //开总中断
ET1=1; //开定时器0中断
TR1=1;
}
sbit P1_1=P1^1;
void main(void)
{
P1_1=1;
time_init();
Initial_C51();
LCD_Initial();
Static_LCD_Print();
chkfreq();
while(1);
}
piliji.rar_频率计proteus
版权申诉
176 浏览量
2022-09-19
21:13:53
上传
评论
收藏 85KB RAR 举报
周楷雯
- 粉丝: 80
- 资源: 1万+
最新资源
- 萤石云cp1-2c3wf
- 基于STM32的智能家庭火灾报警系统源码+演示ppt+演示视频(高分项目).zip
- 11. Django 常用的Web应用程序
- 萤石云固件CS-XP1-8B4WF
- HTML5小游戏【农场连连看-优秀H5小游戏合集】游戏源码分享下载 - farm.zip
- 基于Python的酒店评论情感分析源码+文档(高分项目).zip
- meta-llama-3-8b-instruct 的 model-00003-of-00004.safetensors 的3/3
- nginx配置文件,注意其中需要对应宿主机的路径
- 自用数据集自用数据集自用数据集
- HTML5小游戏【堆雪人-优秀H5小游戏合集】游戏源码分享下载 - epicsnowman.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈