嵌入式频率计的设计

发布者:bln898最新更新时间:2006-10-26 来源: 单片机与嵌入式系统ic网关键字:AT89C51  定时  编程 手机看文章 扫描二维码
随时随地手机看文章
1  
  
  本频率计的设计以AT89C51单片机为核心,利用他内部的定时/计数器完成待测信号周期/频率的测量。单片机AT89C51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 MHz时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12 MHz时钟时,最大计数速率为500 kHz)。定时/计数器的工作由运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。
  
  本设计综合考虑了频率测量精度和测量反应时间的要求。例如当要求频率测量结果为3位有效数字,这时如果待测信号的频率为1 Hz,则计数闸门宽度必须大于1 000 s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法:
  
  (1)当待测信号的频率>100 Hz时,定时/计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,计数闸门宽度>1 s时,即可满足频率测量结果为3位有效数字;
  (2)当待测信号的频率<100 Hz时,定时/计数器构成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号的周期。这时用方波作计数闸门,当待测信号的频率=100 Hz,使用12 MHz时钟时的最小计数值为10 000,完全满足测量精度的要求。

2
 频率计的量程自动切换

  
  使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器的计数源,利用软件延时程序实现计数闸门。频率计的工作过程为:定时/计数器的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;运行软件延时程序,同时定时/计数器对外部的待测信号进行计数,延时结束时TR清0,停止计数。从计数寄存器读出测量数据,测量数据在完成数据处理后,由显示电路显示测量结果。
  
  使用定时方法实现频率测量时,外部的待测信号通过频率计的预处理电路变成宽度等于待测信号周期的方波,该方波同样加至定时/计数器的输入脚。工作高电平是否加至定时/计数器的输入脚;当判定高电平加至定时/计数器的输入脚,运行控制位TR置1,启动定时/计数器对单片机的机器周期的计数,同时检测方波高电平是否结束;当判定高电平结束时TR清0,停止计数,然后从计数寄存器读出测量数据。这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。
  
  测量结果的显示格式采用科学计数法,即有效数字乘以10为底的幂。这里设计的频率计用5位数码管显示测量结果:前3位为测量结果的有效数字;第4位为指数的符号;第5位为指数的值。采用这种显示格式既保证了测量结果的显示精度,又保证了测量结果的显示范围(0.100 Hz~9.99 MHz)。
  
  频率计测量量程自动转换的过程由频率计测量量程的高端开始。由于只显示3位有效数字,测量量程的高端计数闸门不需要太宽,例如在进入计数器的信号频率范围在10.0~99.9 kHz,计数闸门宽度为10 ms即可。频率计开始工作时使用计数方法实现频率测量,并使计数闸门宽度为最窄,完成测量后判断测量结果是否具有3位有效数字,如果成立,将结果送去显示,完成测量工作;否则将计数闸门宽度扩大10倍,继续进行测量判断,直到计数闸门宽度达到1 s,这时对应的进入单片机的待测信号频率范围为100~999 Hz。如果测量结果仍不具有3位有效数字,频率计则使用定时方法实现频率测量。
  
  定时方法测量的是待测信号的周期,这种方法只设一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将结果送去显示。无论采用何种方式,只要完成一次测量,频率计自动开始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转换。

3
 信号预处理电路

  
  信号预处理电路如图1所示,他由4级电路构成。第1级为零偏置放大器,当输入信号为零或者为负电压时,三极管截止,输出高电平;当输入信号为正电压时,三极管导通,输出电压随着输入电压的上升而下降。零偏置放大器可把正负交替波形变换成单向脉冲,这使得频率计既可以测量脉冲信号的频率,也可以测量正弦波信号的频率。放大器的放大能力实现了对小信号的测量,本电路可以测量幅度≥0.5 V的正弦波或脉冲波待测信号。三极管应采用开关三极管以保证放大器具有良好的高频响应。第2级采用带施密特触发器的反相器7414,他用于把放大器生成的单向脉冲变换成与TTL/CMOS电平相兼容的方波。第3级采用十进制同步计数器74160,第2级输出的方波加到74160的CLK,当从74160的TC输出可实现10分频(多个74160的级连可以进一步扩展测频范围)。第4级同样采用十进制同步计数器74160,第3级输出的方波加到他的CLK,当从他的Q0输出既可实现2分频,且其输出为对称方波,方波宽度等于待测信号的周期,从而为测量信号周期提供基础。

4 系统软件设计
  
  频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。测量初始化模块设置堆栈指针(SP)、工作寄存器、中断控制和定时/计数器的工作方式。定时/计数器的工作首先被设置为计数器方式,即用来测量信号频率。首先定时/计数器的计数寄存器清0,运行控制位TR置1,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时TR清0,停止计数。计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。
  
  当上述测量判断过程直到计数闸门宽度达到1 s(对应的频率测量范围为100~999 Hz)时测量结果仍不具有3位有效数字,频率计则使用定时方法测量待测信号的周期。定时/计数器的工作被设置为定时器方式,定时/计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位TR置为1,以单片机工作周期为单位进行计数,直至信号的下跳沿到来,运行控制位TR清0,停止计数。16位定时/计数器的最高计数值为65 535,当待测信号的频率较低时,定时/计数器将发生溢出。产生溢出时,程序进入定时器中断服务程序,对溢出次数进行计数。待测信号的周期由3个字节组成:定时/计数器溢出次数、定时/计数器的高8位和低8位。信号的频率f与信号的周期T之间的关系为: f=1/T
  
  完成信号的周期测量后,需要做一次倒数运算才能获得信号的频率。为提高运算精度,采用浮点数算术运算。浮点数由3个字节组成:第1字节最高位为数符,其余7位为阶码;第2字节为尾数的高字节;第3字节为尾数的低字节。待测信号周期的3个字节定点数通过截取高16位、设置数符和计算阶码转换为上述格式的浮点数。然后浮点数算术运算对其进行处理,获得用浮点数格式表达的信号频率值。再通过浮点数到BCD码转换模块把用浮点数格式表达的信号频率值变换成本频率计的显示格式,送到显示模块显示待测信号的频率值。完成显示后,频率计都开始下一次信号的频率测量。系统软件流程图如图2所示。

  系统软件设计采用模块化设计方法。整个系统由初始化模块、显示模块和信号频率频率测量模块等各种功能模块组成。上电后,进入系统初始化模块,系统软件开始运行。在执行过程中,根据运行流程分别调用各个功能模块完成频率测量、量程自动切换、周期测量和测量结果显示。

5
 实测结果和误差分析

  
  为了衡量这次设计的频率计的工作情况和测量精度,我们对系统进行了试验。以南京电讯仪器厂制造的E312B型通用计数器为基准,用这次设计的频率计对信号源进行了测量,测量数据如表1所示。
  
  如图1信号预处理电路所示,待测信号在进入单片机之前经过了10×2次分频。频率计以进入单片机时的信号频率=100 Hz为基准(即待测信号频率为2 kHz),大于此频率采用频率测量,小于此频率采用周期测量。由表1频率测量对比表可以看出,频率测量的测量精度大于周期测量的测量精度。


  采用计数法实现频率测量,误差来源主要有计数误差和闸门误差2部分。误差表达式为:


其中:N为计数值,t为闸门时间。

  闸门时间相对误差dt/t主要取决于单片机晶振的频率稳定度,选择合适的石英晶体和振荡电路,误差一般可<10-6。当仅显示3位有效数字时,该项误差可以忽略。对于dN/N部分,无论闸门时间长短,计数法测频总存在1个单位的量化误差。在表1中,待测信号频率>2 kHz时的误差就来源于计数误差。增加显示的有效数字位数可降低该项误差的影响。
  
  当待测信号频率<2 kHz时,直接测量的是信号的周期。周期测量的误差表达式为:

其中:dN/N为量化误差,dτ0/τ0为单片机晶振的频率稳定度。
  
  进行周期测量时进入单片机的信号频率<100 Hz,使用12 MHz时钟时的最小计数值为10 000。当仅显示3位有效数字时,该项误差现在也可以忽略。待测信号的周期测量值通过浮点数运算变换成频率值,这时的误差来源于浮点数运算和数制转换所带来的误差。

6
  

  
  介绍了一种基于单片机89C51制作的频率计的设计方法,所制作的频率计需要外围器件较少,适宜用于嵌入式系统。该频率计应用周期测量和相应的数学处理实现低频段的频率测量,因此很容易扩展实现信号的周期测量和占空比测量。该频率计被应用于笔者设计的“高频实验装置”之中,用来对LC振荡器和RC振荡器输出信号的频率稳定度进行测量,取得良好的应用效果。

参考文献


[1] 周航慈.单片机应用程序设计技术[M].北京:北京航空航天大学出版社,1991.
[2] 李华,等.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993.
关键字:AT89C51  定时  编程 引用地址:嵌入式频率计的设计

上一篇:基于DS1620和AT89C2051的数字温度计
下一篇:基于DSP的1553B总线通讯检测仪的设计

推荐阅读最新更新时间:2024-03-30 22:04

