用PIC16F87X单片机实现高分辨率频率计的一种方法_第1页
用PIC16F87X单片机实现高分辨率频率计的一种方法_第2页
用PIC16F87X单片机实现高分辨率频率计的一种方法_第3页
用PIC16F87X单片机实现高分辨率频率计的一种方法_第4页
用PIC16F87X单片机实现高分辨率频率计的一种方法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用PIC16F87X单片机实现高分辨率频率计的一种方法大小:大小:小中大作者:李涛张华锋来源:日期:2007-09-24 点击:177Q戏摘要介绍了高分辨率频率计的一种实现方法。该方法是基于PICC高级语言开发平台采用PIC16F87X单片机,该方案具有原理简单.性能可靠、分辨率高特点,使用该方法测量低频频率时最少可以得到8位有效数字。1引言随着电子技术的迅速发展,以单片机为控制核心的控制器件,已经全面渗透到测试仪器和计量检定的各个方面。同时,频率计作为一种常用工具,在工程技 术和无线电测量、计量等领域的应用十分广泛。本文介绍了一种以PIC16F87X系列单片机为控制器的高分辨率频率计的实现方

2、法。该方法设计的频率计主要用来测量脉冲频率。它采用LCD图形液晶显示,清晰度高,可视范围广,可外接晶体频率源,具有测量速度快、分辨率高的优点。2设计原理PIC16F877A单片机内部集成有捕捉/比较/脉宽调制PWM (CCP)模块。当CCP工作在捕捉(capture)方式时,可捕捉外部输入脉冲的上升沿或下降沿,并产生相应的中断。PIC16F877A单片机内部还集成了定时器/计数器模块,在本方案中采用其中的TMR1作为定时器,该定时器的工作原理是通过TMR1“寄存器对”TMR1H:TMR1L从0000H递增到FFFFH,之后再返回0000H时,会产生高位溢出,并且将会设置溢出中断标志位TMR1I

3、F为I,同时引起CPU中断响应。在均匀的脉冲序列中,脉冲频率值等于单位时间内发生的脉冲次数。根据这个原理,可以采用PIC16F87X系列单片机(本文以PIC16F877A型单片机为例) 内置定时器模块TMR1计时,同时使用CCP模块的捕捉功能,每间隔n(n=1,4,16)个脉冲捕捉一次并产生中断,记录第1个和第(m-1)*n+1个脉冲到来时的定时器计时t1和tm,如图1所示。_n_tl_n_tl图i脉冲捕捉示意图用被捕捉的脉冲次数除以第1次和第(m-1)*n+1次脉冲之间间隔的时间即可得到脉冲频率值。因此,脉冲频率值计算公式为:f ST3被测频率值范围在测试过程中,需要特别注意的是,两次CCP

4、中断的时间间隔必须大于1次中断服务的执行时间。否则,如果在中断服务程序执行时又发生CCP中断,就不能正常工作。根据上述条件,则有:做硕由上式得到: 式中:SCCP 表示捕捉分频倍数。fx 表示被测频率tTCYC 表示系统时钟周期。N表示中断所需最小指令周期数。设定:SCCP=16N=40TCYC= 4/20MHz = 0.2 us则:fx2,000,000Hz由此可知,实际频率测量范围在0-2 MHz之间。若需测量更大频率,可以根据需要在待测频率和CPU的CCP 口之间接入相应倍数的分频器,每接入一个1/n倍分频器,可测频率范围可扩大n倍(如图2 所示)。如在待测频率和CCP 口之间接入三个1

5、/10倍分频器,则可测频率范围为02 GHz。| i 1 缎 4CC理OSCE图2 CPU外接示意图4程序设计4. 1中断程序中断程序流程图如图3所示。图3中断子程序流程图中断服务子程序如下:void interrupt TMR I_CCP2_ini(void)if(TMR1IF=I) /判断是否定时器中断TMRIIF=0; /TMR1中断标志位清0TMR1ON=0; /关闭 TMR1TMR1L=0 x00; /设置TMR1数据寄存器初始值0 x0bdcTMR1H=0 x00;TMR1ON=1; 开启 TMR1,_是否5if(ccp_count=0)TMR1IE=1; /允许 TMR1 中断T

6、MR1IF=0; /TMR1中断标志位清0T1CON=0 x30; 设置 1:8 分频,关闭 TMR1TMR1L=0 x00; /TMR1数据寄存器清零TMR1H=0 x00;TMR1ON=1; /开启 TMR1 中断CCP2IF=0; /CCP2中断标志位清0ccp_count+; 脉冲计数器加14.2测试过程程序程序流程图如图4所示。F. 羸貌蠢始化定时畀中断时数更景 time-Hjunt*=()+脉冲皑程中断什敬庾量明 f剧UI1L司。企忤CC瞠中断1L中葡株态僚拂*妹蕙2、说JtWc棒捕捉粮式 焉每2剥*神搦提妹蕙图4主程序流程图测试过程程序如下:unsigned long measu

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

8、CCP2IE=0; /关闭 CCP2 中断CCP2IF=0; /CCP2中断标志位清0TRISC1=0; /CCP2(RC1)输出TMR1IE=0; /关闭 TMR1 中断TMR1IF=O; /TMR1中断标志位清0PEIE=0; /关闭外围中断GIE=0; /关闭全局中断5性能评价传统的频率测量方法有两种:一是测周期求频率,这样对被测频率信号的信噪比要求高,否则就会产生较大的误差;另一种是计算单位时间内所产生脉冲数 量,虽然这种方法对信噪比要求不高,但是显示分辨率受到限制,并且会产生1的误差。本方案摒弃了传统的测量方法,采用测量脉冲个数及计算被测脉冲所经历时间的方法,完全避免了传统方法的弊端。在本方案中,CPU接外频标(如图2所示),测量误差仅为时基误差,而较好的外频标的误差一般小于10-9,因而测量结果的有效数字最少可达8位以上, 使得低频测量与高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论