APP下载

基于STC15单片机的高精度频率计设计

2018-01-02李一民邵玉斌杨道福

软件 2017年12期
关键词:频率计晶振计数器

齐 宣,李一民,邵玉斌,龙 华,杨道福

(昆明理工大学 信息工程与自动化学院,云南 昆明 650504)

基于STC15单片机的高精度频率计设计

齐 宣,李一民,邵玉斌,龙 华,杨道福

(昆明理工大学 信息工程与自动化学院,云南 昆明 650504)

本文提出一种基于STC15W4K48S4单片机的高精度数字频率计的设计方法,内部软件设计采用多周期同步测量法实现,设计中对测量的数据进行相应的调整减少误差。由于采用了32 MHz的晶振,测量范围可在1 Hz ~10 MHz,并且在高频下误差相对很小。本次设计给出的频率计的设计方案,不但切实可行,而且设计简单、成本低、可测频带宽,大大降低了设计成本和实现复杂度。

精度; 单片机; 频率计

0 引言

频率是电子技术中最基本的参数之一,并且与其它许多电参数的测量方案和测量结果都有密切的关系,因此频率的测量显得非常重要[1]。而现在的单片机设计的频率计测量频率低,精度差。目前在频率测量领域中,对于高频率信号高精度测量大都使用 ARM FPGA等高速处理器加专用计数芯片来完成[2]。这种方法不仅编程复杂,而且成本高,在一些小型的设备中并不适用。

本文提出的基于STC15单片机的频率计的设计方法,以STC15W4K48S4单片机为控制芯片,充分采用内部的软硬件资源,采用同步测量法控制单片机内部的定时器/计数器,并控制 LCD显示。该方法充分发挥了STC15系列单片机在高频晶振下计数的特点,实验测量中也表现出较高的准确度。

1 功能需求与系统方案论证

为达到监播机的系统使用需要。设计的频率计需要具有以下的技术要求:

1. 频率计的计数范围为1 Hz-5 MHz,且对超出频域的部分也能显示。

2. 频率计有动态显示,显示实时的测量频率,且更新速度不低于2秒/次。

3. 频率计部分可单独工作,不影响其它模块中断的响应。

为实现实验要求并达到预期效果,需对硬件系统与软件系统进行设计,其理由是1. 普通单片机无法达到需要的频率要求;2. 数字频率计软件中涉及数学运算,并要保存大量信息。对测量结果要驱动LCD显示屏显示,作为系统的一部分要有多个定时器/计数器和中断,以此选用增强型的STC15系列单片机。

1.1 系统结构框图

系统总体框图如图 1所示。电路以 STC15W-4K48S4单片机为核心,来完成它待测信号的计数、运算、显示的控制。由于单片机对测量的波形有要求,所以必须将要测量的信号信号或者外接信号(包括方波、三角波、正弦波)转换为单片机可以接受的CMOS方波信号[3]才能输入单片机的计数引脚(P3.4)。

图1 系统结构图Fig.1 System structure diagram

被整形后的信号送入单片机端口,利用其内部的定时/计数器完成待测信号周期/频率的测量。单片机 STC15W4K48S4内部具有 5个定时/计数器,本设计中选用T0,T1两个定时/计数器,并由编程来实现定时、计数的模式和产生计数溢出时中断内部的功能。

1.2 多周期同步测频的原理

同步测频法是为了提高周期测量法的精度而对其进行改进的方法,其核心是使标准高频信号的采样与待测信号同步,并确保测量时间为整数个待测信号,从而使得该测量方法的原理误差不超过一个标准高频信号周期,大大提高了测量精度[4]。采用同步测频法对被测信号进行测量要求使用两个计数器,分别对被测量信号和晶振信号同时计数,以被测量信号为标准对其计数,使被测量信号计数器溢出的次数为整数倍,而这时另一个计数器对晶振的计数次数就是时间,通过计算便可得出被测信号的频率[4,5]。

其测量原理如图2所示,fx为被测信号频率,fosc为晶振产生的标准频率;当计数器 1(T0)对 fx计数并且控制它计满整数 n个溢出次数时,计数器 2(T1)的溢出次数为nosc,则T0对fx的计数次数为Nx=n×65536次,而 T1对 fosc的计数次数为 Nosc=nosc×65536+TH1×256+TL1,TH1与 TL1是 T1寄存器中的数值。

图2 多周期同步测频原理Fig.2 Multi-cycle synchronous frequency measurement principle

