资源描述
摘要随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的 作用日益重要。科技的日新月异的高速发展,传统的频率计通常是用很多的逻辑 电路和时序电路来实现的,这种电路一般运行较慢,而且测量频率的范围较小。现在的客户对电子频率的测量也提出了新的要求,对于低档产品要求使用操作方 便,量宽,可靠性高,价格低。本方案以单片机为核心,被测信号先进 入信号放大电路进行放大,再被送到波形整形电路整形为方波。利 用单片机的计数器和定时器的功能对被测信号进行计数。编写相应 的程序可以使单片机自动调节测量的量程,并把测出的频率数据送 到显示电路显示。本设计以AT89S52单片机为核心,应川单片机的算术运算和控制功能并采川 数码显示管将所测频率显示出来。系统简单可靠、操作简易,能基本满足一般情 况下的需要。既保证了系统的测频精度,又使系统具有较好的实时性。本频率计 设计简洁,便于携带,扩展能力强,适用范围广。关键字:数字频率计;单片机;计数器;数码显示管ABSTRACTWith the development of the electronic information industry,the signal frequency measurement in science and technology research and practical application is increasingly important.Rapid development of science and technology of the high speed development,the traditional frequency is usually a lot of program logic circuit and the sequential circuits to implementation,this circuit,generally run slower,and measurement of the frequency of the small areas.Now the customers on the electronic frequency measurement has also put forward new requirements,low product requirements to use convenient operation,quantity wide,high reliability and low price.This project is to the Single-Chip-Micro Controller as the center.The measured signal firstly entry into the amplifier circuit to be amplified,then to be sent to waveform plastic circuit to be plastic as square wave.Make use of the performance of counter and timer of the Single-Chip-Micro Controller to count the measured signal.Make corresponding program can make the Single-Chip-Micro Controller automatic adjust the range that counted.And send the counted frequency data to the show circuit to show.The design for AT89S52 core chip,the arithmetic and control function and the use of the digital display tube of the measured frequency display.The system is simple and reliable,easy to operate,can basically meet the need of general situation.It not only makes the system frequency measuring accuracy,but also makes the system has good real time.The frequency meter design is simple,easy to carry,expansion capability,wide application range.Keywords:digital frequency meter;single chip microcomputer;timer;the digital display tube目录1设计任务、功能要求说明及总体方案介绍.31.1 设计任务.错误!未定义书签。1.2 功能要求说明.错误!未定义书签。1.3 设计课题总体方案介绍及工作原理说明.12课题设计硬件系统的设计.32.1硬件系统各模块功能的介绍.33课题设计软件系统的设计.43.1软件系统各模块功能介绍.43.2系统程序流程框图.64设计误差分析及总结.94.1 数字频率计的仿真.94.2 数字频率计误差分析.104.3 设计总结.10参考文献.10附录A PCB图.11附录B CAD图.12附录C 软件系统程序清单.191设计课题任务、功能要求说明及总体方案介绍1.1 设计任务设计一个能够测量周期性矩形波信号的频率、周期、脉宽、占空比的频率计。该频率计上电或按键复位后能自动显示系统提示符“P.”,进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。1.2 功能要求说明该数字频率计频率以单片机最小系统为基础,采用独立式键盘及动态显示结 构组成。四个键(分别接于P1.0PL 3)控制测量,按S2键(接P1.0)测频率、按S4键(接PL1)测周期,按S6键(接PL2)测脉宽,按S8键(接PL3)测占空比。1.3 设计课题总体方案介绍及工作原理说明本次设计主要分成两大方面:硬件电路的设计和软件程序的设计。硬件电路方 面,采用单片机最小系统,便可实现课题要求。程序的设计方面,本人采 用C语言编写程序。其整体框图如图1所示。频率计工作原理:此数字频率计是利川单片机的P3.5CH)引脚作为被测矩 形波信号输入端,且单片机晶振F0SO12MHZ,当S2键被按下时,此时测的是频 率,被测矩形波信号从P3.5进入单片机,同时启动定时器T0和计数器Tl,T1 是工作在计数状态下,对输入的频率信号进行计数,工作在计数状态下的T1的 最大计数值为F0SC/24,由于FOSC=12MHz,贝小T1的最大计数频率为500KHz,TO是工作在定时状态下,每定时1秒,就停止T1的计数,而从T1的计数单元 中读取的计数值在进行数据处理后,送到LCD数码显示管显示出来,因为T0工 作在定时状态下的最大定时时间为65ms,达不到1秒的定时,所以采用50ms,共定时20次。当S4键被按下时,此时测的是周期;当被测矩形波信号输入到 P3.5 口为高电平时,启动T0对其计数测出为高电平时的一个计数值,记录计数 值,当被测矩形波信号输入到P3.5 口为低电平时,启动T0对其计数测出为低电 平时的一个计数值,记录计数值。两个计数值的和则为被测佶号的周期;当S6 键被按下时,此时测的是脉宽,被测矩形波信号输入到P3.5后,测量电路在检 测到脉冲的上升沿时打开定时器,在下降沿时关掉定时器,当P3.5由高电平变 为低电平,定时器停止,读出定时器的值,这样通过对单片机自身的周期的计数,1便得到了脉宽;当S8键被按下时,此时测的是占空比,可直接用测量得到的脉 宽U比上周期T,即U/T,便得到了占空比。图1单片机整体框图22设计课题硬件系统的设计2.1硬件系统各模块功能简要介绍AT89S52单片机:硬件系统的核心处理器,是一种低功耗、高性能CM0S8 位微控制器,具有8K在系统可编程Flash存储器,这也使得其为众多嵌入式控 制应川系统提供高灵活、超有效的解决方案。振荡电路:AT89s52内部含有一个振荡器,可以作为CPU的时钟源,也可以 由外部振荡器输入时钟信号,作为CPU的时钟源。高频率的时钟有利于程序更快 的运行,也可以实现更高的信号采样率,从而实现更多的功能。但是对系统要求 较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号 采样处理,所以选取合适的频率即可。合适的频率的晶振对于选频信号强度准确 度都有好处,这里采川大便是晶振频率F0SC=12MHz.按键电路:单片机的PLO、PL1、PL2、P1.3分别接按键S2、S4、S6、S8,川来分别测量输入信号的频率、周期、脉宽、占空比。当没按下键时,端口输入 为高电平,当按下键时,端口输入为低电平。复位电路:复位电路时单片机的硬件初始化操作。经复位操作后,单片机才 能开始正常工作。它通过RST引脚送入单片机,进行复位操作,产生复位信号。复位电路的好坏直接影响单片机系统工作的可靠性,而单片机的复位电路共有上 电复位、按键复位和脉冲复位3种,在本次设计中采川按键复位,按键复位则是 通过使复位端经电阻与V cc电源接通来实现的。数码管显示电路:可以通过数码管的显示直截了当看到想要测得数据,本次 设计显示器采川动态显示方式。下载电路:通过USB下载口把程序下载到单片机内部。电源电路:用于接通+5V电源。33课题设计软件系统的设计3.1软件系统各模块功能简要介绍系统的软件模块框图如图2所示:图2系统软件模块框图4各模块功能如下:(1)主程序模块:启动显示“P.”,等键按下。(2)P.显示模块:显示“P.(3)键扫描模块:判断按键是否按下且是哪一个键,然后执行相关程序。(4)测周期程序模块:测量被测矩形波信号的周期。(5)测占空比程序模块:测量被测矩形波信号的占空比。(6)测脉宽程序模块:测量被测矩形波信号的脉宽。(7)测频率程序模块:测量被测矩形波信号的频率。(8)周期显示模块:显示测得的周期。(9)占空比显示模块:显示测得的占空比。(10)脉宽显示模块:显示测得的脉宽。(11)频率显示模块:显示测得的频率。(12)延时模块:用于各位显示间的延时。53.2软件系统程序流程框图(1)系统主程序流程图如图3所示。图3主程序流程图6(2)测频率子程序和测周期子程序流程图如图4和如图5所示。图4测频率子程序流程图图5测周期子程序流程图7(3)测脉宽子程序和键扫描子程序流程图如图6和如图7所示。图6测脉宽子程序流程图 图7键盘扫描子程序流程框图84设计误差分析及总结4.1数字频率计的仿真(1)当没有键按下时,运行仿真,数码管显示结果为:图8数码管显示P.(2)当输入信号频率为10Hz时,运行仿真,按下S2键,数码管显示结果为:图9数码管显示频率(3)当输入信号频率为10Hz时,运行仿真,按下S4键,数码管显示结果为:图10数码管显示周期(4)当输入信号频率为10Hz时,运行仿真,按下S6键,数码管显示结果为:9图11数码管显示占空比(4)当输入信号频率为10Hz时,运行仿真,按下S8键,数码管显示结果为:图12数码管显示脉宽4.2数字频率计的误差分析当被测矩形波的频率为1Hz时,所测得的频率为1Hz,误差为0;所测得的周 期为999986ns,误差为0.0014%;所测得的脉宽为499993um,误差为0.0014%;所测得的占空比为50%,误差为0。当被测矩形波的频率为10Hz时,所测得的频率为10Hz,误差为0;所测得的 周期为100008ns,误差为0.008%;所测得的脉宽为50004um,误差为0.008%;所测 得的占空比为50%,误差为0。当被测矩形波的频率为100Hz时,所测得的频率为100Hz,误差为0;所测得 的周期为10000ns,误差为0;所测得的脉宽为5001um,误差为0.0002%;所测得的 占空比为50.01%,误差为0.02%o当被测矩形波的频率为1kHz时,所测得的频率为1001Hz,误差为0.1%;所测 得的周期为lOOOus,误差为0;所测得的脉宽为499um,误差为0.2%;所测得的占空 比为49.9%,误差为0.2%o当被测矩形波的频率为50kHz时,所测得的频率为50009Hz,误差为0.018%;所测得的周期为20us,误差为0;所测得的脉宽为Hum,误差为10%;所测得的占空 比为55%,误差为10%o当被测矩形波的频率为100kHz时,所测得的频率为100017Hz,误差为0.017%;所测得的周期为10us,误差为0;所测得的脉宽为5um,误差为0;所测得的占空比 为50%,误差为0o当被测矩形波的频率为500kHz时,所测得的频率为500065Hz,误差为 0.0130%;所测得的周期为6us,误差为80%;所测得的脉宽为3um,误差为80%;所 测得的占空比为50%,误差为0。此数字频率计由于晶振系统与定时器中断程序的原因,使它们在周期中占了 一部分,从而产生了误差,可以用调节延时程序的初值来减小误差,但总的来说,所测频率越大,误差也会越大。4.3设计总结10在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的 依据和出发点,整个设计过程都必须围绕这个技术要求来工作。在设计时遵循从 整体到局部也即自上而下的原则。把复杂的问题分解为若干个比较简单的、容易 处理的问题,分别单个的加以解决。将总任务分解成可以独立表达的子任务,这 些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。在 程序调试时应按各个功能模块分别调试。在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的 结构是否合理,一些循环结构和循环指令的使川是否恰当,能否使川较少的循环 次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某 些计算方法和查表技术适当简化等。程序设计是相当有可拓展性的,不过每个程 序的结构也必须严格按照标准来做,好让自己熟悉程序设计。通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程 序,也更加深入地了解单片机这么课程,掌握c语言的设计和调试方法。对于认 识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。在设计过 程中,得到了我的指导老师的悉心指导与帮助,在此一并表示衷心的感谢。参考文献1李广弟,朱月秀,冷祖祁.单片机基础(第3版).北京:北京航天大学出版社,2007年 6月.2清源计算机工作室.Protel 99 SE原理图与PCB及仿真.北京:机械工业出版社出 版,2007年8月.3马忠梅,籍顺心,张凯马岩(第4版).北京:北京航天大学出版社,2007年2月。4黄正瑾编著.CPLD系统设计技术入门与应用.北京:电子工业出版社,20025谢自美编著.电子线路设计2实验2测试.华中理工大学出版社,2002陈永甫编著.电子电路智能化设计.实例与应用.北京:电子工业出版,2002.8117康华光主编.电子技术基础(第四版).北京:高等教育出版社,1999附录A:PCB图底层图顶层图12附录B:CAD图13I.XC QO至*售$工 X;t1:I:4:-:I:,:MS叁-firUT上一工套-fir gzffi:4,土士Bzffi:忑re.Ks!M等:,鱼石石经 加隈5?二其*;451 FH;d,i,心:)久登登日久久 WMIrlKlg.塾无员泾圉艇=W下载电珞湖南工学院M卜二三冬叁苦-京与圣精耳数彳:三靶int:妒:等5:唆。三:Xftooooooooo-F郑册册锭 f atr ob v*3 S 5 M M i i000口00口8-附录C软件系统程序清单14程序名:频率计程序 编写者:彭文俊指导老师:王韧时 间:2014.6.01班 级:电气本H02班功 能:频率计测试频率,周期,脉宽,占空比型号:AT89S52 使用晶振为12MHz#include/zreg52.h#include char code dis_code=0 xc0,0 xf9,0 xa4,OxbO,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x0c,Oxff,Oxbf;char data find_code8=ll,11,11,11,11,11,11,10);#define uchar unsigned char#define uint unsigned intsbit on=P3 5;uchar cepl();uchar a,m;unsigned long rate,zhqil,zhqi2,zhqi,maikuan,zhkbi,zhkbil,zhkbi2,b;void DelayXlms(uint count)uint j;while(count一一!=0)for(j=0;j120;j+);15void disp()char i,j=0 x01;char k;for(i=0;i8;i+)P2=j;k=find_codei;P0=dis_codek;DelayXlms(1);j=_crol_(j,1);)uchar keycl()uchar k;k=Pl;k=k;return(k);)uchar key()uchar keyz,keyzi;keyz=keycl();if(keyz!=0)disp();disp();keyz=keycl();16if(keyz!=0)keyzi=keyz;while(keyz!=0)disp();disp();keyz=keycl();)keyz=keyzi;)return(keyz);)void time(void)TM0D=0X51;THl=0X00;TLl=0X00;TH0=(65536-50000)/256;定时 50msTL0=(65536-50000)%256;EA=1;/开总中断ETO=1;开定时器0中断ET1=1;)void tO(void)interrupt 1 using 2 TH0=(65536-50000)/256;TL0=(65536-50000)%256;a+;void tl(void)interrupt 3 using 2 TH1=O;17TL1=O;m+;)uchar cepl()while(a20);TRO=O;TR1=O;rate=m*65536+THl*256+TLl;THl=OxOO;TLl=OxOO;THO=(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_codel=rate/10%10;find_code0=rate%10;disp();)void cezhqi(void)while(on);18whiled on);TRO=1;while(on);TRO=O;zhqil=a50000+(TH0*256+TL0-15536);a=0;TH0=(65536-50000)/256;定时 50msTLO=(65536-50000)%256;DelayXlms(1);while(!on);while(on);TRO=1;while(!on);TRO=O;zhqi2=a*50000+(TH0*256+TL0-15536);THO=(65536-50000)/256;/定时 50msTLO=(65536-50000)%256;a=0;DelayXlms(1);zhqi=zhqil+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_codel=zhqi/10%10;find_code0=zhqi%10;disp();void cemaikuan(void)19while(on);while(!on);TRO=1;while(on);TRO=O;maikuan=a*50000+(TH0*256+TL0-15536);THO=(65536-50000)/256;TLO=(65536-50000)%256;a=0;DelayXlms(1);find_code7=maikuan/10000000;find_code6=maikuan/1000000%10;find_code5=maikuan/100000%10;find_code4=maikuan/10000%10;find_code3=maikuan/1000%10;find_code2=ma i kuan/100%10;f i nd_c o de1=ma i kuan/10%10;find_code0=maikuan%10;disp();void cezhkbi(void)while(on);while(!on);TRO=1;while(on);TR0=0;zhkbi1=a*50000+(TH0*256+TL0-15536);a=0;TH0=(65536-50000)/256;定时 50ms20TLO=(65536-50000)%256;DelayXlms(1);while(!on);while(on);TRO=1;while(!on);TRO=O;zhkbi2=a*50000+(TH0*256+TL0T5536);THO=(65536-50000)/256;/定时 50msTLO=(65536-50000)%256;a=0;DelayXlms(1);zhkbi=zhkbil+zhkbi2;b=zhkbil*100;find_code7=0;find_code6=0;find_code5=0;find_code4=0;find_code3=0;find_code2=0;find_codel=b/zhkbi/10;find_code0=b/zhkbi%10;disp();)void main()uchar k;time();while(1)k=keyO;disp();switch(k)21case OxOO:disp();break;case 0 x01:TR0=l;TR1=1;cepl();display();break;case 0 x02:TR0=0;TR1=O;cezhqi();break;case 0 x04:TR0=0;TR1=O;cemaikuan();break;case 0 x08:TR0=0;TR1=O;cezhkbi();break;default:break;22
展开阅读全文