基于AT89S52单片机的频率计设计毕业设计论文.docx
《基于AT89S52单片机的频率计设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的频率计设计毕业设计论文.docx(37页珍藏版)》请在冰豆网上搜索。
![基于AT89S52单片机的频率计设计毕业设计论文.docx](https://file1.bdocx.com/fileroot1/2022-11/25/5f8adeed-79a5-4c0a-b53c-63cc176dbd0f/5f8adeed-79a5-4c0a-b53c-63cc176dbd0f1.gif)
基于AT89S52单片机的频率计设计毕业设计论文
基于AT89S52单片机的频率计设计
中文摘要
频率测量是电子学测量中最为基本的测量之一。
频率计主要是由信号输入和放大电路、单片机模块、分频模块及显示电路模块组成。
AT89S52单片机是频率计的控制核心,来完成它待测信号的计数,译码,显示以及对分频比的控制。
利用它内部的定时/计数器完成待测信号频率的测量。
在整个设计过程中,所制作的频率计采用外部分频,实现10Hz~2MHz的频率测量,而且可以实现量程自动切换流程。
以AT89S52单片机为核心,通过单片机内部定时/计数器的门控时间,方便对频率计的测量。
其待测频率值使用四位共阳极数码管显示,并可以自动切换量程,单位分别由红、黄、绿3个LED指示。
本次采用单片机技术设计一种数字显示的频率计,具有测量准确度高,响应速度快,体积小等优点。
关键词:
频率计;单片机;计数器;量程自动切换
第一章前言
频率测量是电子学测量中最为基本的测量之一。
由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。
随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。
1.1频率计概述
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。
本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点[1]。
1.2频率计发展与应用
在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。
单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。
单片机已成为电子系统的中最普遍的应用。
单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。
其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要[2]。
1.3频率计设计内容
利用电源、单片机、分频电路及数码管显示等模块,设计一个简易的频率计能够粗略的测量出被测信号的频率。
参数要求如下:
1.测量范围10HZ—2MHZ;
2.用四位数码管显示测量值;
3.能根据输入信号自动切换量程;
4.可以测量方波、三角波及正弦波等多种波形;
第二章系统总体方案设计
2.1测频的原理
测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”。
被测信号,通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端[3]。
由晶体振荡器产生的基频,按十进制分频得出的分频脉冲,经过基选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。
若在一定的时间间隔T内累计周期性的重复变化次数N,则频率的表达式为式:
(1)
图1说明了测频的原理及误差产生的原因。
时基信号
待测信号
丢失(少计一个脉冲)计到N个脉冲多余(比实际多出了0.x个脉冲)
图1测频原理
在图1中,假设时基信号为1KHZ,则用此法测得的待测信号为1KHZ×5=5KHZ。
但从图中可以看出,待测信号应该在5.5KHZ左右,误差约有0.5/5.5≈9.1%。
这个误差是比较大的,实际上,测量的脉冲个数的误差会在±1之间。
假设所测得的脉冲个数为N,则所测频率的误差最大为δ=1/(N-1)*100%。
显然,减小误差的方法,就是增大N。
本频率计要求测频误差在1‰以下,则N应大于1000。
通过计算,对1KHZ以下的信号用测频法,反应的时间长于或等于10S,。
由此可以得出一个初步结论:
测频法适合于测高频信号。
频率计数器严格地按照
公式进行测频[4]。
由于数字测量的离散性,被测频率在计数器中所记进的脉冲数可有正一个或负一个脉冲的
量化误差,在不计其他误差影响的情况下,测量精度将为:
应当指出,测量频率时所产生的误差是由N和T俩个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定时,精度越高。
为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加T来满足,为了增加T的稳定度,只需提高晶体振荡器的稳定度和分频电路的可靠性就能达到。
上述表明,在频率测量时,被测信号频率越高,测量精度越高。
2.2总体思路
频率计是我们经常会用到的实验仪器之一,频率的测量实际上就是在单位时间内对信号进行计数,计数值就是信号频率。
本文介绍了一种基于单片机AT89S52制作的频率计的设计方法,所制作的频率计测量比较高的频率采用外部十分频,测量较低频率值时采用单片机直接计数,不进行外部分频。
该频率计实现10HZ~2MHZ的频率测量,而且可以实现量程自动切换功能,四位共阳极动态显示测量结果,可以测量正弦波、三角波及方波等各种波形的频率值。
2.3具体模块
根据上述系统分析,频率计系统设计共包括五大模块:
单片机控制模块、电源模块、放大整形模块、分频模块及显示模块。
各模块作用如下:
1、单片机控制模块:
以AT89S52单片机为控制核心,来完成它待测信号的计数,译码,和显示以及对分频比的控制。
利用其内部的定时/计数器完成待测信号周期/频率的测量。
单片机AT89S52内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
(因为AT89C51所需外围元件少,扩展性强,测试准确度高。
)
2、电源模块:
为整个系统提供合适又稳定的电源,主要为单片机、信号调理电路以及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。
3、放大整形模块:
放大电路是对待测信号的放大,降低对待测信号幅度的要求。
整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。
4、分频模块:
考虑单片机外部计数,使用12MHz时钟时,最大计数速率为500kHz,因此需要外部分频。
分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。
可用74161进行外部十分频。
5、显示模块:
显示电路采用四位共阳极数码管动态显示,为了加大数码管的亮度,使用4个PNP三极管进行驱动,便于观测。
综合以上频率计系统设计有单片机控制模块、电源模块、放大整形模块、分频模块及显示模块等组成,频率计的总体设计框图如图2所示。
图2频率计总体设计框图
第三章硬件电路具体设计
根据系统设计的要求,频率计实际需要设计的硬件系统主要包括以下几个部分:
AT89S52单片机最小系统模块、电源模块、放大整形模块、分频模块及显示模块,下面将分别给予介绍。
3.1AT89S52主控制器模块
3.1.1AT89S52的介绍
8位单片机是MSC-51系列产品升级版[5],有世界著名半导体公司ATMEL在购买MSC-51设计结构后,利用自身优势技术——(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同时使用新的半导体生产工艺,最终得到成型产品。
与此同时,世界上其他的著名公司也通过基本的51内核,结合公司自身技术进行改进生产,推广一批如51F020等高性能单片机。
AT89S52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。
根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。
片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。
可以在4V到5.5V宽电压范围内正常工作。
不断发展的半导体工艺也让该单片机的功耗不断降低。
同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。
根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。
3.1.2复位电路及时钟电路
复位电路和时钟电路是维持单片机最小系统运行的基本模块。
复位电路通常分为两种:
上电复位(图4)和手动复位(图5)。
图4上电复位图5手动复位
有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。
所以本次设计选用手动复位。
高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能[6]。
但是告诉对系统要求较高,而且功耗大,运行环境苛刻。
考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。
合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。
并联2个30pF陶瓷电容帮助起振。
AT89S52单片机最小系统如图6所示。
图6单片机最小系统原理图
3.1.3引脚功能
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逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入和定时器/计数器2的触发输入,P1口功能具体如表1所示。
在flash编程和校验时,P1口接收低8位地址字节。
表1P1口的第二种功能说明表
引脚号
第二功能
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5
MOSI(在系统编程用)
P1.6
MISO(在系统编程用)
P1.7
SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
P3口亦作为AT89C51特殊功能(第二功能)使用,P3口功能如表2所示。
在flash编程和校验时,P3口也接收一些控制信号。
表2P3口的第二种功能说明表
引脚号
第二功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器写选通)
RST:
复位输入。
晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.1.4单片机引脚分配
根据系统设计及各模块的分析得出,单片机的引脚分配如表3所示。
表3单片机端口分配表
模块
端口
功能
显示模块
P0.0-P0.4、P2.0-P2.7
数码管频率值显示
P1.4-P1.6
LED单位显示
分频模块
P1.0-P1.2
通道选择
P1.3
清零
3.2电源模块
3.2.1直流稳压电源的基本原理
直流稳压电源一般由电源变压器T、整流、滤波及稳压电路所组成[8],基本框图如图7所示。
图7直流稳压电源框图及波形
(1)电源变压器T的作用是将220V的交流电压变换成整流滤波电路所需要的交流电压Ui。
变压器副边与原边的功率比为P2/P1=n,式中n是变压器的效率。
(2)整流电路:
整流电路将交流电压Ui变换成脉动的直流电压。
再经滤波电路滤除较大的波纹成分,输出波纹较小的直流电压U1。
常用的整流滤波电路有全波整流滤波、桥式整流滤波等。
(3)滤波电路:
各滤波电路C满足RL-C=(3~5)T/2,式中T为输入交流信号周期,RL为整流滤波电路的等效负载电阻。
图9滤波电路
(4)稳压电路:
常用的稳压电路有两种形式:
一是稳压管稳压电路,二是串联型稳压电路。
二者的工作原理有所不同。
稳压管稳压电路其工作原理是利用稳压管两端的电压稍有变化,会引起其电流有较大变化这一特点,通过调节与稳压管串联的限流电阻上的压降来达到稳定输出电压的目的。
它一般适用于负载电流变化较小的场合。
串联型稳压电路是利用电压串联负反馈的原理来调节输出电压的。
集成稳压电源事实上是串联稳压电源的集成化。
3.2.2电源电路设计
根据上述介绍设计,电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用LED进行电源工作状态指示。
LM78XX系列三端稳压IC来组成稳压电源所需的外围元件极少[9],电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜,因此使用LM7805稳压芯片进行5V的电源电路设计。
具体的5V电源电路如下图10所示。
图105V直流电源电路
3.3放大整形模块
由于输入的信号可以是正弦波,三角波。
而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波。
在整形之前由于不清楚被测信号的强弱的情况。
所以在通过整形之前通过放大衰减处理。
当输入信号电压幅度较大时,通过输入衰减电路将电压幅度降低。
当输入信号电压幅度较小时,前级输入衰减为零时若不能驱动后面的整形电路,则调节输入放大的增益,时被测信号得以放大[10]。
根据上述分析,放大电路放大整形电路采用高频晶体管3DG100与74LS00等组成。
其中3DG100为NPN型高频小功率三极管,组成放大器将输入频率为fx的周期信号如正弦波、三角波及方波等波形进行放大。
与非门74LS00构成施密特触发器,它对放大器的输出波形信号进行整形,使之成为矩形脉冲[11]。
具体放大整形电路如图11所示。
图11放大整形电路
3.4分频设计模块
分频电路用于扩展单片机频率测量范围,并实现单片机频率和周期测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。
可用74161进行分频。
3.4.1分频电路分析
本频率计的设计以AT89S51单片机为核心,利用他内部的定时/计数器完成待测信号周期/频率的测量。
单片机AT89S51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12MHz时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。
在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。
外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500kHz),因此采用74LS161进行外部十分频使测频范围达到2MHz。
为了测量提高精度,当被测信号频率值较低时,直接使用单片机计数器计数测得频率值;当被测信号频率值较高时采用外部十分频后再计数测得频率值。
这两种情况使用74LS151进行通道选择,由单片机先简单测得被测信号是高频信号还是低频信号,然后根据信号频率值的高低进行通道的相应导通,继而测得相应频率值。
3.4.274LS161芯片介绍
74LS161是常用的四位二进制可预置的同步加法计数器[12],可以灵活的运用在各种数字电路,以及单片机系统种实现分频器等很多重要的功能。
74LS161引脚如图12所示。
图1274LS161引脚图
时钟CP和四个数据输入端P0~P3,清零/MR,使能CEP,CET,置数PE,数据输出端Q0~Q3,以及进位输出TC(TC=Q0·Q1·Q2·Q3·CET)。
表4为74161的功能表。
表474161的功能表
清零
RD
预置
LD
使能
EPET
时钟
CP
预置数据输入
ABCD
输出
Q0Q1Q2Q3
L
×
××
×
××××
LLLL
H
L
××
上升沿
ABCD
ABCD
H
H
L×
×
××××
保持
H
H
×L
×
××××
保持
H
H
HH
上升沿
××××
计数
其中RD是异步清零端,LD是预置数控制端,A、B、C、D是预置数据输入端,EP和ET是计数使能端,RCO(=ET.QA.QB.QC.QD)是进位输出端,它的设置为多片集成计数器的级联提供了方便。
计数过程中,首先加入一清零信号RD=0,使各触发器的状态为0,即计数器清零。
RD变为1后,加入一置数信号LD=0,即信号需要维持到下一个时钟脉冲的正跳变到来后。
在这个置数信号和时钟脉冲上升的共同作用下,各触发器的输出状态与预置的输入数据相同,这就是预置操作。
接着EP=ET=1,在此期间74161一直处于计数状态。
一直到EP=0,ET=1,计数器计数状态结束。
从74LS161功能表功能表中可以知道,当清零端CR=“0”,计数器输出Q3、Q2、Q1、Q0立即为全“0”,这个时候为异步复位功能。
当CR=“1”且LD=“0”时,在CP信号上升沿作用后,74LS161输出端Q3、Q2、Q1、Q0的状态分别与并行数据输入端D3,D2,D1,D0的状态一样,为同步置数功能。
而只有当CR=LD=EP=ET=“1”、CP脉冲上升沿作用后,计数器加1。
74LS161还有一个进位输出端CO,其逻辑关系是CO=Q0·Q1·Q2·Q3·CET。
合理应用计数器的清零功能和置数功能,一片74LS161可以组成16进制以下的任意进制分频器。
3.4.374LS151芯片介绍
数据选择端(ABC)按二进制译码,以从8个数据(D0-D7)中选取1个所需的数据。
只有在选通端STROBE为低电平时才可选择数据。
74LS151有互补输出端(Y、W),Y输出原码,W输出反码[13]。
74LS151引脚如图13所示。
图1374151管脚图
74LS151的功能如下表 所示。
其中A、B、C 为选择输入端,D0-D7为 数据输入端,STROBE 为选通输入端(低电平有效),W为反码数据输出端,Y为数据输出端。
表574151功能表
3.4.4分频电路
根据以上分析,采用74LS161和74LS151设计分频电路如图14所示。
图15分频电路原理图
3.5显示模块
显示模块由频率值显示电路和量程转换指示电路组成。
频率值显示电路采用四位共阳极数码管动态显示频率计被测数值,使用三极管8550进行驱动,使数码管亮度变亮,便于观察测量。
量程转换指示电路由红、黄、绿三个LED分别指示Hz、KHz及MHz档,使读数简单可观。
3.5.1数码管介绍
常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。
根据管脚资料,可以判断使用的是何种接口类型[14].两种数码管内部原理如图16所示。
图16两种数码管内部原理图
LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。
在一定范围内,其正向电流与发光亮度成正比。
由于常规的数码管起辉电流只有1~2mA,最大极限电流也只有10~30mA,所以它的输入端在5V电源或高于TTL高电平(3.5V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。
3.5.2频率值显示电路
数码管电路设计不加三极管驱动时,数码管显示数值看不清,不便于频率值的测量与调试。
因此加入三极管8550进行驱动数码管。
使用4位数码管进行频率值显示,如果选择共阴极数码管显示,则需要8个三极管进行驱动,而采用共阳极数码管则需要4个三极管驱动,为了节约成本,因此选用共阳极数码管进行动态显示,具体数码管设计电路如图17所示。
图17数码管显示电路
3.5.3档位转换指示电路
根据设计要求,采用红、黄、绿三个LED分别指示Hz、KHz及MHz档,根据被测信号的频率值大小,可以自动切换量程单位,无需手动切换,便于测量和读数,简单方便。
具体设计的档位转换LED指示电路如图18所示。
图18LED档位指示电路
第四章系统的软件设计
系统软件设计主要采用模块化设计,叙述了各个模块的程序流程图,并介绍了软件Keil和Proteus的使用方法和调试仿真。
4.1软件模块设计
系统软件设计采用模块化设计方法。
整个系统由初始化模块,信号频率测量模块,自动量程转换和显示模块等模块组成。
系统软件流程如图19所示。
频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。
测量初始化模块设置堆栈指针(SP)、工作寄存器、中断控制和定时/计数器的工作方式。
定时/计数器的工作首先被设置为计数器方式,即用来测量信号频率[15]。
图19系统软件流程总图
首先定时/计数器的计数寄存器清0,运行控制位TR置1,启动对待测信号的计数。
计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时TR清0,停止计数。
计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。
判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。
定时/计数器的工作被设置为定时器方式,定时/计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位TR置为