51单片机,C语言编程,控制指示灯闪烁的频率
c51单片机,c语言编程,关于指示灯定时闪烁的。 P1.0 P1.1 P1.2 P1.3上面各接有一个指示灯,P2.0接一个外接按键。 要求: 按一下按键P1.0以1Hz的频率闪烁 半周期为500ms 第二次按下按键P1.1以2Hz的频率闪烁 半周期为250ms 第三次按下按键P1.2以3Hz的频率闪烁 半周期为165ms 第四次按下按键P1.3以4Hz的频率闪烁 半周期为125ms 第五次按下按键P1.0以1Hz的频率闪烁 半周期为500ms 如此循环。 单片机外接6MHz晶振,如何写这个程序? 悬赏分:30 本程序有实用价值,在不同的工作状态,以不同的速度闪烁,可表现出不同的紧急程度。 系统的晶振是6MHz,则机器周
[单片机]
51单片机,C语言<font color='red'>编程</font>,控制指示灯闪烁的频率
STM32的通用定时器TIMx系统了解
通用定时器(TIMx) 一、TIMx简介 二、TIMx主要功能 三、TIMx功能描述 3.1 时基单元 3.2 计数器模式 3.3 时钟选择 3.4 捕获/比较通道 3.5 输入捕获模式 3.6 PWM输入模式 3.7 强置输出模式 3.8 输出比较模式 3.9 PWM 模式 3.10 单脉冲模式 四、简单例子理解TIMx 4.1 使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁 4.2 周期控制通用定时器3的2通道,实现1KHz的不同占空比波形,控制LED实现呼吸灯 本文涉及链接 一、TIMx简介   通用定时器是一个通过可编程预分频器驱动的16位自动装载
[单片机]
STM32的通用<font color='red'>定时</font>器TIMx系统了解
STM32学习之通用定时器中断
STM32定时器学习 高级寄存器TIM1和TIM8 通用寄存器TIM2,TIM3,TIM4,TIM5 基本寄存器TIM6,TIM7 通用寄存器是由 时钟、时基单元、输入、输出组成。 计数器时钟可以由下列时钟源提供: 内部时钟(CK_INT) 外部时钟模式1:外部输入脚(TIx) 外部时钟模式2:外部触发输入(ETR) 内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。 TIM2-7的内部时钟来自于低速APB1总线,如果APB1分频系数为1,则定时器时钟等于APB1的时钟,若不是,则定时器时钟为APB1
[单片机]
PIC单片机通用同步异步收发器的编程应用
0 引言 PIC18Fxx8单片机是美国微芯公司推出的16位RISC指令集的高级产品,由于芯片内含有A/D、内部E2PROM存储器、I2C和SPI接口、CAN接口、同步/异步串行通信(USART)接口等强大的功能,具有很好的应用前景。但是,目前介绍其应用和以C语言编程的中文参考资料很少。本文将探讨该型单片机异步串行通信的编程应用,程序用HI-TECH PICC-18 C语言编写,并在重庆大学-美国微芯公司PIC单片机实验室的PIC18F458实验板上通过。 1 PIC18FXX8单片机同步/异步收发器(USART) 通用同步/异步收发器(USART)模块是由PIC18FXX8内的三个串行I/O模块组成的器件之
[单片机]
PIC单片机通用同步异步收发器的<font color='red'>编程</font>应用
PIC16C711 直流电压表汇编程
定义用户寄存器 WEI1 EQU H’0C’ ;BIT0=MODS:选择模式位 0:模式1 1:模式2 ;BIT1=BREK:断路判别位 0:无断路 1:有断路 ;BIT2= ;BIT3= ;BIT4= ;BIT5=慢响 ;BIT6=快响 ;BIT7=长响 WEI2 EQU H’0D’ ;“百位值运算”的启始值 WEI3 EQU H’0E’ ;“十位值运算”的启始值 WEI4 EQU H’0F’ ;个位值 WEI5 EQU H’10’ ;百位值 WEI6 EQU H’11’ ;十位值 WEI7 EQU H’12’ ; WEI8 EQU H’13’ ; WEI9 EQU H’14’ ; WEIA EQU H’15’ ; WEIB
[单片机]
用两个NE555制作长时间定时电路
利用两个555 时基电路形成一个定时时间较长并且定时时间范围可调的定时电路。 一、电路工作原理 电路原理如图1 所示。   图1 双555时基电路长延时电路图 IC1 555 时基电路接成占空比可调的自激多谐振荡器。当按下按钮SB 后,12V 的直流电压加到电路中,由于电容器C6 的电压不能突变,使得IC2 电路的2 脚为低电平,IC2 电路处于置位状态,3 脚输出高电平,继电器K 得电,触点K-1、K-2 闭合,K-1 触点闭合后形成自锁状态,K-2 触点连接用电设备,达到控制用电设备通、断的作用。同时IC1 555 时基电路开始形成振荡,因此3 脚交替输出高、低电平。当3 脚输出高电平时,通过二极管VD3、电
[电源管理]
用两个NE555制作长时间<font color='red'>定时</font>电路
带你了解一下霍尔效应传感器编程工具是啥
TDK公司 扩展了编程工具链,磁传感器编程器(MSP)V1.0可以方便地对Micronas多种产品编程。MSP V1.0替代APB 1.5 及其他现有的编程工具,其集合了USB-Programming Kit V1.01 和HAL APB V5.1。该编程器特别适用于开发实验室。TDK现在有三款工具支持所有Micronas可编程传感器。 新的磁传感器编程器(MSP)V1.0取代APB 1.5,形成了Micronas产品完整的编程工具系列。 适用于HAL 18xy、HAL/R 24xy、HAL 28xy和HAL/R/C 37xy系列产品。 MSP V1.0 可以驱动高电压并且操作最新的带PSI5输出的新代级传感器。
[传感器]
高可靠性的可编程电源管理解决方案
系统工程师正受到降低成本和提高电路板可靠性的压力。一个经常被忽视的应对措施是减少为FPGA、 微处理器和数字信号处理器进行电源监控而使用的元件数量。新颖的高集成度可编程电源电路将复位生成电路、看门狗定时器(WDT)和电压监控器集成电路集成在单个器件之中。这种一体化方案有助于降低系统成本,解决设计人员所关心的可靠性问题。本文讨论将可编程逻辑、ADC和DAC集成在一起的创新解决方案,该方案使电源管理功能具有更高的精确性,同时还可降低成本。 电源管理的挑战 一个典型的CPU电源电路如图1所示。对于典型的DSP、 FPGA或微处理器,各种电源电压要求为:器件的核心电压为1.2V、辅助电压和PLL电压为3.3V、 I/
[嵌入式]
高可靠性的可<font color='red'>编程</font>电源管理解决方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
最新测试测量文章
更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved