中文摘要:
介绍了以单片机89C51 为核心设计的一种频率计。在设计中充分应用单片机的数学运算和控制功能, 该频率计实现了频率测量量程的自动切换, 具有较高的测量精度和较短的系统反应时间。
英文摘要: Designed a embedded cymometer based on a microcontroller1 By taking full use of the processor 89C51 it can switch
automatically among different range to meet the needs for hign accuracy and short measuring time1
1 引 言
本
频率计的设计以AT89C51
单片机为核心, 利
用他内部的定时/计数器完成待测信号周期/频率的测
量。
单片机AT89C51 内部具有2 个16 位定时/计数
器, 定时/计数器的工作可以由编程来实现定时、计数
和产生计数溢出时中断要求的功能。在定时器工作方
式下, 在被测时间间隔内, 每来一个机器周期, 计数
器自动加1 (使用12MHz 时钟时, 每1us 加1) , 这
样以机器周期为基准可以用来测量时间间隔。在计数
器工作方式下, 加至外部引脚的待测信号发生从1 到
0 的跳变时计数器加1, 这样在计数闸门的控制下可以
用来测量待测信号的频率。外部输入在每个机器周期
被采样一次, 这样检测一次从1 到0 的跳变至少需要
2 个机器周期(24 个振荡周期) , 所以最大计数速率为
时钟频率的1/24 (使用12MHz 时钟时, 最大计数速率
为500 kHz)。定时/计数器的工作由运行控制位TR 控
制, 当TR 置1, 定时/计数器开始计数; 当TR 清0,
停止计数。
2 频率计的量程自动切换
使用计数方法实现
频率测量时, 外部的待测信号
为
单片机定时/计数器的计数源, 利用软件延时程序实
现计数闸门。
频率计的工作过程为: 定时/计数器的计
数寄存器清0, 运行控制位TR 置1, 启动定时/计数器
工作; 运行软件延时程序, 同时定时/计数器对外部的
待测信号进行计数, 延时结束时TR 清0, 停止计数。
从计数寄存器读出测量数据, 测量数据在完成数据处
理后, 由显示电路显示测量结果。
频率计测量量程自动转换的过程由
频率计测
量量程的高端开始。由于只显示3 位有效数字, 测
量量程的高端计数闸门不需要太宽, 例如在进入
计数器的信号频率范围在1010~ 9919 kHz, 计数
闸门宽度为10ms 即可。
频率计开始工作时使用
计数方法实现
频率测量, 并使计数闸门宽度为最窄, 完
成测量后判断测量结果是否具有3 位有效数字, 如果
成立, 将结果送去显示, 完成测量工作; 否则将计数
闸门宽度扩大10 倍, 继续进行测量判断, 直到计数闸
门宽度达到1 s, 这时对应的进入
单片机的待测信号频
率范围为100~ 999 Hz。如果测量结果仍不具有3 位
有效数字,
频率计则使用定时方法实现
频率测量。
4 系统软件设计
频率计开始工作或者完成一次
频率测量, 系统软
件都进行测量初始化。测量初始化模块设置堆栈指针
(SP)、工作寄存器、中断控制和定时/计数器的工作方
式。定时/计数器的工作首先被设置为计数器方式, 即
用来测量信号频率。首先定时/计数器的计数寄存器清
0, 运行控制位TR 置1, 启动对待测信号的计数。计
数闸门由软件延时程序实现, 从计数闸门的最小值
(即测量频率的高量程) 开始测量, 计数闸门结束时
TR 清0, 停止计数。计数寄存器中的数值经过数制转
换程序从十六进制数转换为十进制数。判断该数的最
高位, 若该位不为0, 满足测量数据有效位数的要求,
测量值和量程信息一起送到显示模块; 若该位为0, 将
计数闸门的宽度扩大10 倍, 重新对待测信号的计数,
直到满足测量数据有效位数的要求。
6 结 语
介绍了一种基于
单片机89C51 制作的
频率计的设
计方法, 所制作的
频率计需要外围器件较少, 适宜用于嵌
入式系统。该
频率计应用周期测量和相应的数学处理实
现低频段的
频率测量, 因此很容易扩展实现信号的周期
测量和占空比测量。该
频率计被应用于笔者设计的“高频
实验装置”之中, 用来对LC 振荡器和RC 振荡器输出信
号的频率稳定度进行测量, 取得良好的应用效果。