由于计数器1与计数器2是同时开始与停止的,所以是经过了相同的时间T,所以被测频率为:

由于在计数过程中,同步控制使得 fx的计数为寄存器的整数倍,也不存在±1误差,所以误差与fx无关。外部晶振采用32 MHz的有源晶振,保证晶振的稳定,所以误差极小控制在10-6范围内。

2 硬件电路设计

数字频率计的设计原则主要是缩小系统体积降低作品硬件成本,提高系统的可靠性和使用便捷性等,而在监播机系统中对硬件的体积要求尽可能小,同时不能干扰放大电路、检测电路等,因此在单片机的选型及封装,LCD液晶屏,电路等方面要求在满足功能要求的同时减少空间的占用。

2.1 单片机最小系统

本设计采用的是STC15W4K48S4系列芯片,为宏晶公司生产的高性能单片机,封装格式为SOP28。复位电路和时钟电路是维持单片机最小系统运行的基本模块。为防止系统在运行过程中出现程序跑飞的情况,需要设置系统复位按钮。

高频的时钟信号可以加快单片机的运行速度,同时实现对高频信号的采样。STC15提供了可达1T的主频速度和高分辨率的定时器,因此才可以实现高精度和更款范围的测量。本次设计采用 32 MHz的有源晶振。P3.4脚为被测频率的输入引脚,P3.5为外部晶振的输入引脚。由于单片机内部采样原理的限制,理论上可以实现16 MHz信号的采样,但由于误差的影响,频率越高时误差会越大。

2.2 LCD显示模块

显示电路设计的关键问题是显示器件的选择,对于本产品设计的频率计为系统的必要模块,需要与主板一起装置在已提供好的功能箱中。可供选择的器件有 LED 数码显示器和 LCD 显示器,其中LED适用于室内,比较醒目;LCD 比较精细,显示信息多。本作品采用LCD1602型字符显示器,它可以显示2行各16个字符的各种ASCII码字符,因此只要设计合理,就可以将要显示的内容提示,结果信息等全部显示出来,比一般的数码管更直观、更有效[6]。

本次设计采用1602LCD显示模块,由于单片机封装形式为SOP28,考虑到引脚较少的问题采用四线制驱动LCD1602以减少引脚的占用。

编号 符号 引脚说明1 VSS 地2 VDD 正极3 VL 背光调节4 RS 数据/命令选择5 R/W 读/写选择6 E 使能信号7-14 D0-D7 总线端口15 BLA 背光源正极16 BLK 背光源负极

3 软件设计

频率计的软件设计工具选用Keil Vision5,使用C语言设计,整体采用模块化设计方法,整个软件部分由初始化模块、定时器设置模块,计算模块、显示模块组成。系统结构图如图3所示。上电后对单片机初始化,然后分别对T0、T1设置;设置T0为16位计数器,T0对时钟信号进行12分频(此时AUXR=0X40);T1为 16位定时器,对时钟信号进行计数。

被测量的频率信号由单片机的P3.4脚输入,当T0溢出满10次后,分别对T0和T1的计数次数进行求和,得出Nx和Nosc,然后求出被测频率。

求出被测频率的主要程序:

void CallFrecency(){

unsigned long int sum_T0=0;

unsigned long int sum_T1=0;

double a_adjust=0.0;

sum_T0=10*65536;//计算T0计数值

sum_T1=(cycle2*65536)+TH1*256+TL1;

Nx_adjust=(a0+0.0)/(a1+0.0);

Nx=FOSC*a_adjust;

cycle1=0;

cycle2=0;

}

为了减少每次的误差,对测量结果调整,每测量10次取平均值。

数值调整的部分程序:

If(flag=1){

CallFrecency();

//将每次计算的Nx值放入数组

Result_num[flag_10]=Nx;

Flag_10++;

For(i=0;i<10;i++){

Sum_result+=result_num[i];

}

ave_result=sum_result/10;

}

图3 软件流程设计Fig.3 Software process design

4 测量结果

实验测量中采用32 MHz外部有源晶振作为时钟,在正常室温条件下对信号发生器产生的方波信号进行测频,结果如下表。

从实验结果可以看出,在1 MHz内测量精度很高,在5 MHz内会出现极小误差,范围控制再0.1‰内。与普通单片机实现的频率计设计相比较,能达到较大的量程且在10 M内的误差很小,采用本设计方法能达到较高的精度要求。

表1 测量结果Tab.1 Measurement results

5 结语

