您的位置 首页 芯闻

单片机-一个简略频率丈量

单位由一个信号源的项目,其中由一个功能,即实现一个方波信号频率的测量。实际情况中,信号的频率一般在15-25Hz。占空比在10%-90%之间。可以说频率非

单位由一个信号源的项目,其间由一个功用,即完成一个方波信号频率的丈量。实际情况中,信号的频率一般在15-25Hz。占空比在10%-90%之间。可以说频率十分低。由于单位运用STC89C54的时刻比较长,所以单位要求运用该单片机。这个项目十分简略。由于时刻很久了,所以我略微回想一下。

 电路图逻辑上是这样的:

我将信号通过份额缩小跟随后直接接到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

{

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/135422.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部