内容正文:
在对各种非电学物理量进行测量时,常通过传感器将其转换为电学量,为了便于信号的传输,往往将这些电学量调制为频率信号,通过测量这些频率可以间接测量相关的非电学物理量。
本任务是利用MCS-51单片机的T0、T1定时/计数功能,完成对低于200 kHz的脉冲信号的频率测量,测量的结果通过数码管显示出来。
任务提出
任务三 简易频率计
频率计的功能,是测出1 s内的输入信号的周期个数,再用数字的方式显示出来,也就是需要完成定时1 s、对输入的脉冲计数和数字显示的硬件电路和相应程序的设计。
任务分析
MCS-51单片机有两个定时器,可分别用做定时和对单片机外部的脉冲计数,这两个定时器是单片机内部功能电路,不需要外部的硬件电路。需要说明的是,在实用的频率测量电路中,往往需要对输入的被测量信号进行放大、整形等各种处理,同时还有高阻输入等要求。本任务作为单片机功能演示,直接向单片机引脚输入被测量的信号。
要显示高达200 kHz的频率,即显示的数据达到6位数,选择数码管动态显示电路具有较好的性价比。
一、定时器的计数方式
当定时/计数器工作在计数状态下,是对来自P3.4或P3.5引脚的输入脉冲信号进行计数。单片机内工作在计数状态下的定时器,最大计数的频率值为fosc/24。例如,单片机的工作频率fosc=12 MHz,则定时器对外部脉冲的最大计数频率为12MHz/24=500 kHz。对于频率大于此值的脉冲,需要在计数前面加上分频器,分频后再进行计数。
相关知识
二、定时器T2简介
8052是8051单片机的增强版本。在8052中,除了RAM扩展到256 B、ROM扩展到8 KB外,还增加了定时器T2。
定时器T2由特殊功能寄存器T2CON设置其工作于定时、计数、波特率发生及可编程时钟等不同方式,由T2MOD设置其启动(停止)和向上/向下计数的工作模式。
定时器T2工作于可编程时钟方式时,将从P1.0引脚输出占空比为50%方波,其工作框图如图所示。
定时器T2设置为可编程时钟输出方式的电路框图
一、硬件设计
根据任务分析,频率计由单片机内部的两个定时器分别完成定时和对外部脉冲计数的工作,以及控制6位数码的显示电路。
任务实施
为了系统的功能测试,选择AT89S52单片机为系统控制芯片,使用其中的定时器T2(标准51芯片没有T2)输出脉冲作为系统的测试信号,由于T2可工作在硬件自动重装的可编程时钟输出方式,即设置好其工作方式后,只需要将重装的初始值加在RCAP2H和RCAP2L中并启动其工作就可完成脉冲输出的全部设置。T2工作所涉及的所有电路都在单片机AT89S52内部,不需要增加额外的硬件电路。
因定时和计数都不需要外部的硬件电路,即整个频率计的硬件电路由单片机最小系统和6位数码的动态显示电路构成。
其最小系统包括复位电路和时钟电路,其参数选择原则见课题一相关说明,本任务中选择系统晶振频率为11.059 2MHz。
本任务中选择两只4位共阴极数码管构成动态显示电路,采用P2输出电平控制三极管反相驱动各位数码管的公共端,用1 kΩ的排阻作为数码管各段的上拉电阻且用P0驱动。本任务对应的硬件电路如图所示。
频率计电路原理图
二、软件设计
通过任务分析,要求单片机完成三个实时任务,分别是:对输入信号周期进行计数、1 s定时,动态显示,以及频率计算及频率转换为显示数据。要同时完成三个实时任务,只有使用中断的方式进行任务分割,可以用定时器T0、T1及其中断服务程序和主程序来分别完成每一个任务。
其中,动态显示因人的视觉不敏感,对实时性要求最低,因而使用主程序完成,同时将数据的运算也放在主程序中。剩下的两个任务安排分别为:用T0完成输入信号的计数,用T1完成1 s的定时。
1.定时1 s
由本课题中的任务二中可知,T1工作在定时状态下,最大定时时间约为65 ms,达不到1 s的定时,所以采用定时50 ms,共定时20次,即可完成1 s的定时功能。
2.输入的脉冲计数
T0工作在计数状态下,对输入的频率信号进行计数。
3.主程序
由于定时1 s和对外部脉冲进行计数的任务都由定时器及中断服务程序完成,所以在主程序中,除了对定时/计数器及相关变量进行初始化外,主要就是将计数的结果进行显示。
三、Proteus仿真
参照前面任务介绍的方法和步骤进行Proteus仿真。
在Proteus中,AT89C52采用MCS8051的仿真模型,故T2在仿真中不能实现功能,因此在仿真电路中,用CLOCK信号源产生脉冲,这里将其输出频率设置为1 000 Hz。当然,在实践中也可以将其设置为其他频率,在数码管上将显示对应的数字。频率计的仿真效果如图所示。
简易频率计的仿真效果图
$