用PIC16F87X单片机实现高分辨率频率计的一种方法

发布者:huanguu最新更新时间:2007-12-06 来源: 嵌入式在线关键字:脉宽  调制  脉冲  计数 手机看文章 扫描二维码
随时随地手机看文章
1 引言

随着电子技术的迅速发展,以单片机为控制核心的控制器件,已经全面渗透到测试仪器和计量检定的各个方面。同时,频率计作为一种常用工具,在工程技术和无线电测量、计量等领域的应用十分广泛。本文介绍了一种以PIC16F87X系列单片机为控制器的高分辨率频率计的实现方法。

该方法设计的频率计主要用来测量脉冲频率。它采用LCD图形液晶显示,清晰度高,可视范围广,可外接晶体频率源,具有测量速度快、分辨率高的优点。

2 设计原理

PIC16F877A单片机内部集成有捕捉/比较/脉宽调制PWM (CCP)模块。当CCP工作在捕捉(capture)方式时,可捕捉外部输入脉冲的上升沿或下降沿,并产生相应的中断。

PIC16F877A单片机内部还集成了定时器/计数器模块,在本方案中采用其中的TMR1作为定时器,该定时器的工作原理是通过TMR1“寄存器对”TMR1H:TMR1L从0000H递增到FFFFH,之后再返回0000H时,会产生高位溢出,并且将会设置溢出中断标志位TMR1IF为I,同时引起CPU中断响应。

在均匀的脉冲序列中,脉冲频率值等于单位时间内发生的脉冲次数。根据这个原理,可以采用PIC16F87X系列单片机(本文以PIC16F877A型单片机为例)内置定时器模块TMR1计时,同时使用CCP模块的捕捉功能,每间隔n(n=1,4,16)个脉冲捕捉一次并产生中断,记录第1个和第(m-1)*n+1个脉冲到来时的定时器计时t1和tm,如图1所示。

图1脉冲捕捉示意图

用被捕捉的脉冲次数除以第1次和第(m-1)*n+1次脉冲之间间隔的时间即可得到脉冲频率值。因此,脉冲频率值计算公式为:

3 被测频率值范围

在测试过程中,需要特别注意的是,两次CCP中断的时间间隔必须大于1次中断服务的执行时间。否则,如果在中断服务程序执行时又发生CCP中断,就不能正常工作。

根据上述条件,则有:

由上式得到:

式中:

  •   SCCP — 表示捕捉分频倍数。
  •   fx — 表示被测频率t
  •   TCYC —表示系统时钟周期。
  •   N —表示中断所需最小指令周期数。

设定:SCCP=16,N=40,TCYC= 4/20MHz = 0.2 us,则: fx<2,000,000Hz

由此可知,实际频率测量范围在0-2 MHz之间。

若需测量更大频率,可以根据需要在待测频率和CPU的CCP口之间接入相应倍数的分频器,每接入一个1/n倍分频器,可测频率范围可扩大n倍(如图2所示)。如在待测频率和CCP口之间接入三个1/10倍分频器,则可测频率范围为0~2 GHz。

图2 CPU外接示意图

4 程序设计

4.1中断程序

中断程序流程图如图3所示。

图3中断子程序流程图

中断服务子程序如下:

void interrupt TMR I_CCP2_ini(void)
{
if(TMR1IF==I) //判断是否定时器中断
{
TMRIIF=0; //TMR1中断标志位清0
TMR1ON=0; //关闭TMR1
TMR1L=0x00; //设置TMR1数据寄存器初始值 0x0bdc
TMR1H=0x00;
TMR1ON=1;? //开启TMR1
time_count++; //定时计数器减1
}
if(CCP2IF==1) //判断是否CCP2中断
{
if(ccp_count==0)
{
TMR1IE=1; //允许TMR1中断
TMR1IF=0; //TMR1中断标志位清0
T1CON=0x30; //设置1:8分频,关闭TMR1
TMR1L=0x00; //TMR1数据寄存器清零
TMR1H=0x00;
TMR1ON=1; //开启TMR1中断
}
CCP2IF=0; //CCP2中断标志位清0
ccp_count++; //脉冲计数器加1
}
}

4.2测试过程程序

程序流程图如图4所示。

图4 主程序流程图

测试过程程序如下:

