基于8051单片机的频率测量技术

发布者:科技独行者最新更新时间:2011-07-29 关键字:8051单片机  频率测量技术 手机看文章 扫描二维码
随时随地手机看文章
0引言

随着无线电技术的发展与普及,"频率"已经成为广大群众所熟悉的物理量。而单片机的出现,更是对包括测频在内的各种测量技术带来了许多重大的飞跃,然而,小体积、价廉、功能强等优势也在电子领域占有非常重要的地位。为此.本文给出了一种以单片机为核心的频率测量系统的设计方法。

1 测频系统的硬件结构

测量频率的方法一般分为无源测频法、有源测频法及电子计数法三种。无源测频法(又可分为谐振法和电桥法),常用于频率粗测,精度在1%左右。有源比较法可分为拍频法和差频法,前者是利用两个信号线性叠加以产生拍频现象,再通过检测零拍现象进行测频,常用于低频测量,误差在零点几Hz;后者则利用两个非线性信号叠加来产生差频现象,然后通过检测零差现象进行测频,常用于高频测量,误差在±20 Hz左右。以上方法在测量范围和精度上都有一定的不足,而电子计数法主要通过单片机进行控制。由于单片机的较强控制与运算功能,电子计数法的测量频率范围宽,精度高,易于实现。本设计就是采用单片机电子计数法来测量频率,其系统硬件原理框图如图1所示。

为了提高测量的精度,拓展单片机的测频范围,本设计采取了对信号进行分频的方法。设计中采用两片同步十进制加法计数器74LS160来组成一个100分频器。该100分频器由两个同步十进制加法计数器74LS160和一个与非门74LS00共同设计而成。由于一个74LS160可以分频十的一次方,而当第一片74LS160工作时,如果有进位,输出端TC便有进位信号送进第二片的CEP端,同时CET也为高电平,这样两个工作状态控制端CET、CEP将同时为高电平,此时第二片74LS160将开始工作。

2 频率测量模块的电路设计

用单片机电子计数法测量频率有测频率法和测周期法两种方法。测量频率主要是在单位定时时间里对被测信号脉冲进行计数;测量周期则是在被测信号一个周期时间里对某一基准时钟脉冲进行计数。

2.1 8051测频法的误差分析

电子计数器测频法主要是将被测频率信号加到计数器的计数输入端,然后让计数器在标准时间Ts1内进行计数,所得的计数值N1。与被测信号的频率fx1的关系如下:



而电子计数器测周法则是将标准频率信号fs2送到计数器的计数输入端,而让被测频率信号fx2控制计数器的计数时间,所得的计数值N2与fx2的关系如下:



事实上,无论用哪种方法进行频率测量,其主要误差源都是由于计数器只能进行整数计数而引起的±1误差:



可见,在同样的Ts下,测频法fx1的低频端,误差远大于高频端,而测周法在fx2的高频端,其误差远大于低频端。理论研究表明,如进行n次重复测量然后取平均,则±1误差会减小n倍。如给定±1误差ε0,则要求ε≤ε0ο对测频法要fx1≥ 对测周法则要求fx2≤ε0fs2ο因此,对一给定频率信号fs进行测量时,用测频法fs1越低越好,用测周法则fs2越高越好。

2.2 8051单片机的测频范围和测频时间

8051单片机的定时器/计数器接口,在特定晶振频率fc=12 MHz时,可输人信号的频率上限是fx≤fc/24=500 kHz。如用测频法,则频率的上限取决于8051,故测频法的测量范围是:

即:fx1≤500 kHz。
用测频法测频时,定时器/计数器的计数时间间隔可由8051的另外一个定时器/计数器完成,外接100分频器的情况下,fx1的频率范围可扩展到50MHz
用测周法设计时,其频率的下限取决8051计数器的极限。考虑到8051内部为16位,加上TF标志位,计数范围为217,因此其最大计数时间为秒。而如果采用半周期测量,则测频范围是:



