当前位置:首页  生活常识

生活常识

数字频率计的设计和制作(数字频率计的设计)

2023-03-08 18:56:08
导读 你们好,最近小活发现有诸多的小伙伴们对于数字频率计的设计和制作,数字频率计的设计这个问题都颇为感兴趣的,今天小活为大家梳理了下,一

你们好,最近小活发现有诸多的小伙伴们对于数字频率计的设计和制作,数字频率计的设计这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

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

以上就是数字频率计的设计这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!