ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:389.83KB ,
资源ID:11394587      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11394587.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字频率计的设计与实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数字频率计的设计与实现.docx

1、数字频率计的设计与实现基于单片机的数字频率计的设计 摘要 本文论述了基于单片机的数字频率计的实现,介绍了开发频率计所需要的各种软件。详细阐明了频率计的设计步骤以及方法,通过以89C52单片机为核心,利用单片机的算术运算和控制功能并采用LED数码管将所测频率显示出来。本频率计设计简洁,适用范围广。关键词 单片机;数字频率计;计数器引言随着电子信息产业的发展,频率的测量在科技研究和实际应用中的作用日益重要。频率是电子技术领域的一个基本参数,同时也是一个非常重要的参数。 由于科学技术的不断发展提高,人们对科技产品的要求也相应的提高,数字化的电子产品越来越受到欢迎。频率计作为比较常用和实用的电子测量仪

2、器,广泛应用于科研机构、学校、家庭等场合,因此它的重要性和普遍性勿庸质疑。数字频率计具有体积小、携带方便,功能完善、测量精度高等优点,因此在以后的时间里,必将有着更加广阔的发展空间和应用价值。比如将数字频率计稍作改进,就可制作成既可测频率,又能测周期、占空比、脉宽等功能的多用途数字测量仪器。将数字频率计和其他电子测量仪器结合起来,通过传感器制成各种智能仪器仪表,应用于航空航天等科研场所,对各种频率参数进行计量;应用在高端电子产品上,对其中的频率参数进行测量等等。研究数字频率计的设计和开发,有助于频率计功能的不断改进、性价比的提高和实用性的加强。国际上数字频率计的分类很多。按功能分类,因计数式频

3、率计的测量功能很多,用途很广。所以根据仪器具有的功能,电子计数器有通用和专用之分。通用型计数器是一种具有多种测量功能、多种用途的万能计数器。专用计数器指专门用来测量某种单一功能的计数器。数字频率计按频段分类(1)低速计数器:最高计数频率10MHz;(2)中速计数器:最高计数频率10100MHz;(3)高速计数器:最高计数频率100MHz;(4)微波频率计数器:测频范围180GHz或更高。1 频率计概述1.1 频率计原理频率就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。数字频率计是计算机、通信设备、音频视频等科研

4、生产领域中不可缺少的测量仪器,它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。1.2 频率计设计方法以前的频率计大多采用TTL数字电路设计而成,其电路复杂、耗电多、体积大、成本高。随后大规模专用IC(集成电路)出现,使得频率计开发设计变得简单,但由于价格较高,因此利用IC设计数字频率计的较少。单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在许多领域被广泛的应用,并且正在逐步取代现有的多片微机应用系统。单片机的

5、潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。本文考虑以单片机为控制平台设计一种频率计,整个设计采用定时、计数的方法测量频率,不但切实可行,而且体积小、精度高、保密性强、设计简单,大大降低了设计成本和实现复杂度。单片机实现的数字频率计的测频方法主要有以下几种:脉冲数定时测频法,脉冲周期测频法,脉冲数倍频测频法,脉冲数分频测频法,脉冲平均周期测频法,多周期同步测频法。本设计想设计一个低速计数器,用于对实验室的各种电子测量设备的本地振荡器进行校准。

6、所以设计中采用了相对简单的脉冲数定时测频法,利用STC89C52单片机的T0、T2的定时计数器功能,来完成对输入信号进行频率测量,频率结果通过5位八段数码管显示器显示出来。2 频率计的总体方案及硬件设计本设计的是一种以单片机为主控制的频率计。由单片机的计数器对输入进来的波形进行计数,由单片机的定时器进行内部定时,最后通过锁存器进入显示电路显示数值。频率计是由不同功能电路组成的一个完整电路,常见的频率计由四部分组成:被测时钟输入电路、计数电路、控制电路以及输出显示电路。被测时钟输入电路的作用是将被测信号变成脉冲信号;计数电路是对被测信号进行精确的计数;输出显示电路是将计数得到的数值进行运算然后通

7、过数码管或者液晶显示出来以供判断;控制电路是整个电路的控制部分,可以控制计数的开始与结束,或者对频率计增加新的功能。频率计各个功能电路协调工作,使得能够比较精准的测量出信号的频率。因为单片机内部振荡频率很高, 所以一个机器周期的量化误差相当小, 可以提高低频信号的测量的准确性。本设计整体设计思路如框图2.1 所示。 图2.1 设计思路框图2.1 单片机部分单片机诞生于20世纪70年代末,经历了SCM、MCU、SOC三大阶段。单片机是一种集成在电路芯片,是采用超大规模电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能