在测周法中,标准频率信号fs2由8051的内部定时结构产生,f s2恒为fc/12,因此,在给定ε0为0.0 1时,fx2既有一定的上限频率,也有一定的下限频率。即:



并由此可见得出:4Hz≤fx1≤10 kHz理论上可以达到无穷大,即fs1可以达到无穷低,因此,fx1可达到无穷小,因此,可以认为测频法的测频范围只有上限频率,没有下限频率。而再 这样,两个频率范围相叠加即可得到该频率计的测频范围:4 Hz≤fx1≤50 MHz。精度可以达到1Hz。从以上分析可以看出,测频法测量的频率覆盖范围较宽,且在高频端的测量精度较高,而在低频段的测量精度较低,同时测量时间较长。测周法测量的频率覆盖范围较窄,在高频段的测量精度较低,在低频段的测量精度较高,测量时间短。因此,测频法适于高频信号的测量,测周法适于较低频信号测量。

8051可用软件来控制定时器/计数器的工作方式,以实现测频法与测周法的动态切换。对宽频带、高速度的频率测量,可采用软件切换测量方法来提高测量精度与测量速度。其测频电路如图2所示。

3 软件设计

由图2所示的测频电路可知,波形经过施密特触发器74LS132后,再经整形放大后即可变成方波,然后利用8051的定时器/计数器T0给定定时时间为10 ms,再利用8051的定时器/计数器T1作计数器,累计10 ms时间里所经过施密特触发器74LS132的方波信号。当T0定时满10 ms时,T0向CPU发出中断信号以申请中断,并进行频率测量。假设所设定的中介频率为l00/10 ms=l00×100=10000 Hz=10 kHz,冈为fx=N/T,所以,可以将假定给定数值100与Tl进行比较,再将Tl计数器里所计的数值与给定的数值进行比较。由于在用测频法测量频率时,较小频率的误差较大(±l误差)。所以,这里用l0 kHz作为中间频率,其±1误差为9.9 kHz和1 0.1 kHz,误差率为1%,可见该误差不是很大,还可以接受。

事实上,当频率比较小于1 0kHz时,若程序选择用测量周期法。则测周法流程图及其程序如如图3所示。

4 结束语

通过本文所介绍的设计过程即可实现频率测量要求,并能够很好的完成测量结果的存储,完全能够达到预期的效果。

关键字:8051单片机  频率测量技术 引用地址:基于8051单片机的频率测量技术

上一篇:MCS-51单片机串行口IP核的实现
下一篇:基于AT89S51单片机的监控与管理系统的设计

推荐阅读最新更新时间:2024-03-16 12:38

