基于51单片机的数字频率计设计 下载本文

内容发布更新时间 : 2024/12/23 8:40:44星期一 下面是文章的全部内容请认真阅读。

.

基于51单片机的数字频率计

一、 实验内容

1.1数字频率计概述

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

本数字频率计将采用定时、计数的方法测量频率,采用四位LED数码管动态显示4位数。测量范围从1Hz—10kHz的正弦波、方波、三角波。用单片机实现自动测量功能。

1.2频率测量仪的设计思路与频率的计算

频率测量仪的设计思路主要是:设置单片机T1为计数器模式,对输入信号进行计数,T0设置为定时器模式,定时时间为1秒,则计数器所计数值即为被测信号频率。 1.3 基本设计原理

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以在单位时间内对被测信号上升沿计数的方法对正弦波、方波、三角波的频率进行自动的测量。如果被测信号频率超过量程,则有警报灯闪烁。所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。 1.4 频率计性能参数设计 量程: 0-10KHz 波形: 方波 输入信号电压:5V

.

.

二、数字频率计的硬件结构设计

2.1 系统硬件的构成

本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有电源电路、复位电路、显示器,报警电路等器件,如下图所示:

数码管显示 电源电路 单 片 数码管驱动电路 按键电路

机 报警电路 图一 数字频率计功能模块

2.2 AT89C51单片机引脚说明

在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结

合数码管,发光二极管,按键开关构成控制及显示模块。在试验中选用P1.2,P1.3,P1.4端口分别控制数据和时钟信号的输入实现频率的动态显示。P口引脚外接发光二极管作为报警电路。P3.5引脚作为被测信号的输入引脚。

2.3 数码管显示电路

本实验使用四位共阳极数码管,使用两片74HC595作为数码管驱动通过P1.2,P1.3,P1.4端口分别控制数据和时钟信号的输入实现频率的动态显示。

三、实验原理图

.

.

图二 数码管电路

图三 数码管驱动电路

图五 超量程报警电路

.

.

图六 单片机及复位电路

四、实验记录

(1)程序设计调试过程记录

本次实验的程序框架都在实验的预习和准备中完成,其中包括延时函数编写,显示函数编写,定时器0初值计算,频率值的计算,定时器计数器的初始化和中断服务程序的编写。

但是由于预习和设计时针对的数码管硬件连接方式不同,在预习时针对的数码管为74HC245和74HC138两个芯片控制一组四位共阳极数码管的动态显示,其中74HC245控制数码管显示的数值,74HC138控制数码管显示位数,这种硬件连接方式的驱动程序编写较为简单,但缺点是需要占用单片机两组I/O口,使得单片机利用率降低。而实验所用的开发板也带有两组四位共阳极数码管,但他们是由两块74HC595控制,只需要用三个I/O口即可实现8位数码管的显示控制,大大提高了单片机端口的利用率,但程序编写较为复杂,且需要进行时序控制,逻辑也较为复杂。在这次试验中,该显示程序的编写和调试占用了很多时间。

.

.

在进行定时器模块设计时,由于定时时间较长,所以采用了方式1(16位计数器),将一次循环时间定为50ms,循环20次即为1s的时间。由于定时器0的工作方式一需要重装初值,因此在多次循环后会导致定时时间不准确,这会使最后计算得到的频率值产生误差,且频率越高误差越大(实验记录数据会在后边给出)。 (2)实验数据记录 输入波形:方波; 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 输入信号幅值:5V;

测量频率/Hz 10 50 110 220 330 440 550 660 770 880 990 1100 1650 2200 2750 3300 5500 8800 绝对误差/Hz 0 0 10 20 30 40 50 60 70 80 90 100 150 200 250 300 500 800 相对误差 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 输入频率/Hz 10 50 100 200 300 400 500 600 700 800 900 1000 1500 2000 2500 3000 5000 8000 .