摘要:利用MCS-5l系列单片机内部定时/计数器控制灵活的特点,设计出了一个只用其内部一个定时/计数器测量脉冲周期连续变化的脉冲信号的方法.该方法没有额外的硬件开销,只是将脉冲信号直接引入单片机的一外部中断口;软件设计简单.其对脉冲周期测量误差不大于2us,测量脉冲周期范围广,可直接用于光电等产品的开发。
脉冲信号是工程中一类较常见的信号,如光电位移、速度、转速等传感器输出的信号,而脉冲宽度和脉冲周期是其基本参数,往往需对它们进行测量。对等周期的脉冲信号的测量比较容易,只需测量任一脉冲宽度或周期就可以了,近年来已有许多MCS-51用户利用测量脉冲信号的基本参数而开发新产品,如山东大学的“ZBCY—I型智能标枪速度测试仪”就是利用测量一个脉冲宽度来获得标枪在某一飞行距离内的平均速度。对连续变周期的脉冲信号周期的测量则相对困难些,许多测量人员都首先对这类信号进行二分频后一路反相,然后用两个定时/计数器分别测出两路脉冲信号的正脉冲宽度得到周期,这种方法硬件开销较大,软件设计也较复杂。本文将介绍了一种用MCS-51单片机内部一个定时/计数器直接测量连续变周期脉冲信号周期的实用方法。
用803l内部定时器来测连续变周期的脉冲信号的周期时,关键是如何控制定时/计数器的启动、停止。以定时器T1为例,当其工作于方式1时,则按16位计数器工作,由两个特殊功能寄存器THl作为高8位和TLl作为低8位构成,其控制逻辑如图1。
图1定时,计数器方式1的控制逻辑
当定时/计数器方式控制寄存器TMOD门控位GATE=0时,计数器的启动、停止只受TR1控制,只要TR1置位。计数器就被选通,而不管INT1电平高低。因此,在主程序中先置位IE中位EA,将信号引入INT1,在INT1中断服务程序中使TCON中位TR1复位和置位来实现计数器的停止、数据读
取、计数器赋初值和启动。其工作过程如图2。
图2 定时,计数器测脉冲周期简图
其中:t1-中断服务程序执行时间
t2-计数器计数时间
则:第i个脉冲周期ti=t1+t2(i=1,2,3,…)。
可以看出,仅用8031内部的一个定时/计数器,就可测出一路变周期脉冲信号的每个周期。
定时器T1中断服务程序流程框图如图3所示。