8、还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。本次设计采用了STC89C52 单片机, STC89C52是低电压、高性能CMOS8 位单片机, 片内含可反复擦写的只读程序存储器。如图2.2所示 图2.2 单片机系统板上硬件连线 :(1)把“单片机系统”区域中的P0.0P0.7(实际焊接中用P1)与“动态数码显示”区域中SN74HC573 锁存器端口D0D7用排线连接。(2)把“单片机系统”区域中的P2.6P2.7 与“动态数码显示”区域中的SN74HC573 锁存器端口的LE相连。 (3)把“单片机系统”区域中的P3.4(

9、T0)端子用导线连接到“频率产生器”区域中的WAVE端子上。2.2 控制电路 控制电路是整个电路设计成败的关键。其核心就是单片机,单片机接受外部脉冲的控制命令响应中断,启动定时计数器,这样设计可以人工干预测频的开始,更具有人性化。同时还通过端口控制锁存器实现动态显示电路,产生一锁存保持信号,使1S内的计数结果显示一段时间,以便观察,下一步输出一清零脉冲,使计数器的原纪录数据清零,准备下次计数。控制电路产生的锁存信号应在1S计数结束,清零信号应在锁存信号产生后产生。2.3 锁存部分锁存部分是由两个74HC573组成。两个锁存器上的LE分别接单片机上的P2.6、P2.7口,用于传输段和位的数据。当

10、LE为1时,锁存器对于数据是透明的D0D7的数据能够透明传输到Q0Q7;当LE为0时,输入端D0D7的数据将被锁存到输出端Q0Q7。加这两个锁存器的作用是对P1口的资源利用,可以通过2个锁存器同时对数码管的段和位同时选择,实现数码管的动态显示。如图2.3所示。 图2.3 锁存器2.4 显示部分数据显示电路由八段数码管组成, 采用器件LED 数码管。数码管分为共阴极和共阳极两种,本系统设计采用的是共阳极数码管。数码管的显示分为静态显示和动态显示两种,静态显示稳定亮度高,但是比较复杂,动态显示的电路简单,反应灵敏,但是显示亮度比较低,本系统采用动态显示数码管。如图2.4所示。 图2.4 数码管3

11、频率计的软件设计3.1 相关开发工具简介3.1.1 KEIL 软件简介在频率计设计过程中的软件设计部分主要采用KEIL Software公司出品KEIL uv4 for 80c51编译系统,这款软件是51系列兼容单片机的软件开发系统,它可以使用汇编语言和C语言作为输入源程序,当然C语言和汇编语言相比,在功能上、结构性、可读性、可维护性上有明显的优势,但是编译效率和代码的优化性上都不如汇编语言,输入的源程序分别由C51及C51编译器编译生成目标文件(.OBJ),无论用C语言还是用汇编语言编写的源程序KEIL C51都能够高效率的生成目标代码,目标文件可由LIB51创建生成库文件,也可以与库文件一

12、起经L51连接定位生成Intel标准的Hex文件,Hex文件是单片机能够识别并且可以执行的文件。Hex文件可以使用编程器下载到单片机中。如图3.1为KEIL的进入界面。图3.1 KEIL界面3.1.2 STC-ISP 简介前面提到STC公司的单片机能够执行KEIL编译系统生成的Hex文件,那么如何将Hex文件下载到单片机中呢,我们采用的是STC公司自主研发的一款STC-ISP单片机下载编程烧录软件,主要是针对STC系列单片机而设计的,可下载STC89系列、12C2052 系列和12C5410等系列的STC单片机,使用过程中只要将单片机通过USB接口电路和电脑主机相连接,装上驱动程序,打开STC

13、-ISP软件就可以识别到单片机,选择好芯片型号和要下载的程序就可以完成下载功能,现已被广泛使用。如图3.2为STC-ISP下载界面。图3.2 STC-ISP下载界面。3.1.3 PROTEL 99se 简介在频率计设计的硬件电路设计部分中,主要使用的是PROTEL Technology公司开发的PROTEL 99SE软件。这款软件是基于Windows环境下的电路板设计软件,PROTEL 99SE主要由电路原理图设计(Advanced Schematic)和印刷电路板设计(Advanced PCB)两大部分组成,功能强大,人机界面友好,易学易用,能够提供单片机等常用的一些电子器件原理图,使用软件

14、能够画出频率计的设计原理图,并能够进行原理图的电气规则检查和信号完整性分析,如果条件允许的话,还可以自己设计PCB做出一个完整的硬件产品。如图3.3为PROTEL设计页面。图3.3 PROTEL设计页面3.2 软件程序设计基于单片机的频率计是一种硬件+软件的模式,也就是一种嵌入式产品,所以在频率计的设计过程中要考虑到硬件和软件两方面的设计,具体的软件要根据硬件电路来编写(),为了高质量的完成设计,一般都是首先搭建硬件电路,再电路完成的基础上再编写软件。用单片机设计频率计通常采用两种计数办法,第一种方法是使用单片机自带的计数器对输入脉冲进行计数;第二种方法是单片机外部使用计数器对脉冲信号进行计数

