发布网友 发布时间:2022-03-17 09:55
共6个回答
热心网友 时间:2022-03-17 11:25
频率测量的方法常用的有测频法和测周法两种。
测频法的基本思想是让计数器在闸门信号的控制下计数1秒时间,计数结果是1秒内被测信号的周期数,即被测信号的频率。若被测信号不是矩形脉冲,则应先变换成同频率的矩形脉冲。测频法的原理框图如图所示。
图中,秒脉冲作为闸门信号,当其为高电平时,计数器计数;低电平时,计数器停止计数。显然,在同样的闸门信号作用下,被测信号的频率越高,测量误差越小。当被测频率一定时,闸门信号高电平的时间越长,测量误差越小。但是闸门信号周期越长,测量的响应时间也越长。
2、当被测信号频率较低时,为保证测量精度,常采用测周法。即先测出被测信号的周期,再换算成频率。测周法的实质是把被测信号作为闸门信号。
在它的高电平的时间内,用一个标准频率的信号源作为计数器的时钟脉冲。若计数结果为N,标准信号频率为f1,则被测信号的周期为:T = T1·N。被测信号的频率为:f = 1/T1·N = f1/N。
利用测周法所产生的最大绝对误差,显然也等于±1个标准信号周期。如果被测信号周期的真值为T真= T1·N,则T测= T1·(N±1)σmax= (f测-f真)/ f真= T真/T测 – 1=±1/(N±1)由上式可知,对于一定的被测信号,标准信号的频率越高,则N的值越大,因而相对误差越小。
3、低频段的测量,鉴于上述困难,对于低频信号,为了达到规定的精度,要采取一些比较特殊的方法。例如,可考虑将被测信号倍频后再用测频法测量。
或将闸门信号展宽。由于倍频电路比较复杂,所以一般采用后一种方法,实际上闸门信号展宽与被测信号倍频在效果上是相同的。
闸门信号展宽比较容易做到,例如采用分频电路就可以实现。若闸门信号高电平时间从1秒展宽到10秒,则相对误差可以按比例下降,但响应时间也增大相同的比例。
4、显示方式:共用右边四个数码管,左三个显示数据,最右端一个显示单位,为0时单位为Hz,为1时单位为Khz
5、代码:
//#include<c8051F330.h>
#include<ZLG72.h>
#include<init.h>
#define uint unsigned int
uint a,b,c,d;
unsigned long x;
unsigned long count;
unsigned char flag=0;
void Timer0_Init()interrupt 1
{
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
if(++count==40)
{
count=0;
TR1=0;
x=TH1*256+TL1;
TH1=0;
TL1=0;
TR1=1;
flag=1;
}
}
void show(void)
{if(x>=10&&x<100)
{
a=0;
b=x*10%100;
c=x/10;
d=x%10;
ZLG72_Download(1,7,0,a);
ZLG72_Download(1,6,0,b);
ZLG72_Download(1,5,1,d);
ZLG72_Download(1,4,0,c);
}
else if(x>=100&&x<1000)
{
a=0;
b=x/100;
c=x%100/10;
d=x%10;
ZLG72_Download(1,7,0,a);
ZLG72_Download(1,6,1,d);
ZLG72_Download(1,5,0,c);
ZLG72_Download(1,4,0,b);
}
else if(x>=1000&&x<10000)
{
a=x/1000;
b=x%1000/100;
c=x%100/10;
d=1;
ZLG72_Download(1,7,0,d);
ZLG72_Download(1,6,0,c);
ZLG72_Download(1,5,0,b);
ZLG72_Download(1,4,1,a);
}
}
main(void)
{
system_init();
systemclk_init();
port_init();
ZLG72_Init(40);
ZLG72_Reset();
timer_init();
while(1)
{
if(flag==1)
{
show();
flag = 0;
}
}}
#include <C8051F330.h>
#include <port.h>
void system_init()
{
PCA0MD&=~0x40;
}
void systemclk_init()
{
OSCICL=OSCICL+42; //设置内部振荡器为24MHZ
OSCICN|=0x01; //内部振荡器4分频
}
void port_init()
{
P0SKIP=0x00; //跳过P0.0做INT0.P0.1做INT1(P0.6,P0.7模拟输出不跳)
P1SKIP=0x00; //跳过P1.2,P1.3,P1.4
XBR0=0x00; //交叉开关使能UART0
XBR1=0x60; //打开交叉开关
//IT01CF=0x10; //INT0配置在P0.0,INT1配置在P0.1
P0MDIN=0xFF; //数字输入
P1MDIN=0xFF;
P0MDOUT=0xFF; //推挽
P1MDOUT=0xFF;
}
void timer_init()
{
TMOD=0X51;
TH0=(65535-2500)/256;
TL0=(65535-2500)%256;
EA=1;
ET0=1;
TR1=1;
TR0=1;
}
#ifndef __port_H_
#define __port_H_
void system_init(void);
void systemclk_init(void);
void port_init(void);
void timer_init(void);
#endif
热心网友 时间:2022-03-17 12:59
不用搞这么多元件了,我做了一个用ICM7216D为核心(频率计专用芯片)把图纸上的晶振改成用铷钟里的10MHz准的不得了,又简单,又准,已经在用哦
热心网友 时间:2022-03-17 14:51
请问你最后怎么做的呢,可以给我发一下吗?非常感谢
热心网友 时间:2022-03-17 16:59
没图[捂脸]
热心网友 时间:2022-03-17 19:23
简易频率计
一、设计任务与要求
1.设计制作一个简易频率测量电路,实现数码显示。
2.测量范围:10Hz~99.99KHz
3.测量精度: 10Hz。
4. 输入信号幅值:20mV~5V。
5. 显示方式:4位LED数码。
二、方案设计与论证
频率计是用来测量正弦信号、矩形信号、三角形信号等波形工作频率的仪器,根据频率的概念是单位时间里脉冲的个数,要测被测波形的频率,则须测被测波形中1S里有多少个脉冲,所以,如果用一个定时时间1S控制一个闸门电路,在时间1S内闸门打开,让被测信号通过而进入计数译码器电路,即可得到被测信号的频率fx。
任务要求分析:
频率计的测量范围要求为10Hz~99.99KHz,且精度为10Hz,所以有用4片10进制的计数器构成1000进制对输入的被测脉冲进行计数;要求输入信号的幅值为20mV~5V,所以要经过衰减与放大电路进行检查被测脉冲的幅值;由于被测的波形是各种不同的波,而后面的闸门或计数电路要求被测的信号必须是矩形波,所以还需要波形整形电路;频率计的输出显示要经过锁存器进行稳定再通过4位LED数码管进行显示。
经过上述分析,频率计电路设计的各个模块如下图:
方案一:
根据上述分析,频率计定时时间1s可以通过555定时器和电容、电阻构成的多谐振荡器产生1000Hz的脉冲,再进行分频成1Hz即周期为1s的脉冲,再通过T触发器把脉冲正常高电平为1s;放大整形电路通过与非门、非门和二极管组成;闸门电路用一个与门,只有在定时脉冲为高电平时输入信号才能通过与门进入计数电路计数;计数电路可以通过5个十进制的计数器组成,计数器再将计的脉冲个数通过锁存器进行稳定最后通过4个LED数码显像管显示出来。
方案二:
频率计定时时间1s可以直接通过555定时器和电容、电阻构成的多谐振荡器产生1Hz的脉冲,再通过T触发器把脉冲正常高电平为1s;放大整形电路可以直接用一个具有放大功能的施密特触发器对输入的信号进行整形放大,其他模块的电路和方案一的相同。
通过对两种方案的分析,为了减少总的电路的延迟时间,提高测量精确度,所以选择元件少的第二种方案。
三、单元电路设计与参数计算
时基电路:
用555_VIRTUAL定时器和电容、电阻组成多谐振荡器产生1Hz的脉冲,根据书中的振荡周期 : T=(R1+R2)C*ln2 取C=10uF,R1=2KΩ,T=1s,计算得:R2=70.43KΩ,再通过T触发器T_FF把脉冲正常高电平为1s的脉冲,元件的连接如下:
经示波器仿真,产生的脉冲的高电平约为1S。
放大整形电路:
用一个74HC14D_4V的含放大功能的施密特触发器对输入脉冲进行放大整形,把输入信号放大整形成4V的矩形脉冲,其放大整形效果如下图:
闸门电路:
用一个与门74LS08作为脉冲能否通过的闸门,当定时信号Q为高电平时,闸门打开,输入信号进入计数电路进行计数,否则,其不能通过闸门。
计数电路:
计数电路用5(4)片74192N计数器组成100000(10000)进制的计数电路,74192N是上升沿有效的,来一个脉冲上升沿,电路记一次数,所以计数的范围为0~99999(5000)。但计数1S后要对计数器进行清零或置零,在这里用清零端,高电平有效,当计数1S后,Q为低电平,Q’为高电平,所以用Q’作为清零信号,接线图如下:
锁存显示电路:
当计数电路计数结束时,要把计得脉冲数锁存通过数码显示管稳定显示出来。锁存器用2片74ls273,时钟也是上升沿有效,当Q为下降沿时,Q’恰好是上升沿,所以用Q’作为锁存器的时钟,恰能在计数结束时把脉冲数锁存显示,电路的接线图如下:
四、总电路工作原理及元器件清单
1.总原理图
2.电路完整工作过程描述(总体工作原理)
555组成的多谐振荡器产生1Hz的脉冲,经过T触发器整形成高电平时间为1S的脉冲,高电平脉冲打开闸门74LS08N,让经施密特触发器74HC14D放大整形的被测脉冲通过,进入计数器进行1S的计数。当计数结束时,T触发器的Q为下降沿,Q’刚好为上升沿,触发锁存器工作,让计数器输出的信号通过锁存器锁存显示,同时,高电平的Q’信号对计数电路进行清零,此后,电路将循环上述过程,但对于同一个被测信号,在误差的允许范围内,LED上所显示的数字是稳定的。
3.元件清单
元件序号型号主要参数数量备注
1741925加法计数器
274LS2732锁存器
3 DCD_HEX4LED显示器
4555_VIRTUAL1定时器
5T_FF1T触发器
6CAPACITOR_RATED电容10Uf、额定电压50V1电容
7CAPACITOR_RATED电容10Nf、额定电压10V1电容
8RES阻值2KΩ1
9RES阻值1
1074LS081双输入与门
1174HC14D_4V1施密特触发器,放大电压4V
12AC_VOLTAGE1可调的正弦脉冲信号
五、仿真调试与分析
把各个模块组合起来后,进行仿真调试以达到任务要求。
① 在信号输入端输入10Hz的交流脉冲,仿真,结果如下:
说明仿真的结果准确
② 在信号输入端输入300Hz的交流脉冲,仿真,结果如下:
仿真结果准确
③ 在信号输入端输入3KHz正弦脉冲,仿真,结果如下:
④输入20KHz的正弦脉冲,仿真,结果如下:
仿真结果结果与实际的结果相差20Hz,这说明频率越高,误差越大。经分析,这是由于各个元器件存在着延迟时间,1S的脉冲,经过各个元器件的延迟,计数时间会大于1s,频率越高,误差越大,所以计数的时间要稍微小于1S,调小时基电路的R3为70.23KΩ,仿真,结果如下:
还是存在误差,经过多次调节R3仿真,最后确定R3为70.06 KΩ时对于各个频率的测试都比较准确,20KHz时仿真结果如下:
所以R3为70.06KΩ是测得的各个频率值都比较准确,且电路设计都符合测任务要求。
六、结论与心得
在这次课程设计的过程中,我收获不少。首先,我学会了把一个电路分成模块去设计,最后再整合,这样可以把一个复杂的电路简单化了,并且这样方便与调试与修改;其次,设计有助了我去自学一些元器件的功能,去运用它;再次,我也初步会用multisim软件设计电路;最后,这次课程设计也提高了我查找问题、思考问题和解决问题的能力,还锻炼了我的耐性。
在这次课程设计中也遇到了很多问题,首先,是对元器件了解不多,对于要实现某种功能不知道用那一种元件,所以问同学,上网收索,再了解这种元件的逻辑功能,学会去用它;其次,不大会用电路设计软件,一开始用EWB软件设计,对模块仿真可以,但整合整个原理图仿真却不行,通过示波器观察输出波形发现脉冲走了一小段却停止了,以为是电路有问题,就查找了很多遍才找出问题,原来在那个软件仿真时是不允许存在两个信号,所以重新用multisim设计,才可以;最后,在用multisim仿真高频率时仿真速度极慢,所以调整了软件的仿真最大步长,但问题又出现了,信号紊乱,数码管显示数字不一,然后就猜想会不会是元件的问题,太高频率元件来不及反应就输出结果,但上网寻找答案,原来是软件的仿真步长会影响仿真的精确度,所以,某一范围的频率仿真,要用相应的最大仿真步长。
这个题目的设计花了自己不少心血,有时甚至一整天在弄,但是当自己成功地设计出电路时所获得的那一份成就感是无法表达的,所以整个电路的设计过程充满着苦恼与乐趣。
七、参考文献
[1] 阎石 《数字电子技术基本教程》第一版 ,清华大学出版社,2007.08
热心网友 时间:2022-03-17 22:05
进大学生电子实验室网站,可以找到你要的答案