数字频率计作为一种基本的测量仪器,在多种场合中都有应用;而单片机具有体积小,较强的功能和低廉的价格。本文给出的频率计的设计方法,可以在保持较高精度的情况下测量高达10 MHZ高频信号。在不增加外部器件的情况下通过软件的设计达到目的要求。本设计简单,稳定性高,可以极好的满足在广播监播机中的频率和精度要求。

[1] 肖春芳, 韩绪鹏 基于单片机控制的数字频率计设计[J].电子设计工程. 2012, 20(1): 140-143.

[2] 张粮雨 基于51单片机的高频频率计设计 [J]. 电子科技.2014, 27(2): 82-84.

[3] 夏禹 基于单片机的数字频率计及信号发生器 [J]. 电子世界. 2012.

[4] 瓮巍巍, 丁天怀. 同步测频法的误差分析及其在单片机测量系统中的实现[J]. 电测与仪表2002(1): 13-16.

[5] 廖 磊, 梁文海, 蒋涛. 一种多周期同步测频的改进方法及误差分析[J]. 乐山师范学院学报 2011(12): 15-17.

[6] 应朝龙, 李 超, 刘春霞, 赵瑞青. 基于单片机的实用数字信号源与频率计设计[J]. 电子设计工程 2015(20): 141- 147.

[7] 张志成 基于 STM32 单片机的频率计的设计[J]. 电子制作. 2013(20): 1, 9.

[8] 李莉, 熊晶 基于CPLD和单片机的等精度数字频率计设计[J]. 现代电子技术. 2015. 38(10): 118-120.

[9] 胡学武 用AT89C52 实现智能型频率计[J]. 苏州大学学报(工科版), 2009. 29(4): 33-35.

[10] 凌振宝, 叶剑峰, 孙正光 多功能数字频率计的设计与研究[J]. 吉林大学学报(信息科学版), 2011(4): 376-381.

[11] 姚永平. STC15数据手册[DB/CD], 2013.

[12] 杨春兰. 基于单片机的多功能数字频率计的设计[J]. 怀化学院学报. 2016. 35(5): 64-67.

[13] 冯宴铭, 陆小龙, 赵世平. 基于C8051F020单片机的高精度测频计数和计时模块设计[J]. 电子测量技术. 2014(4):72-75.

[14] 姜志健, 庄建军等 基于FPGA的高精度频率计的设计与实现[J]. 电子测量技术. 2017. 40(5): 41-46.

[15] 王少军, 张启荣, 彭宇, 等. 一种新型的高精度数字频率计设计[J]. 仪器仪表学报. 2014. 35(6): 1206-1209.

[16] 刘传朋, 杨翡. 基于STC12C5A60S2单片机频率计的设计与实现[J]. 电子技术与软件工程. 2015(2): 260-261.

Design of High Precision Frequency Meter with STC15

QI Xuan, LI Yi-min, SHAO Yu-bin, LONG Hua, YANG Dao-fu
(College of Information Engineering and Automation , Kunming University of Science and Technology , Kunming 650504, China)

This article presents a high-precision digital frequency meter design method based on sigle chip computer STC15W4K48S4, the mater adopts the method called ‘Mutli-Period Synchronism’to realize the design,and adjust the measured data accordingly to reduce the error. As a result of the use of 32 MHz crystal,the meter can measure the frequency from 1 Hz to 10 MHz, and the error is relatively small at high frequencies. The design given in this article, not only pracyical, but also simple, and wide frequency range can be measured. It has a certain application.

Precision, MCU, Frequency meter

TP368

B

10.3969/j.issn.1003-6970.2017.12.043

本文著录格式:齐宣,邵玉斌,杨道福. 基于STC15单片机的高精度频率计设计[J]. 软件,2017,38(12):220-222

齐宣,硕士研究生,研究方向为:通信信号处理技术;邵玉斌,硕士,教授,硕士生导师,研究方向为:移动通信和个人通信系统;杨道福,硕士研究生,研究方向为通信信号处理技术。

猜你喜欢

频率计晶振计数器
采用虚拟计数器的电子式膜式燃气表
两非门晶振振荡电路的设计
基于晶振的高性能时间保持方法研究
几种导致恒温晶振频率偏移的因素分析
恒温晶振环境温度特性测试系统设计
计数器竞争冒险及其处理的仿真分析
无晶振输出频率计的自动检定装置研究
基于等精度测量原理频率计的设计与实现
任意N进制计数器的设计方法
基于51单片机的数字频率计设计