资源描述
摘 要
本数字频率计的功能是测量正弦波、方波的频率和周期以及脉冲的宽度和占空比,不同测量功能用不同颜色的发光二级管指示。待测信号正弦波、方波的频率为0.1Hz~20MkHz、幅度为0.1V~10V,脉冲波宽度大于100μs、幅度为0.1V~10V、占空比为5%~95%。
本方案主要以STC89C52单片机为核心,主要分为电源模块、放大整形模块、分频模块、单片机模块和显示模块。待测信号先进入信号放大电路进行放大,再被送到波形整形电路整形为标准方波。低于1Hz的信号利用单片机的定时器测其周期,等于或高于1Hz的信号利用单片机的计数器和定时器的功能对待测信号进行计数。定时时间为1s,单片机产生的时标信号频率为1MHz。脉冲的宽度也利用单片机定时器测量。编写相应的程序可以使单片机自动切换量程,并把测出的频率数据送到LCD1602显示。
关键词:频率计 单片机 自动切换量程
1、方案选择
1.1、方案比较
方案一:本方案主要以单片机为核心,利用单片机的计数、定时功能来实现频率的计数,并且利用单片机的动态扫描法把测出的数据送到1602显示电路显示。其原理框图如图1所示。
信号放大电路
信号整形
电路
单片机STC89
C52
1602
显示
电路
图1 方案一原理框图
方案二:本方案主要以数字器件为核心,主要分为时基电路、逻辑控制电路、放大整形电路、闸门电路、计数电路、锁存电路、译码显示电路七大部分。其原理框图如图2所示。
逻辑控制电路
时基电路
放大整形电路
闸门电路
计数器
锁存器
译码显示器
图2 方案二原理框图
1.2、方案论证
方案一:本方案主要以单片机为核心,待测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把待测信号整形为标准方波。利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
方案二:本方案使用大量的数字器件,待测信号经放大整形电路变成计数器所要求的脉冲信号,其频率与待测信号的频率相同。同时时基电路提供标准时间基准信号,其高电平持续时间1s,当1s信号来到时,闸门开通,待测脉冲信号通过闸门,计数器开始计数,直到1s信号结束闸门关闭,停止计数。若在闸门时间1s内计数器计得的脉冲个数为N,则被测信号频率
Hz (公式1)
逻辑控制电路的作用有两个:一是产生锁存脉冲,使显示器上的数字稳定;二是产生清零脉冲,使计数器每次测量从零开始计数。
1.3、方案选择
比较以上两种方案可以知道,方案一的核心是单片机,使用的元器件少,原理电路简单,调试简单只要改变程序的设定值则可以实现不同频率范围的测试,能自动选择测试的量程。与方案一相比较方案二则使用了大量的数字元器件,原理电路复杂,硬件调试麻烦。基于上述比较,所以选择了方案一。
2、测量原理
待测信号,通过放大器放大后,进入整形器加以整形变为相同频率的矩形波,并送入单片机的某个I/O口。图3说明了测量低频矩形波周期的原理。
图3 测量低频矩形波周期的原理图
上升沿打开定时器
下降沿读取定时器值并保存
下一个上升沿关闭定时器,读取定时器值并保存
如图3所示,当脉冲的上升沿来临时,将定时器打开;紧接着的下降沿来临时,读取定时器的值,假设定时时间为t1;下一个上升沿来临时关闭定时器,读取定时器的值,假设定时时间为t2。t1即为1个周期内高电平的时间,也即脉冲宽度,t2即为脉冲的周期。t1/t2即为占空比,1/t2即为频率。
较高频率的测量采用计数器和定时器的功能。待测信号经过放大整形后送入主门的输入端,每来一个脉冲,计数值自动加一。若在一定的时间间隔T内累计脉冲的次数为N,则频率的表达式为:
(公式2)
图4说明了在一定时间间隔内累计脉冲次数的原理。
时基信号
待测信号
丢失(少计一个脉冲) 计到N个脉冲 多余(比实际多出了0.X个脉冲)
图4 测量低频矩形波周期的原理图
如图4所示,测量的脉冲个数的误差会在±1之间,所测频率的误差最大为
(公式3)
显然,减小误差的方法,就是增大N。由此可见,此法适合于测高频信号。
A/D
模块
确定频率大致范围
3、总体设计
选择分频比
待 测
信 号
图5 频率计总体设计框图
放大整形电路
分频
电路
单片机STC89
C52
1602
显示
电路
频率计总体设计共包括六大模块:单片机控制模块、电源模块、放大整形模块、分频模块、显示模块及A/D模块。各模块作用如下:
1、 单片机模块:以STC89C52单片机为控制核心,来完成待测信号的计数和显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。单片机STC89C52内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
2、放大整形模块:放大电路是对幅度较小的待测信号进行放大,对幅度较大的待测信号进行限幅。整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。
3、分频模块:考虑单片机外部计数,使用12 MHz时钟时,最大计数速率为500 KHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。用两片74LS161芯片分别进行外部十分频、百分频。
4、显示模块:显示电路采用LCD1602液晶显示,不仅可以显示十进制数字,还可以显示字符,用以表示待测物理量的单位。
5、A/D模块:采用TLC549芯片,通过调节电位器改变输给TLC549的电压,采集其输出的数字量转化成其对应的延时时间,实现显示刷新时间1~5秒连续可调的功能。
6、电源模块:为整个系统提供合适又稳定的电源,主要为单片机、放大整形电路以及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。
4、硬件设计
4.1、单片机模块
STC89C52是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:8K字节的程序存储器,128字节的RAM,32条I/O线,3个定时器,8个中断,软件设置低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范围内正常工作。
复位电路和时钟电路是维持单片机最小系统运行的基本模块。
有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。
高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能[6]。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。并联2个30pF陶瓷电容帮助起振。STC89C52单片机最小系统如图6所示。
AD_CLK
AD_CS
AD_DO
信号输入
Clear 分频器清零
LCD1602
D0~D7
信号输入
Key4 占空比
Key2 周期
Addr2
Addr0
Key3 脉宽
Key1 频率
Addr1
LCD_E
LCD_RS
图6 单片机最小系统图
4.2、放大整形模块
由于输入的信号可以是正弦波,而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路。在测量的时候,首先通过整形电路将正弦波转化成矩形波。在整形之前由于不清楚待测信号的强弱的情况,所以在通过整形之前通过放大衰减处理。幅度较小的信号进行放大,幅度较大的信号进行限幅。
放大电路放大整形电路采用高频晶体管S9018与74LS00等组成。其中S9018为NPN型高频小功率三极管,组成放大器将输入频率为的周期信号如正弦波及方波等波形进行放大。与非门74LS00构成施密特触发器,它对放大器的输出波形信号进行整形,使之成为矩形脉冲。具体放大整形电路如图7所示。
图7 放大整形电路图
4.3、分频模块
本频率计的设计以STC89C52单片机为核心,利用他内部的定时/计数器完成待测信号周期/频率的测量。单片机STC89S52内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 MHz时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12 MHz时钟时,最大计数速率为500 kHz),因此采用74LS161进行外部十分频使测频范围达到5MHz,十分频使测频范围达到20MHz。为了测量提高精度,当被测信号频率值较低时,直接使用单片机计数器计数测得频率值;当被测信号频率值较高时采用外部十分频或百分频后再计数测得频率值。这两种情况使用74LS151进行通道选择,由单片机先简单测得被测信号是高频信号还是低频信号,然后根据信号频率值的高低进行通道的相应导通,继而测得相应频率值。
图8 74LS161引脚图
表1 74LS161功能表
清零
R
预置
PE
使 能
CEP CET
时钟
CP
预置数据输入
A B C D
输出
Q0 Q1 Q2 Q3
L
×
× ×
×
× × × ×
L L L L
H
L
× ×
上升沿
A B C D
A B C D
H
H
L ×
×
× × × ×
保 持
H
H
× L
×
× × × ×
保 持
H
H
H H
上升沿
× × × ×
计 数
从74LS161功能表功能表中可以知道,当清零端R=“0”,计数器输出Q3、Q2、Q1、Q0立即为全“0”,这个时候为异步复位功能。当R=“1”且PE=“0”时,在CP信号上升沿作用后,74LS161输出端Q3、Q2、Q1、Q0的状态分别与并行数据输入端D3、D2、D1、D0的状态一样,为同步置数功能。而只有当R=PE=CEP=CET=“1”、CP脉冲上升沿作用后,计数器加1。74LS161还有一个进位输出端CO,其逻辑关系是CO= Q0·Q1·Q2·Q3·CET。合理应用计数器的清零功能和置数功能,一片74LS161可以组成16进制以下的任意进制分频器。
图9 74LS151引脚图
表2 74LS151功能表
A2
A1
A0
S
Q
X
X
X
1
0
0
0
0
0
D0
0
0
1
0
D1
0
1
0
0
D2
0
1
1
0
D3
1
0
0
0
D4
1
0
1
0
D5
1
1
0
0
D6
1
1
1
0
D7
数据选择端(A2A1A0)按二进制译码,以从8个数据(D0~D7)中选取1个所需的数据。只有在选通端S为低电平时才可选择数据。
根据以上分析,采用74LS161和74LS151设计分频电路如图9所示。
clear P1^2
清零端
clear P1^2
清零端
输入
D2 百分频
D1 十分频
D0 不分频
(a)
D2 百分频
D1 十分频
D0 不分频
P2^4 addr2
P2^3 addr1
P2^2 addr0
P3^5
(b)
图10 分频模块电路图
4.4、显示模块
图11 显示模块电路图
表3 开关、发光二级管、测量功能的对应关系
当其中一个开关按下时,其对应的那个颜色的发光二极管亮起,LCD1602液晶显示相应的测量功能及结果。
开关
发光二级管颜色
测量功能
SW1
红
频率
SW2
黄
周期
SW3
绿
脉宽
SW4
蓝
占空比
4.5、A/D模块
图12 A/D模块电路图
图13 TLC549时序图
TLC549均有片内系统时钟,该时钟与I/O CLOCK是独立工作的,无须特殊的速度或相位匹配。其工作时序如图2所示。
当CS为高时,数据输出(DATA OUT)端处于高阻状态,此时I/O CLOCK不起作用。这种CS控制作用允许在同时使用多片TLC549时,共用I/O CLOCK,以减少多路(片)A/D并用时的I/O控制端口。
一组通常的控制时序为:
(1)、将CS置低。内部电路在测得CS下降沿后,再等待两个内部时钟上升沿和一个下降沿后,然后确认这一变化,最后自动将前一次转换结果的最高位(D7)位输出到DATA OUT端上。
(2)、前四个I/O CLOCK周期的下降沿依次移出第2、3、4和第5个位(D6、D5、D4、D3),片上采样保持电路在第4个I/O CLOCK下降沿开始采样模拟输入。
(3) 、接下来的3个I/O CLOCK周期的下降沿移出第6、7、8(D2、D1、D0)个转换位。
(4) 、最后,片上采样保持电路在第8个I/O CLOCK周期的下降沿将移出第6、7、8(D2、D1、D0)个转换位。保持功能将持续4个内部时钟周期,然后开始进行32个内部时钟周期的A/D转换。第8个I/O CLOCK后,CS必须为高,或I/O CLOCK保持低电平,这种状态需要维持36个内部系统时钟周期以等待保持和转换工作的完成。如果CS为低时I/O CLOCK上出现一个有效干扰脉冲,则微处理器/控制器将与器件的I/O时序失去同步;若CS为高时出现一次有效低电平,则将使引脚重新初始化,从而脱离原转换过程。
(5) 、在36个内部系统时钟周期结束之前,实施步骤(1)-(4),可重新启动一次新的A/D转换,与此同时,正在进行的转换终止,此时的输出是前一次的转换结果而不是正在进行的转换结果。
若要在特定的时刻采样模拟信号,应使第8个I/O CLOCK时钟的下降沿与该时刻对应,因为芯片虽在第4个I/O CLOCK时钟下降沿开始采样,却在第8个I/O CLOCK的下降沿开始保存。
若TLC每次采样值为tmp,则其对应的延时时间为
(秒) (公式4)
tmp的取值为0~255,delay的取值则为1~5秒,编写相应的程序可实现显示刷新时间1~5秒连续可调的功能。
4.6、电源模块
电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用LED进行电源工作状态指示。LM78XX、LM79XX系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜,因此使用LM7805稳压芯片进行5V的电源电路设计,LM7905稳压芯片进行-5V的电源电路设计。具体的±5V电源电路如下图14所示。
图14 电源模块电路图
5、软件设计
软件设计方案为:
(1)、频率初始值设为0,执行第(2)步。
(2)、先用T0定时器测量放大整形后的脉冲的周期,并计算出频率,执行第(3)步。
(3)、判断频率的大小:若频率小于1Hz且大于0,执行第(5)步;若频率大于或等于1Hz,执行第(4)步;若频率为0,再用T0定时器测量周期,在这种情况下读取50个上升沿,执行第(5)步。
(4)、若频率在1Hz~500KHz范围内,不分频;若频率在500KHz~5MHz范围内,十分频:若频率在5MHz~20MHz范围内,百分频。开启定时器T2和计数器T1,定时1秒钟,脉冲次数即为频率。执行第(5)步。
(5)、进入键盘检测函数,等待某个按键按下显示对应的测量结果。
开 始
测50个上升沿
T0定时器测周期,并计算出频率f
Y
f=0?
N
f<20000000?
f<5000000?
N
N
f<500000?
N
f<1?
Y
Y
Y
add0=0;
add1=1;
add2=0;
百分频
add0=1;
add1=0;
add2=0;
十分频
add0=0;
add1=0;
add2=0;
不分频
Y
开启T1计数器和T2定时器
图15 软件流程图
LCD1602显示
6、 仿真结果
图16 输入220mV、100Hz正弦波测量结果
6.1、频率测量结果
待测信号为频率100Hz、幅度从0.1V~10V变化的正弦波:
幅度/V
0.21
0.5
1
2
5
6
8
10
测量结果/Hz
100
100
100
100
100
100
100
100
误差/%
0
0
0
0
0
0
0
0
待测信号为幅度0.5V、频率从0.1Hz~20MHz变化的正弦波:
频率/Hz
0.2
1
10
100
1k
10k
100k
1M
测量结果/Hz
0.2
1
10
100
1k
10k
100k
1M
误差/%
0
0
0
0
0
0
0
0
6.2、周期测量结果
待测信号为频率100Hz、幅度从0.1V~10V变化的方波:
幅度/V
0.21
0.5
1
2
5
6
8
10
测量结果/ms
10
10
10
10
10
10
10
10
误差/%
0
0
0
0
0
0
0
0
待测信号为幅度0.5V、频率从0.1Hz~20MHz变化的方波:
频率/Hz
0.25
1
10
100
1k
10k
100k
1M
测量结果/s
4.0
1.0
0.1
0.01
1.0m
0.1m
0.01m
1.0μ
误差/%
0
0
0
0
0
0
0
0
6.3、脉宽测量结果
待测信号为频率100Hz、占空比50%、幅度从0.1V~10V变化的脉冲波:
幅度/V
0.21
0.5
1
2
5
6
8
10
测量结果/ms
5
5
5
5
5
5
5
5
误差/%
0
0
0
0
0
0
0
0
待测信号为0.5V、占空比50%、频率小于10KHz的脉冲波:
频率/Hz
0.25
1
10
100
1k
10k
100k
1M
测量结果/s
2.0
0.5
0.05
0.005
0.5m
0.05m
0.005m
0.5μ
误差/%
0
0
0
0
0
0
0
0
6.4、占空比测量结果
待测信号为频率100Hz、占空比50%、幅度从0.5V~5V变化的脉冲波:
幅度/V
0.5
1
1.5
2
2.5
3
4
5
测量结果/%
50
50
50
50
50
50
50
50
误差/%
0
0
0
0
0
0
0
0
待测信号为0.5V、占空比50%、频率从1Hz~10KHz变化的脉冲波:
频率/Hz
1
5
10
50
100
500
1k
10k
测量结果/%
50
50
50
50
50
50
50
50
误差/%
0
0
0
0
0
0
0
0
待测信号为0.5V、频率100Hz、占空比从5%~95%变化的脉冲波:
占空比/%
5
10
20
50
80
85
90
95
测量结果/%
50
50
50
50
50
50
50
50
误差/%
5
10
20
50
80
85
90
95
6.5、仿真结果分析
本数字频率计可以测量幅度0.2V~10V、频率0.25Hz~20MHz的方波、正弦波的频率、周期,幅度:0.1V~10V、脉冲宽度≥100μs的脉冲波的脉宽,幅度0.5V~5V、频率1Hz~10kHz、占空比5%~95%的脉冲波的占空比,测量误差均较小。
图17 简易数字频率计电路图
附 录
注:仿真电路图、源程序见实验报告电子版。
15
展开阅读全文