数字频率计的设计和制作(数字频率计的设计)
你们好,最近小活发现有诸多的小伙伴们对于数字频率计的设计和制作,数字频率计的设计这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 常用的频率测量方法有两种:频率测量法和周期测量法。
2、 测频法的基本思想是让计数器在门信号的控制下计数1秒,计数结果就是1秒内被测信号的周期数,即被测信号的频率。如果被测信号不是矩形脉冲,应先转换成同频率的矩形脉冲。频率测量方法的原理框图如图所示。
3、 图中秒脉冲作为门信号,当其为高电平时,计数器计数;当它为低时,计数器停止计数。显然,在相同的门信号作用下,被测信号的频率越高,测量误差越小。当被测频率不变时,门信号为高的时间越长,测量误差越小。但是门信号的周期越长,测量的响应时间就越长。
4、 当被测信号频率较低时,为了保证测量精度,常采用周期测量法。即首先测量被测信号的周期,然后转换成频率。周期测量法的实质是将被测信号作为门信号,在其高电平时间内使用一个标准频率信号源作为计数器的时钟脉冲。如果计数结果为n,标准信号频率为f1,则测量信号的周期为
5、 T=T1 N
6、 测量信号的频率为
7、 f=1/T1 N=f1/N
8、 周期测量法产生的最大绝对误差明显等于1个标准信号周期。如果被测信号的周期真值为t true=T1 N,则t measurement=T1(N ^ 1)。
9、 max=(f检验-f真)/f真=T真/T检验-1=1/(n-1)
10、 从上式可以看出,对于某个被测信号,标准信号的频率越高,n的值越大,因而相对误差越小。
11、 低频带测量
12、 鉴于以上困难,对于低频信号应采用一些特殊的方法,才能达到规定的精度。比如,我们可以考虑先将被测信号倍频,再用测频的方法测量。或者加宽栅极信号。由于倍频电路复杂,一般采用后一种方法。实际上,门信号展宽与被测信号的倍频是一样的。例如,通过使用分频电路,门信号展宽相对容易实现。如果门信号的高电平时间从1秒延长到10秒,相对误差可以成比例地减小,但是响应时间也增加了相同的比例。
13、 显示方式:右边四个数码管共用,左边三个显示数据,最右边显示单位为0时为Hz,为1时为Khz。
14、 代码:
15、 //#includec8051F330.h
16、 #includeZLG7289.h
17、 #includeinit.h
18、 #定义uint无符号整数
19、 uint a、b、c、d;
20、 无符号长x;
21、 无符号长计数;
22、 无符号字符标志=0;
23、 无效定时器0_Init()中断1
24、 {
25、 TH0=(65535-10000)/256;
26、 TL0=(65535-10000)% 6;
27、 if( count==40)
28、 {
29、 count=0;
30、 TR1=0;
31、 x=TH1 * 256 TL1
32、 TH1=0;
33、 TL1=0;
34、 TR1=1;
35、 flag=1;
36、 }
37、 }
38、 无效显示(无效)
39、 {如果(x=10x100)
40、 {
41、 a=0;
42、 b=x*100;
43、 c=x/10;
44、 d=x;
45、 ZLG7289_Download(1,7,0,a);
46、 ZLG7289_Download(1,6,0,b);
47、 ZLG7289_Download(1,5,1,d);
48、 ZLG7289_Download(1,4,0,c);
49、 }
50、 else if(x=100x1000)
51、 {
52、 a=0;
53、 b=x/100;
54、 c=x0/10;
55、 d=x;
56、 ZLG7289_Download(1,7,0,a);
57、 ZLG7289_Download(1,6,1,d);
58、 ZLG7289_Download(1,5,0,c);
59、 ZLG7289_Download(1,4,0,b);
60、 }
61、 else if(x=1000x10000)
62、 {
63、 a=x/1000;
64、 b=x00/100;
65、 c=x0/10;
66、 d=1;
67、 ZLG7289_Download(1,7,0,d);
68、 ZLG7289_Download(1,6,0,c);
69、 ZLG7289_Download(1,5,0,b);
70、 ZLG7289_Download(1,4,1,a);
71、 }
72、 }
73、 主要(无效)
74、 {
75、 system _ init();
76、 system clk _ init();
77、 port _ init();
78、 zlg 7289 _ Init(40);
79、 zlg 7289 _ Reset();
80、 timer _ init();
81、 while(1)
82、 {
83、 if(flag==1)
84、 {
85、 show();
86、 flag=0;
87、 }
88、 }}
89、 #包括C8051F330.h
90、 #包含端口. h
91、 void system_init()
92、 {
93、 PCA0MD=~0x40
94、 }
95、 void systemclk_init()
96、 {
97、 OSCICL=OSCICL 42//将内部振荡器设置为24MHZ。
98、 OSCICN |=0x01//内部振荡器除以4
99、 }
100、 void port_init()
101、 {
102、 P0SKIP=0x00//跳过P0.0做INT0。P0.1 to do INT1(P0.6,P0.7模拟输出不跳)。
103、 P1SKIP=0x00//跳过P1.2,P1.3,P1.4。
104、 XBR0=0x00//交叉开关使能UART0。
105、 XBR1=0x60//打开纵横制交换机
106、 //it 01 cf=0x 10;//INT0配置在P0.0,INT1配置在P0.1。
107、 P0MDIN=0xFF//数字输入
108、 P1MDIN=0xFF
109、 P0MDOUT=0xFF//推挽式
110、 P1MDOUT=0xFF
111、 }
112、 void timer_init()
113、 {
114、 TMOD=0x 51;
115、 TH0=(65535-2500)/256;
116、 TL0=(65535-2500)% 6;
117、 EA=1;
118、 ET0=1;
119、 TR1=1;
120、 TR0=1;
121、 }
122、 #ifndef __port_H_
123、 #define __port_H_
124、 void system _ init(void);
125、 void system clk _ init(void);
126、 void port _ init(void);
127、 void timer _ init(void);
128、 #endif
以上就是数字频率计的设计这篇文章的一些介绍,希望对大家有所帮助。
免责声明:本文由用户上传,如有侵权请联系删除!
猜你喜欢
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
最新文章
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29
- 12-29