15、,计数值再由单片机读取。第一种方法的好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器。因此本文采用第一种方法。 3.2.1程序流程图开始入口系统初始化频率计数显示3.2.2 程序的功能实现过程(1)单片机定时计数原理和设置单片机内部定时是晶振的12分频计数,计数源是内部的脉冲信号。计数器是在每个机器周期的S5P2状态时采样T1端口,当前一个机器周期采样为1且后一个机器周期采样为0时,计数器加1计数。计算机需用两个机器周期来识别1次计数,因而最大计数速率为振荡频率的124。在采用12 MHz晶振的情况下,单片机最大计数速度为05 MHz即500 kHz。另外,此处对外部事件

16、计数脉冲的占空比无特殊要求,但必须保证所给出的高电平在其改变之前至少被采样1次,即至少保持1个完整的机器周期。由此可见,从T0口输入脉冲信号,T0可实现对脉冲个数的计数。当定时计数器T0设定为计数方式时,其计数脉冲是来源T0端口的外部事件。当T0端口上出现由“1”(高电平)到“0”(低电平)的负跳变脉冲时,计数器则加1计数。将定时器计数器的方式寄存器TMOD,用软件赋初值0x06。这时定时器计数器T0采用工作方式2,即T0为8位自动重装初值计数器。采用定时器计数器T2作为自动重装初值定时器,设计一次中断定时62.5ms,在定时中断程序中定义变量计数16次达到1s定时。当达到1s时进入定时器2中

17、断,使计数值被记录到缓冲数据数组,最后通过主函数显示出来。见程序如下。void delay(unsigned int a) unsigned char i; while(a-!=0) for(i=125;i0;i-); 延时程序为1ms。由于执行一条for()语句为4us 所以循环两次delay(2)为1ms。void timer_init(void) TMOD=0x06; TH0=0; TL0=0; TR0=1; ET0=1; RCAP2H=(65536-62500)/256; RCAP2L=(65536-62500)%256; TH2=RCAP2H; TL2=RCAP2L; ET2=1;

18、TR2=1; EA=1; 定时器/计数器初始化程序。void timer2(void) interrupt 5 unsigned int i; time+; TF2=0; if (time=16) time=0; EA=0; fre=(long)count*256+TL0; for(i=0;i=5;i+) dis_bufferi=fre%10; fre=fre/10; TL0=0; TH0=0; count=0; EA=1; 定时器T2中断程序。void main() timer_init(); while(1) int i; for(i=0;i=4;i+) duans=1; P1=dis_c

19、odedis_bufferi; duans=0; weis=1; P1=dis_biti; weis=0; delay(2); 通过主函数显示出来(2)外部中断的原理和设置外部中断是程序在正常执行时,由于受到其它原因,暂时停止正常程序的执行去执行中断服务程序,再返回原来中断的地方继续执行的过程。计数器T0设置成计数中断,当有被测频率脉冲负跳变时进入中断计数。如下计数器T0中断。void timer0() interrupt 1 count+;3.3 程序的调试编写好的程序最先在单片机开发板上调试,所使用的开发板是天翔TX-1C开发板,在此开发板上调试通程序以后外植到万能板上焊接。如图3.4。图

20、3.4 单片机3.4 设计过程中出现的问题在最开始设计程序时没有考虑锁存器,直接编完程序以后从开发板的引脚引出到面包板上连接LED显示器,发现显示器的亮度不够,最开始认为是显示延时的问题,但是调试延时后没发现亮度有改善,后来以为是动态显示的缘故但是当改变完程序变为静态显示之后发现亮度没有显著的改善。最后经过多方查询知道添加锁存器可以驱动LED显示器,使之亮度增加,当改变完程序之后发现亮度有明显的改善,由此我们设计出了亮度高的LED显示器。我们设计的单片机的晶振是12M,在低频时比较准确但是到了频率大一些时输出显示就有了明显的误差。基于这种误差,可以有几点解决方法:第一,选用频率较高和稳定性好的

21、晶振。例如现在也会有40MHz甚至更高晶振频率的单片机。第二,测量频率较高的信号时,可先对信号进行分频,再进行测量。第三,改进定时计数原理或外加一种专门的计数器,从根本上减小误差。由于定义计数变量fre为unsigned long fre 因此可知频率的计数范围为065535。其设计出的成品最大频率可测65751Hz,显示为65284Hz。误差比较大,如图3.5。图3.5 实物图4 频率计的功能扩展完善 (1)增加预处理电路部分在实际工作中,需用两级NPN放大管对输入的频率进行放大,如果可以再级联一个NPN放大管或者采用放大能力更强的三极管或CMOS管代替。后一种思路虽然在价格上有所增加,但却