ADS7843/XPT2046触摸屏芯片8051单片机驱动程序
我的彩屏的大小是240*320~ 以下是代码 //common.h #ifndef __COMMON_H__ #define __COMMON_H__ #include reg52.h #include intrins.h typedef unsigned int uint; typedef unsigned char uchar; #endif// !__COMMON_H__ //TouchPad.c #define __TOUCHPAD_C__ #include TouchPad.h //我的屏幕接口 //#include gdi.h sbit TP_CLK = P1^4; //时钟 sbit TP
[单片机]
8051单片机实战分析(以STC89C52RC为例) | 03 - LED流水灯
1 原理图 从图中不难看出,整个P2端口都接有LED,写代码时需要驱动整个P2端口。 2 代码 #include reg52.h //此文件中定义了单片机的一些特殊功能寄存器 #include intrins.h //因为要用到左右移函数,所以加入这个头文件 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; #define led P2 //将P2口定义为led 后面就可以使用led代替P2口 /**********************************************************
[单片机]
<font color='red'>8051单片机</font>实战分析(以STC89C52RC为例) | 03 - LED流水灯
8051单片机指令和寻址方式
80C51指令系统专用于80C51系列单片机,具有255种操作码(00H-FFH)除去A5H。 1. 寻址方式 寻址方式就是指指令中给出寻找操作数或操作数所在地址的方法,执行任何指令都需要操作数。 1)立即寻址 MOV DPTR,#1234H; 立即寻址是指在指令中直接给出操作数,出现在指令中的操作数称为立即数,因此被称为立即寻址。 2)直接寻址 MOV A,3AH; 直接寻址是指在指令中直接给出操作数单元地址。功能是将片内RAM的3AH单元内的数据传送内累加器A。 直接寻址方式只能给出8位地址,因此这种寻址方式的寻址范围只限于片内RAM。具体:a.低128单元,在指令中直接以单元地址的形式给出;b.特殊功能寄存器,即可以以单元地
[单片机]
浅谈8051单片机进行外部数据交换的3种方式
单片机CPU与外部设备交换信息通常有如下几种方式:无条件传送方式,查询传送方式和中断传送方式。我们以单片机与微型打印机接口为例讲述这三种方式。假定用户要打印三个数据,这三个数据保存在单片机的内部数据存储器10H,11H,和12H中,8051用并口P2与微型打印机的并行数据口DB进行数据交换。 (1)无条件传送方式 这种数据传送方式中没有联络信号,即CPU总是认为打印机在如何时候都是处于“准备好”的状态。这种传送方式中只需要在程序中加入数据送往P2的指令,数据传送便可以实现。但这种数据传送方式有一个致命弱点,数据易丢失,这是因为CPU的速度相当快,而打印机的速度相对来说较慢,其结果是在打印机打印一个数据的时间内,CPU已送来了
[单片机]
8051单片机波特率计算公式(配套C语言例程)
8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod /32)×(定时器T1溢出率),其中smod是PCON 7 ,表示是否波特率加倍,Fsoc是系统的晶振大小。 波特率公式中:T1溢出率=溢出周期的倒数;溢出周期=(256-TH1)×12/Fosc; 最终公式: 波特率:Baud=(2smod × Fsoc)/(32 ×12×(256-TH1)) 我们一般不太关注波特率的计算,而是关心选用的传输速度(波特率)去反算定时器1(自动重装模式)的初值(TH1),所以将上面的公式导一下,得到TH1的公式: TH1=256-(Fsoc×2smod)/(12×32×Baud) 下面针对
[单片机]
采用C8051单片机的金卤灯控制器的设计
1 概论 目前,大部分照明设备仍以传统能源来照明,充分利用太阳能作为照明设备的能源供给,在节约能源、保护环境等方面具有重要意义。 2 控制器整体结构   太阳能光伏板接入光伏信号处理电路,光伏电压经PWM充电控制电路送到12 V蓄电池内。正常工作时,12 V蓄电池输出电压经高频平面变压器次级感应升压、整流后到全桥电路。同时12 V输出电压与电压变换电路相连接,向控制器其他电路供电。 2.1 太阳能充电系统   光伏信号处理电路包括防信号反接电路、光伏电压取样电路和雷击保护电路。其中,防信号反接电路可以阻止光伏信号反接输入对控制器电路造成损坏。电压取样电路提供给C8051F920采样后的光伏电
[单片机]
采用C<font color='red'>8051单片机</font>的金卤灯控制器的设计
8051单片机教程第四课:第一个小程序
上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯不断地闪烁,这就有一定的实用价值了,比如可以把它当成汽车上的一个信号灯用了。怎样才能让灯不断地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要P10不断地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行: SETBP10 CLRP10…… 这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完SETBP10后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了CLRP10指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完CLRP10后,不会再去执行SETBP10指令,所以以后再也没有机会让灭了。 为了解决这两
[单片机]
8051单片机教程第二十二课:串行口应用编程实例
1.串口方式0应用编程8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就可以扩展一个并行口。 例:用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,可以靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通讯之前,都要先对控制寄存
[单片机]
<font color='red'>8051单片机</font>教程第二十二课:串行口应用编程实例
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved