1、1 第一章 前言 频率测量是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。 1.1 频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。 它是一种用十进制 数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号、 方波信号及其他各种单位时间内变化的物理量。 在进行模拟、数字电路的设计、安装、调试过程中, 由于其使用十进制数显示,测量迅 速,精确度高,显示直观, 经常要用到频率计。 传统的频率计采用测频法测
2、量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点 1。 1.2 频率计发展与应用 在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。单片机已成为电子系统的中最普遍的应用。 单片机作为微型计算机的一个重要分支,其应用范围 很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广
3、泛。 其中以 AT89S52 为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要 2。 1.3 频率计设计内容 利用 电源 、单片机、 分频电路及数码管显示 等模块 , 设计一个简易的 频率计能够粗略的 测量出被测信号的频率 。 参数要求如下: 1测量范围 10HZ 2MHZ; 2 用四位数码管显示测量值; 2 第二章 系统总体 方案设计 2.1 测频的原理 测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”。 被测信号,通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端 3。由晶体振荡器产生的基频,按十进制分频得出的分频
4、脉冲,经过基选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。若在一定的时间间隔 T 内累计周期性的重复变化次数 N,则频率的表达式为式: Nfx=T ( 1) 图 1说明了测频的原理及误差产生的原因。 时基信号 待测信号 丢失(少计一个脉冲) 计到 N 个脉冲 多余(比实际多出了 0.x 个脉冲) 图 1 测频原理 在图 1中,假设时基信号为 1KHZ,则用此法测得的待测信号为 1KHZ 5=5KHZ。但从图中可以看出,待测信号应该在 5.5KHZ 左右,误差 约有 0.5/5.5 9.1
5、%。这个误差是比较大的,实际上,测量的脉冲个数的误差会在 1 之间。假设所测得的脉冲个数为 N,则所测频率的误差最大为 =1 ( N-1) *100%。显然,减小误差的方法,就是增大 N。本频率计要求测频误差在 1以下,则 N应大于 1000。通过计算,对 1KHZ 以下的信号用测频法,反应的时间长于或等于 10S,。由此可以得出一个初步结论:测频法适合于测高频信号。 频率计数器严格地按照 Nf=T 公式进行测频 4。由于数字测量的离散性,被测频率在计数器中所 记进的脉冲数可有正一个或负一个脉冲的 1 量化误差,在不计其他误差影响的情况下,测量精度将为: 3 1()fA N 应当指出,测量频率
6、时所产生的误差是由 N 和 T 俩个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面 T 越稳定时,精度越高。为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加 T 来满足,为了增加 T 的稳定度,只需提 高晶体振荡器的稳定度和分频电路的可靠性就能达到。 上述表明,在频率测量时,被测信号频率越高,测量精度越高。 2.2 总体思路 频率计是我们经常会用到的实验仪器之一 , 频率的测量实际上就是在 单位 时间内对信号进行计数 ,计数值就是信号频率。 本文介绍了一种基于 单片机AT89S52 制作的频率计的设计方法 ,所制作的频率计 测量比较高的频
7、率采用外部十分频,测量较低频率值时采用单片机直接计数,不进行外部分频 。该频率计实现 10HZ2MHZ 的 频率测量 ,而且可以实现量程自动切换功能,四位共阳极动 态显示测量结果 ,可以测量正弦波、三角 波及方波等各种波形的频率值 。 4 第三 章 硬件电路具体设计 根据系统设计的要求,频率计 实际需要设计的硬件系统主要包括以下几个部分 : AT89S52 单片机最小系统 模块、电源模块、放大整形模块、 分频模块及显 示模块,下面将分别给予介绍 。 3.1 AT89S52主控制器 模块 3.1.1 AT89S52 的介绍 8位 单片机是 MSC-51系列产品升级版 5,有世界著名半导体公司 A
8、TMEL 在购买 MSC-51设计结构后,利用自身优势技术 (掉电不丢数据)闪存生产技术对旧技术进行 改进和扩展,同时使用新的 半导体生产工艺,最终得到成型产品。AT89S52 片内集成 256 字节程序运行空间、 8K 字节 Flash 存储空间,支持最大64K 外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M 之间。片内资源有 4 组 I/O 控制端口、 3 个定时器、 8 个中断、软件设置低能耗模式、看门狗和断电保护。可以在 4V 到 5.5V 宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。使用双列直插 DIP-40 的封装。 AT89S
9、52 引脚如下图 3 所示。 5 3.2 引脚功能 VCC:电源电 压 ; GND:地 ; P0 口: P0 口是一个 8 位漏极开路的双向 I/O 口。作为输出口,每位能驱动8个 TTL 逻辑电平。对 P0端口写“ 1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时, P0 口也被作为低 8 位地址 /数据复用。在这种模式下, P0具有内部上拉电阻。在 flash 编程时, P0 口 用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻 7。 P1 口: P1口是一个具有内部上拉电阻的 8位双向 I/O 口, P1 输出缓冲器能驱动 4个 TTL 逻辑电平。对 P
10、1 端口写“ 1”时,内部上拉电阻把端口拉 高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。此外, P1.0 和 P1.2 分别作定时器 /计数器 2 的外部计数输入和定时器 /计数器 2 的触发输入, P1 口功能具体如 表 1所示。在 flash 编程和校验时, P1 口接收低 8位地址字节。 表 1 P1 口的第二种功能说明表 引脚号 第二功能 P1.0 T2(定时器 /计数器 T2 的外部计数输入 ),时钟输出 P1.1 T2EX(定时器 /计数器 T2 的捕捉 /重载触发信号和方向控制 ) P1.5 MOSI(在系统编程用 ) P1.6 M
11、ISO(在 系统编程用 ) P1.7 SCK(在系统编程用 ) P2 口: P2 口是一个具有内部上拉电阻的 8位双向 I/O 口, P2 输出缓冲器能驱动 4 个 TTL 逻辑电平。对 P2 端口写“ 1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用 16 位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中, P2 口使用很强的内部上拉发送 1。 6 第四 章 系统的软件设计 系统软件设计主要采用模块化设计,叙述了各个模块的程序流程图,并介绍了软件 Keil 和 Proteus 的使用
12、方法和调试仿真。 4.1 软件模块设计 系统软件设计采用模块化设计方法。整个系统由初始化模块,信号频率测量模块,自动量程转换和显示模块等模块组成。系统软件流程如图 19 所示。 频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。测量初始化模块设置堆栈指针( SP)、工作寄存器、中断控制和定时计数器的工作方式。定时计数器的工作首先被设置为计数器方式,即用来测量信号频率 15。 开 始系 统 初 始 化频 率 测 量频 率 是 否 超 过 1 K H z硬 件 十 分 频计 数 器 计 数测 频 率 值测 量 数 据显 示NY图 19 系统软件流程总图 首先定 时计数器的计数寄存器清
13、0,运行控制位 TR 置 1,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时 TR 清 0,停止计数。计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。判断该数的最高位,若该位不为 0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为 0,将计数闸门的宽度扩大 10 倍。 7 4.2 应用软件简介 此设计需要在 Keil软件平台上完成程序的调试 ,在 Proteus软件平台上完成仿真显示。因此介绍如何使用 Keil和 Proteus 进行软件的仿真。 Keil 简介 Keil 软件是目前最流行
14、开发系列单片机的软件, Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境( uVision)将这些部份组合在一起。而 Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机 CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电 路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象 16。 ( 1)建立工程文件 点击“ Pro
15、ject-New project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字 ,点击“保存”按钮,出现第二个对话框,按要求选择目标器件片。建立新文件并增加到组。分别设置“ target1”中的“ Target,output,debug”各项,使程序汇编后产生 HEX 文件。 ( 2)汇编,调试系统程序 Keil 单片机模拟调试软件内集成了一 个文本编辑器,用该文本编辑器可以编辑源程序。在集成开发环境中选择菜单“ File New.”、单击对应的工具按钮或者快捷键 Ctrl +N 将打开一个新的文本编辑窗口,完成汇编语言源文件的输入,并且完成源程序向当前工
16、程的添加。 然后在集成开发环境中选择菜单“ File Save As.”可以完成文件的第一次存储。注意,汇编语言源文件的扩展名应该是“ ASM”,它应该与工程文件存储在同一文件夹之内。在完成文件的第一次存储以后,当对汇编语言源文件又进行了修改,再次存储文件则应该选择菜单“ File Save” 、单击对应的工具按钮或者快捷键 Ctrl +S 实现文件的保存。 接着的工作需要把汇编语言源文件加入工程之中。选择工程管理器窗口的子目“ Source Group 1”,再单击鼠标右键打开快捷菜单。在快捷菜单中选择“ Add File to Group Source Group 1”,加入文件对话框被打
17、开。在这个对话框8 的“查找范围( I)”下拉列表框中选择存储汇编语言源文件的文件夹,在“文件类型( T)” 下拉列表框选择“ Asm Source file( *.a*; *.src)”,这时存储的汇编语言源文件将显示出来 。双击要加入的文件名或者选择要加入的文件名再单击“ Add”按钮即可完成把汇编语言源文件加入工程。文件加入以后,加入文件对话框并不消失,更多的文件也可以利用它加入工程。如果不需要加入其它文件,单击“ Close”按钮可以关闭加入文件对话框。这时工程管理窗口的文件选项卡中子目录“ Source Group 1”下出现一个汇编语言源文件。 需要注意,当把汇编语言源文件加入工程
18、但还没有关闭加入文件对话框,这时有可能被误认为文件没有成功地加入工程而再次进行加入操作,系统将显示所需的文件已经加入的提示。在这种情况下,单击提 示框中的“确定”按钮,再单击“ Close”按钮可以关闭加入文件对话框。 ( 3) 编译源程序,出现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。 protues 简介 protues是 Labcenter公司出品的电路分析、实物仿真系统,而 KEIL是目前世界上最好的 51单片机汇编和 C语言的集成开发环境。他支持汇编和 C的混合编程,同时具备强大的软件仿真和硬件仿真功能 17。 Protues能够很方便的和 KEIL、Matlab I
19、DE等编译模拟软件结合。 Proteus提供了大量的元件库有 RAM, ROM,键盘,马达, LED, LCD, AD/DA,部分 SPI器件,部分 IIC器件,它可以仿真单片机和周边设备,可以仿真 51系列、 AVR, PIC等常用的 MCU,与 keil和 MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真。 这里我将 keil 和 Protues 两个软件的快速集成起来使用。 ( 1)首 先将 keil 和 Protues 两个软件安装好。 ( 2) 然后在 C: Program FilesLabcenter EletronicsProtues 6 Profession
20、alMODELS(我的 Protues 是安装 C 盘里面的 )目录下的 VDM51.DLL 动态连接库文件复制到 C:KEILC51BIN 目录下面(我的 keil 也安装在 C 盘)这个文件将在 keil 的 debug 设置时用到。 ( 3) 打开 protues 软件,新建一文件将硬件原理图绘入图中。 ( 4) 将 KEIL 生成的 HEX 文件下载入单片机中,点击“开始”进行仿真。 ( 5) 在 keil 中进行 debug,同时在 proteus 中查看直观的结果(如 LCD 显示 )。这样就可以像使用仿真器一样调试程序。利用 Proteus 与 Keil 整合进行 9 第五 章
21、频率计的系统调 试 常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管 ,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。根据管脚资料,可以判断使用的是何 种 接口类型 14.两种数码管内部原理如图 16 所示。 图 16 两种数码管内部原理图 LED 数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。所以它的输入端在 5 V 电源或高于 TTL 高电平 (3.5 V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。 频率值显示电路 数码 管电路设计不加三极管驱动时,使用 4位数码管进行频率值
22、显示,如果选择共阴极数码管显示,则需要 8 个三极管进行驱动,因此选用共阳极数码管进行动态显示,具体数码管设计电路如图 17 所示。 A B C DEFGDP1 2 3 4U?7-LEDQ?8550Q?8550Q?8550Q?85504K7R?4K7R?4K7R?4K7R?5VP20 P21 P22 P23 P24 P25 P26 P27P00 P01 P02 P03图 17 数码管显示电路 10 5.2 软件调试 Pouteus 软件调试 根据系统设计要求,进行 Keil 和 Proteus 系统仿真,不断调试程序,直到符合功能要求。 Proteus 总体仿真图 29 所示。 图 29 频率计整体仿真图 功能调试 当测量频率值小于 1KHz 以下时,数码管显示 频率 值,并红色 LED 灯亮,作为 Hz 档单位指示。例如输入信号 123Hz,仿真显示如图 30所示。 图 30 HZ 档频率仿真