求助单片机测频程序

我要编一个单片机测频程序,但是现在我不知道待测频率是多少,能不能用程序编一个外部输入信号到单片机T0,来验证我这个程序的正确性?如果能的话,请问应当怎么做?谢谢!!!... 我要编一个单片机测频程序,但是现在我不知道待测频率是多少,能不能用程序编一个外部输入信号到单片机T0,来验证我这个程序的正确性?
如果能的话,请问应当怎么做?谢谢!!!
展开
 我来答
koieysky
2007-02-06 · 超过17用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
单片机测频程序2006-09-25 17:38/* 单片机测频 程序 下到 20hz 上到 29k */
/*如果想要测更高频率可用模拟开关加分频器*/
/* 作者 赵亮、尹书扬*/

/* 时间:05-8-27 */

/*说明: 头文件中调用的“lcd1602.h”只需要把我发的lcd1602的子程序做一个h文件即可*/
#i nclude "AT89X52.h"
#i nclude "stdio.h"
#i nclude " absacc.h "
#i nclude <intrins.h>
#i nclude <math.h>
#i nclude "lcd1602.h"

sbit F_in=P1^0;

bit int_flag;
unsigned int frequency;

void Display(void);
void Mcu_init(void);
void Measure_F(void);
void Measure_T(void);
void Frequency_Measure(void);

void main()
{
Mcu_init();
while(1)
{
Frequency_Measure();
Display();
}
}

void time0(void) interrupt 1
{
int_flag=1;
}

void Frequency_Measure(void)
{
if(frequency<2000)
Measure_T();
else if(frequency>=2000)
Measure_F();
}

void Measure_F(void)
{
bit state_old=0,state_new=0;
unsigned int f_count=0;
int_flag=0;
TH0=-50000/256;
TL0=-50000%256;
TR0=1;
while(1)
{
state_new=F_in;
if(state_old!=state_new)
f_count++;
state_old=state_new;
if(int_flag)
{
TR0=0;
frequency=f_count*10;
return;
}
}
}

void Measure_T(void)
{
bit state_old=0,state_new=0;
unsigned char temp_flag=0;
unsigned int t_count;

TH0=0;
TL0=0;
while(1)
{
state_new=F_in;
if(state_old&&!state_new)
{
temp_flag++;
TR0=1;
}
if(temp_flag==2)
{
TR0=0;
t_count=TH0*256+TL0;
frequency=1000000/t_count;
return;
}
state_old=state_new;
}
}

void Display(void)
{
unsigned char a,b,c,d,e;

a=frequency/10000;
b=frequency%10000/1000;
c=frequency%1000/100;
d=frequency%100/10;
e=frequency%10;
LCD_string(LINE1,0,"F-measure:");

LCD_char(LINE1,0x0b,a|0x30);
LCD_char(LINE1,0x0c,b|0x30);
LCD_char(LINE1,0x0d,c|0x30);
LCD_char(LINE1,0x0e,d|0x30);
LCD_char(LINE1,0x0f,e|0x30);

if(frequency<2000)
LCD_string(LINE2,0,"Now is measure T");
else
LCD_string(LINE2,0,"Now is measure F");
}

void Mcu_init(void)
{
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;
TH0=-(50000/256);
TL0=-(50000%256);
LCD_init();
LCD_string(LINE1,0x00," ");
LCD_string(LINE1,0x00," ");
}

转自:http://hi.baidu.com/myso/blog/item/be82e7ddcb00baef76c638ac.html
北京康思
2018-09-20 广告
电压的测量利用示波器所做的任何测量,都是归结为对电压的测量。示波器可以测量各种波形的电压幅度,既可以测量直流电压和正弦电压,又可以测量脉冲或非正弦电压的幅度。更有用的是它可以测量一个脉冲电压波形各部分的电压幅值,如上冲量或顶部下降量等。这是... 点击进入详情页
本回答由北京康思提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式