MATLAB中如何实现频率的测量

MATLAB中如何实现频率的测量,第1张

任何测量方法都有误差。实际测量系统都是规定一个误差范围,测量误差不超过这个范围就算合格。所以如果你要找无误差方法我劝你不要费这个劲。

锁相环已经是测量频率很好的方法。但是也不是万能的,其性能受很多因素制约,从你问题里我也看不出更多信息,所以只能回答到这里。

该系统由定时器0中断子函数、定时器1中断子函数、延时子函数、按键消抖子函数、闸门控制子函数、主函数和数据定义这几部分组成。

      闸门时间由定时器1控制,初始为2s,可以通过按键加减,范围为2s到7秒。闸门时间就是采样时间,闸门时间越长,测量精度越准确。

      由P34输入信号,低电平有效,触发T0外部中断。当T0触发中断的时候执行的程序。这里只进行了一个 *** 作,t0++。所以,t0的值表示触发了几次中断,也就表示接受到的脉冲几次从0到65536。所以会有t065536。 另外,由于计时的机制是THO++、TL0++,所以,THOTL0就表示当前的计数值。THOTLO- 初值就可以确定没有触发中断定时多少。TH0256==TH02^8,实质就是左移8位,就是拼接TH0跟TL0的处理。

所以频率的核心算法为

 

daimao=(t065536+TH0256+TL0)/n

程序框图

总源程序

#include "reg52h"

#define uchar unsigned char

typedef unsigned int uint;

sbit w1=P2^0;

sbit w2=P2^1;

sbit w3=P2^2;

sbit w4=P2^3;

sbit w5=P2^4;

sbit w6=P2^5;

sbit jia=P1^6;

sbit jian=P1^7;

sbit s=P3^7;//启动

bit flag;//标签

uchar s1,s2,s3,s4,s5,s6, shu=1;//控制数组取值

uchar t0,t1,t2,a;

unsigned long m=5,n;//m为闸门时间

int y;

unsigned long daimao;//频率

unsigned char code table1[]={0xc0,0xf9,0xa4,0xb0, //闸门时间数组0-f

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

unsigned char code table2[]={0xc0,0xf9,0xa4,0xb0, //频率数组0-f

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

以上就是关于MATLAB中如何实现频率的测量全部的内容,包括:MATLAB中如何实现频率的测量、51单片机的数字频率计、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9728815.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存