《基于51单片机数字频率计的设计(共20页).doc》由会员分享,可在线阅读,更多相关《基于51单片机数字频率计的设计(共20页).doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上摘 要 在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了基于通用集成电路设计了一个简单的数字频率计的过程。关键词:频率,信号,周期AbstractIn electro
2、nic technology,the frequency is the most basic one of the parameters,andwith a number of electrical parameters of the measurement program,measurement more important,There are several ways of mesuring frequency,in which electronic counter the frequency with high precision,easy to use ,quick measureme
3、nts,and is easy to realize the advatages of automaion of measurement process is an important means of frequency measurement.Electronic Counter Frequency Measurement There are two ways:First,the directfrequency measurement method,thatis,the gate in a certain period of time measured the number of meas
4、ured signal pulse;2is indirect frequency measurement method,such as cycle frequency measurement method.Direct frequency measurement method for high-frequency signals offrequency measurement,indirect frequency measurement method for low-frequency signald of frequency measurement.In this paper,based o
5、n a commom integrated circuit design of a simple digital frequency meter process. Key words:frequency,signal,period 目 录摘要一、引言(一)数字频率计概述1(二)问题提出1(三)设计思想1二、方案论证与比较(一)方案选择21、总体方案比较22、测频方案比较2(二)测频原理2三、数字频率计设计(一)数字频率计原理41、数字频率计的基本组成42、数字频率计的主要技术指标5(二)数字频率计的设计51、硬件电路设计52、软件的设计73、软件仿真9四、基本元器件的阐述(一)AT89S52简
6、介91、主要功能特性102、引脚功能11(二)555定时器111、555定时器及其应用112、施密特触发器12五、结束语(一)总结13致谢14参考文献15附录16专心-专注-专业一、引言 (一)数字频率计概述数字频率计是计算机,通讯设备,音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器,它的基本功能是测量正弦信号,方波信号以及其他各种单位时间变化的物理量。由于其使用十进制显示,测量迅速,精确度高,显示直观,所以经常要用到频率计。(二)问题提出中国电子测量仪器,随着世界高科技发展的潮流,走进了高科技发展的道路,在若干重大领域取得了突破性进展,为我国电子
7、测量仪器走向世界水平奠定了良好的基础。在数字化时代,研究员和其他工作人员对基础测量仪器的要求越来越高,作为基础测量仪器之一的频率计必将有新的发展。于是测量仪技术指标上不断提高,如测频精度高、抗干扰能力强等。以满足不同层次用户的测试要求。近几年,数字化仪器在迅速发展,我国也在不断研究推出各种新型数字化仪器,以适应当今科技发展。在电子领域中,单片机的应用正在不断的走向深入,这必将导致传统控制与检测技术的日益革新。单片机构成的仪器具有高可靠性、高性能价格比,在智能仪表系统和办公自动化等诸多领域得以极为广泛的应用,并走入家庭,从洗衣机到音响汽车等等,处处可见。因此,可以说单片机技术的开发和应用水平已逐
8、步成为一个国家工业发展水平的标志之一。数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。 因此,数字频率计是一种应用很广泛的仪器。数字频率计作为一种常见的应用电子仪器设备,传统的一般可以完全由硬件电路搭接而成,如采用基于555定时器电路的多功能数字频率计的设计便是可取的路径之一,不用依靠单片机。但是这种电路存在一些缺点,且测频精度也不如单片机的高。在科学研究和生产实践中,如工业过程控制,生物医学,地震模拟机械振动等领域常常要用到频率计。利用单片机采用程
9、序设计方法来设计频率计,其测频精度高。且线路相对简单,结构紧凑,价格低廉,系统稳定度高,抗干扰能力强,用途广泛等优点。只要对电路稍加修改,调整程序,即可完成功能升级。(三)设计思想利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号变换成同频率的矩形脉冲。通过MCS-51系列单片机内部的两个十六位定时/计数器测量某段时间内的外加脉冲数,经过处理并通过数码管直接显示出所加信号的频率。单片机内部的T0用来定时,T1用来计数(下降沿触发)。当来一个计数脉冲则计数一次。在T0开始定时的同时,T1开始计数;T0定时1s时间到时,T1停止计数。方框图如图1.1所示。 图1.1二、
10、方案论证与比较(一)方案选择1、总体方案比较方案一:采用数字逻辑电路制作,用IC拼凑焊接实现。其特点是直接用现成的IC组合而成,简单方便,但由于使用的器件较多,连线复杂,体积大,功耗大,焊点和线路较多将使成品稳定度与精确度大打折扣。方案二:采用复杂可编程逻辑器件(CPLD)制作,利用EDA软件编程,下载烧制实现。将所有器件集成在一块芯片上,体积大大减小的同时还提高了稳定性,并且可应用EDA软件仿真,调试,每个设计人员都可以利用软件代码,提高开发效率,缩短研发周期,降低研发成本。易于进行功能扩展,可以利用频率计的核心技术,改造成其它产品。实现方法灵活,调试方便,修改容易。比较以上两种方案,易见采
11、用后者更优。2、测频方案比较方案一:完全按定义式F=N/T进行测量。在门限时间Tpr内,用计数器计数,获得数值N,频率由于公式计算得出。此方案为传统的测频方案,其测量精度将随被测信号频率的下降而降低。方案二:对被信号的周期进行测量,再利用F=1/T可得频率。此方案当被测信号的周期较短时,会使精度大大下降。方案三:等精度测频,按定义式F=N/T进行测量。被测信号和标准信号,在相同门限时间Tpr内,同时分别计数,而后对比得出被测信号频率Fx。此方案测频精度将不会随被测信号频率的下降而降低;在相同的门限时间内测量精度恒定不变。综上所述,选用第三种测频方案。(二)测频原理根据前面一节所述,下面详细介绍
12、等精度测频原理:为了提高测频的精度,采用等精度测频方法。等精度测频的实现方法可以用图2.1来简化说明。 门控信号D QCOUNT1CLKEN CLK OUT1CLR标准信号COUNT2CLKEN CLK OUT2CLR被测信号清零信号图2.1 等精度测频原理框图图2.1中的门控信号是可预置的宽度为Tpr的一个脉冲。COUNT1和COUNT2是两个可控计数器。标准频率信号从COUNT1的时钟输入端CLK输入,其频率为Fs;经整形后的被测信号从COUNT2的时钟输入端CLK输入,设实际频率为Fxe,被测量频率为Fx。当门控信号为高电平时,被测信号的上沿通过D触发器的Q端同时启动计数器COUNT1和
13、COUNT2,对被测信号Fx和标准信号Fs同时计数。当门控信号为低电平,随后而至的被测信号的上沿将使这两个计数器同时关闭。设在一次门控时间Tpr中对被测信号计数值为Nx,对标准频率信号的计数值为Ns。则: (2-1)就可以得到被测信号的频率值为: (2-2)误差分析如下:在一次测量中,由于Fx计数的起停时间都是由该信号的上升沿触发的,在Tpr时间内对Fx的计数Nx无误差;在此时间内Fs的计数Ns最多相差一个脉冲,即有,则下式成立: (2-3) (2-4)由式(2-3),(2-4)得: (2-5) (2-6)根据相对误差公式有: (2-7)将(2-5),(2-6)代入(2-7)整理得: (2-8
14、)又因为: (2-9)所以: (2-10)即有: (2-11)其中: (2-12)由以上推导结果可得出下面结论:1、相对测量误差与频率无关。2、增大Tpr或提高Fs,可以增大Ns,减少测量误差,提高测量精度。3、标准频率误差为,由于晶体的稳定度很高,标准频率误差可以进行校准。4、等精度测频方法测量精度与预置门宽度和标准频率有关,与被测信号的频率无关。在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度在整个测量范围内保持恒定不变,而常规的直接测频法(在低频时用测周法,高频时用测频法),其精度会随着被测信号频率的下降而下降。三、数字频率计设计(一)数字频率计原理1
15、、数字频率计的基本组成(1)测量控制电路,由一块CD4017和一块74LS04构成,其CP端输入1s脉冲信号,输出Q2用于计数器清零,Q1经过一个非门用于锁存,Q0经过一个非门用于计数测频。(2)计数器,计数器以待测信号作为时钟,清零信号clear到来时,异步清零:test-en为高电平时开始计数。计数是以十进制数显示,如果需要测试较高的频率信号,则将dout的输出位数增加,当然锁存器 位数也要增加。(3)锁存器,当test-en下降沿到来时,将计数器的计数值锁存,这样可由外部的七段译码器译码并在数码管显示。设置锁丰器的好处是暗淡无光的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存器的位数
16、应跟计数器完全一增。(4)电源电路,5V稳压输出供数字电路使用。工作原理:数字频率计是直接用十进制数字来暗淡显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、尖脉冲信号和其他具有周期特性的信号的频率,而且还可以测量它们的周期。数字频率计由一个1秒钟脉冲产生电路、一个测量控制电路、一个计数器、一个锁存器和电源电路组成。数字频率计是测1秒钟脉冲产生电路。设计数字频率计的关键是设计一个测频率控制信号发生器,产生测量频率的控制时序。控制时钟信号取为1Hz,2分频后即可产生一个脉宽为1秒的时钟test-en,以此作为计数闸门信号。当test-en为高电平时,允许计数;当test-en由
17、高电平变为低电平时,应产生一个锁存信号,将计数值保存起来;锁存数据后,还要在下次test-en上升沿到来之前产生零信号clear,将计数器清零,为下次计数作准备。2、数字频率计的主要技术指标(1)频率准确度一般用相对误差来表示,即(+)式中,为量化误差(即1个字误差),是数字仪器所特有的误差,当闸门时间T选定后,越低,量化误差越大;为闸门时间相对误差,主要由时基电路标准频率的准确度决定,。(2)频率测量范围在输入电压符合规定要求值时,能够正常进行测量的频率区间称为频率测量范围。频率测量范围主要由放大整形电路的频率响应起决定。(3)数字显示位数频率计的数字显示位数决定了频率计的分辨率。位数越多,
18、分辨率越高。(4)测量时间频率计完成一次测量所需要的时间,包括准备、计数、锁存和复位时间。(二)数字频率计的设计1、硬件电路设计(1)计数脉冲形成电路:用555定时器接成施密特触发器对外加的周期波进行变换,使之输出为矩形脉冲。如图3.1所示图3.1计数脉冲形成电路(2)计数显示电路主要包括:a、由ATMEL公司生产、晶振频率为12MHZ的8051单片机。通过软件编程使它内部的定时器T0定时,T1对外部的所加脉冲计数。然后把测量结果值通过P0口输出。b、用4位七段共阴极数码管动态扫描方式显示。多周期同步测量法的基本思路是使被测信号与闸门之间实现同步化,从而从根本上消除了在闸门时间内对被测信号进行
19、计数时的1量化误差,使测量精度大大提高。倒数计数器就是基于该方法而设计出来的一种具有创新思想的测频、测周期的仪器。它采用多周期同步测量法,即测量输入多个(整数个)周期值,再进行倒数运算而求得频率。其优点是:可在整个测频范围内获得同样高的测试精度和分辨率。(3)系统级方案设计在选择多周期同步等精度测量法的情况下,按照自顶向下的设计方法,可以画出该频率计的系统级框图,如图3.2所示。根据测周期、频率的原理,可以将总体框图分为三个子系统:输入通道(即前置整形电路)该部分主要由模拟电路组成的;多周期同步等精度频率、周期的测量、控制及功能切换(中间部分),该部分基本上由数字硬件电路组成;单片机及外围电路
20、,包括单片机、数码显示。图3.2频率计的系统方框(4)子系统设计a输入通道的设计。输入通道是由前置放大器和整形器组成的,所以要对前置放大器的增益和带宽指标进行估计。为了能准确测量信号,将输入信号经过一个放大整形电路。其具体实施方案为:将输入信号经过LM358运放放大,再通过74LS132整形,此时的信号还不能直接送入单片机,这是因为在硬件上CPU对INT0和INT1引脚的信号不能控制,解决这个问题要通过硬件,再配合软件来解决。b预置闸门时间发生电路设计。闸门时间的确定,可以先由一个555定时器产生一个脉冲信号,将555产生的脉冲信号送入到74LS90十进制计数器当中,由于74LS90具有二-五
21、进制混合计数的功能,所以可以用它来实现五进制计数,将74LS90的输出接到38线译码器74LS138的输入端,再将译码器的输出端接上五个发光二极管,这样就可以实现硬件上的闸门时间控制。但是考虑到硬件实现上的复杂性,可以通过软件上来实现,就是将五个发光二极管直接接到单片机的P1口由软件上来实现,通过按键来改变它的闸门时间。c数码显示电路的设计。该部分电路是由单向八位移位寄存器74LS164和数码管组成的。考虑到精度的问题,取五位计数值,采用五片74LS164级联,同时还要显示频率和周期的单位,所以还需再级联一块74LS164,在74LS164的输出端接六个单位指示灯,分别表示周期频率的三个不同的
22、单位数量级,即周期单位s,ms,s和频率单位Hz,KHz及MHz。移位寄存器的时钟信号是由单片机的串行输出口TXD脚控制。2、软件的设计(1)软件主程序流程图(见图3.3)图3.3软件主程序流程(2)子程序的设计a键盘中断服务子程序。因该频率计的测量项目较多,所以在系统初始化时,将默认测量项目设置为测频,且预置闸门时间设置为1ms。具体做法就是在主程序的系统初始化部分,将测频选择键的键值以及预置闸门时间设置代码写入单片机RAM单元中去。这样开机后即使用户没有选择任何测量项目键,也能进行频率测量。b软件计数器子程序。该频率计所需要的不同闸门预置时间信号是由单片机产生的。由于预置闸门时间的范围很宽
23、,最大值为10s,最小值为1ms,仅用单片机中的定时器硬件是不能实现的,需采用软硬件相结合的方法来实现。其具体实现方案为将C/T0定时器/计数器设置为由引脚高电平启动的方式1定时器T0,初始化将其初值设为0.该计数器的启动过程如下:主程序首先将单片机P1.6脚置为高电平(逻辑1)发出预置闸门信号,该信号经同步电路而产生高电平的同步门信号,从而使单片机引脚变为高电平,C/T0定时器中的计数器就被启动开始计数。c数据处理子程序。当事件计数器和时间计数器的计数值NA,NB被读到单片机中后,通过调用数据处理子程序,根据过去读入并保存在单片机RAM单元中的测量项目的键值,预置闸门值代码,判断出所要测量的
24、参数项目,对计数值NA,NB进行相应的处理,求出所测参数的值和单位,最后应将参数值转换为十进制数,再转换为驱动LED数码显示器的段码(每位包含5个数字段码和1个小数点)以及驱动三个单位符号指示灯之一的位码,作为显示子程序的输入数据,存放在9个RAM单元组成的显示缓冲区中。对计数值NA,NB的处理运算要用到除法和乘法,为了提高运算精度,应当采用浮点运算。显然,采用C语言来编写这些运算程序可大大提高编程效率。(3)设计总原理图图3.4 原理图3、软件仿真 图3.5 仿真图四、基本元器件的阐述(一)AT89S52简介 AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes I
25、SP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提高性价比的解决方案。 AT89S51具有如下特点:40个引脚(引脚图中图4.1所示),4k Bytes Flsh片内程序储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数
26、器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。图4.1 管脚图1、主要功能特性 兼容MCS-51指令系统 32个双向I/O口 2个16位可编程定时/计数器 全双工UART串行中断口线 2个外部中断源 中断唤醒省电模式 看门狗(WDT)电路 灵活的ISP字节和分页编程
27、 4k可反复擦写ISP Flash ROM 4.5-5.5V工作电压 时钟频率0-33MHz 128x8bit内部RAM 低功耗空闲和省电模式 3级加密位 软件设置空闲和省电功能 双数据寄存器指针2、引脚功能VCC(40):5V; GND(20):接地; P0口(3932):P0口为8位漏极开路双向I/O口,每引脚可吸收8个TTL门电流; P1口(18):P1口是从内部提供上拉电阻器的8位双向I/O口,P1口缓冲器能接收和输出4个TTL门电流; P2口(2128):P2口为内部上拉电阻器的8位双向I/O口,P2口缓冲器可接收和输出4个TTL门电流; P3口(1017):P3口是8个带内部上拉电
28、阻器的双向I/O口,可接收和输出4个TTL门电流,P3口也可作为AT89C51的特殊功能口; RST(9):复位输入。当振荡器复位时,要保持RST引脚2个机器周期的高电平时间; ALE/PROG(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节,在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6,它可用作对外部输出的脉冲或用于定时目的,要注意的是,每当访问外部数据存储器时,将跳过1个ALE脉冲; PSEN(29):外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期2次PSEN有效,但在
29、访问外部数据存储器时,这2次有效的PSEN信号将不出现; EA/VPP(31):当EA保持低电平时,外部程序存储器地址为(0000HFFFFH)不管是否有内部程序存储器。FLASH编程期间,此引脚也用于施加12V编程电源(VPP); XTAL1(19):反向振荡器放大器的输入及内部时钟工作电路的输入;XTAL2(18):来自反向振荡器的输出。(二)555定时器1、555定时器及其应用555定时器是一种中规模集成电路,外形为双列直插8脚结构,体积很小,使用起来方便。只要在外部配上几个适当的阻容元件,就可以构成史密特触发器、单稳态触发器及自激多谐振荡器等脉冲信号产生与变换电路。它在波形的产生与变换
30、、测量与控制、定时电路、家用电器、电子玩具、电子乐器等方面有广泛的应用。参数名称符号单位参数电源电压VCCV516电源电流ICCmA10阈值电压VTHVVCC触发电压VTRVVCC输出低电平VOLV1输出高电平VOHV13.3最大输出电流IOMAXmA200最高振荡频率fMAXKHz300时间误差tnS5表4.1双极性型5G555的主要性能参数集成555定时器有双极性型和CMOS型两种产品。一般双极性型产品型号的最后三位数都是555,CMOS型产品型号的最后四位数都是7555.它们的逻辑功能和外部引线排列完全相同。器件电源电压推荐为4512V,最大输出电流200mA以内,并能与TTL、CMOS
31、逻辑电平相兼容。其主要参数见表4.1。555定时器的内部电路框图及逻辑符号和管脚排列如图4.2所示。(a)555的逻辑符号(b)555的引脚排列图4.22、施密特触发器电路如图4.3所示,只要将脚2和6连在一起作为信号输入端,即得到施密特触发器。图4.4画出了Vs、Vi和Vo的波形图。设被整形变换的电压为正弦波Vs,其正半波通过二极管D同时加到555定时器的2脚和6脚,得到的Vi为半波整流波型。当Vi上升到2/3Vcc时,Vo从高电平转换为低电平;当Vi下降到1/3Vcc时,Vo又从低电平转换为高电平。回差电压: VVccVcc=Vcc图4.3 555施密特触发器 图4.4 555施密特触发器
32、的波形图五、结束语 (一)总结由于本人的水平有限,完不成老师出的五个题目。借鉴别人的频率计并尽自己的最大能力完成了这个简易数字频率计,还好,误差不是很大。对于精度要求不是很高的情况下,可用于测量09999的低频频率。任务艰巨啊,得加倍学习才行,才知道与别人的距离是那么的远。通过10来天的学习,我发现比以前明显的有了一些进步,以前只是改别人的源程序,进步不大,现在自己尝试着写出程序,自然遇到的问题就多一些,再去解决学到的知识当然也就多些,我会珍惜这次难得的机会,努力多学一些东西。致 谢一个月的时间很快过去了,本篇毕业论文已经圆满完成。在这里首先要感谢院、系领导给予的大力支持,为我们提供了良好的设
33、计环境和必要的测试仪器,感谢指导老师朱浩亮老师给予的悉心指导和不厌其烦的热情帮助;特别要感谢教过我们单片机老师聂雄老师以其渊博的知识、严谨的治学态度、开拓进取的精神和高度的责任心,给我的学习、工作、生活带来了很大的影响,并将永远激励我奋发向上。在此谨向老师们表示最衷心的感谢、并致以崇高的敬意。参考文献【1】张毅刚.MCS-51单片机应用设计M.哈尔滨:哈尔滨工业大学出版社,2003【2】王毓银.数字电路逻辑设计M. 北京:高等教育出版社,2004【3】蒋廷彪.单片机原理及应用M.重庆:重庆大学出版社,2003【4】贾金铃.单片机原理及应用M.成都:电子科技大学出版,2004【5】候玉宝.51系
34、列单片机设计与仿真,北京:电子工业出版社,2008年;【6】张卫钢.通信原理与通信技术(第二版),西安:西安电子科技大学出版社,2008年;附录:#include unsigned char codedispcode10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned char a=0,b=0,c=0,d=0;unsigned int pinlv=0;unsigned long int count=0;void delay()int j;for(j=0;j2000;j+);void display() a=pinlv/100
35、0; /千位b=pinlv/100%10; /百位c=pinlv%100/10; /十位 d=pinlv%10; /个位 P2=0xfe;P0=dispcodea;delay();P2=0xfd;P0=dispcodeb; delay();P2=0xfb;P0=dispcodec; delay();P2=0xf7 ;P0=dispcoded; delay(); /*void delay1(n)int i,j;for(i=0;in;i+)for(j=0;j255;j+) display(); */void main(void) EA=0;TMOD=0x51; /T0定时 T1计数 TH0=15602/256; /0x3c,T0定时50ms TL0=15602%256; /0x00T1=1; ET0=1;EA=1;TR1=1;TR0=1; while(1) display();void time0(void) interrupt 1 using 2 ET0=0;count+;if(count=20)/T1计数20次 count=0;TR1=0;pinlv=TH1*256+TL1;TH1=0;TL1=0;TR1=1; TH0=15602/256; /0x3c TL0=15602%256;/ 0x00TR0=1;ET0=1; /T1计数20次时产生中断,定时1S到
限制150内