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

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

你用的是什么单片机?主频是多少?看你的寄存器应该是51。

别忘了,51单片机的主频12MHz,为了抗干扰,还要12分频。

也就是说,你只有1MHz的运算频率。然后你得到你的w,还要做那么复杂的运算,本身while(p3_5==0)的判断也要时间。

还有,你的n1,n2是什么类型的呀。你用的是n1=w65536我就觉得,它至少是个32位的整型变量。我的老天,51的内核只有8位,它要做许许多多额外的运算才能给你拼合出32位变量。

还有你调用函数的各种开销,一旦你的所有时间开销大于500个周期,你就会错过脉宽。

总之,还得看你的目标频率范围是多大吧。任何仪器都有一个频率上限,超过频率上限的就测不了了。如果在2K以内,你就忍了。超过2K,建议你换平台。

8位系统建议你换AVR或者PIC,首先,这两个是RISC结构,拿AVR来说,单周期指令,不需要12分频,16~20Mhz的主频也比51的高。最关键的还有硬件捕捉等功能,测量脉宽之类的 *** 作可以靠硬件实现,软件只需要简单处理就可以了。

系统要求再高,可以考虑CORTEX M0系列的32位单片机。主频最高到72MHz,本身累加器是32位的,像你这种32位乘法一个周期就可以完成。也有各种硬件帮你测量脉宽。

这个有点像红外线遥控解码。。网上有,你可以参考一下。。

一定要外部中断的话

大概原理是

先设外部中断响应为下降沿响应,等到中断了就开始用定时器计时,并设置外部中断为上升沿响应。。等外部中断再次发生时,判断计时时间是否达到9MS(这个要接近,而不能定死),如果达到了就进入下一步,没达到或超过了,那就重新开始(可能是干扰信号

在满足9MS时,设外部中断为下降沿响应,原理同上,判断560US是否满足了。。。。

这个是知道每个信号都知道的情况,我刚看了下 STC单片机的外部中断。。。只要有变化就能触发中断,这个时候对不确定的信号好处理(不知道下一个信号是高还是低的情况下)只要时间处理好就行!

1)将待测信号送至示波器的垂直输入端。 \x0d\(2)确定直流电压的极性。将示波器的输入耦合开关置于"GND''档,调节垂直位移旋钮,将荧光屏上的水平亮线(时基线)移至荧光屏的中央位置,即水平坐标轴上。调整垂直灵敏度开关于适当档位,将示波器的输入耦合开关置于"DC"档,观察水平亮线的偏转方向(灵敏度不合适时,亮线可能消失,此时需要调整灵敏度)。若向上偏转,则被测直流电压为正极性,若向下偏转,则被测直流电压为负极性。\x0d\(3)定零电压线。将示波器的输入耦合开关置于"GND':档,调节垂直位移旋钮,将荧光屏上的水平亮线(时基线)向与其极性相反的方向移动,置于荧光屏的最顶端或最底端的坐标线上,即被测电压为正极性,就将时基线移至最底端的坐标线上,反之则将时基线移至最顶端的坐标线上,此时基线所在位置即为零电压所在位置,在此后的测量中不能再移动零电压线。即不能再调节垂直位移旋钮。\x0d\(4)将示波器的输入耦合开关置于"DC"档,调整垂直灵敏度开关于适当档位,读出此时荧光屏上水平亮线与零电压线之间的垂直距离Y,将Y乘以示波器的垂直灵敏度即可得到被测电压Ux的大小,即Ux=SY×Y。

原理:分别用脉冲的上升沿和下降沿出发单片机,下降沿给出中断2停止计数,最后换算出高电平宽度=计数周期数×一个计数的时间。

脉冲有间隔性的特征,因此我们可以把脉冲作为一种信号。脉冲信号的定义由此产生:

相对于连续信号(在整个信号周期内短时间中都有的信号),大部分脉冲信号周期内是没有信号的。就象人的脉搏一样。脉冲信号一般指数字信号,它已经是一个周期内有一半时间(甚至更长时间)有信号。计算机内的信号就是脉冲信号,又叫数字信号。

最大脉宽计算:知道计数器中断的产生是从全1变为全0产生溢出中断,所以计数器的处置设定为00H,如果让其工作在方式1计数下,最大计数值为2^16=65536,那么最大计数脉冲宽度就是655362us。

扩展资料:

脉宽由信号的周期和占空比确定,其计算公式是脉宽W=T×P(T:周期,P:占空比)。 例如在飞思卡尔的S12dg128寄存器中的具体的

占空比计算方式是:

左对齐方式:

占空比 = [ (PWMPERx - PWMDTYx) / PWMPERx ] × 100%

中心对齐方式:

占空比 = [ PWMDTYx / PWMPERx ] × 100%

周期的计算公式:

左对齐方式:

输出周期 = 通道周期 × PWMPERx

中心对齐方式:

输出周期 = 通道周期 × PWMPERx × 2

脉宽的计算方法就不言而喻了。

参考资料来源:百度百科-脉冲宽度

参考资料来源:百度百科-脉冲

可以,只要代码编辑无误,一般情况下是可以测量的。STC12C系列增强型单片机片上扩展了基本51单片机的功能,如提供了PCA/PWM接口,定时器能工作在1T模式下(基本51单片机的时钟是Fosc的12分频,1T模式下1分频)。PCA可以用于脉宽测量,但是,protues暂不支持该系列单片机的仿真功能,反复烧写也挺麻烦,所以还是先用基本51单片机实现该功能,在后面的博文里在实现PCA测量脉宽。TMOD最高位GATEn置位后,Tn启动计数受INTn(Pin33)和TRn的共同影响:TRn为1,当INTn引脚输入为高电平时,Tn才允许计数。利用这个功能可测量INTn上正脉冲的宽度。

以上就是关于我用C51单片机做简易数字频率计,测量脉宽2K以内是差不多的,但是超过2K就各种不对了,这是测量脉全部的内容,包括:我用C51单片机做简易数字频率计,测量脉宽2K以内是差不多的,但是超过2K就各种不对了,这是测量脉、求助:51单片机脉宽宽度测量;如何用外部中断测量下面没一个高低电平的宽度;请用C语言帮忙写下程序!!、如何用示波器测量电压、电平、脉宽和周期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9281143.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存