基于单片机的数字频率计设计
摘 要
本设计是以MCS-51为核心的单片机设计,在单片机设计中应用单片机的数字运算和控制功能实现了量程的自动切换,满足了其设计任务书的基本要求和发挥部分的要求。
数字频率计在电子、通讯等领域中的实验、研究开发、生产用途非常的广泛,它可以由逻辑电 组成,也可以用单片机控制。由逻辑电路组成的频率计,结构复杂,组装、调试比较麻烦;由单片机控制的频率计,数据采集、计算、译码及量程的自动转换,都可以由CPU来完成,简化了电路,提高了系统
前 言
随着社会的发展,频率计的使用范围也越来越广,所以更需要可对频率计进行改进,应该从设计、设备、人员、技术等多方面深入研究和探讨。本设计是以MCS-51为核心的单片机设计,在单片机设计中应用单片机的数字运算和控制功能实现了量程的自动切换,满足了其设计任务书的基本要求和发挥部分的要求。所以我们应理解并确认数字频率计应该具备全部测量功能,以及对测量精度的要求,即:
1.测量功能:测频、测周期、测脉冲宽度以及脉冲占空比。
2.测频、测周期、测脉冲宽度的误差:≤0.1%;测占空比的误差:≤1%。
其次还要抓住设计中应当关心的几项主要技术指标,即:
a.被测信号的频率范围:1HZ~1MHZ(基本要求);0.1HZ~10MHZ(发挥要求)。
b.被测脉冲信号的宽度:≥100us。
c.最大闸门的时间:10us;显示刷新时间在1~10s之间连续可调。
1数字频率计的概述1.1频率计定义及组成
频率计为单位时间内输入信号周期性变化的次数。数字频率计就是在一秒标准时间内测出信号周期性变化次数,然后以数字的形式显示出来。
利用定时器/计数器测量脉冲频率F和周期T的原理电路如图1所示。它由放大整形电路、晶体振荡器、分频器、主闸门计数器、显示器以及控制与处理部分组成。晶振产生一固定频率的正弦波,经过整形变成标准时钟信号,再经过分频器生成不同频率的标准时基脉冲信号,构成时标发生器。
在测量频率时,S1打向a,S2打向b,将分频后的时标信号作为闸门启闭的控制信号。闸门实际上是一个二输入与门电路:当控制信号为低电平时,与门被封锁,输出恒为低电平,被测信号不能通过;当控制信号为高电平的时候,与门打开放行被测信号。设作为闸门控制信号的时标信号的定时时间为
,在时间内对被测信号脉冲的计数值为M,则F=M/就是被测量信号的频率。
在测量周期时,S1打向b,S2打向c,被测信号Tx经分频器分频后,作为时标信号控制闸门的启闭,在闸门启闭期间对时标发生器产生的标准脉冲信号进行计数。若标准脉冲信号的频率为
(对应周期为1/),在被测信号的一个周期内所计得的标准脉冲数为M,则Tx=M/(=M)就是被测信号的周期。
其系统硬件框图如图1.1所示
图1.1 系统硬件框图
1.2问题及处理方法
测量频率是在某单位时间内对被测信号的脉冲进行计数,测量周期是在被测信号周期内对某一标准脉冲信号进行计数,两者都要解决闸门启闭的定时控制和对脉冲的计数两个问题。
在闸门启闭的定时时间一定的条件下,为了减小相对量化误差,被测信号频率比较高的时候,宜测其频率;被测信号频率较低时,宜测其周期。
在MCS-51单片机中,测量频率是在单位时间内对外部输入的脉冲信号进行计数,测量周期则是在外部输入信号的一个周期内对自身的时钟信号进行计数。利用MCS-51单片机测量频率和周期时,原理性量化误差同样是无法改变的。对于闸门启闭的定时控制和脉冲计数,则既可以用硬件方法,也可以用软件方法,或兼用二者来解决。
1.3测量方法的分析
1.3.1直接测量法
众所周知,依据基本原理所实现的频率、周期以及脉冲宽度的数字化测量是一种直接测量法,由于该方法比较简单,若能够满足本题任务的要求则应作为首选方案。考察中应分析该方法的测量精度是否能够满足任务书的要求,是否便于扩充以满足发挥部分提出的各项附加要求。由于目前还处于顶层阶段,所以对测量精度的分析只需要做一个概率的估计,即仅考虑±1量化误差的影响,而将系统频率基准或时间基准的误差暂时忽略不计,输入通道的触发误差也暂时忽略不计。
通过对测频、测周期以及测脉冲宽度的数字化测量方法的基本原理及其测量误差的回顾,得知在被测信号的整个频率范围内,无论采用直接测频或者测周期的方法均不能全面满足测试误差≤0.1%的要求。具体说,对测频在低频端1HZ,即使闸门时间取最大值10s,也只能计得10个数,但由于±1量化误差的存在,使这时的相对测试误差大到±10%。类似地,对于测周期在高频端1MHZ,即使时标频率采用10MHZ,当被测信号为1MHZ时也只能计得十个数;而被测信号为10MHZ时则只能计得一个数。这时由于±1量化误差而导致的相对测试误差分别大到±10%和±100%!由上述分析可知,为了满足测试精度的要求,不能简单地采用频率与周期的直接测量法,需要寻求别的测量方法。
1.3.2直接与间接测量相结合的方法
该方法的出发点是避开±1量化误差影响较大的频段,是依据在不利条件下寻找有利因素的思路而产生的。由于±1量化误差对直接测频、测周期法所引入的相对测试误差的大小是随被测信号频率而变化,且变化关系正好相反,因此可找到一个中介频率fm=(k/TSTO)1/2=(1/TSTO)1/2 k=1时,式中TS为测频时闸门时间;TO为测周期所用的时标的周期;k为多周期测量时的倍率。下面以 k=1的情况进行讨论。在中介频率上,测频率和测周期法的相对误差正好相等。通过适当选取闸门时间TS以及时标周期TO,使中介频率fm处的测试误差满足≤r%的预定要求,然后采取下列策略将直接测量与间接测量结合起来,就能使整个频段内测试误差均满足≤r%的预定要求。即对低于fm的信号的频率不采用直接测频法,而改为测周期,并通过换算求得频率(即间接法),对高于fm的信号的频率仍然采用直接测频法;类似地,对高于fm的信号的周期不采用直接测周期法,而改为测频率,并通过换算求得周期(即间接法),对低于fm的信号的周期仍然采用直接测周期法;从而可使在被测信号的整个频率范围内测试误差均可以满足≤r%的要求。
1.3.3多周期同步测量法
该方法的基本思路是被测信号与闸门时间之间实现同步化,从而从基本上消除了在闸门时间内对被测信号进行计数时的±1量化误差,使测量精度大大提高。这种方法是依据积极主动去改造不利条件的思路而产生的。倒数计数器就是基于该方法而设计出来的一种具有创新思想的测频测时(含周期)的仪器。
关于倒数计数器的原理:
倒数计数器采用多周期同步测量法,即测量输入信号的多个(整数个)周期值,再进行倒数运算而求得频率。与直接测量法相比其优点是,可在整个测频范围内获得同样高的测试精度和分辨率。图1.2(a)为倒数计数器的原理图。fx为输入信号频率,fc为时钟脉冲的频率。
图1.2(a)原理方框图
A、B两个计数器(分别称之为事件计数器和时间计数器)在同一闸门时间T内分对fx和fc进行计数,计数器A的计数值为NA=fxT,计数器B的计数值为NB=fcT。由于NA/fx=NB/fc=T,则被测频率fx和周期Tx分别为:
fx=(NA/ NB)fc (1-1)
Tx= (NB/ NA)Tc (1-2)
同步电路(D触发器)的作用在于使计数闸门信号与被测信号同步,实现同步开门,并且开门时间T准确地等于被测信号周期的整数倍,故式(2.6)、(2.7)中的计数值NA没有±1量化误差。计数值NB虽有±1量化误差,但由于fc很高,NB》1,所以NB的±1量化误差的相对值(±1/NB)很小,且该误差与被测频率fx无关,因此在整个测频范围内,倒数计数器能够实现等精度的测量,该测试方法需要的除法运算功能,对于使用微处理器的仪器来说,是不难实现的。
要对两路脉冲信号之间的时间间隔进行等精度测量,可在原有方框图的基础上增加一个同步电路2(D触发器)和一个B输入通道,并将其输出反相后送到同步电路2的复位端上,该同步电路的触发时钟内输入通道A 的输出经两级反相器延时后得到,该同步电路的输出UQ2由计数器A直接计数.同时还作为闸门B的开门信号,由计数器B记录通过闸门B的时钟脉冲的数目,最后将两个计数器所计得的数送运算电路进行处理,便可获得欲测时间间隔的值,整个电路如下图所示。
2总体设计方案及原理2.1设计方案及原理
频率的定义是单位时间(1s)内周期信号的变化次数。若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为:f=N/T。
据此,设计方案框图如图2.1所示。
图2.1 数字频率计组成框图
其基本原理是,被测信号ux首先经整形电路变成计数器所要求的脉冲信号,频率与被测信号的频率相同。时钟电路产生时间基准信号,分频后控制计数与保持状态。当其高电平时,计数器计数;低电平时,计数器处于保持状态,数据送入锁存器进行锁存显示。然后对计数器清零,准备下一次计数。
2.2基本电路设计
2.2.1.整形电路
整形电路是将待测信号整形变成计数器所要求的脉冲信号。电路形式采用由555定时器所构成的施密特触发器,若待测信号为三角波,输入整形电路,可见输出为方波,二者频率相同。波形整形电路对信号进行整形,使之成为如下图所示的矩形波。
图2.2
2.2.2.时钟产生电路
时钟信号是控制计数器计数的标准时间信号,其精度很大程度上决定了频率计的频率测量精度。当要求频率测量精度较高时,应使用晶体振荡器通过分频获得。在此频率计中,时钟信号采用555定时器构成的多谐振荡器电路,产生频率为1Kz的信号,然后再进行分频。
2.2.3分频器电路
采用计数器构成分频电路,对1Kz的时钟脉冲进行分频,取得不同量程所需要的时间基准信号,实现量程控制。1Kz的时钟脉冲,对其进行3次10分频,每个10分频器的输出信号频率分别为100Hz,10Hz,1Hz三种时间基准信号。对应于以1Kz,100Hz,10Hz,1Hz的信号作为时间基准信号时,相应的量程为×1000,×100,×10,×1。构成10分频带电路是采用十进制计数器74LS160实现的。
2.2.4T触发器:
T触发器电路是用来将分频带器输出阻抗的窄脉冲整形为方波,因为计数器需要用方波来控制其计数/保持状态的切换。整形后方波的频率为频器输出信号频率的一半,则对应于1Kz,100Kz,10Kz,1Hz的信号,T触发器输出信号的高电平持续时间分别为0.001s,0.01s,0.1s,1s。T触发器采用JK触发器7473来实现。
2.2.5单稳触发器:
单稳触发器用于产生一窄脉冲,以触发锁存器,使计数器在计数完毕后更新锁存器数值。单稳触发器电路采用555定时器实现,为了保证系统正常工作,单稳电路产生的脉冲宽度不能大于该量程分频带器输出信号的周期。
2.2.6延迟反相器:
延时反相器的功能是为了得到一个对计数器清零的信号。由于计数器清零是低电平有效,而且计数器清零必须在单稳触发信号之后,故延迟反相器是在上述单稳电路之后,再加一级单稳触发电路,且在其输出端加反相器输出。
2.2.7计数器:
计数器在T触发器输出信号的控制下,对经过整形的待测信号进行脉冲计数,所得结果乘以量程即为待测信号频率。根据精度要求,采用4个十进制计数器级联,构成N=1000计数器。十进制计数器仍采用74LS160实现。其中计数器的清零信号由延迟反相器提供,控制信号由T触发器提供,计数器输出结果送入锁存器。
2.2.8锁存器和显示:
计数器的结果进入锁存器锁存,4个七段数码管显示测试信号的频率。锁存器使用了两片8D集成触发器实现,其控制信号来自于延迟反相器。
为了能测量不同电平值与波形的周期信号的频率,必须对被测信号进行放大与整形处理,
图2.3 分频器的输出波形
使之成为能被计数器有效识别的脉冲信号。信号放大与波形整形电路的作用即在于此。信号放大可以采用一般的运算放大电路,波形整形可以采用施密特触发器。
2.2.9控制门:
控制门用于控制输入脉冲是否送计数器计数。它的一个输入端接标准秒信号,一个输入端接被测脉冲。控制门可以用与门或或门来实现。当采用与门时,秒信号为正时进行计数,当采用或门时,秒信号为负时进行计数。
2.2.10计数器:
计数器的作用是对输入脉冲计数。根据设计要求,最高测量频率为 9999Hz ,应采用 4 位十进制计数器。可以选用现成的 10 进制集成计数器。
2.2.11锁存器:
在确定的时间( 1S )内计数器的计数结果(被测信号频率)必须经锁定后才能获得稳定的显示值。锁存器的作用是通过触发脉冲控制,将测得的数据寄存起来,送显示译码器。锁存器可以采用一般的 8 位并行输入寄存器,为使数据稳定,最好采用边沿触发方式的器件。
2.2.12显示译码器与数码管:
显示译码器的作用是把用 BCD 码表示的 10 进制数转换成能驱动数码管正常显示的段信号,以获得数字显示。选用显示译码器时其输出方式必须与数码管匹配。
图3.1
3硬件设计3.1电源电路
变压器输入220V的交流电压,输出18v的交流电,经过D1-D4的整流变化成单向的直流电,再经过电容、二极管的滤波、整流,由稳压三极管LM7805、LM7812稳压输出供MCS-51+5v掉电时转换电源、供输出驱动电路+12v电源、供LED显示电路+5v电源。
3.2信号调理电路
3.2.1输入信号调理
图3.3信号输入端电路
被测信号经过电容、变压器T实现输入信号的阻抗匹配。
2.输入信号比较电路
图3.4输入信号比较电路
利用D触发器作为二分频器使用,依次连接则可以组成四分频、六分频、八分频等分频器,根据需要连接。 MCS—51单片机对分频后的信号进行计数,为了保证精度,可以设置不同的档位开关,连接到MCS—51单片机的并行I/O口,由于按下的按键不同,可以在数据处理程序中分别乘以分频器的分频系数,这样就可以还原出需要测量的频率值。该方法的优点是硬件简单,连接方便,可以根据需要自由的选择D触发器的个数;缺点是编制的程序太复杂,同时当使用的分频器太多时,测量精度不是太高。
3.前置计数器
图3.5前置计数器
为了不降低测量的精度,可以采用前置计数器的方法。扩展计数器作为前置计数器,作为低位计数器,其计数值通过并行I/O口读入,进位作为MCS—51单片机的输入信号,利用MCS—51单片机内部的定时器/计数器对进位信号进行计数,采用四位二进制同步计数器74LS161作为前置计数器测量频率。
工作过程:首先从P1.0发出一个清零负脉冲,复位两个D触发器U1,U2,它们的输出Q=0,分别封锁G1,G2闸门;从P1.1发出一个启动正脉冲,其上升沿使U1的Q=1,打开闸门G1;当被测信号的上升沿来到时,经G1,U2,G2送到TC1计数,同时又通过INT0启动TC0开始定时工作;此后,TC0通过软件计数器配合扩展定时时间,TC1通过软件计数器扩展计数范围,直到定时时间到,从P1.0输出一个负脉冲,通过U2封锁G2,停止计数;关闭TC0和TC1,进行读计数值,数据处理和显示,与1.2.3控制过程基本相同。不同之处在于:在停止计数后,还需要读入P1.4、P1.5、P1.6和P1.7的值,在数据处理程序中需要乘以分频系数16,同时还要加上P1口高四位的计数值。
采用74LS164作为MCS—51单片机的前置计数器后,其最高计数频率可以由原来的500KHz扩展到8MHz以上。
3.3信号调理芯片
1.计数器74LS161芯片
74LS161是典型的四位二进制同步加法计数器,异步清零,其引脚图与逻辑符号见图:
图3.6
各引脚的功能
CLK:时钟输入端,在外接时钟信号的上升沿,使计数器加1。
D3~D0:4位并行数据输入端,D3为最高位,D0为最低位。
Q3~Q0:4位并行数据输出端,Q3为最高位,Q0为最低位。
QCC:进位位,输出。高电平表示进位,高电平持续时
间一个外加脉冲周期。
:清零端,输入,低电平有效。74LS161是异步清零即在=0后,立即清零Q3~Q0。
:装载数据初值控制,输入,低电平有效。
S1,S2 :允许计数控制,输入端。
Vcc:GND:电源+5V,地。
输入 |
输出 |
功能 |
||||
|
|
S1 |
S2 |
D3D2D1D0 |
Q3Q2Q1Q0 |
|
1 |
1 |
1 |
1 |
|
加1 |
计数 |
1 |
0 |
任意 |
任意 |
D3D2D1D0 |
D3D2D1D0 |
送数 |
1 |
1 |
1 |
0 |
任意 |
不变 |
保持 |
1 |
1 |
0 |
1 |
|||
0 |
任意 |
任意 |
任意 |
任意 |
0 0 0 0 |
清0 |
表3.1
3.4单片机
MCS-51单片机是Intel公司1980年推出的高档8位单片机,采用HMOS工艺,片内集成有8位的CPU,驻留4K字节ROM和128字节RAM以及21个特殊功能寄存器,片内还包括两个16位的定时器/计数器、1个全双工串行I/O口、32条I/O线、5个中断源和两级中断,寻址能力达128K字节,程序存储器和数据存储器各占64K字节。指令系统中设置了乘、除运算指令、数据查找指令和位处理指令等。主时钟频率为12MHz时,大部分指令周期只需1
s,乘除指令也仅需4s。
由于MCS-51单片机资源较多,限于篇幅,不便一一介绍,这里仅介绍本设计中涉及到的主要资源——MCS-51单片机的定时器/计数器、串行口以及MCS-51单片机的中断系统。
3.4.1MCS-51单片机的定时器/计数器
①主要特性
②定时器/计数器的结构
与定时器/计数器有关的特殊功能寄存器有:TMOD,TCON,TH1,TL1,TH0,TL0。
1)十六位加法计数器
定时器/计数器的核心是16位加法计数器,由特殊功能寄存器TH0、TL0及TH1、TL1组成。TH0和TL0是定时器/计数器0加法计数器的高8位和低8位;TH1、TL1是定时器/计数器1加法计数器的高8位和低8位。
作为计数器用时,加法计数器对芯片引脚T0或T1上输入的脉冲计数。每个机器周期采样一次引脚电平,前一次检测为“1”,后一次检测为“0”,加法计数器加一,所以采样的外部脉冲“0”和“1”的持续时间都不能少于一个机器周期,外部计数脉冲的频率应小于ƒosc/24。如果使用12MHz时钟,计数频率不能超过500KHz。
作为定时器用时,加法计数器对内部机器脉冲周期Tc计数。由于机器周期的时间确定,所以对Tc的计数也就是定时。
加法计数器的初值可由程序设定,设置的初值不同,计数值或定时时间就不同,加法计数器的内容可由程序读回CPU。
计数器在计数满回0时能自动使TCON中的TFx置位,表示计数器产生了溢出,若此时中断是开放的,CPU将响应计数器的溢出中断请求。
2)/计数器方式控制寄存器
特殊功能寄存器TMOD用来确定定时器/计数器0和1的工作方式,低四位用于定时器/计数器0,高四位用于定时器/计数器1,格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
TMOD: 89H
TCON格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
TCON: 88H
2.定时器/计数器的四种工作方式
M1=“0”、M0=“0”时,定时器/计数器设定为工作方式0。在16位加法计数器中,TLi中的低五位和THi共同构成13位定时器/计数器。TLi计数溢出时向THi进位,THi计数溢出时置位TFi,最高定时8192
S。
M1=“0”、M0=“1”时,定时器/计数器设定为工作方式1,构成16位定时器/计数器。TLi计数溢出时向THi进位,THi计数溢出时置位TFi,最高定时65535S。
M1=“1”、M0=“0”时,定时器/计数器设定为工作方式2,构成自动重装初值的8位定时器/计数器。其中,TLi作为加法计数器用,THi作为初值寄存器用,TLi计满溢出时,不仅置位TFi,而且发出重装载信号,将THi的初值自动送入TLi,使TLi重新开始计数,THi中的内容不变,最高定时256S。
④ 工作方式3
M1=“1”、M0=“1”时,定时器/计数器设定为工作方式3。工作方式3仅对定时器/计数器0有意义,此时,定时器/计数器1可以设置为其它工作方式。此工作方式一般不常用,详见有关书籍。
⑤ 定时器/计数器计数初值的计算
计算公式: X=N-T/Tc
X——计数初值
N——对应工作方式最高计数值
T——需要的定时时间
Tc——时钟周期
3.5数据显示部分
3.5.1数据显示电路
图3.7显示电路
动态显示方式中,多位LED显示器的各位段选线并联,由一个8位I/O口控制,形成段选的多路复用。而各路的公共端由相应的I/O线控制,实现各位的选通。采用动态显示控制的LED显示器与MCS-51单片机的接口如图所示。
因段选线公用,若要各位LED显示与本位相应的字符,就必须采用扫描方式。即某一时刻,只让某一位的位选线处于选通状态,同时段选线输出要显示字符的段码,在这一时刻被选通的显示器显示字符;未被选通的显示器全灭。单片机依次发出段选码和对应位LED显示器的位选码,显示器逐个循环点亮。适当选择扫描速度,由于人眼的视觉暂留特性,使得看上去所有数码管是同时点亮的,并不察觉有闪烁现象。
3.5.2 74LS164芯片介绍
a.引出端排列图和逻辑功能示意图
如图所示是8位单相移位积存器74LS164的引出端排列图和功能示意图 。
(a)引出端排列图 (b)逻辑功能示意图
Ds=Dsa*Dsr是数码串行输入端,/CR是清零端,Q0~Q7是数据并行输出端,CP是时钟脉冲——移位操作信号。
b.逻辑功能
表3.1所示是74LS164状态表,由表可知,74LS164具有下列功能;
(1)清零功能
当/CR=0时,移位寄存器异步清零。
(2)保持功能
当/CR=1、CP=0时。移位寄存器保持状态不变,Qi n+1=Qin(i=0~7)。
4 系统软件设计
单片机测量频率需要软件和硬件的合理结合才能进行正常的工作、实现预期的功能,前面进行了系统硬件的设计,本章将着重进行软件的设计。
系统在开机时,首先进入键值处理程序,判断P0.4是否为0,为0时,说明有按键按下,转到测量周期程序,否则,当无按键按下时,转测量频率主程序,然后程序根据相应的主程序执行相应的数据处理程序,进行数据处理后送显示,返回。系统总的流程见图
图4.1
4.1系统软件框
图4.2
4.2子程序流程图
4.2.1数据处理流程图
图4.3
4.2.2数据处理流程图
图4.4
4.2.3数据处理流程图
图4.5
4.2.4除以1K流程图
作者:2301_82180996