unsigned long measure_course(unsigned char
catch_mode)
{
time_count=0; //定时计数器清零
ccp_count=O //脉冲计数器清零
GIE=1; //允许全局中断
PEIE=1; //允许外围中断
TRISC1=0; //CCP2(RC1)输入
CCP2IE=1; //允许CCP2中断
CCP2IF=0; //CCP2中断标志位清0
CCP2CON=catch_mode; //设置捕捉脉冲模式
e(); //中断开始
while(1) //等待定时中断,时间到则退出
if(ccp_count==2)
break;
di(); //中断结束

TMR1ON=0; //关闭TMR1
CCP2CON=0x00; //关闭CCP2
CCP2IE=0; //关闭CCP2中断
CCP2IF=0; //CCP2中断标志位清0
TRISC1=0; //CCP2(RC1)输出
TMR1IE=0; //关闭TMR1中断
TMR1IF=O; //TMR1中断标志位清0
PEIE=0; //关闭外围中断
GIE=0; //关闭全局中断
……
}

5 性能评价

传统的频率测量方法有两种:一是测周期求频率,这样对被测频率信号的信噪比要求高,否则就会产生较大的误差;另一种是计算单位时间内所产生脉冲数量,虽然这种方法对信噪比要求不高,但是显示分辨率受到限制,并且会产生±1的误差。

本方案摒弃了传统的测量方法,采用测量脉冲个数及计算被测脉冲所经历时间的方法,完全避免了传统方法的弊端。

在本方案中,CPU接外频标(如图2所示),测量误差仅为时基误差,而较好的外频标的误差一般小于±10-9,因而测量结果的有效数字最少可达8位以上,使得低频测量与高频测量的有效位数一致。

6 结语

经过测试试验,使用该方法研制的频率计具有测量准确度高、使用方便、稳定可靠的优点,可应用于计量测试领域。同时由于使用软件控制,电路结构简单,使用硬件少,使得成本低廉且携带方便,因此也可广泛应用于工农业生产和居民生活中,具有推广价值。

关键字:脉宽  调制  脉冲  计数 引用地址:用PIC16F87X单片机实现高分辨率频率计的一种方法

上一篇:用PIC16F87X单片机实现高分辨率频率计的一种方法
下一篇:Microchip低档单片机新增闪存数据存储

推荐阅读最新更新时间:2024-12-17 15:08

基于定时器/计数器的实时时钟的设计
  1.实现实时时钟的基本思想      时钟的最小计时单位是秒,如何获得1s的定时时间呢?使用定时器方式1,最大的定时时间也只能达到131 ms。可将定时器的定时时间定为100 ms,采用中断方式进行溢出次数的累计,计满10次,即得到秒计时。而计数10次可用循环程序的方法实现。      时钟运行时,在片内RAM中规定3个单元作为秒、分、时单元,具体安排如下;      42H:“秒”单元;41H“分”单元;40H:“时”单元      从秒到分,从分到时是通过软件累加并进行比较来实现的。要求每满1秒,则“秒”单元42H中的内容加1;“秒”单元满60,则“分”单元41H中的内容加1;“分”单元满60,则“时”单元40H中的内容加
