新闻中心

EEPW首页 > 电源与新能源 > 设计应用 > 单片机-一个简单频率测量

单片机-一个简单频率测量

作者:时间:2018-09-05来源:网络收藏

单位由一个信号源的项目,其中由一个功能,即实现一个方波信号频率的测量。实际情况中,信号的频率一般在15-25Hz。占空比在10%-90%之间。可以说频率非常低。因为单位使用STC89C54的时间比较长,所以单位要求使用该单片机。这个项目非常简单。因为时间很久了,所以我稍微回忆一下。

本文引用地址:http://www.eepw.com.cn/article/201809/388457.htm

 电路图逻辑上是这样的:

我将信号经过比例缩小跟随后直接接到INT0管脚。具体想法是这样的,设定一个10uM的定时器计时。每两秒中作为一个测量周期。方波最会有下跳沿的,每一下跳沿作为一个周期的开始。两秒计时结束后查看一共采集到K个下跳沿。那么该方波的周期就是T=2/K秒。频率f=K/2。

有一个同事提供了频率测量的思路。在三秒中时间范围内统计INT0下跳沿出现的个数,即可统计出方波脉冲的频率。因为下跳沿会触发外部中断,所以只需统计程序进入中断程序的次数。我们来看看代码实现的方法。

/*************************************/

//定时器初始化

//每1毫秒中断一次

/*************************************/

#define SYS_CLK   12000000L

#define TIME0_LOAD -(SYS_CLK/12/1000)

typedef struct FREQ

{

   unsigned char start;

  unsigned int timer;

  unsigned int int_Count;

  unsigned int T;

}FREQ;

FREQ  freq={0,0};

void Timer0_Init( )

{

   TMOD = TMOD | 0x01;

  TH0 = TIME0_LOAD>>8;

  TL0 = TIME0_LOAD0x00FF;

  EA =1;

  ET0 =1;

  TR0 =1;

}

/*************************************/

//定时器串口中断程序

/*************************************/

void Timer0_isr( ) interrupt 1

{


上一页 1 2 下一页

关键词:

评论


相关推荐

技术专区

关闭