标题: 51单片机测量频率的方法(感觉有问题,求解释,进去外部中断几次) [打印本页]

作者: caigen0001    时间: 2015-10-16 18:37
标题: 51单片机测量频率的方法(感觉有问题,求解释,进去外部中断几次)
51单片机测量频率的方
  51单片机的测量频率方法有很多这里谈的是将被测量信号经过整形后转换成方波信号利用单片机查询两个上升沿在此期间

根据晶体振荡器产生的周期为 Tc的脉冲送计数器进行计数设计数值为N则得被测量信号的周期值Tx=Tc×N然后取其倒数即为被

测量信号的频率。 当然如果利用单片机的捕捉功能实现起来可能程序更加简练。

下面频率测量计数波形示意

图  程序代码如下 /*-------------------------------------测量周期法的基本原理:在被测信号内对某一基准时间进行计数,基准时间与计数值的乘

积便是被测周期. ---------------------------------------*/

#include"at89x51.h"

#define uint unsigned int

uint count, period;

bit rflag = 0;             //设置周期标志

void control(void)

{

       TMOD = 0x09;      //T/C0为方式INT0 为是启动定时器

       IT0 = 1;     //脉冲方式后沿负跳有效进入中断

        TH0 = 0;
        TL0 = 0;

      P1_0 = 0;
      P1_0 = 1;      //触发器清零

       TR0 = 1; //启动T/C0

       EX0 = 1; //只开外部中断

       EA = 1; //开总中断

}

void INT_0(void) interrupt 0 using 1 //INTO中断服务

{

       EA = 0;

       TR0 = 0;        
       count = TL0 + TH0 * 256;//取计数值

       rflag = 1;                  //设标志

      EA = 1;

}

main()

{

       control();

       while(rflag == 0); 、//等待一个周期

        period = count * 2; //fosc = 6MHz,2us计数增周期值单位us

}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1