欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    等精度频率计(11页).doc

    • 资源ID:37351534       资源大小:341KB        全文页数:11页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    等精度频率计(11页).doc

    -等精度频率计-第 11 页等精度频率计一、设计任务与要求设计并制作一台能测量频率和周期的等精度频率计,即在整个频率测量和周期测量范围内可获得同样高的测量精度。电路示意图如图所示。 等精度频率计电路示意图(1) 频率测量范围:1Hz10MHz(7位数字显示);(2) 周期测量范围:1s;(3) 信号及信号幅度:矩形波,TTL电平;(4) 测量误差10-7(仅考虑计数误差);(5) 预置闸门时间:1s(6)为了达到能对相关知识点进行练习的目的,要求按图1所示的电路结构设计,除应包括单片机、数字电路部分外,还应按发挥部分的要求增加模拟通道电路部分。二计数测量误差闸门时间由晶体振荡器多次倍频或分频获得,所以,标准频率误差就是频率计中晶体振荡器的准确度。为了使标准频率误差对测量结果产生影响足够小,应认真选择晶振的准确度。一般说来,频率计显示器的位数愈多,所选择的内部晶振准确度就应愈高。例如七位数字的通用计数器一般采用准确度优于107数量级的晶体振荡器。这样,在任何测量条件下,由标准频率误差引起的测量误差,都不大于由±1误差所引起的测量误差。放大,整形与门晶振分频门控计数N个译码显示被测信号的频率图2 等精度频率计的示意波形图设单片机在同一闸门时间TG内,测得被测信号fx的个数是Nx,测得时钟信号fs的个数是NS,则可得上式表明频率测量的相对误差由三项组成,前面两项是量化误差,也称为计数误差,后面一项是标准频率的误差。由于电路中同步控制D触发器的同步作用,已经消除了被测信号NX的量化误差NX,因此频率测量计数(量化)相对误差的绝对值仅为:此时,虽然量化误差NS依然存在,但由于标准频率fs较高,即NS较大,而|NS|<1,所以很小;若取fs=10MHz,在TG=1s时,量化误差10-7,并且量化的相对误差与被测信号的频率fx无关。三电路设计原理频率为fx的被测信号经通道放大整形后输入到同步门控制电路和主门1,晶体振荡器的输出信号作为标准信号(时基信号)输入到主门2.被测信号在同步控制门的作用下,产生一个与被测信号同步的闸门信号,被测信号与标准信号在同步门控制信号的控制下。在同部门打开时通过同步门分别输入到事件计数器和时间计数器的信号输入端,计数器开始计数。同步门关闭时信号不能通过主门。计数器停止计数吗,单片机发出命令读入计数器的数值,并进行数据处理,将处理后的结果送到单片机中显示。等精度测量方法是采用的多周期同步测量。由单片机发出预置门控制信号gate,gate的时间宽度对测量频率的精度影响较少,可以在较大的范围内选择,即在高频段时,闸门时间较短,低频是闸门时间较长。实现了全范围等精度测量,减少了低频测量的误差。在同部门的控制下,一方面保证了被测信号和时基信号的同步测量;另一方面在同步们打开后计数器并不是马上停止计数,而是在被测信号反的下一个上升沿停止计数。即在实际闸门时间计数,从而提高了测量精度。由于采用D触发器实现的同步们的同步作用,事件计数器所记录的Nx值已不存在误差的影响,但由于时钟信号与闸门的开和关无确定的相位关系,时间计数器所记录的N0的值仍存在1的误差影响,只是由于时钟频率很高,误差的影响很小。所以在全频段的测量精度是均衡的,从而实现等精度频率测量。四硬件电路设计 等精度频率计主要由以下几部分组成:单片机控制部分,同步门控制电路,计数与显示电路。其中P1.0用于控制同步门D触发器74HC74产生同步的闸门信号,P1.2用于对CD4040组成的计数器清零,高位计数值在单片机的T0,T1中。然后单片机对计数值进行运算处理,并送出显示。同步门控制电路由D触发器,74HC04和74HC00组成(主门1,主门2)。主门1控制被测信号fx的通过主门2控制时钟信号T0的通过,两门的启闭由同步门控制电路控制。计数器包括事件计数器和时间计数器两部分,他们是两组完全相同的计数电路。分别由前后两级组成。前级由两个计数器CD4040级联构成八位二进制计数器;后级由单片机内的计数器构成十六位二进制计数器。标准信号部分采用10MHz石英晶体振荡器来提供测量所需的标准脉冲信号。开始计数器清零开闸门置取样时间关闸门读取数据运算程序显示程序结束五软件设计#include"reg52.h"#include"absacc.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned int#include"LCD1602.h"/LCD1602显示程序头文件#include"LCD1602.c"/#define KEY_H XBYTE0xFC00/按键行地址/#define KEY_L XBYTE0xFE00/按键列地址#define Data_LL XBYTE0xFA00/Y2#define Data_HL XBYTE0xF800/CS70sbit CLK=P11;/闸门信号/sbit PR=P11;/清零信号,D触发器sbit Q=P10;/判断用sbit MR=P13;/清零信号,计数器/定义下面所需变量unsigned long int cnt0=0,cnt1=0;float num=0,numb=0;/,Tnum=0,Tnumb=0void main()/初始化TMOD=0x55;/T0,T1都为计数模式1 C/T=1;M1M0=01; MR=1;/使两个计数器清零TL0=0;TL1=0;TH0=0;TH1=0;/PR=0;/关同步闸门 RCAP2H=(65536-50000)/256;/T2计数初值46080RCAP2L=(65536-50000)%256; ET2=1;/开T2中断EA=1;/开总中断TR2=1;/开T2定时nint_LCD();/液晶初始化print("COME ON !-",0x40);while(1);void timer2()interrupt 5uchar i,date_l,date_h;unsigned long int dis0,dis1;TF2=0;ET2=0;TR2=0;MR=0;/PR=1;CLK=1; TR0=1;TR1=1;i+;if(i>=20)i=0;CLK=0;while(Q);/此处是等待电平的变换TR0=0;TR1=0;dis0=TL0|(TH0<<8);dis1=TL1|(TH1<<8);date_l=Data_LL;date_h=Data_HL;cnt0=dis0*256+date_l;cnt1=dis1*256+date_h; /10000000numb=(float)cnt0/(float)cnt1*10000000; /Tnumb=(float)cnt1/(float)cnt0/10;num=numb;/Tnum=Tnumb;/F=?if(numb>=10000000)num=num;dis_LCD(unsigned long int)num/10000000+0x30,0x02);dis_LCD(unsigned long int)num/1000000%10+0x30,0x03);print(".",0x04);dis_LCD(unsigned long int)num/100000%10+0x30,0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print("MHz",0x0b); else if(numb>=1000000)&&(numb<10000000)num=num*10;dis_LCD(unsigned long int)num/10000000+0x30,0x02);print(".",0x03);dis_LCD(unsigned long int)num/1000000%10+0x30,0x04);dis_LCD(unsigned long int)num/100000%10+0x30,0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print("MHz",0x0b); else if(numb>=100000)&&(numb<1000000)num=num*100;dis_LCD(unsigned long int)num/10000000+0x30,0x02);dis_LCD(unsigned long int)num/1000000%10+0x30,0x03);dis_LCD(unsigned long int)num/100000%10+0x30,0x04);print(".",0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print("kHz",0x0b); else if(numb>=10000)&&(numb<100000)num=num*1000;dis_LCD(unsigned long int)num/10000000+0x30,0x02);dis_LCD(unsigned long int)num/1000000%10+0x30,0x03);print(".",0x04);dis_LCD(unsigned long int)num/100000%10+0x30,0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print("kHz",0x0b); else if(numb>=1000)&&(numb<10000)num=num*10000;dis_LCD(unsigned long int)num/10000000+0x30,0x02);print(".",0x03);dis_LCD(unsigned long int)num/1000000%10+0x30,0x04);dis_LCD(unsigned long int)num/100000%10+0x30,0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print("kHz",0x0b); else if(numb>=100)&&(numb<1000)num=num*100000;dis_LCD(unsigned long int)num/10000000+0x30,0x02);dis_LCD(unsigned long int)num/1000000%10+0x30,0x03);dis_LCD(unsigned long int)num/100000%10+0x30,0x04);print(".",0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print(" Hz",0x0b); else if(numb>=10)&&(numb<100)num=num*1000000;dis_LCD(unsigned long int)num/10000000+0x30,0x02);dis_LCD(unsigned long int)num/1000000%10+0x30,0x03);print(".",0x04);dis_LCD(unsigned long int)num/100000%10+0x30,0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print(" Hz",0x0b);else/ if(numb<10)num=num*10000000;dis_LCD(unsigned long int)num/10000000+0x30,0x02);print(".",0x03);dis_LCD(unsigned long int)num/1000000%10+0x30,0x04);dis_LCD(unsigned long int)num/100000%10+0x30,0x05);dis_LCD(unsigned long int)num/10000%10+0x30,0x06);dis_LCD(unsigned long int)num/1000%10+0x30,0x07);dis_LCD(unsigned long int)num/100%10+0x30,0x08);dis_LCD(unsigned long int)num/10%10+0x30,0x09);/dis_LCD(unsigned long int)num%10+0x30,0x0a);print(" Hz",0x0b); /T=? if(Tnumb>=1000000)Tnum=Tnum*10;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);print(".",0x03);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x04);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)Tnum%10+0x30,0x0a);print("s",0x0b); else if(Tnumb>=100000)&&(Tnumb<1000000)Tnum=Tnum*100;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x03);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x04);print(".",0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)Tnum%10+0x30,0x0a);print("kHz",0x0b); else if(Tnumb>=10000)&&(Tnumb<100000)Tnum=Tnum*1000;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x03);print(".",0x04);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)num%10+0x30,0x0a);print("kHz",0x0b); else if(Tnumb>=1000)&&(Tnumb<10000)Tnum=Tnum*10000;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);print(".",0x03);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x04);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)Tnum%10+0x30,0x0a);print("kHz",0x0b); else if(Tnumb>=100)&&(Tnumb<1000)Tnum=Tnum*100000;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x03);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x04);print(".",0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)Tnum%10+0x30,0x0a);print(" Hz",0x0b); else if(Tnumb>=10)&&(Tnumb<100)Tnum=Tnum*1000000;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x03);print(".",0x04);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)Tnum%10+0x30,0x0a);print(" Hz",0x0b);else/ if(numb<10)Tnum=Tnum*10000000;dis_LCD(unsigned long int)Tnum/10000000+0x30,0x02);print(".",0x03);dis_LCD(unsigned long int)Tnum/1000000%10+0x30,0x04);dis_LCD(unsigned long int)Tnum/100000%10+0x30,0x05);dis_LCD(unsigned long int)Tnum/10000%10+0x30,0x06);dis_LCD(unsigned long int)Tnum/1000%10+0x30,0x07);dis_LCD(unsigned long int)Tnum/100%10+0x30,0x08);dis_LCD(unsigned long int)Tnum/10%10+0x30,0x09);dis_LCD(unsigned long int)Tnum%10+0x30,0x0a);print(" Hz",0x0b);MR=1;/PR=0;TL0=0;TL1=0;TH0=0;TH1=0;ET2=1;TR2=1;

    注意事项

    本文(等精度频率计(11页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开