等精度频率计_第1页
等精度频率计_第2页
等精度频率计_第3页
等精度频率计_第4页
等精度频率计_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、精度频率计的设计一 摘要本设计是基于mcs-51单片机的等精度频率计。输入信号为峰峰值5v的正弦信号,频率测量范围10hz100mhz ,频率测量精度为0.1%。采用1602液晶显示器显示测量结果。信号源由proteus 的虚拟信号发生器产生。二 关键词 频率计 等精度 单片机 分频三 设计原理与总体方案测量一个信号的频率有两种方法:第一种是计数法,用基准信号去测量被测信号的高电平持续的时间,然后转换成被测信号的频率。第二种是计时法,计算在基准信号高电平期间通过的被测信号个数。根据设计要求测量10hz100mhz的正弦信号,首先要将正弦信号通过过零比较转换成方波信号,然后变成测量方波信号。如果

2、用第一种方法,当信号频率超过1khz的时候测量精度将超出测量极度要求,所以当被测信号的频率高于1khz的时候需要将被测信号进行分频处理。如果被测信号频率很高需要将被测信号进行多次分频直到达到设计的精度要求。根据设计要求用单片机的内部t0产生基准信号,由into输入被测信号,通过定时方式计算被测信号的高电平持续时间。通过单片机计算得出结果,最后有1062液晶显示器显示测量结果。等精度频率计的系统设计框架如下图1所示。at89c51液晶显示被测信号信号转换(过零比较)分频处理数据选择器图1 等精度频率计系统设计框图四 芯片以及电路介绍硬件电路主要分为信号转换电路、分频电路、数据选择电路、单片机系统

3、和显示电路五部分。电平转换电路:要将正弦信号转换成方波信号可以用过零比较电路实现。正弦信号通过lm833n与零电平比较,电压大于零的时候输出lm833n的正电源+5v,电压小于零的时候输出负电源0v。具体电路如图2所示。图2信号转换电路分频电路:分频电路采用十进制的计数器74hc4017来分频,当被测信号脉冲个数达到10个时74hc4017产生溢出,c0端输出频率为输入频率的1/10,达到十分频的作用。如果当频率很高是需要多次分频只需将多片74hc4017级联就可以了。74hc4017时序图如图3所示,系统分频电路如图4所示。图374hc4017时序图图4分频电路数据选择电路:根据设计要求要根

4、据计数脉冲个数来选择分频次数,可以用74151来选择分频次数,74151的选择控制信号有单片机的i/o口来控制。数据选择电路如图5所示。图5数据选择电路单片机系统:单片机采用at89c51,采用12mhz的晶振频率。单片机的p3.2口接被处理后的被测信号,p0口接液晶显示器的数据输入端,ale,rd,wr,p0.0,p0.1通过外接控制电路接液晶显示器的控制端。单片机系统的电路如图6所示。图6单片机系统显示电路:显示电路由1602组成,其电路如图7所示。图7显示电路电路总图图8电路总图五 程序设计等精度频率计的软件设计主要由主程序、分频选择程序、显示程序组成。等精度频率计的算法设计:根据设计要

5、求频率范围是10hz100mhz,当频率为10hz时,t=100000us,高电平为50000us,0.1%的误差为100us,由单片机产生的基准频率为1mhz,t0=1us,最大误差为1us,计数个数为50000(方式1),满足设计要求。当频率增加到1khz时,产生的误差刚刚能达到设计要求,这时计数个数为500。当频率大于1khz时(即计数个数小于500)就需要将被测频率分频后再测量,如当频率为10khz时,先计算计得的脉冲数等于50,小于了500,所以将10khz的信号10分频得到1khz,这时就满足要求了。最后得到的频率 f=其中n为计得的脉冲个数,i为分频的次数。主程序:主程序首先对系

6、统环境初始化,设置分频选通信号p2=0x00,选通0通道。设置t0工作方式,采用硬件启动方式,gate=1,当int0和tr0同时为1时启动计时,计数方式为方式1(16位),th0和tl0都置零。当外部中断int0=1时等待,当外部中断为0时启动t0即tr0=1,当int0一直为0时就等待,一旦int0=1就启动计数同时等待,当int0为0时跳出并关闭t0即tr0=0。这样就计得高电平期间基准脉冲个数,当脉冲个数小于500时就选择10分频信号,即p2自加1,同时记录分频一次;如果分频后脉冲个数还小于500则再次分频,直到计数个数大于500。其示意图如图9所示,主程序流程图如图10所示。被测脉冲

7、int0基准脉冲t0等待启动t0,tr0=1启动计数停止计数,读出计数个数n个脉冲图9 计数工作示意图开始初始化数据选择信号系统初始化读出计数个数nn<=500变换数据选择通道,计算分频次数iy显示结果n图10 主程序流程图六 程序清单主程序:#include<reg51.h>#include<stdio.h>#include<lcd.c>#include<math.h>sbit p32=p32;main() unsigned long int period,k,j,i=0; float f,m; char buff30; init_lcd

8、(); p2=0x00; while(1) tmod=0x09; th0=0; tl0=0; while(p32=1); tr0=1; while(p32=0); while(p32=1); tr0=0; period=th0*256+tl0; while(period<=500) /*判断是否分频及计算分频次数*/ p2+; i+;period=period*10; if(i=6) p2=0x00;break; k=pow(10,i); /* 10的i次方*/ f=(1000000.0/(2*period)*k; if(f<1000) sprintf(buff,"f=%

9、5.2fhz",f); else m=f/1000.0; sprintf(buff,"f=%5.2fkhz",m); lcdprintf(0,0,buff); 显示子程序:#include <lcd.h>char code cgram_table=0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,/;年0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,/;月0x0f,0x09,0x09,0x0f,0x0,0x09,0x0f,0x00; /;日void delay() unsigned char

10、 i; for(i=0;i<250;i+);void init_lcd() unsigned char i; wr_com=0x38; /设置为8位数据总线,16*2,5*7点阵 for(i=0;i<100;i+) delay(); wr_com=0x01; /清屏幕 for(i=0;i<50;i+) delay(); wr_com=0x06; /光标移动,显示区不移动,读写操作后ac加1 for(i=0;i<50;i+) delay(); wr_com=0x0c; for(i=0;i<50;i+) delay();void init_cgram() unsign

11、ed char i;/;设置自定义字符 wr_com=0x40; for(i=0;i<24;i+) wr_dat=cgram_tablei; for(i=0;i<40;i+) delay();void putchar(char t) wr_dat=t; delay(); delay(); void clr_lcd() wr_com=0x01; delay(); delay();void lcdprintf(char x,char y,char *s) /clr_lcd(); if(y>1)y=1; wr_com=(y*0x40+x)|0x80; delay(); delay(

12、); while(*s!=0) wr_dat=*s; s+; delay(); delay(); 七 仿真过程一、先用proteus软件实现各芯片间的连接二、编写程序三、进行仿真1、新建一个文件夹,打开wave6000软件新建工程,保存为有意义的名字,并选择atmel公司的at89c51芯片。2、在wave6000中新建一个文件,将编写好的程序放进去,保存为后缀为.c的文件,并进行编译、修改,没有错误以后就可以加载文件,随后生成hex文件。3、 再一次进行编译就可以生成hex文件。4、 在protues软件中右单击at89c51芯片,在program files中找到生成的hex文件,点击ok

13、即可。5、 点击protues软件左下角开始按钮,仿真开始,可得结果。四、仿真结果屏幕上显示当时频率,为200.16hz左右浮动。仿真结束。八 心得体会经过一个星期的单片机设计实习,我们遇到的挫折很多,但是收益更多。万事开头难,选择一个适合的题目就是一个好的开始。由于专业只是匮乏,再加上急于求成的心理,我们对我所选择的题目的工作原理、难易程度等的认识不足,致使后面的每一步都举步维艰。然后,在proteus软件上做仿真实验,将所用到的元器件一个个的从库中找到,并安装到虚拟电路板上,然后用导线将对应的接口相连。由于经验不足,没有注意到有些接口虽然没有用导线相连,但是上面的输入输出接口以及接口上的标

14、号其实表示他们是连接着的。当总的电路图连接完毕,就要往里面加载程序做仿真实验了,可是问题又来了,程序一直过不了,总是出现这样那样的问题,不过还好有老师帮我们把程序修改好了,才让整个单片机系统运转起来了,虽然只是仿真,但是我们依然兴奋异常。接着就是最漫长、也是最考验我们耐心与细心的阶段焊接电路了,由于我们的题目中芯片的数量较多,我们比别人还多了一个排版的过程,不紧要在有限的空间里将所有的芯片囊括其中,而且要兼顾她们之间的连接关系,要做到接线的优化,真是费了我们不少的工夫,当排版完成以后就要动手焊接了,看着一个个锡滴将导线、接口、电路板紧紧的粘在一起,形成一个个亮晶晶的焊点,我们的高兴劲儿就甭提了,随着焊点的个数不断增加,焊接的难度也不断的增大,往往很小的区域内密密麻麻的分布着好多焊点,还有数不清的导线,要避开它们,成果焊接好其中的焊点可真不容易,由于焊接技术不够熟练,好几次都将几个焊点焊接到了一起,我们就有要忙着将其分开,最后还有几个点是要几根导线同时连接到一个焊点上,松了就重新焊,没焊上就要继续焊接。最后一部就是在at89c51上烤程序,然后运行了。虽然,遇到了种种挫折,但是通过这次设计实习,

温馨提示

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

评论

0/150

提交评论