数字频率计(F题)
【本科组】
2015年8月15
摘 要
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。尤其在电子技术中,频率是最基本的参数之一,许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。频率计的基本功能是测量正弦信号、方波信号、三角波信号以及其他各种单位时间内变化的物理量。在本系统中频率计主要由信号输入电路、单片机控制器模块、频率测量模块及显示电路模块组成。STC12C5a60S2单片机是频率计的控制核心,主要完成对待测信号的计数,显示和分频的控制,并将待测频率值使用5110液晶显示屏显示。在整个设计过程中,所制作的频率计采用外部分频的测量方式,以STC12C5a60S2单片机为核心,通过其内部定时/计数器的门控时间,完成对待测信号频率的测量。系统可以实现1Hz~100MHz的频率测量,被测信号峰峰镇电压范围在50mV~1V,测量数据刷新时间不大于2s,测量结果稳定。采用单片机技术设计的数字频率计,具有测量准确度高、响应速度快、体积小等优点。
关键词:数字频率计 51单片机 外部分频 5110液晶
数字频率计(F题)
【本科组】
1系统方案描述
1.1总体系统方案描述
本系统基于单片机STC12C5a60S2作为设计核心的数字频率计,辅以数字译码和显示电路单元构成整个工作系统。对不同频率范围物理信号进行频率测定,系统主要由频率测量模块、控制器和显示模块、电源模块组成,下面论证方案选择的合理性。
1.2数字频率计设计方案的比较与选择
方案一:采用FPGA技术设计。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。而编程逻辑器件和EDA技术给今天的硬件系统设计者提供了强有力的工,使得电子系统的设计方法发生了巨大的变化。采用VDHL编程设计实现的数字频率计,除被测信号的整形部分、键输入部分和数码显示部分以外,其余可在一片FPGA芯片上实现。虽然整个设计过程能变得十分透明、快捷和方便。但是对于各层次电路系统的工作时序的了解和把握显得尤为重要,且实现成本高,对高速的处理功能要求会有所欠缺。
方案二:STM32和FPGA芯片相结合。STM32系列芯片属于意法半导体(ST)公司出品,其中的STM32F103系列,其内核是Cortex-M3。--ARM 32位的Cortex-M3最高72MHz工作频率,在存储器的0等待周期访问时可达1.25DMips/MHZ(DhrystONe2.1)。具有高速高频处理能力,符合题目的高频率设计要求。该方案很好的结合了FPGA芯片的可编程性和STM32的高速性。但对两者的通信设计要求有较高的要求。系统实现结果虽然精度高,但复杂性也高,实现难度大。
方案三:基于单片机STC12C5a60S2作为设计核心的数字频率计,辅以数字译码和显示电路单元构成整个工作系统。对不同频率范围物理信号进行频率测定。单片机具有更为灵活和便于调试编程程序且引脚多。STC12C5a60S2是一种集合于CPu、RAM、ROM、定时器、计数器以及多功能1/0端口等多种元件,拥有40种引脚、32种外部输人喻出1/0端口、2种外中断口、2个16进制可编制程序语音的定时计数器和2个全双工串行通讯端口。运行效率高,其金振频率可达24兆赫兹,运作周期则为500毫秒。
单片机频率计不仅反应快,精度高,操作也非常人性化,而且应用范围大&带宽大以及成本低廉、小巧方便。它可以用来测量一定电压范围内正弦波、三角波及方波。本设计是基于单片机为主控制电路,配合着一定的外围芯片及电路而设计的一款处理数字信号的高频频率计,测量范围能达到,其新颖之处在于运用了简单高效的测频方法,采用自动分频的方式使基于单片机的频率计能够在低成本的前提下完成较高精度的高频数字信号的频率测量。
综合以上三种方案,选择方案三。
2系统理论分析与计算
2.1频率和周期测量的分析与计算
2.1.1 频率的定义
据频率的定义,某一信号在T秒内重复变化N次,则该信号的频率F为:
F=N/T
2.1.2频率的测量方法分析
根据2.1.1的公式,我们可以得到频率计算的几种方法。电子计数式方法主要包括脉冲数定时测频法(M法)、脉冲周期测频法(T法)、脉冲数倍频测频法(AM法)、脉冲数分频测频法(AT法),脉冲平均周期测频法(M汀法)和多周期同步测频法等。
(1)脉冲数定时测频法(M法):
记录时间(TC)内确定被测物理信号的脉冲数量(Mx),则频率值F为:
F=M/TC。
(2)脉冲周期测频法(T法):
物理信号在一个运行周期T以内,记录频率信号的变化次数M,则频率值F 为 F= M/ T
(3)脉冲数倍频测频法(AM法):
本方法是为解决脉冲数定时测频法(M法)在测定低频物理量精度低问题中总结出来的。利用A倍频将被测物流信号频率放大至原来的A倍,则频率值F为:
F= MA/To
(4)脉冲数分频测频法(AT法):
本方法是为解决脉冲周期测频法,在测定高频物理量精度问题中总结出来的。利用A分频将被测物理信号的周期延长至原来的A倍,则频率值(F)为
F=AM。
(5)脉冲平均周期测频法(M/T法):
本方法以Tc表示闸门时间,利用两个计数仪表分开记录被测物理信号的脉冲数量F和标准物理信号的脉冲数量(M),则频率值F为:
F=F M/M
(6)多周期同步测频法:本方法同样以TC表示闸门时间,以Td表示同步门控时间,利用计数仪表实现对物理信号频率值的测定,频率值(Fx)为F= F M/M
2.1.3采用脉冲分频测频法测量频率
综合考虑以上计算方法,采用(4)的脉冲分频测频法(AT法)来解决频率的测量问题。对高频部分采取外部分频的方法,将频率用外部分频电路将频率降低到单片机能处理的频率,以1s为阀值时间,对正弦信号频率的变换次数进行计数。按方法(4)的公式算出信号的频率。
2.2时间间隔测量的分析与计算
2.2.1 时间间隔
根据题目是的说明,题目的时间间隔是指A、B两路同频信号之间的时间间隔T。
2.2.2 时间间隔测量的分析与计算
将两路同频周期方波信号A和B进行异或,得到一个方波的波形,对所得波形进行低通滤波,整流后达到一条与时间间隔在数值上成正比的直流信号。对信号进行24位AD采集,这里的AD采集芯片为24位的HX711芯片。采样后把数据输送到单片机,进行处理后在显示器上输出。即可达到问题所需的测量结果。
2.3脉冲信号占空比测量的分析与计算
2.3.1脉冲信号占空比测量的分析与计算
通过单片机对信号进行周期的初次测量,判断频率是否超过200KHz,如果没有超出范围,则由单片机直接进行脉宽测量,并计算占空比。否则,需对信号进行低通滤波,通过HX711芯片进行24位AD采集,采集的数据将与原信号的占空比成正比,最后由单片机对采集数据进行数据处理,并把结果在5110液晶显示屏上显示。至此,问题的脉冲信号占空比测量即可完成。
3电路与程序设计
3.1电路的设计
3.1.1系统总体框图
图3-1-1 系统总体框图
系统总体框图描述:
以上基本设计原理图就是以STC12C5A单片机为设计核心的高精度频率计设计系统总体框图。将被测物理量信号进人到频率测量模块,此模块功能主要为完成题目所需的测量要求服务。然后将处理的信号进人到单片机的计数器和定时器,并对被测物理量信号频率进行计数。以预先已编好程序实现单片机自动调制测定的量程显示出测定频率,并将数据结果于数字显示电路当中显示,这里采取5110液晶芯片进行显示。
据此原理分析,该系统的设计核心基础为单片机,系统具有所应用的元件较少且电路设计简便的优点,最后的调制过程只需将程序设定编程稍作修改即可实现对不同频率范围内的物理信号频率测定和输出显示的过程。完全可以满足题目的设计要求。
3.1.2频率测量模块子系统框图与电路原理图
1、频率测量模块子系统框图
图3-1-2 频率测量模块子系统框图
2、频率测量模块1——频率和周期测量电路
图3-1-3 频率和周期测量系统电路图
3、频率测量模块2——时间间隔测量系统电路
图3-1-4 时间间隔测量系统电路图
4、频率测量模块3——脉冲信号占空比测量系统电路
图3-1-5 脉冲信号占空比测量系统电路图
3.1.3控制器模块子系统框图与电路原理图
1、控制器模块子系统框图
图3-1-6 控制器模块子系统框图
2、控制器模块子系统电路
图3-1-7 控制器模块子子系统电路图
3.1.4电源模块
电源由变压部分、滤波部分、稳压部分组成。为整个系统提供5V或者3.3电压,确保电路的正常稳定工作。这部分电路比较简单,采用稳压芯片即可实现。
图3-1-8 电源模块子子系统电路图
3.2程序的设计
3.2.1程序功能描述与设计思路
1、程序功能描述:根据题目要求软件部分主要实现数据的采集和显示。
(1)数据采集功能:对电路对信号的频率和周期的测量结果采集到单片机。
(2)显示部分:显示信号的频率。
2、程序设计思路:
程序设计主要分为三部分,数据采集,数据处理和结果显示。数据的采集分为直接输入和AD采集两种。在频率周期测量部分,采取直接把经过分频的方波信号输入到单片机进行处理,而时间间隔测量则采用AD转换来获得。数据处理则把采集回来的数据经过运算得出题目所需要的结果。显示模块块即把经过处理后显示的结果在液晶版上显示出来。
3.2.2程序流程图
1、主程序流程图
图3-2-1 主程序流程图
2、频率和周期测量子程序流程图
图3-2-2 频率和周期测量子程序流程图
3、时间间隔测量子程序流程图
图3-2-2 时间间隔测量子程序流程图
4、脉冲信号占空比测量子程序流程图
图3-2-2 频率和周期测量子程序流程图
4测试方案与测试结果
4.1测试方案
(1)软件仿真:
图4-1-1 频率和周期测量仿真图
图4-1-2 时间间隔测量仿真图
(2)软硬件联合调试方案过程图片:
图4-1-3 软硬件联合调试过程图
4.2 测试条件与仪器
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。
测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表,信号发生器。
4.3 测试结果及分析
4.3.1测试结果(数据)
表格1 频率测量数据记录表
实际值
峰峰值 | 1Hz | 500Hz | 100KHz | 500KHz | 1MHz | 20MHz |
20mV | 6Hz | 510Hz | 1000014Hz | 4999987Hz | 9999932Hz | 20000256Hz |
50mV | 4Hz | 523Hz | 1000017Hz | 4999993Hz | 100000Hz | 20000000Hz |
250mV | 4Hz | 517Hz | 1000017Hz | 5000023Hz | 100000Hz | 20000000Hz |
500mV | 3Hz | 510Hz | 1000002Hz | 5000017Hz | 9999932Hz | 20000000Hz |
750mV | 1Hz | 500Hz | 1000004Hz | 5000014Hz | 100000Hz | 20000000Hz |
1000mV | 1Hz | 500Hz | 1000000Hz | 4999994Hz | 9999932Hz | 20000256Hz |
根据上述测试数据,由此可以得出以下结论:
1、在低频部分,频率测量误差较大。由于阀值时间设计为1秒,在低频部分时,会对采集计数产生较大的误差。
2、在中高频部分,频率测量值稳定,且精度达到,满足设计要求。
3、在输入信号峰峰值较小时,信号的测量值误差较大,这是由于测量信号幅值小对测量产生较大误差。
综上所述,本设计达到设计要求。
5 参考文献
[1]李全利.单片机原理及接口技术.第二版高等教育出版社.2009
[2]郭天祥.51单片机C语言教程.北京工业出版社.2009
[3] 李群芳.单片微型计算机与接口技术.电子工业出版社.2007
[4] 周航慈.单片机程序设计基础.北京航空航天大学出版社.2001
6 心得与体会
本次比赛过程是难忘的,在不断的调试当中,你会发现电子真是一件有趣的事情。当然,在比赛过程中收获最大的还是队友间的合作精神。这次的电子设计大赛,我们选着的题目是数字频率计,对电路的要求非常高,所以负责调试的队友的任务异常艰巨。每天晚上都需要调试到深夜,但我们依然没有放弃比赛,在一次一次的相互鼓励和支持下,坚持到比赛结束,完成了比赛。希望本次的作品能获得好成绩!
附录1:电路原理图
附录2:源程序
/*程序1部分代码*/
#include"stc12c5a.h"
#include "nokia_5110.h"
#include "bmp_pixel.h"
#define delay_time 25767
sbit s2=P1^2;
sbit s1=P1^1;
sbit s0=P1^0;
sbit zm1=P1^5;
unsigned char fp;
unsigned int zmshijian=0,jishu=0;
unsigned char ge1,shi1,bai1,qian1,wan1,shiwan1,baiwan1,qianwan1,wanwan1;
bit a=1;
unsigned long pl=0;
unsigned char code shu[]={16,17,18,19,20,21,22,23,24,25};
void main()
{
zm1=1;
LCD_init(); //初始化液晶
LCD_clear();
s2=1;s1=1;
s0=1;TMOD=0x25; //定时器t1:8位自动重装,计数器t0:16位
TH1=0x38;
TL1=0x38;
TH0=0;
TL0=0;
EA=1;
ET1=1;
ET0=1;
while(1)
{ LCD_write_chinese_string(2,1,12,6,11,2);
ge1=pl%10;
shi1=pl%100/10;
bai1=pl%1000/100;
qian1=pl%10000/1000;
wan1=pl%100000/10000;
shiwan1=pl/100000%10;
baiwan1=pl/1000000%10;
qianwan1=pl/10000000%10;
wanwan1=pl/100000000;
pl=0;
}
/*程序2部分代码*/
#include"stc12c5a.h"
#include "nokia_5110.h"
#include "bmp_pixel.h"
#define delay_time 25767
sbit dt=P1^4;sbit sck=P1^5;
sbit zm2=P1^6;
unsigned long addat=0;
unsigned char ge2,shi2,bai2,qian2,wan2,shiwan2,baiwan2,qianwan2;
unsigned char code shu[]={16,17,18,19,20,21,22,23,24,25};
void initad()
{
unsigned char j=0,i=0;
dt=1;
sck=0;
while(dt);
for(;i<26;i++)
{
sck=1;
j++;j++;j++;
sck=0;
j++;j++;j++;
}
}
附录3:主要元件清单
序号 | 名称 | 数量 | 备注 |
1 | 电压比较器 MAX961 | 5 | 进行电压比较 |
2 | 计数器 74LVC161 | 2 | 计数 |
3 | 数据选择器 74LS151 | 1 | 数据选择 |
4 | 异或门 74LS86 | 1 | 构建与非门 |
5 | 二极管 | 6 | 整形、稳压 |
6 | 低功耗肖特基的TTL非门 74HC04 | 1 | |
7 | 24位A/D转换器 HX711 | 1 | 模数转换 |