[单片机]
基于定时器/<font color='red'>计数</font>器的实时时钟的设计
stm32f103呼吸灯(PWM脉冲宽度调制
一、PWM脉冲宽度调制 1、使用脉冲占空比拟合不同波形的方式称为 PWM(脉冲宽度调制)控制技术——通过 对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。PWM 控制 的基本原理为:冲量相等而开头不同的窄脉冲加在具有惯性的环节上时,其效果基本 相同。其中冲量指窄脉冲的面积;效果相同指环节输出响应波形基本相同。 例如:可以用一系列等幅不用一系列等幅不等宽的脉冲来代替一个正弦半波,见图 要改变等效输出正弦波幅值,按同一比例改变各脉冲宽度即可。 若把拟合的波形改成呼吸特性曲线,即可得到控制呼吸灯使用的 PWM 波形,要生成 拟合的 PWM波形,通常使用计算法和调制法,本文中使用计算法:根据拟合波形的频率、幅值和半
[单片机]
stm32f103呼吸灯(PWM<font color='red'>脉冲</font>宽度<font color='red'>调制</font>)
四通道温度-脉宽转换器MAX6691
摘要:介绍了美国Maxim公司生产的四通道热敏电阻温度-脉宽转换器MAX6691的特点、工作原理及其典型应用方法,给出了MAX6691和8031单片机的接口连接电路以及相应的温度数据采集程序流程。 关键词:温度传感器;温度检测;MAX6691 1 引言 MAX6691是美国Maxim公司推出的一款新型单线 (1-Wire)接口四通道热敏电阻温度-脉宽转换器,可用于测量四个外接热敏电阻的温度,并将所测温度值转换成一个PWM输出的矩形脉冲序列。每个脉冲的宽度与对应热敏电阻的温度相关。由于该器件采用1-Wire接口,它可以在只占用微处理器一个I/O端口的条件下测量四个被测量点的温度,因而非常适用于I/O端口资源比较紧张的多点
[测试测量]
全桥型IGBT脉冲激光电源原理与性能分析
1引言   近年来,高功率Nd:YAG固体激光器已广泛用于工业加工领域和医疗仪器领域,如材料加工、激光测距、激光打标、激光医疗、激光核聚变等。与气体激光器或其他激光器(如化学激光器,自由电子激光器等)相比,固体激光器具有结构紧凑、牢固耐用等优点,其运行方式多样,可在脉冲、连续、调Q及锁模下运行。    2原理框图   本文介绍的激光电源为工作于重复脉冲方式的固体激光器提供电能。该激光器采用氙灯作泵浦光源,在惰性气体灯中,氙气的总转换效率最高。激光器用于激光打标,工作频率每秒60次。电源系统采用IGBT管全桥逆变方式,工作频率为20kHz,控制电路采用PWM方式。 图1原理框图   图1示出电源原理框图,整个
[电源管理]
全桥型IGBT<font color='red'>脉冲</font>激光电源原理与性能分析
51单片机计数中断程序举例 外部按钮产生中断
本程序的功能很简单,按一次按钮1(接在12管脚上的)就引发一次 中断 0,取反一次P1。0,因此理论上按一下灯亮,按一下灯灭,但在实际做实验时,可能会发觉有时不“灵”,按了它没反应,但在大部份时候是对的,这是怎么回事呢?答案请在本站键盘应用中找,这个程序本身是没有问题的。 程序:外部中断实验 ORG 0000H AJMP START ORG 0003H ;外部中断地直入口 AJMP INT0 ORG 30H START: MOV SP,#5FH MOV P1,#0FFH ;灯全灭 MOV P3,#0FFH ;P3口置高电平 SETB EA SETB EX0 AJMP $ INT0: PUSH ACC P
[单片机]
弥合高速数据转换器连续波和调制信号测量之间的差异
        我们一般使用连续波 (CW) 信号来描述高速模数转换器 (ADC) 和数模转换器 (DAC)。这样做的原因是:1)就 ADC 而言,CW 信号更易于通过 CW 生成器和窄带通滤波器无噪生成;2)就 DAC 而言,CW 信号更容易分析;3)它们具有许多标准参考测试,可在各种器件之间清楚地比较。然而,大多数现实系统都将高速数据转换器用于采样调制波形。弥合基于 CW 测量的各种规范和调制信号的系统要求之间存在的差异具有一定的挑战。   CW 信号和调制信号之间存在两种差异,会影响高速数据转换器的行为。首先,CW 信号没有带宽——能量被限定在某个单一频率;而调制信号有带宽,能量分布于某个频率范围。其中的一个结果便是 C
[电源管理]
弥合高速数据转换器连续波和<font color='red'>调制</font>信号测量之间的差异
专利显示苹果汽车可以使用红外光脉冲来探测其他车辆
苹果汽车深度感应能力可能不仅仅局限于激光雷达,苹果公司表示,使用红外相机和光脉冲的版本也可以用来检测道路障碍物。在创建自动驾驶汽车的诸多挑战中,最大的挑战可以说是让汽车的自动驾驶系统真正从道路本身获取数据。目前有无数的传感器和系统可供使用,不过在精度、成本和物理要求方面有相当大的差异。 例如,LiDAR是一种对深度传感很有用的技术,但由于涉及到的部件,它的使用成本还是比较高的。通过在不同的系统中利用更便宜的部件,苹果可以可行地接近激光雷达的精度,而不需要那么多的费用。美国专利和商标局周二授予苹果的一项名为 用于探测和测距物体的遥感 的专利,其中,苹果提出了这样一个系统,有效地由一个可控光源、定时电路和一个用于确定范围的电路或处
[汽车电子]
专利显示苹果汽车可以使用红外光<font color='red'>脉冲</font>来探测其他车辆
PIC单片机入门_定时器/计数器TMR0详解与实例
1.前言: PIC 系列单片机内部配备有数量不等的定时器/计数器模块:例如PIC17CX系列和PIC18CX系列都都配置了4个定时器/计数器模块;而PIC16F87X系列都配置了3个定时器/计数器模块,分别记为TMR0、TMR1和TMR2。 TMR0、TMR1和TMR2在电路上均不相同,而且用途也各有所异,但是三者也存在许多共同之处。这里主要介绍的是TMR0,TMRl和TMR2将在后面介绍。 其实定时器都是一个由时钟信号触发的递增的计数器;都是从预先设定的初始值开始累计,在累计数超过最大值,或者超过预先设定的值时便产生溢出,并同时会建立一个相应的溢出标志(即中断标志位)。 2.TMR0的特性 ①核心部分是一个8位宽
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved