基于单片机的数字频率计的设计70942.docx
《基于单片机的数字频率计的设计70942.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字频率计的设计70942.docx(27页珍藏版)》请在冰豆网上搜索。
![基于单片机的数字频率计的设计70942.docx](https://file1.bdocx.com/fileroot1/2023-2/2/f7662d88-e912-42a8-92b5-f9ed8d05daea/f7662d88-e912-42a8-92b5-f9ed8d05daea1.gif)
基于单片机的数字频率计的设计70942
基于单片机的数字频率计的设计
【摘要】
本设计以AT89S52单片机为核心充分利用硬件资源设计的一种频率计,该频率计首先将被测信号放大整形处理,变成满足单片机I/O口接受的TTL/CMOS兼容信号从单片机的T1输入口输入直接累加脉冲数,将单片机内部定时器定时为1S,这时累加的脉冲数即为被测信号的频率。
最后经单片机处理送至lcd液晶显示屏显示。
引言……………………………………………………………………………………………4
1.系统概述……………………………………………………………………………………5
1.1数字频率计概述…………………………………………………………………………5
1.2频率测量仪的设计思路和频率的计算……………………………………………………5
1.3基本设计原理…………………………………………………………………………5
2.数字频率计(低频)的硬件结构设计……………………………………………………5
2.1系统硬件的构成………………………………………………………………………5
2.2AT89S52单片机及其引脚说明…………………………………………………………6
2.3信号调理及放大整形模块………………………………………………………………7
2.3.1工作原理………………………………………………………………………8
2.3.2信号放大仿真图…………………………………………………………………8
2.3.3信号转换成方波…………………………………………………………………8
2.3.4LF353双运算放大器简介………………………………………………………8
2.4显示模块………………………………………………………………………………9
2.4.11602ALCD和单片机的接法………………………………………………………9
2.4.21602ALCD基本技术……………………………………………………………10
3.软件设计…………………………………………………………………………………12
3.1系统工作流程图………………………………………………………………………12
3.1.1T0的1s定时……………………………………………………………………13
3.1.2T1的计数原理…………………………………………………………………13
3.2软件工作原理…………………………………………………………………………14
3.3软件处理方法…………………………………………………………………………14
4.实验结果和分析…………………………………………………………………………15
4.1实验数据………………………………………………………………………………15
4.2实验结果分析…………………………………………………………………………15
结束语………………………………………………………………………………………15
致谢词………………………………………………………………………………………15
参考文献……………………………………………………………………………………15
程序附录……………………………………………………………………………………17
引言
频率测量在科技研究和实际使用中的作用日益重要。
传统的频率计通采用组合电路和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量低频信号时不宜直接使用。
频率信号抗干扰性强、易于传输,可以获得较高的测量精度。
同时,频率测量方法的优化也越来越受到重视.并采用单片机和相关硬软件实现。
AT89S52系列单片机具有体积小,功能强,性能价格比较高等特点,因此被广泛使用于工业控制和智能化仪器,仪表等领域。
此频率计以AT89S52单片机为核心,具有性能优良,精度高,可靠性好等特点。
以AT89S52单片机为控制器件的频率测量方法,并用C语言进行设计,采用单片机智能控制,结合外围电子电路。
最终实现数字频率计的设计方案,根据频率计的特点,可广泛使用于各种测试场所。
在基础理论和专业技术基础上,通过对数字频率计的设计,用十进制数字来显示被测信号频率的测量装置。
以精确迅速的特点测量信号频率,在本设计在实践理论上锻炼提高了自己的综合运用知识水平,为以后的开发及科研工作打下基础。
1系统概述
1.1数字频率计概述
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602ALCD显示器动态显示6位数。
测量范围从0Hz—65535Hz(此测量范围为计数器的最大计数,可根据实际需要进行扩展,在1.3小节方案选择有介绍如何扩展)的正弦波、方波、三角波。
用单片机实现自动测量功能。
1.2基本设计原理
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量频率的方法直接对正弦波、方波、三角波的频率进行自动的测量。
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。
其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率f。
利用单片机的内部定时器作为定时时间周期,若其周期为1s,则输入的脉冲信号持续计数时间亦准确地等于1s,所计数的脉冲个数即为被测信号的频率。
[1]
1.3方案选择
用单片机设计频率计通常采用两种办法,第一种方法是使用单片机自带的计数器对输入脉冲进行计数;第二种方法是单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。
第一种方法的好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。
这种方法的缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的98C51单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。
故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。
第二种方法的好处是输入的时钟信号频率可以不受单片机晶振频率的限制,可以对相对较高频率进行测量,但缺点是成本比第一种方法高,设计出来的系统结构和程序也比较复杂。
[2]
由于成本有限,本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于11.0592MHz/24=460.8KHz。
对外部脉冲的占空比无特殊要求。
根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,两者均应该工作在中断方式,一个中断用于1s时间的中断处理,一个中断用于对频率脉冲的计数溢出处理,(对另一个计数单元加一),此方法可以弥补计数器最多只能计数65536的不足。
将计数中断弥补计数器最高计数65536的不足作为本设计的扩展,故本设计最终选择采用第一种方法并且只使用计数器的最多计数65536。
2数字频率计(低频)的硬件结构设计
2.1系统硬件的构成
本频率计的数据采集系统主要元器件是单片机AT89S52,由它完成对待测信号频率的计数、计数处理、结果显示等功能,外部还要有信号处理、LCD显示器等器件。
具体可分为以下几个模块:
放大整形模块、单片机系统、LCD显示模块。
各模块关系图如图2所示:
[3]
图2系统工作原理图
2.2AT89S52单片机及其引脚说明
AT89S52是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:
4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路
引脚说明:
·VCC:
电源电压
·GND:
地
·P0口:
P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。
当对0端口写入1时,可以作为高阻抗输入端使用。
当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。
在这种模式下,P0口具有内部上拉电阻。
在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。
程序校验时需要外接上拉电阻。
·P1口:
P1口是一带有内部上拉电阻的8位双向I/O口。
P1口的输出缓冲能接受或输出4个TTL逻辑门电路。
当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。
当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。
·P2口:
P2是一带有内部上拉电阻的8位双向的I/O端口。
P2口的输出缓冲能驱动4个TTL逻辑门电路。
当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX@DPTR)时,P2口送出高8位地址数据。
在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。
当利用8位地址线访问外部数据存储器时(例MOVX@R1),P2口输出特殊功能寄存器的内容。
当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。
·P3口:
P3是一带有内部上拉电阻的8位双向的I/O端口。
P3口的输出缓冲能驱动4个TTL逻辑门电路。
当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P3口同时具有多种特殊功能,具体如下表1所示:
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0)
P3.5
T1(定时器1)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器都选通)
表1P3口的第二功能
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
·ALE/:
当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
当在Flash编程时还可以作为编程脉冲输出。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
·:
程序存储允许时外部程序存储器的读选通信号。
当AT89C52执行外部程序存储器的指令时,每个机器周期两次有效,除了当访问外部数据存储器时,将跳过两个信号。
·/VPP:
外部访问允许。
为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,必须同GND相连接。
需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,应该接到VCC端。
·XTAL1:
振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:
振荡器反相放大器的输出端。
2.3信号调理及放大整形模块
2.3.1工作原理
放大整形系统包括衰减器、跟随器、放大器、施密特触发器。
它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。
由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。
同相输入的运算放大器的放大倍数为(R3+R4)/R3,改变R3的大小可以改变放大倍数。
系统的整形电路由施密特触发器组成,整形后的方波送至单片机以便计数。
由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图3所示:
[4]
图3信号处理
图中D1—D4为肖特基二极管(DIODE),本设计中选用IN4148。
D5为稳压二极管,本设计选用的稳压二极管IN4625,其中R1、R2、R5、R6为10KΩ,R4为150KΩ,R3为500KΩ的电位器。
[5]
2.3.2信号放大仿真
下图为当R3=50KΩ时输入信号频率为100Hz,幅度为1V在输入端和R1左端测得的信号仿真图,由运算放大器的放大倍数为(R3+R4)/R3可得到放大后的频率不变,幅度放大了四倍。
图4信号放大仿真
2.3.3信号转换成方波后的仿真图
下图为当R3=50KΩ时输入信号频率为100Hz,幅度为1V在输出端测得的仿真波形图,频率不变,幅度为5V。
图5转换方波
2.3.4LF353双运算放大器简介
集成电路运算放大器是一种高电压增益、高输入电阻和低输出电阻的多级直接耦合放大电路,它的类型很多,电路也不一样,但结构具有共同之处,图6表示集成运放的内部电路组成原理框图。
图中输入级一般是由BJT、JFET或MOSFET组成的差分式放大电路,利用它的对称性可以提高整个电路的共模抑制比和其他方面的性能,它的两个输入端构成整个电路的反相输入端和同相输入端[7]。
电压放大级一般由电压跟随器或互补电压跟随器所组成,以降低输出电阻,提高带负载能力。
偏置电路是为各级提供合适的工作电流。
此外还有一些辅助环节,如电平移动电路、过载保护电路以及高频补偿环节等。
+差分电压放大级输出级
Vid-输入级
偏置电流
图 6 集成电路运算放大器内部组成原理框图
运算放大器分为通用型和专用型集成电路运算放大器,741型集成运算放大器即为通用型,其电路主要包括偏置电路(24个BJT、10个电阻和一个电容组成)、输入级、中间级和输出级四个部分,整个电路要求当输入信号为零时输出也为零。
放大器主要参数的设置不管是哪种类型都极其重要,直接影响到电路的实际功能。
集成电路运算放大器在近几年得到迅速发展,除了具有高电压增益的通用型外,还具有性能更优良和具有特殊功能的集成运放,可分为高输入阻抗、低漂移、高精度、带宽、低功耗、高压、大功率和程控型等专用型集成运算放大。
题中用到的LF353放大器属于用型集成运算放大,该运算放大器内部有偏移电压和FET输入装置(双向场效应管),有较大的反向击穿电压,因此,当大差动输入电压时,可以很容易容纳增加的输入电流。
图7典型接法 图8 内部结构
2.4显示模块
2.4.11602ALCD和单片机的接法
单片机和1602ALCD的连接如图9所示
图9单片机和LCD接法
1602ALCD采用标准的16脚接口,本设计具体接法如下:
第1脚:
VSS为地电源(图中未画出)。
第2脚:
VDD接5V正电源(图中未画出)。
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,本设计使用时通过一个10K的电位器调整其对比度(图中未画出)。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15~16脚:
空脚(图中未画出)。
由于AT89S52单片机的P0口内部没有上拉电阻故在单片机和1602ALCD之间需加上上拉电阻(图中未标出),本设计中选用4.7KΩ的电阻。
2.4.21602ALCD基本技术:
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
1602液晶模块内部的控制器共有11条控制指令,如下表所示,
它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H。
指令3:
光标和显示模式设置I/D:
光标移动方向,高电平右移,低电平左移S:
屏幕上所有文字是否左移或者右移。
高电平表示有效,低电平则无效。
指令4:
显示开关控制。
D:
控制整体显示的开和关,高电平表示开显示,低电平表示关显示C:
控制光标的开和关,高电平表示有光标,低电平表示无光标B:
控制光标是否闪烁,高电平闪烁,低电平不闪烁。
指令5:
光标或显示移位S/C:
高电平时移动显示的文字,低电平时移动光标。
指令6:
功能设置命令DL:
高电平时为4位总线,低电平时为8位总线N:
低电平时为单行显示,高电平时双行显示F:
低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。
指令7:
字符发生器RAM地址设置。
指令8:
DDRAM地址设置。
指令9:
读忙信号和光标地址BF:
为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令10:
写数据
指令11:
读数据
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。
要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,下表是DM-162的内部显示地址.
比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?
这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)
3软件设计
3.1系统工作流程图
系统工作流程如图10
图10系统工作流程图
3.1.1T0的1s定时
本次设计选用定时器T0完成定时功能,选用方式1时最多也只能定时
显然不能满足定时1S的要求,可以用下面这种方法解决:
采用T0定时50,连续循环定时20次即可完成1定时,用一个计数单元存放循环的次数,每一次循环单元自加1,当加到20次时则1S定时到时。
其程序流程图如图11所示。
3.1.2T1的计数原理
设计中T1采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以达到460800Hz,但本设计的最高频率为计数器的最多计数65536次,显然当所输入的频率大于65536Hz的时候将无法显示,所以每当计数器T1溢出回零时产生中断,中断程序执行显示提示错误信息显示为00000Hz。
其程序流程图如图12所示。
图11图12
3.2软件工作原理
将整形后的波形送至单片机的T1计数器输入口,打开定时器0,初始化定时器0,将单片机的内部定时器T0定时为1S,此时T1输入口在1s内所计数到的脉冲个数即为该信号的频率。
将该计数脉冲个数经单片机处理送至LCD显示。
3.3软件处理方法
本频率计的设计以AT89S52单片机为核心,利用它内部的定时/计数器完成待测信号频率的测量。
单片机AT89S52内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出中断要求的功能。
在构成为定时器时,每个机器周期加1(使用12MHz时钟时,每1us加1),这样以机器周期为基准可以用来准确定时1S。
在构成为计数器时,在相应的外部引脚发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。
外部输入每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500KHz)。
定时/计数器的工作由相应的运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。
设计综合考虑了频率测量精度和测量反应时间的要求。
[6]
4实验结果和分析
4.1实验数据
为了衡量这次设计的频率计的工作情况和测量精度,本人对系统进行了多次测量。
以南京电讯仪器厂生产的E312B型通用计数器为基准进行了测试对比。
测量数据如下表[7]
E312B频率测试值(Hz)
10
50
100
500
1000
5000
8000
10000
50000
本设计频率计测量值(Hz)
10
50
99
492
1001
5003
7995
9995
49973
相对误差(%)
0
0
1%
0.4%
0.1%
0.06%
0.063%
0.05%
0.046%
4.2实验结果分析
基于单片机直接计数脉冲,受单片机晶振频率的影响,外围电路和外部中断口接触良好问题,外界环境干扰等因素,故本频率存在一定客观和主观上的误差。
经实际多次测试频率在小于1000Hz的时候最大相对误差达到1%,在1000Hz-65536Hz相对误差小于0.1%。
受本频率计的相对误差影响使得本频率计适合的场合受到一定的限制。
但由于本频率计设计成本低、产品可模块化设计、电源直接使用干电池、体积小、使用时可随时随地移动、使用起来特别的方便,比起传统的频率计还是有非常大的使用价值和使用空间。
结束语
通过本次毕业设计,不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在使用方面的广阔前景,并且通过知识和使用于实践的结合更加丰富了自己的知识。
扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,而且较系统的掌握单片机使用系统的开发过程,因而自身的综合素质有了全面的提高。
经过这次一个较完整的产品设计和制作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的的就业提前打了下坚实的基础。
附录程序:
#include
#include
typedefunsignedcharBYTE;
typedefunsignedintWORD;
typedefbitBOOL;
sbitrs=P1^0;//液晶模块接口
sbitrw=P1^1;
sbitep=P1^2;
delay(BYTEms)
{//延时子程序
BYTEi;
while(ms--)
{
for(i=0;i<250;i++)
{