找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4970|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机测量频率的方法(感觉有问题,求解释,进去外部中断几次)

[复制链接]
跳转到指定楼层
楼主
ID:91448 发表于 2015-10-16 18:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10黑币
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

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表