等精度频率计

合集下载

《等精度频率计》课件

《等精度频率计》课件
误差来源
分析等精度频率计测量误差的主要来源,如信号源的频率稳定度、 计数器的计数误差等。
误差传递
研究误差在测量过程中的传递规律,为减小误差提供依据。
误差补偿
根据误差ห้องสมุดไป่ตู้析结果,采取相应的补偿措施,减小等精度频率计的测量 误差。
04
等精度频率计的性能测 试与评估
测试环境与设备
测试环境
实验室环境,确保电源稳定、温度适 宜、湿度适中。
应用领域拓展
通信领域
等精度频率计在通信领域的应用越来越广泛,如信号发生器、频 谱分析仪等。
测量测试
等精度频率计在测量测试领域的应用也越来越广泛,如时间频率测 量、电子元件测试等。
物联网领域
等精度频率计在物联网领域的应用也越来越广泛,如智能家居、智 能农业等。
未来发展方向
更高精度
随着科技的发展,对频率计的测量精度要求越来越高,未来等精 度频率计将向更高精度方向发展。
02
它采用等精度测量技术,消除了传统频率计由于时基不稳定而
引起的测量误差。
等精度频率计具有广泛的应用,如电子测量、通信、雷达、导
03
航等领域。
等精度频率计的原理
等精度频率计基于等精度测频 原理,采用高稳定的晶体振荡 器作为时基,对输入信号进行
计数和测量。
它通过计数输入信号在一定 时间内的周期数,再根据时 基的频率计算出输入信号的
宽测量范围
等精度频率计能够测量低频信 号和高频信号,测量范围较广 。
可扩展性
等精度频率计可以与其他测量 仪器进行集成,实现更复杂的 测量功能。
02
等精度频率计的应用
测量信号频率
测量信号频率是等精度频率计的基本 应用,它可以准确测量各种信号源的 频率,包括正弦波、方波、脉冲波等 。

等精度频率计

