加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

51单片机测变周期脉冲信号的简便方法

时间:2013-09-03  来源:123485.com  作者:9stone

摘要:利用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所示。
 
    定时器Tl中断服务程序清单如下:
INT1:CLR  TR1  ;关计数器1
PUSH ACC;ACC入栈
PUSH 00H;R0入栈
CLR  C  ;清零进位标志
MOV  A,TL1 ;计数值低8位→累加器
ADD  A,#23H ;计数器值+中断执行时间32us(12MHz晶振)+
  ;最小中断响应时间3-脉冲周期
MOV R0,A  ;低8位暂存R0
MOV  A,TH1
ADDC A,#00H
MOVX @DPTR,A ;脉冲周期高8位→@DPTR指向的RAM单元
INC DPTR ;指向下一RAM单元
MOV A,R0
MOVX @DPTR,A ;脉冲周期低8位→DPTR指向的RAM单元
INC DPTR  
INC R1  ;脉冲周期个数加一
MOV TH1,#00H ;清零计数器1
MOV TL1,#00H
POP 00H
POP ACC
SETB TR1 ;重新启动计数
RETI  ;中断返回

    该中断服务程序能采样的最小脉冲周期为32us,若去掉该程序中的现场保护和将计数值变为脉冲周期放在采样后进行,则可进一步减小能采样的脉冲周期。能采样的最大脉冲周期为65535us(12MHz晶振时),若大于该值,则用户对程序稍加修改即可,因此,实际上对最大周期可不加限制。设对脉冲信号采样100个周期,采样值存于50H开始的外部RAM中,则主程序如下:

MAIN:
    PUSH TMOD    ;专用寄存器TMOD TCON IE入栈    
    PUSH TCON
    PUSH IE
    MOV THI,#00H  ;清零计数器
    MOV TL1,#00H
    MOV TMOD.10H;计数器1工作方式1
    SETB EA    ;允许中断
    SETB EX1    ;外部中断1
    SETB  IT1    ;INT1负跳变触发中断
    MOV DPTR,#50H;存脉冲周期的RAM首地址
    MOV  R1,#00H  ;R1一控制采样周期个散
    SETB TR1    ;计数器1开始计时
    CJNE  R1,#64H,$;等待100个周期采样结束
    CLR  TR1    ;关计数器
    POP  IE
    POP TCON
    POP TMOD

    以上采样的第一脉冲周期不准,应在数据处理时丢掉,也可在中断服务程序中加判断语句自动丢掉。由以上可以看出,该方法无额外硬件,软件简明,能测量的脉冲周期范围大,但不能测得脉冲信号的第一个周期。


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门