我用C51单片机做简易数字频率计,测量脉宽2K以内是差不多的,但是超过2K就各种不对了,这是测量脉 简易数字频率计的设计

作者&投稿:尤左 (若有异议请与网页底部的电邮联系)
你用的是什么单片机?主频是多少?看你的寄存器应该是51。
别忘了,51单片机的主频12MHz,为了抗干扰,还要12分频。
也就是说,你只有1MHz的运算频率。然后你得到你的w,还要做那么复杂的运算,本身while(p3_5==0)的判断也要时间。
还有,你的n1,n2是什么类型的呀。你用的是n1=w*65536我就觉得,它至少是个32位的整型变量。我的老天,51的内核只有8位,它要做许许多多额外的运算才能给你拼合出32位变量。
还有你调用函数的各种开销,一旦你的所有时间开销大于500个周期,你就会错过脉宽。
总之,还得看你的目标频率范围是多大吧。任何仪器都有一个频率上限,超过频率上限的就测不了了。如果在2K以内,你就忍了。超过2K,建议你换平台。
8位系统建议你换AVR或者PIC,首先,这两个是RISC结构,拿AVR来说,单周期指令,不需要12分频,16~20Mhz的主频也比51的高。最关键的还有硬件捕捉等功能,测量脉宽之类的操作可以靠硬件实现,软件只需要简单处理就可以了。
系统要求再高,可以考虑CORTEX M0系列的32位单片机。主频最高到72MHz,本身累加器是32位的,像你这种32位乘法一个周期就可以完成。也有各种硬件帮你测量脉宽。

第一点:W的进位是在中断里实现的,n1=w*65536+TH1*256+TL1;这样取时间是有问题的,在读完TH1刚好发生进位或者W有进位的时候就不对了,虽然极偶然但不可避免,频率低时影响不大.
第二点:脉宽测量尽量使用定时器的捕获方式,硬件要比软件方法好的多.
第三点:频率高时边沿的抖动,边沿的倾斜都要考虑,比较精准一点的做法是不用定时器,关掉所有中断用计数推算时间.

如果是S52的单片机,是带捕捉功能的,利用捕捉可以准确测频率。如果要准确测脉宽可以加反相器,沿跳变就会有上升和下降沿了,再用计数器来算。当然,如果脉宽要求不高,可以直接在捕捉中加判断。

TMOD要用单片机测脉宽要怎样配置?~

TMOD配置如下:GATE=1,定时器工作与模式1,比如使用T0那么:

TMOD=0x09;

求51单片机设计数字频率计,附带Proteus仿真和程序
答:刚刚下了一楼传的附件,测试后发现精度和测量范围都比较差。如果单从测频的角度来说,51的频率计是很简单的。恰好几年前我写过类似的程序,是用来测频率和占空比的。理论上单用C52这单片机测频率最高为:12M/12/2=500KHZ。我写的这个程序可以同时测频率和脉宽,仿真下大概可以测到350KHZ;测脉宽...

基于单片机的频率计设计问题
答:MCS—51单片机具有体积小,功能强,性能价格比较高等特点,因此被广泛应用于工业控制和智能化仪器,仪表等领域。我们研制的频率计以89c51,具有性能优良,精度高,可靠性好等特点。实现一个宽频域,高精度的频率计,一种有效的方法是:在高频段直接采用频率法,低频段采用测周法。一般的数字频率计本身无...

单片机课程设计数字频率计
答:数码管台古老了,你用这个吧,看着还稍微有点可以,代码和电路都给你了,没有做不出来的理由,有问题加我QQ11422376745 include "d:\c51\reg51.h"include "d:\c51\intrins.h"sbit LCM_RS=P3^0;sbit LCM_RW=P3^1;sbit LCM_EN=P3^7;define BUSY 0x80 //常量定义 define DATAPORT P1...

基于51单片机数字频率计论文
答:在计算机及各种数字仪表中,都得到了广泛的应用。在CMOS电路系列产品中,频率计是用量最大、品种很多的产品。本课题采用的是直接数字式的频率计,设计原理简单,是全硬件电路实现,电路稳定、精度高,大大的缩短了生产周期。1.3 本课题主要研究内容 本课题采用数字电路来制作一个1HZ—1MHZ的数字频率计,...

单片机的数字频率测试仪量程最大是多少?
答:你好!我用51单片机做的频率计,采用12M晶振,最高可以测到 10M

帮我设计一个具有选频特性的简易两位数字式频率计电路。有思路也行...
答:/ AT89S51单片机 / include <reg51.h> unsigned char code display[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90};unsigned char code bittab[] = {0xfe,0xfd};unsigned char num[2];unsigned long play;unsigned long count;unsigned char i,c;sbit s=P1^0;//控制...

基于51单片机的数字频率计出了显示频率还可以添加哪些简易功能
答:要做输出频率的话,就要考虑好频率输出范围,如果是单片机内置PWM模块,那PWM 的频率范围就是输出频率范围了。如果是采用定时器输出频率,那么输出频率范围就根据定时器的值计算了。再高级点,加个占空比,不仅频率可调,占空比也可调。另外还要考虑下,输出频率值的确定。一般由用户使用键盘输入,你要高级点...

求 基于单片机的简易数字频率计
答:delay(100); //扫描间隙延时,根据单片机调整,延时1ms即可 } } /// void main (void){ EA=1; //开总中断 init_t0(); //初始化定时器 init_t1();TR0=1; //定时器开始工作 TR1=1;ET0=1; //开T0中断 while(1){ if(int_flag==1){ int_flag=0;sum=TL1+TH1*256+T...

简易数字频率计
答:一 单片机主控电路:用单片机T0口作为频率计接口 在系统的设计中,可将单片机系统的各个中断口用作外部计数器的接口,由于其为数字电路的特点,可将其作为频率计的接口,被测信号频率范围在10HZ——30MHZ,对应的输入为TTL电平。频率计子程序:PUBLIC PINGLV PINGLV: MOV TMOD,#05H ;初始化TMOD。

我用C51单片机做简易数字频率计,500K以上就误差非常大,想用74HC161做1...
答:上数电课不好好听,杯具了吧。16分频随便接都可以做到。如下图