数字频率计.doc_第1页
数字频率计.doc_第2页
数字频率计.doc_第3页
数字频率计.doc_第4页
数字频率计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行较慢,而且测量频率的范围较小。本方案以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形为方波。利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。本课设硬件方面以单片机AT89S52为核心,通过独立式键盘输入,运用单片机的运算和控制功能并采用数码管将所测频率显示出来。软件方面采用C语言编程,运用定时计数器测量频率,再调显示函数,将测得的结果显示在数码管上。系统简单可靠、操作简易,能基本满足一般情况下的需要。既保证了系统的测频精度,又使系统具有较好的实时性。本频率计设计简洁,便于携带,扩展能力强,适用范围广。关键词:频率计;AT89S52;数码管 目 录1 设计任务与要求11.1 设计课题任务11.2 设计内容11.3 设计要求11.4 设计课题总体方案介绍及工作原理说明1 1.4.1 设计思路1 1.4.2 频率计工作原理22 硬件系统的设计32.1 单片机AT89S5232.2 晶振电路32.3 按键电路42.4 复位电路52.5 显示电路52.6 下载电路62.7 电源电路73 软件系统的设计83.1 软件系统各模块功能简要介绍83.2 软件系统程序流程框图94 调试与分析124.1 使用说明124.2 结果显示124.3 误差分析13结束语15致 谢16参考文献17附 录18附录A 程序18附录B 电路原理图25附录C 实物图26附录D PCB图27II1 设计任务与要求1.1 设计课题任务设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。1.2 设计内容(1)、频率计的硬件系统: 单片机最小系统模块; 供电模块; 显示模块; 键盘模块。(2)、频率计的软件系统: 系统监控程序模块; 显示程序模块; 键盘程序模块; 频率测量程序模块; 周期测量程序模块; 脉宽测量程序模块; 占空比测量程序模块。1.3 设计要求 该频率计上电或按键复位后能自动显示系统提示符“P.”, 进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测 量键则测量占空比。 被测信号频率范围:10Hz至500KHz。1.4 设计课题总体方案介绍及工作原理说明1.4.1 设计思路本次设计主要分成两大方面:硬件电路的设计和软件程序的设计。硬件电路方面,采用单片机最小系统,便可实现课题要求。程序的设计方面,本人采用C语言编写程序。其整体框图如图1所示:单 片 机数码管复位电路电源电路下载口电路晶振电路独立键盘电路图1 单片机整体框图1.4.2 频率计工作原理 此数字频率计是利用单片机的P3.5(T1)引脚作为被测矩形波信号输入端,且单片机晶振FOSC=12MHZ,当第一个键被按下时,此时测的是频率,被测矩形波信号从P3.5进入单片机,同时启动定时器T0和计数器T1,T1是工作在计数状态下,对输入的频率信号进行计数,工作在计数状态下的T1的最大计数值为FOSC/24,由于FOSC=12MHz,则:T1的最大计数频率为500KHz,T0是工作在定时状态下,每定时1秒,就停止T1的计数,而从T1的计数单元中读取的计数值在进行数据处理后,送到数码显示管显示出来,因为T0工作在定时状态下的最大定时时间为65ms,达不到1秒的定时,所以采用50ms,共定时20次。当第二个键被按下时,此时测的是周期;当被测矩形波信号输入到P3.5口为高电平时,启动T0对其计数测出为高电平时的一个计数值,记录计数值,当被测矩形波信号输入到P3.5口为低电平时,启动T0对其计数测出为低电平时的一个计数值,记录计数值。两个计数值的和则为被测信号的周期;当第三个键被按下时,此时测的是脉宽,被测矩形波信号输入到P3.5后,测量电路在检测到脉冲的上升沿时打开定时器,在下降沿时关掉定时器,当P3.5由高电平变为低电平,定时器停止,读出定时器的值,这样通过对单片机自身的周期的计数,便得到了脉宽;当第四个键被按下时,此时测的是占空比,可直接用测量得到的脉宽U比上周期T,即H=U/T,便得到了占空比。2 硬件系统的设计2.1 单片机AT89S52 硬件系统的核心处理器,是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,这也使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。单片机的引脚排列图如图2所示: 图2 单片机引脚图2.2 晶振电路 AT89S52内部含有一个振荡器,可以作为CPU的时钟源,也可以由外部振荡器输入时钟信号,作为CPU的时钟源。高频率的时钟有利于程序更快的运行,也可以实现更高的信号采样率,从而实现更多的功能。但是对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适的频率的晶振对于选频信号强度准确度都有好处,这里采用的便是晶振频率FOSC=12MHz。晶振电路如图3所示:图3 晶振电路原理图2.3 按键电路 单片机的P1口接按键,第一个键按键下,开始测量频率;第二个键按下开始测量周期;第三个键按下开始测量脉宽;第四个键按下开始测量占空比。当没按下键时,端口输入为高电平,当按下键时,端口输入为低电平。由于键盘按键数目较少,因此选用独立式键盘。独立式键盘采用一键一线,各键相互独立,每个按键各接一条I/O口线,通过检测I/O输入线的电平状态,可以很容易地判断哪个按键被按下。上拉电阻保证按键释放时,输入检测线上有稳定的高电平。 键盘电路如图4所示:图4 独立式键盘原理图2.4 复位电路 复位电路是维持单片机最小系统运行的基本模块。复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,就可使单片机复位。复位的主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,为摆脱死锁状态,也需按复位键重新启动。经复位电路的好坏直接影响单片机系统工作的可靠性,而单片机的复位电路共有上电复位、按键复位和脉冲复位3种,在本次设计中采用按键复位,按键复位则是通过使复位端经电阻与Vcc电源接通来实现的。复位电路的原理图如图5所示:图5 复位电路原理图2.5 显示电路首先介绍一下显示器的显示接口,按驱动方式分为静态显示和动态显示两种显示方式。本课设采用数码管,也就是动态显示。既逐个地循环地点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部点亮效果一样。为了实现LED显示器的动态扫描,除了要给显示器提供段的输入之外,还有对显示器选择位的控制,这就是通常说的段控和位控。因此,多位LED显示器接口电路需要有两个输出口,其中一个用于8条段控线,用P0口控制;另一个用于输出位控线,位控线的数目等于显示器的数目,用P2口控制。 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。数码管显示电路如图6所示: 图6 数码管显示电路 2.6 下载电路 下载口进行单片机与电脑的连接,并有下载电路产生电源提供给单片机工作。主要是USB下载口(ISP)构成通过USB下载口把程序下载到单片机内部。 下载电路如图7所示:图7 下载电路 2.7 电源电路 用于接通+5V电源,给单片机供电。 电源电路如图8所示:图8 电源电路3 软件系统的设计3.1 软件系统各模块功能简要介绍 系统的软件模块框图如图9所示:图9 系统软件模块框图各模块功能如下:(1) 键功能模块:判断哪一键按下,然后去执行相应的程序。(2) 测频程序模块:测矩形波信号的频率。 测频周期模块:测矩形波信号的频率后,间接测其周期。 测脉宽模块:测矩形波信号的脉宽。 测占空比模块:测矩形波信号的脉宽后,间接测信号的占空比。(3) 显示模块1:显示P.。 显示模块2:显示测得的频率脉宽值。 显示模块3:显示测得的周期。 显示模块4:显示测得的脉宽值。 显示模块5:显示测得的占空比。(4)延时模块:用于各位显示间的延时。3.2 软件系统程序流程框图(1)主函数框图如图10所示:图10 主函数框图 由图10可知,单片机上电显示P.。按下第一个键开始测频率,测得的频率显示在数码管上;按下第二个键开始测量周期,测得的周期显示在数码管上;按下第三个键开始测脉宽,测得的脉宽显示在数码管上;按下第四个键开始测占空比,测得的占空比显示在数码管上。(2)频率测量子程序框图和周期测量子程序框图分别如图11、12所示:开 始定时计数器的初始化信号正跳变?开始定时信号正跳变?把测得的二进制周期转化为十进制 显 示NYNY开 始定时计数器初始化 延时1s得到频率值将二进制频率转化为十进制显 示 图11 频率测量子程序框图 图12 周期测量子程序框图由图11可知,频率测量子程序先将定时器初始化,定时器0定时50ms,循环20次,总共1s。记录1s内产生的脉冲个数得到频率值,再将二进制频率转化为十进制,最后在数码管上显示出来。由图12可知,周期测量子程序先将定时计数器初始化,当信号正跳变时,开启定时器0,当信号再次正跳变时,关闭定时器0。再将测得的二进制周期转化为十进制通过数码管显示出来。(3)脉宽测量子程序和占空比测量子程序框图分别如图13、14所示:开 始定时计数器初始化信号出现正跳变?信号出现负跳变?存储脉冲宽度存周期信号出现正跳变?NY NY显 示NY开 始定时计数器初始化把测得的周期化为十进制信号正跳变?信号为低电平?显 示NYNY 图13 脉宽测量子程序框图 图14 占空比子程序框图 由图13可知,脉宽测量子程序先将定时计数器初始化,当检测到信号正跳变时,开启定时器,当信号变为低电平时,关闭定时器。测量的周期化为十进制通过数码管显示出来。由图14可知,占空比测量子程序先将脉宽测出来,在测周期,再将脉宽除以周期得到占空比。最后通过数码管显示出来。4 调试与分析4.1 使用说明不按键时,上点显示P.。按下第一个按键可测得被测信号的频率。按下第二个按键可测得被测信号的周期。按下第三个按键可测得被测信号的脉宽。按下第四个按键可测得被测信号的占空比。4.2 结果显示(1) 没键按下时上电显示P.。如图15所示:图15 显示P.(2) 输入50HZ的方波,按下第一个按键,频率测量的结果如图16所示:图16 频率测量结果(3) 输入50HZ的方波,按下第二个按键,周期测量的结果如图17所示:图17 周期测量结果(4) 输入50HZ的方波,按下第三个按键,脉宽测量的结果如图18所示:图18 脉宽测量结果(5)输入50HZ的方波。按下第四个按键,占空比测量的结果如图19所示:图19 占空比测量结果4.3 误差分析(1) 测频率数据如表1所示:表1 频率测量输入矩形波理论值测量值误差(%)50HZ50HZ50HZ0100H100KZ100HZ0(2)周期测量结果如表2所示:表2 周期测量输入矩形波理论值(us)测量值(us)误差(%)50HZ20000200020.0001100HZ100001000001000HZ100010010.001(3)测脉宽数据如表3所示:表3 脉宽测量输入矩形波理论值(us)测量值(us)误差(%)500HZ10000100000100HZ500049990.00021000HZ5005000(4)测占空比数据如表4所示:表4 占空比测量输入矩形波理论值(%)测量值(%)误差(%)50HZ50490.02100HZ505001000HZ50500误差说明:当测频时,启动定时计数器时,若从T1(P3.5)输入矩形波刚好为高电平,而当1s定时到时刚好为高电平时,此时测得的频率值最准确。若启动定时计数器时,输入的矩形波刚好处于低电平,而当定时1s到时矩形波刚好要发生负跳变时,此时测得的频率误差最大。而且频率越大误差也越大。定时计数器的工作方式选择与初值的赋予不一定精准,容易引起误差。定时计数器的工作方式选择不同,最后的结果也会有所差异。工作方式2相比于工作方式0和工作方式1误差更小。其次,采用中断或查询的方式也会影响实验结果。采用查询方式的误差比采用中断误差更小。结束语到这个时候,单片机的课程设计就要结束了,本次课程设计的完成,收获颇多。在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。在设计时遵循从整体到局部也即自上而下的原则。把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。在程序调试时应按各个功能模块分别调试。 在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。程序设计是相当有可拓展性的,不过每个程序的结构也必须严格按照标准来做,好让自己熟悉程序设计。通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握C语言的设计和调试方法。对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。在设计过程中,得到了我的指导老师的悉心指导与帮助,在此一并表示衷心的感谢。致 谢感谢学校和老师对我的培养,给我这个自己动手的机会和空间。经过一段时间,终于在完成了设计,对自己的能力有了很大的提升。在此我要感谢每一个帮助过我的人。首先,我要感谢的是我的指导老师凌云老师,认真负责的教导我,给我提供帮助,老师优良作风和严谨的教学研究精神是我永远学习的榜样。其次我要感谢我的同学,在我最困难的时候伸出援助之手,用他们的智慧帮我解决各个难题。总而言之,感谢每一位关心过我的人,他们今天对我的付出,成为我将来工作的动力。参考文献1李广弟.单片机基础M.第3版.北京:北京航空航天大学出版社,2003.6.2李全利.单片机原理及应用(C51编程)M.北京:高等教育出版社,2012.12.3马忠梅.单片机的C语言应用程序设计M.北京:北京航空航天大出版社,2003.6. 4李光飞.单片机C程序设计指导M.北京:北京航空航天大学出版社, 2003.1.5李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.9.6 李勋. 单片机实用教程M. 北京:北京航空航天大学出版社,2000.3.7康华光主编.电子技术 基础(第四版).北京:高等教育出版社,1999.8郭天祥.51单片机C语言教程M.北京:电子工业出版社,2009.6.附 录附录A 程序/*程 序 名:数字频率计编 写 者:刘致宏 指导老师:凌云时 间:2016.1.7功 能:(1)上点显示提示符“P.”。 (2)定义4个功能键:按下第一个键开始测量频率; 按下第二个键开始测量周期; 按下第三个键开始测量脉宽; 按下第四个键开始测量占空比;*/#includereg52.h#include/*共阳数码管字型码数组*/*0,1,2,3,4,5,6,7,8,9,p.,灭*/char code dis_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff; char data find_code8=11,11,11,11,11,11,11,10;#define uchar unsigned char#define uint unsigned int#define ulong unsigned longsbit on=P35; /信号从P3.5输入。 uchar cepl();uchar a,m;ulong rate,zhqi1,zhqi2,zhqi,maikuan,zhkbi,zhkbi1,zhkbi2,b; void DelayX1ms(uint count) uint j; while(count-!=0) for(j=0;j120;j+); void disp() uchar i,j=0x01; uchar k; for(i=0;i8;i+) P2=j; k=find_codei; P0=dis_codek; DelayX1ms(1); j=_crol_(j,1); P0=0XFF; uchar keycl() uchar k; k=P1; k=k; return(k); uchar key() uchar keyz,keyzi; keyz=keycl(); if(keyz!=0) disp(); disp(); keyz=keycl(); if(keyz!=0) keyzi=keyz; while(keyz!=0) disp(); disp(); keyz=keycl(); keyz=keyzi; return(keyz); void time(void) TMOD=0X51; TH1=0X00; TL1=0X00; TH0=(65536-50000)/256; /定时50ms TL0=(65536-50000)%256; EA=1; /开总中断 ET0=1; /开定时器0中断 ET1=1; Void t0(void) interrupt 1 using 2 TH0=(65536-50000)/256; TL0=(65536-50000)%256; a+;void t1(void) interrupt 3 using 2 TH1=0; TL1=0; m+;uchar cepl() while(a20); TR0=0; TR1=0; rate=m*65536+TH1*256+TL1; TH1=0x00; TL1=0x00; TH0=(65536-50000)/256; TL0=(65536-50000)%256; a=0; m=0; return(rate); void display(void) find_code7=rate/10000000;find_code6=rate/1000000%10;find_code5=rate/100000%10;find_code4=rate/10000%10;find_code3=rate/1000%10;find_code2=rate/100%10;find_code1=rate/10%10;find_code0=rate%10;disp(); void cezhqi(void) while(on); while(!on);TR0=1;while(on);TR0=0;zhqi1=a*50000+(TH0*256+TL0-15536);a=0;TH0=(65536-50000)/256;/定时50ms TL0=(65536-50000)%256;DelayX1ms(1);while(!on);while(on);TR0=1;while(!on);TR0=0;zhqi2=a*50000+(TH0*256+TL0-15536);TH0=(65536-50000)/256;/定时50ms TL0=(65536-50000)%256;a=0;DelayX1ms(1);zhqi=zhqi1+zhqi2;find_code7=zhqi/10000000;find_code6=zhqi/1000000%10;find_code5=zhqi/100000%10;find_code4=zhqi/10000%10;find_code3=zhqi/1000%10;find_code2=zhqi/100%10;find_code1=zhqi/10%10;find_code0=zhqi%10;disp(); void cemaikuan(void) while(on); while(!on);TR0=1;while(on);TR0=0;maikuan=a*50000+(TH0*256+TL0-15536);TH0=(65536-50000)/256; TL0=(65536-50000)%256;a=0;DelayX1ms(1);find_code

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论