基于单片机的相位差测量系统的设计

2010-03-28 03:56荣雪琴
装备制造技术 2010年10期
关键词:时间差触发器数码管

荣雪琴

(1.苏州大学电子信息学院,江苏 苏州 215104;2.苏州工业职业技术学院电子工程系,江苏 苏州 215104)

利用一些常用的仪器进行波形检测,往往只能测量波形的幅度、频率以及观察两个波形的相对位置,所测的相位差误差大,并且需要经过计算。本文以单片机为核心,设计了一款相位差测量系统,其具有硬件电路简单、测量精度高、显示直观等优点,有一定的使用价值。

1 系统设计方案

系统的总体设计框图如图1所示,主要由信号检测电路、单片机AT89C51和LED数码管显示等3部分电路组成。信号检测电路,完成对两个正弦波信号的周期T和时间差Δt的检测;单片机完成对信号检测的控制,把检测到的信号转换成相位差φ,并且转换成数码管所能显示的字型代码后,从单片机的串行口送出;显示电路,采用3片串并转换芯片74LS164进行输出端口的扩展,然后在74LS164的输出端各接一个数码管,用于显示相位差。

图1 系统框图

2 硬件电路设计

2.1 信号检测电路

信号检测电路由1片双电压比较器LM393和2片双D触发器74LS74等组成(如图2所示),完成两个被测信号的时间差和周期的检测,在AT89C51单片机的控制下,可以实现准确的测量。

(1)零点的检测。由LM393等电路组成的零点检测电路,分别用以检测A、C两点输入的两路交流信号的零点。以两路正弦信号为例,在A、C两点输入两个正弦信号,当输入信号大于零时,分别在B、D两点输出高电平;当输入信号电压小于-5×(10K/330K)V时,分别在B、D两点输出低电平。因此在B、D两点输出两个与输入的正弦信号相对应的方波信号,由于方波信号的上升沿,正好对应输入信号的由负变正的零点时刻,所以时间差信号和周期信号的检测采用上升沿测量,可以提高测量的精度。

图2 信号检测电路

(2)周期信号的检测。由图2中下面两个D触发器在单片机P1.2和P1.3控制下,完成A点输入的被测信号的周期T的检测。P1.2接D1、D2两个触发器的清零端,同时也是 D2触发器的输入,P1.3与Q2相连接。P1.2是由软件控制其为高电平或低电平,P1.3是软件对其电平进行查询的。开始进行检测时,首先使P1.2为低电平,两个D触发器的清零端有效,此时输出Q1和Q2都为低电平0;当P1.2由0转为1并且B点信号由0变为1时,输出Q1由0变为1,输出Q2仍为低电平0;当B点信号第二次由0变为1时,输出Q1又由1变为0,同时输出Q2也由0变为1。当单片机检测到P1.3为高电平时,意味着一次检测完成,同时使P1.2清零,为下一次检测做准备。输出Q1正好对应输入信号A的周期T,将这个周期信号接到单片机的外部中断1引脚上。

(3)时间差信号的检测。由图2中上面两个D触发器和一个与门在单片机P1.2的控制下完成A、B两个正弦信号的时间差Δt的检测。当P1.2为低电平0时,两个D触发器的清零端有效,使得输出 Q3和Q4都为低电平0;当P1.2为高电平1并且B点信号由0变为1时,输出Q3由0变为1,由于此时D点信号仍为低电平0,使得触发器D4的脉冲信号无效,所以输出Q4仍为低电平0;当D点信号由0变为1时,输出Q4由0变为1,从而与门的输出由1变为0,触发器D3的清零端有效,使输出Q3由1变为0,这样就完成了A、B两个正弦信号的一次时间差的检测,输出Q3即为时间差信号Δt,将这个时间差信号接到单片机的外部中断0引脚上。

2.2 显示电路

显示电路由3个单个数码管和3片74LS164构成(如图3所示)。所需显示的3位数字的字型码,由串行口的接收端P3.0输出,串行口的发送端P3.1输出同步移位脉冲,P1.0控制3片74LS164的清零端,单片机的串行口工作在方式0,只要将需要显示的3位数字的字型码从串行口输出,就能在3个数码管上稳定地显示出来。

图3 显示电路