22、减少了电路的复杂程度,并且在电路板一旦出现问题时,能尽最大可能的减少元器件的更换和连接线路的修改,非常方便和实用。(2)增加键盘控制通过按键实现数字频率计的测频率,周期,占空比,脉宽等各项功能。按不同的键起到不同的作用,也就是完成不同的功能。还可以根据按键数的多少来选择不同的键盘。所以我们可以从实际操作中知道键盘的扩展是非常方便的。(3)增加液晶显示器(LCD)进行数据显示LED显示管只能显示09和一些简单的英文字母,频率计的功能就受到极大的限制,而LCD显示管能够解决LED的不足,增强显示功能。LCD具有体积小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,因此广泛应用于各种仪

23、表设备中去。LCD显示器主要有字符型和点阵型两种。5 结束语本文是应用单片机设计的数字频率计。利用C语言进行单片机应用系统数字频率计的设计,不仅编程简单,精度高,而且避免了汇编语言在进行乘除法运算时要考虑采用浮点运算的要求。与汇编语言相比编程语句大大减少。在这段时间里,我系统的学习了单片机的知识,也看到了单片机控制程序的广阔前景,选择这个课题,正是希望能加深自己对单片机各方面的理解,并在运用先前学到的知识进行设计的过程中,进一步的理解其实质和作用,巩固和拓展以前的学习成果,从而希望今后能在这个领域做出成绩。设计的过程中,我们也真正的体会到了书本知识转化为实践时的困难,往往很不起眼的一件事情,就

24、是设计的关键,必须得搞清楚。为了查找相关的技术文献资料,我们上网,去学校图书馆查找资料,找老师咨询,从而学到了书本上学不到的东西,并且掌握了设计的一般方法。时间很短,我们的能力也有限,很可能我们的设计存在很多的不足,但我在这次设计中学到了很多东西。6 致谢参考文献1 频率计XX百科.2 Protel99 SE 电路设计与仿真教程.北京:机械工业出版社.3 李广弟.单片机基础.北京:北京航空航天大学出版社.4 彭伟.单片机C语言程序设计实训100例.北京:电子工业出版社.胡烨. 5 谭浩强主编.C程序设计教程.北京:清华大学出版社.6 周润景等.基于PROTEUS的电路及单片机设计与仿真.北京:

25、北京航空航天大学出版社.Digital Frequency Meter Design Based on MCUComputer and Information Engineering College Directed by TeacherAbstract This paper presents the design scheme of digital frequency meter based on MCU, and introduces a variety of software neededbythefrequency meter, and explain in detailthedesi

26、gn stepsand methodsofthefrequency meter by STC89C52 as the control core,which use arithmetic operationsand control functionsof the MCU, and then display by LED digitaldisplay tubes. This frequency meter is simple design for a wide range.Key Words MCU;digital frequency meter;Counter 附录(1)成品实物图(2)源程序代

27、码#includeunsigned char code dis_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ; / 段选unsigned char code dis_bit=0x10,0x08,0x04,0x02,0x01;/ 位选unsigned char dis_buffer=0,0,0,0,0; /缓冲unsigned char count=0;unsigned char time;unsigned long fre; void timer_init();void delay(unsigned int a);sbit du

28、ans=P26;sbit weis=P27;/-void delay(unsigned int a) /延时约1ms(12Mhz晶振) unsigned char i; while(a-!=0) for(i=125;i0;i-);/-void timer_init(void) /定时/计数器初始化 TMOD=0x06; /计数器0工作工作方式2,自动重装初值 TH0=0; /计数器初值为0 TL0=0; TR0=1; /计数器开始计数 ET0=1; /打开计数器0中断 RCAP2H=(65536-62500)/256; /在程序初始化的时候给RCAP2L和RCAP2H值, RCAP2L=(65

29、536-62500)%256; TH2=RCAP2H; /12M晶振下每次中断62.5ms TL2=RCAP2L; ET2=1; /打开定时器2中断 TR2=1; /定时器2开始计时 EA=1; /开总中断 /-void timer2(void) interrupt 5 /定时器2中断(62.5ms) unsigned int i; time+;TF2=0; /定时器2的中断标志位TF2不能够由硬件清零,所以要在中 断服务程序中将其清零 if (time=16) /定时1s时间到 time=0; /计时清0 EA=0; /关中断 fre=(long)count*256+TL0; /count*256强制转换成long型,否则将不产生进位 for(i=0;i=5;i+) dis_bufferi=fre%10; fre=fre/10; TL0=0; /清零计数器0计数 TH0=0; count=0; /清零计数器0计数 EA=1; /开始中断 /-void timer0(void) interrupt 1 /计数器0中断 count+;/-

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1