FeLLOWME 鼹 窜 ●镰 作者/赵亮 上两讲介绍并应用了单片机驱动液晶原理,并给出了实 触发进行计数(见图1),也可以称作计数法。被测信号是一 串计数脉冲(实际中应通过放大整形等到1,将它加到闸门的 例。这一讲将介绍如何利用单片机实现测量频率,并结合前讲 的液晶显示来实现一个频率计。通过该讲,读者可以掌握测频 的基本原理与常用方法,并利用单片机来实现测频。 个输入端,闸门由门控信号来控制其关闭时间。将单位门控 时间内计得的脉冲送至处理器处理,再经显示器显示。如图l 中,定义被测信号的频率为Fx,闸门开启时间为TW,在这段时间 原理简介 众所周知,在电子技术领域内,频率是一个很基本的参 内所计量得到的脉冲个数为Nx,则被测信号频率可以表示为: Fx=Nx,Tw。 (1) 不难看出,采用计数的测频方法的测量误差,~方面决定 数,频率与其它许多电参量的测量方案,都有着十分密切的关 系。例如电压一频率转换、电流一频率转换。因此,频率的测 量就显得更为重要,测频也是最基本的电子测量技术。一般来 说,频率测量所需要的接口简单,占用资源少,可只用一路计 数器直接计数或者用中断输入接口触发中断,然后在中断服务 程序中再对脉 中进行计数。总而言之,对频率信号的测量具有 于闸门时间T准不准确,即由晶振提供的标准频率的准确度; 另一方面决定于计数器计得的数准不准。所以,计数测频方法 的误差主要有两项,即标准频率误差和计数值误差。在测量高 频时,计数值误差引起的测频误差相对较小,所以这种方法比 较适合高频信号的测量。但测低频时,由于计数值误差产生的 测频误差大得惊人,所以不宜采用直接测频方法。 灵活的输入方式。另一方面,对频率信号的各种参数测量也有 重要的意义,如周期,高低电平等。在这里介绍下在实际项目 应用中常用的两种单片机测量频率的方法。 此外,从公式(1)中可以看出,要得到频率Fx,必须知 道Tw,和Nx,常用的方法是先已知道其中的一个量,然后对另 外一个量进行测量。例如将51单片机中的一个定时器用于得到 1.测频法 测频法是指在一定的时司内直接对信号的边沿触发或电平 标准时间的闸门信号1w,用外部中断或端口捕获的方法接入信 号,对交变信号进行计数,从而得到NX。举例来说,如果Tw为 1 S。则得到的频率即为脉冲个数Nx。 FeLLOWME 闸门 闸门 被测信号 —一 f s——————— 』 被测信号 ——一Nw———————— l l i …………………I: 基准信号 测周法示意图 一 频率信号(方波)经过限流电阻R1 3后输入到单片机P3.5端口 上,其中二极管VD1 0 ̄DVDI 1用于限幅,防止外部频率过高损 坏单片机IO口。51单片机的P3.5管脚除了可以当做普通IO外, 还可以作为外部计数器2的输入,因为可以在本电路上进行单 片机普通IOD进行捕获测频和外部计数器计数两种方法进行频 率测量。 此外,为了显示方便和结合前几讲液晶显示实例,本讲电 路图中采用了1602液晶进行显示。 皇 _颚 …………………i程序设计 2.测周法 在前文提到,在对低频信号进行测量时,如果还采用测频 法,会导致由计数值引起的巨大误差。因此,在低频时通常使 用测周法,即利用信号的一个周期作为时间闸门信号,在这个 信号周期对单片机内部的已知脉冲进行计数。如图2所示:其 中基准信号的周期为Ts,被测信号的周期为TX,则在被测信号 的一个周期Tx内,记录基准信号的周期数为Ns,则被测信号的 频率可以表示为: Fx=1/Tx=1I(Ns X Ts) (2) 本讲频率测量需要有外部信号输入,为了达到方便的目 的,可以采用让单片机本身的定时器来产生方波信号,然后用 所产生信号连接到测量端口进行测量。这样在已知频率的情况 下,通过实际的测试显示,从而达到实验和验证的目的。当然 有条件的读者可以采用外接信号源的方法,这样更准确,但是 应当注意的是,所接入的信号应为TTL方波或者经变换整形得 到后的方波信号。 关键程序如程序清单。 从公式(2)中可以看出,要得到频率Fx,应知道Tsg1]Ns。例 如将51单片机中的一个定时器用于内部计数,其每计一次的周 期时间即为基准信号的周期Ts(这个由单片机的晶振和指令运 调试要点与实验现象 接好硬件电路,通过冷启动方式将程序所生成的.hex文件 下载到单片机后,复位单片机,然后将频率输出管脚通过跳线 行周期决定),用外部中断或端口捕获的方法接入信号后,在 一接到测频端口或者通过外接信号输入后,可在1602液晶上显示 出当前信号的频率值。 值得注意的是,采用单片机自身产生测量频率然后自身测 个被测信号的周期开始和周期结束分别触发,在这个过程中 得到的脉冲个数即为Nx。 通常情况下当信号频率在1kHz以下时,可以采用周期测量 法:当信号频率在1kHz以上时,可以采用直接测频法。当然在 试的方法存在不严谨的地方。例如由于单片机外接晶振的不稳 定或其震荡产生的频率与所标注值有差异,这会导致单片机内 部定时器的定时时间出现偏差。此外由于采用C语言编程,对 实际调试应用可以根据实际情况(如单片机捕获能力、晶振偏 差等)进行微调修改。 每条指令的运行时间如果不进行考虑的话,也会导致定时实际 误差。所以在实际应用时应有标准仪器校正或标准信号测试。 电路详解 如图3中所示,单片机10R测频输入电路非常简单,外部 笔者采用外接信号源和采用示波器观察的情况下,发现单 片机无论是输出频率还是测量频率的均有一定的误差,经校正 后,可以提高一定精度。