基于测试调频信号的AT89C2051数字频率计的软件设计

时间:2022-10-30 04:27:11

基于测试调频信号的AT89C2051数字频率计的软件设计

【摘要】数字频率计主要包含了对输入信号的整形、计数、显示三个部分。本文介绍了软件部分主要包括实现选择对不同分频信号计数程序、对数据处理程序及显示程序。在此采用了以at89c2051单片机为核心的直接测频法。

【关键词】数字频率计;单片机;显示

1.引言

数字频率计是直接用十进制码来显示被测信号频率的一种测量装置。作为一种基础测量仪器,已在教学、科研、高精度仪器测量、工业控制等领域有较广泛的应用。

试验中设计的频率计测量的频率范围在1Hz-10MHz之间。能够测量任何该频率段内的周期信号的频率,延时要小,测量迅速,以十进制数显示,便于读数,单位以Hz或KHz显示,自动转换单位。

方案1:目前市场上的频率计多数使用专用计数芯片和数字逻辑电路计数,测量原理图如图1所示。

图1 计数芯片设计频率计的基本原理

计数芯片是通过外部时钟电路产生的时间基准信号控制计数器的计数和保持状态的,计数器的测量精度很大程度上就取决于时间基准信号的精度。其次,要实现量程转换,需要人为选择量程,对时钟电路产生的时间信号分频得到不同量程所需的时间基准信号,完成一次计数后要对电路产生控制信号送入计数器,使计数器清零以便下一次计数,这使得电路比较复杂。再者,这种专用芯片的价格比较高,就决定了制作的频率计的成本会很高。基于以上考虑,就否定了这种用计数芯片计数的方法。

方案2:现在单片机的使用比较广泛,我们可以考虑用单片机设计频率计。使用单片机设计时通常采用两种办法:1)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期;2)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。这里我们用第一种的直接测频法。以AT89C2051单片机为核心,利用其内部的定时(计数)器来完成待测信号频率的测量。单片机的其中一个定时/计数器定时,另一个计数。另外还可以通过软件编程实现自动换档,使电路结构大为简化。

比较以上两种方案,很容易发现两者的优缺点:

方案1需要人为选择量程,电路复杂,专用芯片的价格比较高,制作的频率计的成本高;

方案2可实现自动换档,取材方便、电路简单,制作成本低。

从而确定了使用单片机计数的方案。

2.数字频率计的基本原理

频率的定义是单位时间(1s)内周期信号的变化次数。若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为:

F=N/T

所以测频就是测量单位时间内脉冲个数,则首先就要对输入信号整形,变换成矩形脉冲,送入计数,计数完成后显示频率值。据此,设计原理如图2所示。

图2 数字频率计的基本组成

3.软件设计

软件部分主要包括实现选择对不同分频信号计数程序、对数据处理程序及显示程序。为使CPU不把大部分时间用在等待定时/计数结束,数码管在单片机在计数的同时仍能显示,就需要采用中断方式。在主程序中,对定时/计数器设初值并开中断,运行显示程序,当T0定时到时产生中断,在中断处理子程序中对数据处理,并重新对定时/计数器设初值。由于中断服务子程序时间非常短,所以视觉上数码管没有停止显示。

具体的工作过程为:

通过软件设置单片机P1.5和P1.6,即设置了数据选择器的地址端A和B,选择对100分频的信号测频,清零标记位(25H).0表示选择100分频;T1清零,T0定时100MS同时启动T1计数和T0定时;

定时到时产生中断,T1停止计数,判断标记位(25H).0,为零表示单片机对100分频的信号计数100MS,判断计数值是否小于5000,(小于5000说明信号未经分频的频率值小于5MHz),若大于5000表明信号频率大于5MHz,信号实际频率为:计数值×100×10Hz,所以信号频率值可直接用计数值表示,单位为KHz;

若计数值小于5000,继续判断计数值是否小于500(小于500说明信号未经分频的频率值小于500KHz),若大于500表明信号频率在500 KHz-- 5MHz内,这时就没必要对信号100分频,只需要10分频就可以,通过软件设置单片机P1.5和P1.6,即设置了数据选择器的地址端A和B,选择对10分频的信号测频,标记位(25H).0置1,标记位(25H).1置1,表示计数值为10分频的计数,重新把T1清零,T0定时100MS同时启动T1计数和T0定时,定时到时产生中断,T1停止计数,判断标记位(25H).0为1,表示不是100分频的计数,判断标记位(25H).1为1表示计数值为10分频的计数,信号实际频率为:计数值×10×10Hz,所以信号频率值为计数值除以10,单位为KHz,实际上可以直接在计数值的左边第二位加小数点,表示对计数值进行了除以10的处理,设置标记位P1.7为1,表示是分频的计数,需加小数点,这时需要把所有标记位清零以便下一次计数;

若计数值小于5000也小于500说明信号未经分频的频率值小于500KHz,这时就没必要对信号分频,通过软件设置单片机P1.5和P1.6,即设置了数据选择器的地址端A和B,选择对不分频的信号测频,置1标记位(25H).0清零标记位(25H).1,表示计数值为不分频的计数,重新把T1清零,T0定时100MS同时启动T1计数和T0定时,定时到时产生中断,T1停止计数,判断标记位(25H).0为1,表示不是100分频的计数,判断标记位(25H).1为0,表示计数值不是10分频的计数,所以计数值为不分频的计数,信号实际频率为:计数值×10Hz,所以信号频率值为计数值乘以10,单位为Hz;但在低频时,如果信号频率小于10Hz,计数100MS就无法测量信号频率,所以这时还有必要重新对T0置数,使其定时1S,T1也重新计数,设置标记位P3.2为0表示计数值是1S的计数,不用对计数值乘10。

由以上分析可知,通过软件编程就可实现量程的自动转换。

计数完成后需要对数据处理:

(1)由T1得到的计数值为二进制,需要转换为十进制才能显示,可通过软件编程实现;

(2)进制转换完后卫压缩的BCD数,要把压缩BCD数转换为分离BCD数。

程序流程图如图3、4、5所示。

各子程序流程图如图5所示。

4.总结

把已知频率的标准信号输入到制作好的频率计上,观察频率计显示数值发现与标准信号的频率值存在一定的延迟和差值,这种误差的产生主要是因为电路中各芯片的延迟和程序中对T0定时和T1计数时间并不是完全相等。但测得值与标准值相差不大,考虑到做模拟电路实验时用到的频率范围及对频率计的性能要求,在此制作的频率计完全可以应用在模拟电路实验中。

注:由于某种原因,在此,设计的程序不予刊发。

参考文献

[1]童诗白.模拟电子技术基础[M].北京:高等教育出版社,2002,5.

[2]阎石.数字电子技术基础[M].北京:高等教育出版社,2004,4.

[3]余家春.PROTEL99SE电路设计使用教程[M].北京:中国铁道出版社,2003,1.

[4]王廷才.电子线路辅助设计PROTEL99SE[M].北京:高等教育出版社,2004,8.

[5]张毅刚,彭喜元等.新编MCS-51单片机应用设计[M].黑龙江:哈尔滨工业大学出版社,2003,7.

作者简介:陈利新(1968―),男,山东临沂人,大学本科,工程师,现供职于山东省新闻出版广电局蒙山转播台,从事广播电视发射转播技术方面的工作。

上一篇:付梅:从打工妹到 “中国百名杰出女企业家” 下一篇:移动医护工作站跨平台开发技术的研究与设计