等精度频率计
q1,q2,q3,q4,q5: out integer range 0 to 15);
end shuchu;
architecture a of shuchu is
begin
process (data1,data2,data3,data4,data5,data6,data7,data8,data9,data10)
signal c: std_logic;
begin
process (clk,nr)
begin
if nr = '1' then
f<=0;c<='0';
elsif (clk'event and clk = '1')then
if f<9999 then
f<=f+1;
else
f<=0;
c<= not c;
end if;
关键字:
频率、周期、标准时钟、乘除运算、分频、十进制显示、锁存
方案比较:
(1)用单片机实现:
等精度数字频率计涉及到的计算包括加,减,乘,除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现。因此,我们选择单片机和CPLD/FPGA的结合来实现。电路系统原理框图如图所示,其中单片机完成整个测量电路的测试控制,数据处理和显示输出;CPLD/FPGA完成各种测试功能;键盘信号由AT89C51单片机进行处理,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LS164分别驱动数码管。
为了节省资源改进了除法器进制转化模块,说明如下:
被除数
序号
10进制

等精度频率计PROTUSE仿真

等精度频率计PROTUSE仿真

等精度频率计一:系统设计要求等精度频率计可以精测量,同时通过4位LED 数码管频率。

最小显示频率率为0.001,测量误差为 0.0002。

二:系统结构框图三:单元硬件设计说明(1)LED 显示电路:LED 显示电路采用7SEG-MPX4-CC 显示模块和八个上拉电阻组成。

单片机 AT89C51LED 显示时钟电路复位电路信号发生器显示数字的数量级(2)时钟电路:时钟电路由一个12M晶振,和两个3pF电容组成,产生12M赫兹的方波脉冲信号做为单片机的内部时钟(3)复位电路(4)信号发生器(5)显示选择器,用来指明当前频率选择的数量级单位。

四:软件设计与说明(包括在Protuse中的电路图)(1)连接完毕的电路图(2)主程序流程路复位电路:复位电路由一个1uF的电容和一个10K的电阻组成是毫秒级子程序(3)运行中的电路5: 程序代码//#include <at89x52.h>#include <reg51.h>#include <stdio.h>#define uint unsigned intsbit p20=P2^0;sbit p21=P2^1;sbit p22=P2^2;sbit p23=P2^3;sbit Q0=P2^4;sbit Q1=P2^5;sbit Q2=P2^6;sbit Q3=P2^7;sbit LED1=P0^1;sbit LED2=P0^2;sbit LED3=P0^3;uint t=0,number=0,count=0,k,a,b,c,d;float f=0.0,h=0.0,m=0.0;char table[10]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};void delay_ms(uint ms) //延时毫秒级子程序{uint i,j;for(i=0;i<ms;i++){ for(j=0;j<125;j++);}}void display0_ms(uint n){if(n==3 || n==2 || n==1 || n==0){number=f/(10^n);if(n==0)P1=table[number] & 0x7f;elseP1=table[number];p20=1;delay_ms(5);p20=0;}if(n==3 || n==2 || n==1){number=(uint)f%(10^n)/(10^(n-1));if(n==1)P1=table[number] & 0x7f;elseP1=table[number];p21=1;delay_ms(5);p21=0;}if(n==3 || n==2){number=(uint)f%(10^(n-1))/(10^(n-2));if(n==2)P1=table[number] & 0x7f;P1=table[number];p22=1;delay_ms(5);p22=0;}if(n==3){number=(uint)f%10;P1=table[number];p23=1;delay_ms(5);p23=0;}}void display1_khz(uint n){if(n==3 || n==2 || n==1 || n==0) {number=h/(10^n);if(n==0)P1=table[number] & 0x7f;elseP1=table[number];p20=1;delay_ms(5);p20=0;}if(n==3 || n==2 || n==1){number=(uint)h%(10^n)/(10^(n-1)); if(n==1)P1=table[number] & 0x7f;elseP1=table[number];p21=1;delay_ms(5);}if(n==3 || n==2){number=(uint)h%(10^(n-1))/(10^(n-2)); if(n==2)P1=table[number] & 0x7f;elseP1=table[number];p22=1;delay_ms(5);p22=0;}if(n==3){number=(uint)f%10;P1=table[number];p23=1;delay_ms(5);p23=0;}}void display2_mhz(uint n){if(n==3 || n==2 || n==1 || n==0){number=m/(10^n);if(n==0)P1=table[number] & 0x7f;elseP1=table[number];p20=1;delay_ms(5);p20=0;}if(n==3 || n==2 || n==1){number=(uint)h%(10^n)/(10^(n-1));if(n==1)P1=table[number] & 0x7f;elseP1=table[number];p21=1;delay_ms(5);p21=0;}if(n==3 || n==2){number=(uint)h%(10^(n-1))/(10^(n-2)); if(n==2)P1=table[number] & 0x7f;elseP1=table[number];p22=1;delay_ms(5);p22=0;}if(n==3){number=(uint)f%10;P1=table[number];p23=1;delay_ms(5);p23=0;}}void display3_ms(){LED1=0;LED2=1;LED3=1;f=(1.0/k)*1000;if(f==1000)display0_ms(3);else if(f>=100 && f<1000 ) {display0_ms(2);P1=table[(uint)(f*10)%10]; p23=1;delay_ms(5);p23=0;}else if(f>=10 && f<100){display0_ms(1);P1=table[(uint)(f*10)%10]; p22=1;delay_ms(5);p22=0;P1=table[(uint)(f*100)%10]; p23=1;delay_ms(5);p23=0;}else if(f>1 && f<10){display0_ms(0);P1=table[(uint)(f*10)%10]; p21=1;delay_ms(5);p21=0;P1=table[(uint)(f*100)%10]; p22=1;delay_ms(5);p22=0;P1=table[(uint)(f*1000)%10]; p23=1;delay_ms(5);p23=0;}}void display4_khz(){LED1=1;LED2=0;LED3=1;h=k/1000.0;if(h==1000)display1_khz(3);else if(h>=100 && h<1000 ) {display1_khz(2);P1=table[(uint)(h*10)%10];p23=1;delay_ms(5);p23=0;}else if(h>=10 && h<100) {display1_khz(1);P1=table[(uint)(h*10)%10];p22=1;delay_ms(5);p22=0;P1=table[(uint)(h*100)%10]; p23=1;delay_ms(5);p23=0;}else if(h>=1 && h<10) {display1_khz(0);P1=table[(uint)(h*10)%10];p21=1;delay_ms(5);p21=0;P1=table[(uint)(h*100)%10];p22=1;delay_ms(5);p22=0;P1=table[(uint)(h*1000)%10];p23=1;delay_ms(5);p23=0;}}void display5_mhz(){LED1=1;LED2=1;LED3=0;m=k/1000000.0;if(m>=1 && m<10){display2_mhz(0);P1=table[(uint)(m*10)%10];p21=1;delay_ms(5);p21=0;P1=table[(uint)(m*100)%10]; p22=1;delay_ms(5);p22=0;P1=table[(uint)(m*1000)%10]; p23=1;delay_ms(5);p23=0;}else if(m==10){display2_mhz(1);P1=table[0];p22=1;delay_ms(5);p22=0;P1=table[0];p23=1;delay_ms(5);p23=0;}}void timer0() interrupt 1 using 0 {TH0=0X3C;TL0=0XBF;if(t==20){t=0;a=Q0;b=Q1;c=Q2;d=Q3;k=count*16+d*8+c*4+b*2+a;EA=0;ET0=0;EA=1;ET0=1;TR0=1;count=0;}t++;}void int1() interrupt 2{count++;}void main(){TMOD=0X21;TH0=0X3C; /* 计数初值写入TH0 */TL0=0XBF; /* 写入计数初值到TL0 */ET0=1; /* 定时器0中断允许*/EA=1; /* 全局中断允许*/TF0=0; /* 定时器0中断标志位清0 */ TR0=1; /* 定时器0准备开始*/EX1=1;IT1=1;while(1){if(k>=1 && k<1000)display3_ms();else if(k>=1000 && k<1000000)display4_khz();else if(k>=1000000 && k<=10000000)display5_mhz();}}。

等精度频率计

等精度频率计

等精度频率计设计作者:dx0801wl班级:电信0801指导老师:冯杰一.内容摘要本系统在硬件上主要由80c51单片机、Altera 公司的Cyclone 系列的EDA芯片EP1C6Q240C8以及液晶12864构成。

软件上利用功能强大的EDA开发工具quartersⅡ,直接将频率计电路程序烧入EDA芯片中。

单片机在本系统中的作用,主要是完成数据的处理和液晶显示的控制。

EDA芯片用于频率测量,并输出32位的2进制数据。

单片机获取32位二进制频率数据后,在内部将其转化为10位的十进制数据。

最后控制液晶12864,显示测量的频率。

频率显示的范围是1HZ至1MHZ。

本频率计突出性能主要有两个:一、测频全域内相对误差恒定不变,相对误差仅与晶振有关。

二、闸门信号的精度对本频率计的测量没有影响。

二.工作原理1、系统框图图一、系统框图频率计电路通过软件quarter s Ⅱ写入EDA 芯片内部,该芯片完成了信号频率的测量。

EDA 输出的数据是32位的二进制数据,经过单片机处理转换为10位的十进制数。

最后,单片机控制液晶12864,将信号的频率显示出来。

2、频率计电路的系统框图图二、频率计电路的系统框图本频率计工作原理:使用两个计数器,在一次预置闸门时间 EN 中,一个计数器对被测输入信号 Fx 计数,计数值为Nx ;同时另一个计数器对标准高频率信号 FS 计数,计数值为 Ns ,则下式成立:将上式进行变换可得被测信号频率的表达式:在电路中,为了实现上方等式。

首先,分别采用32位二进制计数器,对标准高频率信号 FS 和待测信号Fx 进行计数。

然后将两路计数结果分别锁存,准备用以计算。

若标准高频率信号 FS 的频率为1Mhz 。

先将10000000与待测信号Fx 计数结果Nx 通过乘法器相乘。

再将乘法器输出结果通过除法器,除以标准高频率信号 FS 的计数结果Ns ,得到待测信号的频率Fx 。

最后输出计数结果。

NsFs Nx Fx //=NxNs Fs Fx ⋅=)/(三、设计内容、方法及步骤本系统的设计模块主要包括:1、在quarter sⅡ完成频率计电路的设计。

(完整版)基于FPGA的等精度频率计的设计与实现毕业设计

(完整版)基于FPGA的等精度频率计的设计与实现毕业设计

第一章课题研究概述1.1课题研究的目的和意义在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

目前常用的测频方案有三种:方案一:完全按定义式F=NT进行测量。

被测信号Fx经放大整形形成时标ГX,晶振经分频形成时基TR。

用时基TR开闸门,累计时标ГX 的个数,则有公式可得Fx=1ГX=NTR。

此方案为传统的测频方案,其测量精度将随被测信号频率的下降而降低。

方案二:对被信号的周期进行测量,再利用F=1T(频率=1周期)可得频率。

测周期时,晶振FR经分频形成时标ГX,被测信号经放在整形形成时基TX控制闸门。

闸门输出的计数脉冲N=ГXTR,则TX=NГX。

但当被测信号的周期较短时,会使精度大大下降。

方案三:等精度测频,按定义式F=NT进行测量,但闸门时间随被测信号的频率变化而变化。

如图1所示,被测信号Fx经放大整形形成时标ГX,将时标ГX经编程处理后形成时基TR。

用时基TR开闸门,累计时标ГX的个数,则有公式可得Fx=1ГX=NTR。

此方案闸门时间随被测信号的频率变化而变化,其测量精度将不会随着被测信号频率的下降而降。

本次实验设计中采用的是第三种测频方案。

等精度频率计是数字电路中的一个典型应用,其总体设计方案有两种:方案一:采用数字逻辑电路制作,用IC拼凑焊接实现。

其特点是直接用现成的IC组合而成,简单方便,但由于使用的器件较多,连线复杂,体积大,功耗大,焊点和线路较多将使成品稳定度与精确度大打折扣,而且会产生比较大的延时,造成测量误差、可靠性差。

方案二:采用可编程逻辑器件(CPLD)制作。

随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。

等精度频率计

等精度频率计

2013-2014学年第2学期数字系统设计实践(课号:103D47A)实验报告实验名称:等精度频率计学院信息科学与工程学院班级电气自动化2班组别A20成员罗静娜、陈壮豪姓名陈壮豪学号136450031指导教师李宏完成时间2015年6月8日星期四目录一、实验任务与要求 (3)1.1 测量信号:方波; (3)1.2 幅值:TTL电平; (3)1.3 频率:100HZ~10MHZ; (3)1.4 测量误差小于0.1%; (3)1.5 闸门信号:~0.1s;响应时间:~1s (3)二、实验设计 (3)2.1 电路模型: (3)2.2 等精度频率计设计原理 (4)2.2 等精度频率计设计思路及其参数选择: (5)3.1 闸门信号产生模块: (6)3.2 寄存器模块: (7)3.3 频率显示切换模块: (8)3.4 频率的计算: (9)3.5频率显示前的数据处理模块: (10)3.6顶层电路图: (11)3.7 管脚分配图: (12)四、实验结果 (13)4.1 数据记录: (13)4.2 实验结果分析: (13)一、实验任务与要求1.1 测量信号:方波;1.2 幅值:TTL电平;1.3 频率:100HZ~10MHZ;1.4 测量误差小于0.1%;1.5 闸门信号:~0.1s;响应时间:~1s二、实验设计2.1 电路模型:2.2 等精度频率计设计原理1.频率计算:2.测量误差计算:考虑No最大误差为:1,则与被测频率无关,故也称:等精度频率测量方法2.2 等精度频率计设计思路及其参数选择:系统时钟频率选择50khz;测量频率范围为100HZ至10MHZ;闸门信号约为0.1s,最长响应时间约为1s,测量误差为1/(500000)<0.1%。

满足设计要求。

输出频率的整数部分和小数显示通过按钮来切换。

其中最大时为8位整数,3位小数。

3.1 闸门信号产生模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity Key isport( cp:in std_logic;output:out std_logic );end Key;architecture data of Key issignal iq:unsigned (12 downto 0);signal iq1:std_logic;beginprocess(cp,iq,iq1)beginif(cp'event and cp='1') thenif(iq=4999) theniq1<=not iq1;iq<=('0','0','0','0','0','0','0','0','0','0','0','0','0');elseiq<=iq+1;end if;end if;output<=iq1;end process;end data;3.2 寄存器模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity save isport(clk: in std_logic;intt:in std_logic_vector (19 downto 0);outt:out std_logic_vector (19 downto 0)); end save;architecture a of save issignal temp: std_logic_vector (19 downto 0); beginprocess(clk,intt)beginif(clk'event and clk='1')thentemp<=intt;end if;outt<=temp;end process;end a;3.3 频率显示切换模块:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity Selete isport( input1:in std_logic_vector (3 downto 0);input2:in std_logic_vector (3 downto 0);input3:in std_logic_vector (3 downto 0);input4:in std_logic_vector (3 downto 0);input5:in std_logic_vector (3 downto 0);input6:in std_logic_vector (3 downto 0);input7:in std_logic_vector (3 downto 0);input8:in std_logic_vector (3 downto 0);input9:in std_logic_vector (3 downto 0);input10:in std_logic_vector (3 downto 0);input11:in std_logic_vector (3 downto 0);selete:in std_logic;date:out std_logic_vector (31 downto 0));end Selete;architecture data of Selete issignal iq1:std_logic_vector(31 downto 0);signal iq2:std_logic_vector(31 downto 0);beginprocess(input1,input2,input3,input4,input5,input6,input7,input8,input9,i nput10,input11)beginiq1<=input11(3 downto 0)&input10(3 downto 0)&input9(3 downto 0)&input8(3 downto 0)&input7(3 downto 0)&input6(3 downto 0)&input5(3 downto 0)&input4(3 downto 0);iq2<="00000000000000000000"&input3(3 downto 0)&input2(3 downto 0)&input1(3 downto 0);case selete iswhen '0'=>date<=iq1;when '1'=>date<=iq2;end case;end process;end data;3.4频率的计算:利用公式:把求出的fx扩大1000倍,即把小数点后三位放入整数部分。

等精度测频

等精度测频

现代电子技术实验(EDA)等精度频率计综合报告吕佳电子信息科学与技术物电学院2010年6月20日电工电子中心2009年5月绘制等精度频率计实验总结报告一.实验内容前面简易数字频率计测量精度随着被测信号频率的不同而不同,误差1/fx ,当测量1Hz 信号时,误差可能是100%。

设计一个等精度频率计,使 测量结果与被测信号频率不同,而与基准频率有关。

首先设定一个基准频率,根据相同的时间,基准频率F b 和被测信号频率F x 计数的个数分别为N b ,N x ,利用公式NxFxNb Fb ,可以求出F x 。

二.方案设计设计方案原理框图如下:最后一个模块为数据处理部分,有两种处理方式: 1、用maxplus2自带的乘除法模块来处理数据,如下图:虽然此种方法便于理解,但是此模块的使用有限,不能够进行较高位数的运算,否则编译会出错。

2、用FPGA与单片机通信的方法,将测出来的数据送入单片机处理,然后将得出的结果送入FPGA中显示。

(后面主要介绍这种方法)。

其原理图如下:三.实验步骤第一阶段:按照等精度原理框图将各个模块生成1、D触发器:用来控制计数的开始和计数的停止,因为计数的开始和停止都是在被测频率的上升沿到来时起作用的,所以测量时间一定是被测频率的整数倍个,这就保证了被测频率所记的个数一定是整数个。

其代码如下:module mydff(D,clk,prn,clrn,Q);input D,clk,prn,clrn;output Q;reg Q;always @(posedge clk or negedge prn or negedge clrn)if(!prn) Q=1; //低电平置1else if(!clrn) Q=0; //低电平置0else Q=D;endmodule3、计数器(此处最好使用maxplus2自带的计数器)3、将计数的次数送给单片机:因为上面定义32位的计数器,所以数据传送是通过总线进行读写的,所以每次只能传送8位,所以传送一个数需要读数据,这个阶段主要有两个模块:一、将数据拆开;二、单片机从FPGA中读数据。

MHz等精度频率计设计基于VerilogHDL

MHz等精度频率计设计基于VerilogHDL

姓名:郑中权班级:电子1班 数电课设报告江苏科技大学2017/10/12100MHz等精度频率计设计(基于Verilog HDL)一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频范围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试范围 0 ~ 360二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA设计计算得出所需测量值。

三、模电部分首先选择比较器,对于 100 MHz 信号,比较器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为4.5ns,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于20mV,频率高于50MHz时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电部分开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键(按键按下为0,抬起为1),四个七段数码管(共阳),FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器CNT1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器CNT2来测量周期数。

两个信号在同一个使能信号EN(使能信号时间为1~2s)下开始计数,计数完后,存储计数结果,由(CNT1 * 10)可以算出具体的计数时间(单位ns),再由((CNT1 * 10ns)/CNT2 )*10^9可算得被测信号频率,单位Hz。

100MHz等精度频率计设计(基于某VerilogHDL)

100MHz等精度频率计设计(基于某VerilogHDL)

某某:X中权学号:152210303127班级:电子1班数电课设报告100MHz等精度频率计设计〔基于Verilog HDL〕一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频X围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试X围 0 ~ 360 某某科技大学2017/10/12二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA 设计计算得出所需测量值。

三、模电局部首先选择比拟器,对于 100 MHz 信号,比拟器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为4.5ns,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于 20mV,频率高于50MHz时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电局部开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键〔按键按下为0,抬起为1〕,四个七段数码管〔共阳〕,FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器T1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器T2来测量周期数。

两个信号在同一个使能信号EN〔使能信号时间为1~2s〕下开始计数,计数完后,存储计数结果,由〔T1 * 10〕可以算出具体的计数时间〔单位ns〕,再由(〔T1 * 10ns〕/T2 )*10^9可算得被测信号频率,单位Hz。

等精度数字频率计

等精度数字频率计

等精度数字频率计测量方式:一、测频原理所谓“频率”,确实是周期性信号在单位时刻转变的次数。

电子计数器是严格依照f =N/T的概念进行测频,其对应的测频原理方框图和工作时刻波形如图1 所示。

从图中能够看出测量进程:输入待测信号通过脉冲形成电路形成计数的窄脉冲,时基信号发生器产生计数闸门信号,待测信号通过闸门进入计数器计数,即可取得其频率。

假设闸门开启时刻为T、待测信号频率为fx,在闸门时刻T内计数器计数值为N,那么待测频率为:fx = N/T假设假设闸门时刻为1s,计数器的值为1000,那么待测信号频率应为1000Hz 或1.000kHz,现在,测频分辨力为1Hz。

图1 测频原理框图和时刻波形二、方案设计2.1整体方案设计等频率计测频范围1Hz~100MHz,测频全域相对误差恒为百万分之一,故由此系统设计提供100MHz作为标准信号输入,被测信号从tclk端输入,由闸门操纵模块进行自动调剂测试频率的大小所需要的闸门时刻,如此能够精准的测试到被测的频率,可不能因闸门开启的时刻快慢与被测频率信号转变快慢而阻碍被测频率信号致使误差过大,被测信号输入闸门操纵模块后,在闸门操纵模块开始工作时使encnt端口输出有效电平,encnt有效电平作用下使能标准计数模块(cnt模块)和被测计数模块(cnt模块),计数模块开始计数,直到encnt 从头回到无效电平,计数模块就将所计的数据送到下一级寄放模块,在总操纵模块的作用下,将数据进行load(锁存),然后寄放器里的数据会自动将数据送到下一模块进行数据处置,最后送到数码管或液晶显示屏(1602)进行被测信号的数据显示。

PIN_84VCCreset INPUTPIN_31VCCtclk INPUTcnt_time 100Signed IntegerParameter Value Typeclken_1kHztclkclrloadencntcnt_eninst4cnt_w idth32Signed IntegerParameter Value Typeclkclrencntout[cnt_width-1..0]cntinst1cnt_w idth32Signed IntegerParameter Value Typeclkclrencntout[cnt_width-1..0]cntinst2cnt_w idth32Signed IntegerParameter Value Typeclken_1kHzclrlock_endata[cnt_width-1..0]regout[cnt_width-1..0]bcnt_reginst3cnt_w idth32Signed IntegerParameter Value Typeclken_1kHzclrlock_endata[cnt_width-1..0]regout[cnt_width-1..0]tcnt_reginst5clken_1kHzresetenencntclr_cntlockclr_regload_encntcontrolinst6clken_1kHzresetclearreset_cntinst16被测频率信号输入闸门信号控制器100M标准频率信号计数器被测频率信号计数器100M标准频率数据寄存被测信号频率数据寄存复位模块闸门、计数、寄存的总控制模块clk_100MHztclk1loadclk_100MHzen_1kHzclk_100MHzen_1kHzen_1kHzclk_100MHzloaden_1kHzclk_100MHzclk_100MHzen_1kHzset_f ashion[4]tclk1reset1cnt_numb[31..0]cnt_numt[31..0]两路数据送到下一级进行数据处理2.2理论分析采纳等精度测量法,其测量原理时序如图1所示从图1中能够取得闸门时刻不是固定的值,而是被测信号的整周期的倍数,即与被测信号同步,因此,不存在对被测信号计数的±1 误差,可取得:变形后可得:对上式进行微分,可得:由于 dn=± 1 ,因此可推出:从式(5)能够看出:测量误差与被测信号频率无关,从而实现了被测频带的等精度测量;增大T或提高fs能够提高测量精度;标准频率误差为dfs/fs,因为晶体的稳固度很高,再加上FPGA核心芯片里集成有PLL锁相环可对频率进一步的稳固,标准频率的误差能够进行校准,校准后的标准误差即能够忽略。

用51单片机完成等精度频率测量仪的设计毕业论文

用51单片机完成等精度频率测量仪的设计毕业论文
(3)proteus上进行画图;
(4)编写软件;
(5)系统调试,仿真。
2等精度频率计的原理与应用
2.1 等精度频率计的原理
频率计的核心为单片机对数据的运算处理,而此等精度测量方法是以同步门逻辑控制电路为核心的。同步门逻辑控制电路由D触发器构成。
基本频率测量要求:
幅度:0.5V~5V
频率:1Hz~500kHz
用51单片机完成等精度频率测量仪的设计毕业论文
1 绪 论
1.1 数字频率计简介
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率计。
国际国通用数字频率计的主要技术参数:1.频率测量围:电子计数器的测频围,低端大部分从10Hz开始;高端则以不同型号的频率计而异。因此高端频率是确定低、中、高速计数器的依据。如果装配相应型号的变频器,各种类型的数字频率计的测量上限频率,可扩展十倍甚至几十倍。2.周期测量围:数字频率计最大的测量周期,一般为10s,可测周期的最小时间,依不同类型的频率计而定。对于低速通用计数器最小时间为1ys;对中速通用计数器可小到0.1ys。3.晶体振荡器的频率稳定度:是决定频率计测量误差的一个重要指标。可用频率准确度、日波动、时基稳定度、秒级频率稳定度等指标,来描述晶体振荡器的性能。4.输入灵敏度:输入灵敏度是指在侧频围能保证正常工作的最小输入电压。目前通用计数器一般都设计二个输入通道,即d通道和月通道。对于4通道来说,灵敏度大多为50mV。灵敏度高的数字频率计可达30mV、20mV。5.输入阻抗:输入阻抗由输入电阻和输入电容两部分组成。输入阻抗可分为高阻(1M//25PF、500k//30PF)和低阻(50)。一般说来,低速通用计数器应设计成高阻输入;中速通用计数器,测频围最高端低于100MHz,仍设计为高阻输入;对于高速通用计数器,测频>100MHz, 设计成低阻 (50Q) 输入,测频<100MHz,设计成高阻(500k//30PF)输入。

等精度法测频率计的原理

等精度法测频率计的原理

等精度法测频率计的原理引言:等精度法测频率计是一种常用的频率测量方法,它利用稳定的参考信号与待测信号进行比较,从而精确地测量待测信号的频率。

本文将介绍等精度法测频率计的原理及其工作流程。

一、原理概述:等精度法测频率计的原理基于频率比较技术,通过将待测信号与参考信号进行相位比较,从而得到待测信号的频率信息。

其核心思想是将待测信号与参考信号进行周期性的比较,通过计算比较结果的平均值来消除测量误差,从而提高测量精度。

二、工作流程:等精度法测频率计的工作流程主要包括以下几个步骤:1. 产生参考信号:首先需要产生一个稳定的参考信号,通常使用高稳定度的晶振或标准频率源作为参考信号源。

2. 将待测信号与参考信号进行比较:待测信号与参考信号经过相位比较,得到相位差信息。

3. 相位差计算:通过测量待测信号与参考信号的相位差,可以计算出待测信号的周期。

4. 周期计算:根据相位差计算出的周期信息,可以得到待测信号的频率。

5. 精度提高:为了提高测量精度,需要进行多次测量并取平均值,以消除测量误差。

三、关键技术说明:等精度法测频率计的实现需要借助一些关键技术,包括:1. 相位锁定技术:通过将待测信号与参考信号进行相位锁定,可以确保两者相位一致,从而实现准确的相位比较。

2. 周期计数器:周期计数器用于测量待测信号与参考信号的相位差,通过计数器的计数结果可以得到待测信号的周期信息。

3. 数字信号处理:为了提高测量精度,可以利用数字信号处理技术对测量结果进行滤波、平均等处理,以消除噪声和提高信号质量。

四、优缺点分析:等精度法测频率计具有以下优点:1. 高精度:通过多次测量并取平均值的方法,可以消除测量误差,提高测量精度。

2. 稳定性好:利用稳定的参考信号进行比较,可以保证测量结果的稳定性。

3. 适用范围广:等精度法测频率计适用于各种频率范围的信号测量,包括低频、中频和高频等。

然而,等精度法测频率计也存在一些缺点:1. 对参考信号要求高:由于等精度法测频率计依赖于参考信号的稳定性,因此对参考信号的要求比较高。

等精度频率计设计

等精度频率计设计

等精度频率计设计一、设计原理:测试频率的基本方法包括直接测频法和测周法。

其中直接测频法是产生一个标准宽度(例如1s)的时基信号,然后在这个信号时间范围内打开闸门对被测频率信号进行计数。

此方法的弱点之一是高精度的标准时基信号不容易获得;其二这种方法对于高频信号有保证,但对于低频信号由于计数周期有限测试精度较低。

测周法是用被测信号作为闸门信号、对标准脉冲信号进行计数,显然这种方法适合测量低频信号的频率。

等精度测频法的核心思想是用两个计数器分别对标准脉冲和被测脉冲在相同时间内进行计数,计数时间严格同步于被频脉冲。

这种方法的最大优点是测试的精度和被测信号的频率无关,因而可以做到等精度测量。

其测试原理所示:二、等精度测频误差分析:设在一次实际的闸门时间τ以内记得被测信号和标准信号的计数值分别为N x和N s,标准信号的频率为Fs,则被测信号的频率为:若被测信号的实际频率为Fxe ,则测量误差为:由于实际闸门完全同步于被测脉冲,因此t=N x T x(其中为被测信号的周期)。

而对T s的计数则最多相差1。

所以被测信号真实的频率可以表示为:由以上各式可以得到:误差与被测频率无关,因而称为等精度测频。

三、系统框图:四、系统组成:(1)FPGA测频电路:是测频的核心电路模块,由FPGA器件组成。

(2)单片机电路模块:用于控制FPGA的测频操作和读取测频数据,并做出相应处理。

(3)数码显示模块:用8个数码显示测试结果,并采用串行静态显示方法五、FPGA模块:顶层文件波形仿真六、单片机模块:七、心得:附录一:FPGA程序LIBRARY IEEE;--D_FF程序USE IEEE.STD_LOGIC_1164.ALL;ENTITY D_FF ISPORT ( CLK,D,CLR : IN STD_LOGIC;Q : OUT STD_LOGIC);END D_FF;ARCHITECTURE behav OF D_FF ISBEGINPROCESS (CLK,CLR)V ARIABLE Q1:STD_LOGIC;BEGINIF CLR='1' THEN Q1:='0';ELSIF CLK'EVENT AND CLK='1' THENQ1:=D;END IF;Q<=Q1;END PROCESS;END behav;LIBRARY IEEE;--BZH程序USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BZH ISPORT ( BENA,BCLK,CLR : IN STD_LOGIC;BZQ : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END BZH;ARCHITECTURE behav OF BZH ISBEGINPROCESS (BCLK,CLR,BENA)V ARIABLE BZQ1:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINIF CLR='1' THEN BZQ1:=(OTHERS =>'0');ELSIF BCLK'EVENT AND BCLK='1' THENIF BENA='1' THENBZQ1:=BZQ1+1;END IF;END IF;BZQ<=BZQ1;END PROCESS;END behav;LIBRARY IEEE;--TF 程序USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TF ISPORT ( ENA,TCLK,CLR : IN STD_LOGIC;TSQ : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END TF;ARCHITECTURE behav OF TF ISBEGINPROCESS (TCLK,CLR,ENA)V ARIABLE TSQ1:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINIF CLR='1' THEN TSQ1:=(OTHERS =>'0');ELSIF TCLK'EVENT AND TCLK='1' THENIF ENA='1' THENTSQ1:=TSQ1+1;END IF;END IF;TSQ<=TSQ1;END PROCESS;END behav;LIBRARY IEEE;--MUX64_8 程序USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MUX64_8 ISPORT ( SEL : IN STD_LOGIC_VECTOR(2 DOWNTO 0);BZQ : IN STD_LOGIC_VECTOR(31 DOWNTO 0);TSQ : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DATA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END MUX64_8;ARCHITECTURE behav OF MUX64_8 ISBEGINDATA <= BZQ(7 DOWNTO 0) WHEN SEL="000" ELSE BZQ(15 DOWNTO 8) WHEN SEL="001" ELSEBZQ(23 DOWNTO 16) WHEN SEL="010" ELSEBZQ(31 DOWNTO 24) WHEN SEL="011" ELSETSQ(7 DOWNTO 0) WHEN SEL="100" ELSETSQ(15 DOWNTO 8) WHEN SEL="101" ELSETSQ(23 DOWNTO 16) WHEN SEL="110" ELSETSQ(31 DOWNTO 24);END behav;附录二:单片机程序#include <reg51.h>sbit clr=P2^3;sbit cl=P2^4;sbit start=P2^5;unsigned long fx,fs=199981300,save;unsigned char code led_tab[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0x01,0x00};//LED数码管显示0123456789.共阴反向送数void delay(unsigned char z);void send(unsigned char m);void display(unsigned long n);struct p2_control{unsigned sel:3;}dat;void main(){unsigned long nx=0,ns=0,input=0;while(1){cl=0;clr=0; //初始化clr=1;delay(1);clr=0; //清零cl=1;delay(2000);cl=0; //产生闸门信号clif (start!=0){for(dat.sel=0;dat.sel<8;dat.sel++){P2=dat.sel;delay(1);input=P0;switch(dat.sel){case 0 : ns=ns+input;break;case 1 : ns=ns+(input<<8);break;case 2 : ns=ns+(input<<16);break;case 3 : ns=ns+(input<<24);break;case 4 : nx=nx+(input);break;case 5 : nx=nx+(input<<8);break;case 6 : nx=nx+(input<<16);break;case 7 : nx=nx+(input<<24);break;}}}fx=(nx/ns)*fs;// while(fx==save);// save=fx;display(fx);}}void delay(unsigned char z) //1ms延迟{unsigned int x,y;for(x=z;x>0;x--)for(y=124;y>0;y--);}void display(unsigned long n) //显示,单位为Hz {int c;for(c=0;c<8;c++) //去余辉{send(11);}send(n/10000000);n=n%10000000;send(n/1000000); n=n%1000000;send(n/100000); n=n%100000;send(n/10000); n=n%10000;send(n/1000); n=n%1000;send(n/100); n=n%100;send(n/10); n=n%10;send(n);}void send(unsigned char m) //发送位数{TI=0;SBUF=led_tab[m];while(TI==0);delay(1);}。

基于FPGA和单片机的多功能等精度频率计设计

基于FPGA和单片机的多功能等精度频率计设计

基于FPGA和单片机的多功能等精度频率计设计摘要基于传统测频原理的频率计的测量精度将随着被测信号频率的下降而降低,在实用中有很大的局限性,而等精度频率计不但有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。

运用等精度测量原理,结合单片机技术设计了一种数字频率计,由于采用了屏蔽驱动电路及数字均值滤波等技术措施,因而能在较宽定的频率范围和幅度范围内对频率,周期,脉宽,占空比等参数进行测量,并可通过调整闸门时间预置测量精度。

选取的这种综合测量法作为数字频率计的测量算法,提出了基于FPGA 的数字频率计的设计方案。

给出了该设计方案的实际测量效果,证明该设计方案切实可行,能达到较高的频率测量精度。

关键词等精度测量,单片机,频率计,闸门时间,FPGAABSTRACTAlong with is measured based on the traditional frequency measurement principle frequency meter measuring accuracy the signalling frequency the drop but to reduce, in is practical has the very big limitation, but and so on the precision frequency meter not only has teaches the high measuring accuracy, moreover maintains the constant test precision in the entire frequency measurement region. Using and so on the precision survey principle, unified the monolithic integrated circuit technical design one kind of numeral frequency meter, because has used the shield actuation electric circuit and technical measure and so on digital average value filter, thus could in compared in the frequency range and the scope scope which the width decided to the frequency, the cycle, the pulse width, occupied parameter and so on spatial ratio carries on the survey, and might through the adjustment strobe time initialization measuring accuracy. Selection this kind of synthesis measured the mensuration took the digital frequency meter the survey algorithm, proposed based on the FPGA digital frequency meter design proposal. Has produced this design proposal actual survey effect, proved this design proposal is practical and feasible, can achieve the high frequency measurement precisionKeywords Precision survey, microcontroller, frequency meter, strobe time,field programmable gate array1 绪论测量频率是电子测量技术中最常见的测量之一。

等精度频率测量

等精度频率测量

一般测量时可能产生的误差时序波形图
1.1.3 等精度测频法
等精度测量法的机理是在标准频率比较测量法的基础上改 变计数器的计数开始和结束与闸门门限的上升沿和下降沿的严 格关系。当闸门门限的上升沿到来时,如果待测量信号的上升 沿未到时两组计数器也不计数,只有在待测量信号的上升沿到 来时,两组计数器才开始计数;当闸门门限的下降沿到来时, 如果待测量信号的一个周期未结束时两组计数器也不停止计数, 只有在待测量信号的一个周期结束时两组计数器才停止计数。 这样就克服了待测量信号的脉冲周期不完整的问题,其误差只 由标准频率信号产生, 与待测量信号的频率无关。最大误差为 正负一个标准频率周期,即Δt=±1/f0。由于一般标准信号频率 都在几十兆赫兹以上,因此误差小于 10-6。
等精度测量法的时序波形图
预置闸门时间产生电路产生预置的闸门时间TP,TP经同 步电路产生与被测信号(fx)同步的实际闸门时间T。
主门Ⅰ与主门Ⅱ在时间T内被同时打开,于是计数器Ⅰ 和计数器Ⅱ便分别对被测信号 (fx)和时钟信号(f0)的周 期数进行累计。
在T内,计数器Ⅰ的累计数NA=fx×T;计数器Ⅱ的累计数NB=f0×T。
fx
N1 N2
f0
标准频率比较测量法对测量时产生的时间门限的精度 要求不高,对标准频率信号的频率准确度和频率的稳定度 要求较高,标准信号的频率越高,测量的精度就比较高。 该方法的测量时间误差与时间门限测量法的相同,可能的 最大误差为正负一个待测信号周期,即Δt=±1/fx。测量时 可能产生的误差时序波形如图 所示。
5
键盘与显示部分的电 路如图所示,这是一个较 为典型的采用8155并行口 组成的键盘显示电路。七 位LED显示采用了动态显 示软件译码工作方式。段 码由8155的PB口提供,位 选码由PA口提供。键盘共 设置了4个按键,采用逐列 扫描查询工作方式,其列 输出由PA口提供,列输入 由PC口提供。由于键盘与显示做成一个接口电路,因此软件中合并考虑键 盘查询与动态显示。为了使显示器的动态扫描不出现断续,键盘防抖的延时 子程序用显示子程序替代。

100MHz等精度频率计设计(基于某VerilogHDL]

100MHz等精度频率计设计(基于某VerilogHDL]

数电课设报告姓名:郑中权学号:152210303127班级:电子1班江苏科技大学2017/10/12100MHz等精度频率计设计(基于Verilog HDL)一、设计要求:提供一个幅值为10mV ~ 1 V,频率为 1 ~ 100MHz的正弦信号,需测试以下指标:1.频率:测频范围 1Hz ~ 100MHz,测频精度为测频全域内相对误差恒为百万分之一。

2.占空比:测试精度 1% ~ 99%3.相位差:测试两个同频率的信号之间的相位差,测试范围 0 ~ 360二、设计分析使用FPGA数字信号处理方法,首先需要将正弦信号转换成可读取的数字方波信号,再经过FPGA设计计算得出所需测量值。

三、模电部分首先选择比较器,对于 100 MHz 信号,比较器灵敏度需要达到5ns内,TI公司的LTV3501灵敏度为4.5ns,符合要求由TLV3501数据手册得知:当频率低于 50MHz 的时候,正弦波的峰峰值需大于 20mV,频率高于50MHz 时,峰峰值需大于 1V。

然后需要选择放大器,当正弦波幅值为 10mV时,放大倍数需大于35。

方法通过二级放大,一级用OPA847放大20倍,二级用OPA675放大8倍,得到总放大倍数160的正弦波。

经转换后的输出电压符合TTL电平要求,可以被识别出0和1。

四、数电部分开发板:Cyclone IV E: EP4CE6E22C8板载时钟为 50MHz,带4个按键和一个复位键(按键按下为0,抬起为1),四个七段数码管(共阳),FPGA的引脚可由杜邦线引出。

设计思路:测量频率:输入一个100MHz的基准频率,由计数器CNT1来计算基准频率的上升沿个数,即周期数。

输入一个被测信号,它由计数器CNT2来测量周期数。

两个信号在同一个使能信号EN(使能信号时间为1~2s)下开始计数,计数完后,存储计数结果,由(CNT1 * 10)可以算出具体的计数时间(单位ns),再由((CNT1 * 10ns)/CNT2 )*10^9可算得被测信号频率,单位Hz。

等精度频率计的设计

等精度频率计的设计

等精度频率计的设计一、实验原理基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,即测量精度随被测信号的频率的变化而变化,在实用中有较大局限性,而等精度频率计不但具有较高的测量精度,且在整个频率区域能保持恒定的测试精度。

设计项目可达到的指标如下:频率测试功能:测频范围0.1Hz~100Hz。

测频精度:测频全域相对误差恒为百万分之一。

脉宽测试功能:测试范围:0.1us~1s,测试精度1%~99%。

占空比测试功能:测试(显示)精度1%~99%。

相位测试功能:测试范围0~360度,测试精度0.2度。

主系统组成等精度频率计的主系统由六个部分组成:信号整形电路。

用于对待测信号进行放大和整形,以便作为PLD器件的输入信号。

测频电路。

是测频的核心模块,可以由FPGA器件担任。

100MHz的标准频率信号源(可通过PLL倍频所得)进入FPGA.。

单片机电路模块。

用于控制FPGA的测频操作和读取测频数据,并作出相应数据处理。

安排单片机的P0口读取测试数据,P2口向FPGA发控制命令。

键盘模块。

可以用5个键执行测试控制,一个是复位键,其余是命令键。

数码显示模块。

可以用7个数码管显示测试结果,最高可表示百万分之一的精度。

考虑到提高单片机IO口的利用率,降低编程复杂性,提高单片机的计算速度以及降低数码显示器对主系统的干扰,可以采用串行静态显示或液晶显示方式。

主系统组成测频原理等精度测频原理为:“预置门控信号”CL由单片机发出,可以证明,在1秒至0.1秒间的选择范围内,CL的时间宽度对测频精度几乎没有影响,在此设其T。

BZH和TF模块是两个可控的32位高速计数器,BENA和ENA分别是宽度为p它们的计算允许信号端,高电平有效。

标准频率信号从BZH 的时钟输入端BCLK 输入,设其频率为s F ;经整形后的被测信号从与BZH 相似的32位计数器TF 的时钟输入端TCLK 输入,设其真实频率值为xe F ,被测频率为x F 。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

精度频率计的设计一摘要本设计是基于MCS-51单片机的等精度频率计。

输入信号为峰峰值5v的正弦信号,频率测量范围10HZ~100MHZ ,频率测量精度为0.1%。

采用1602液晶显示器显示测量结果。

信号源由PROTEUS 的虚拟信号发生器产生。

二关键词频率计等精度单片机分频三设计原理与总体方案测量一个信号的频率有两种方法:第一种是计数法,用基准信号去测量被测信号的高电平持续的时间,然后转换成被测信号的频率。

第二种是计时法,计算在基准信号高电平期间通过的被测信号个数。

根据设计要求测量10HZ~100MHZ的正弦信号,首先要将正弦信号通过过零比较转换成方波信号,然后变成测量方波信号。

如果用第一种方法,当信号频率超过1KHZ的时候测量精度将超出测量极度要求,所以当被测信号的频率高于1KHZ的时候需要将被测信号进行分频处理。

如果被测信号频率很高需要将被测信号进行多次分频直到达到设计的精度要求。

根据设计要求用单片机的内部T0产生基准信号,由INTO输入被测信号,通过定时方式计算被测信号的高电平持续时间。

通过单片机计算得出结果,最后有1062液晶显示器显示测量结果。

等精度频率计的系统设计框架如下图1所示。

图1 等精度频率计系统设计框图四芯片以及电路介绍硬件电路主要分为信号转换电路、分频电路、数据选择电路、单片机系统和显示电路五部分。

电平转换电路:要将正弦信号转换成方波信号可以用过零比较电路实现。

正弦信号通过LM833N与零电平比较,电压大于零的时候输出LM833N的正电源+5V,电压小于零的时候输出负电源0V。

具体电路如图2所示。

图2信号转换电路分频电路:分频电路采用十进制的计数器74HC4017来分频,当被测信号脉冲个数达到10个时74HC4017产生溢出,C0端输出频率为输入频率的1/10,达到十分频的作用。

如果当频率很高是需要多次分频只需将多片74HC4017级联就可以了。

74HC4017时序图如图3所示,系统分频电路如图4所示。

图374HC4017时序图图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电路总图五 程序设计等精度频率计的软件设计主要由主程序、分频选择程序、显示程序组成。

等精度频率计的算法设计:根据设计要求频率范围是10HZ~100MHZ ,当频率为10HZ 时,T=100000us ,高电平为50000us ,0.1%的误差为100us ,由单片机产生的基准频率为1MHZ ,T0=1us ,最大误差为1us ,计数个数为50000(方式1),满足设计要求。

当频率增加到1KHZ 时,产生的误差刚刚能达到设计要求,这时计数个数为500。

当频率大于1KHZ 时(即计数个数小于500)就需要将被测频率分频后再测量,如当频率为10KHZ 时,先计算计得的脉冲数等于50,小于了500,所以将10KHZ 的信号10分频得到1KHZ ,这时就满足要求了。

最后得到的频率 f=i n102106其中n 为计得的脉冲个数,i 为分频的次数。

主程序:主程序首先对系统环境初始化,设置分频选通信号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所示。

图9 计数工作示意图图10 主程序流程图六程序清单主程序:#include<reg51.h>#include<stdio.h>#include<lcd.c>#include<math.h>sbit p32=P3^2;main(){unsigned long int period,k,j,i=0;float f,m;char buff[30];init_LCD();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=%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 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(){unsigned char i;//;设置自定义字符WR_COM=0x40;for(i=0;i<24;i++){WR_DAT=CGRAM_TABLE[i];}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();while(*s!=0){WR_DAT=*s;s++;delay();delay();}}七仿真过程一、先用proteus软件实现各芯片间的连接二、编写程序三、进行仿真1、新建一个文件夹,打开wave6000软件新建工程,保存为有意义的名字,并选择atmel 公司的AT89C51芯片。

2、在wave6000中新建一个文件,将编写好的程序放进去,保存为后缀为.c的文件,并进行编译、修改,没有错误以后就可以加载文件,随后生成hex文件。

3、再一次进行编译就可以生成hex文件。

4、在protues软件中右单击A T89C51芯片,在program files中找到生成的hex文件,点击OK即可。

5、点击protues软件左下角开始按钮,仿真开始,可得结果。

四、仿真结果屏幕上显示当时频率,为200.16HZ左右浮动。

仿真结束。

八心得体会经过一个星期的单片机设计实习,我们遇到的挫折很多,但是收益更多。

万事开头难,选择一个适合的题目就是一个好的开始。

由于专业只是匮乏,再加上急于求成的心理,我们对我所选择的题目的工作原理、难易程度等的认识不足,致使后面的每一步都举步维艰。

然后,在proteus软件上做仿真实验,将所用到的元器件一个个的从库中找到,并安装到虚拟电路板上,然后用导线将对应的接口相连。

由于经验不足,没有注意到有些接口虽然没有用导线相连,但是上面的输入输出接口以及接口上的标号其实表示他们是连接着的。

当总的电路图连接完毕,就要往里面加载程序做仿真实验了,可是问题又来了,程序一直过不了,总是出现这样那样的问题,不过还好有老师帮我们把程序修改好了,才让整个单片机系统运转起来了,虽然只是仿真,但是我们依然兴奋异常。

接着就是最漫长、也是最考验我们耐心与细心的阶段——焊接电路了,由于我们的题目中芯片的数量较多,我们比别人还多了一个排版的过程,不紧要在有限的空间里将所有的芯片囊括其中,而且要兼顾她们之间的连接关系,要做到接线的优化,真是费了我们不少的工夫,当排版完成以后就要动手焊接了,看着一个个锡滴将导线、接口、电路板紧紧的粘在一起,形成一个个亮晶晶的焊点,我们的高兴劲儿就甭提了,随着焊点的个数不断增加,焊接的难度也不断的增大,往往很小的区域内密密麻麻的分布着好多焊点,还有数不清的导线,要避开它们,成果焊接好其中的焊点可真不容易,由于焊接技术不够熟练,好几次都将几个焊点焊接到了一起,我们就有要忙着将其分开,最后还有几个点是要几根导线同时连接到一个焊点上,松了就重新焊,没焊上就要继续焊接。

最后一部就是在AT89C51上烤程序,然后运行了。

虽然,遇到了种种挫折,但是通过这次设计实习,我们学到了多知识,得到了宝贵的经验,还懂得了不少道理。

我们学会了proteus、wave等软件的使用,对单片机的工作原理有了进一步的了解,学习了单片机的设计流程,进一步的练习了焊接的技术,这对我们以后的毕业课程设计帮助颇多。

同时,我明白了,做任何事都要谨慎的选择一个好的开始,学东西不能只保留在“知道”的层面上,要多实践才能熟练的运用,不管做什么事情都要爆保持冷静,有时候急躁就是错误的温床!感谢老师对我们的细心耐心的指导与帮助,让我们过了一个收获这么多的星期!。

相关文档
最新文档