(1)串行输入并行输出移位寄存器74LS164。74LS164为8位移位寄存器,与单片机的串行口组成扩展输出端口的电路。当清零端(CLR)为低电平时,输出端(D0~D7)均为低电平。串行数据输入端(A,B)可控制数据输入。当 A、B任意一个为低电平,则禁止新数据输入,在时钟端(CK)脉冲上升沿作用下D7为低电平。当A、B有一个为高电平,则另一个就允许输入数据,并在CK上升沿作用下决定D7的状态。左边的74LS164的输入端A/B接单片机的P3.0用于接收串行口发送的数据,中间和右边的74LS164的输入端分别接各自左边的74LS164输出的最低位D0,P3.1用于输出同步脉冲,在P3.0每输出一位数据时,P3.1同时输出一个同步脉冲信号,在同步脉冲的作用下,将输入数据从左边的74LS164的D7输出,原来的D7~D0的数据依次向右移一位,这样当3个8位的字型码发送完,先发送的在最右边的74LS164的D7~D0输出,后发送的在左边的74LS164的D7~D0输出。

(2)数码管。数码管内部由7个条形发光二极管和1个小圆点发光二极管组成,根据各管的亮暗组合成字符。常见数码管有10根管脚。其中COM为公共端,根据内部发光二极管的接线形式,可分为共阴极和共阳极两种。使用时,共阴极数码管公共端接地,共阳极数码管公共端接电源。每段发光二极管需5~10mA的驱动电流,才能正常发光,一般需加限流电阻控制电流的大小。

本系统采用3个单个共阴极的数码管,工作在静态显示方式。将3个数码管的公共端都接地,其余8个输入端分别接74LS164的8个输出端,每当串行口发送3个字型码时,数码管就能稳定地显示出两个被测信号的相位差。

3 软件设计

系统的软件主要完成对时间差信号和周期信号的检测的控制和采集,并通过计算转换成两个被测信号的相位差,再通过查表转换成相对应的字型码,利用串行口将其发送。

3.1 相位差的测量

根据相位差的定义,两个周期同为T的正弦信号,其相位差Φ与时间差Δt和周期T的关系为:Φ=(360°/T)Δt,在单片机控制下,信号检测电路可以精确地测出T和Δt,从而可以计算出相位差Φ。

使用单片机内部的定时器/计数器T0、T1分别测量Δt和T。将T0和T1设为内部定时方式(C/T軈=0),工作方式选择方式2(M1M0取10),门控位选择软件与硬件共同启动(GATE=1),因此方式控制字为AAH;定时器/计数器T0、T1的初始值选择00H;定时器/计数器T0、T1都工作在中断方式,因此要开放定时器T0和T1的中断(EA=1,ET0=1,ET1=1)。以Δt的检测为例,将TR0置1后T0是否计数,取决于外部中断0引脚上的信号,当外部中断0引脚上的信号由0变为1时,T0开始计数,计数器计满时触发中断,在中断服务程序中,使用内部寄存器R3记录中断次数,当外部中断0引脚上的信号由1变为0时,停止计数。因此只要将Δt信号接在外部中断0引脚上,就可方便地求出以微秒为单位的Δt的数值,若晶振频率为 12MHz,即 Δt=R3× 28+(TL0)。

同理,将T信号接在外部中断1引脚上,就可方便地求出以微秒为单位的T的数值,即T=R5×28+(TL1),R5为记录T1的中断次数。

采用这种方法测量T和Δt的最大绝对误差为1μs,主程序的流程图如图4所示。

图4 主程序流程图

3.2 显示子程序

显示子程序完成将计算出的相位差Φ转换成相应的字型码,然后再将其发送,就能在数码管上显示出来。代码转换时只需要定义一个0~9的字型码表,利用查表指令,将计算出来的相位差查出相应的字型码,并存放在内部RAM的3个存储单元。在进行串行发送的时候,首先将74LS164清零,设置发送字节数R7为3,串行口工作方式为方式0,因此SCON为00H,接着就可以启动串行口发送,等待一帧数据发送完后,清除发送中断标志位,再取下一个发送的数据,直到3个数据发送完。

4 结束语

相位差是交流信号的一个重要参数,采用AT89C51单片机作控制器,可充分利用单片机片内的硬件功能和CPU处理功能。此测量方法具有硬件电路简单、测量精度高、显示直观等优点,具有一定的使用价值。

[1]刘文涛.MCS-51单片机实用教程[M].北京:原子能出版社,2005.

[2]刘训非.单片机技术及应用[M].北京:清华大学出版社,2010.

[3]任中民.数字电子技术[M].北京:清华大学出版社,2005.

猜你喜欢
时间差触发器数码管
浅谈时序逻辑电路的成长记忆
微课教学设计之“数码管动态显示”
量子定位系统中符合计数与到达时间差的获取
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
触发器在酒店管理系统中的应用
基于BP网络的GIS局部放电声电联合检测故障定位方法
立体声音乐节目后期制作中声像定位的探讨
厘米级室内无线定位方法研究