8888一美食家
频率测量的方法常用的有测频法和测周法两种。
测频法的基本思想是让计数器在闸门信号的控制下计数1秒时间,计数结果是1秒内被测信号的周期数,即被测信号的频率。若被测信号不是矩形脉冲,则应先变换成同频率的矩形脉冲。测频法的原理框图如图所示。
图中,秒脉冲作为闸门信号,当其为高电平时,计数器计数;低电平时,计数器停止计数。显然,在同样的闸门信号作用下,被测信号的频率越高,测量误差越小。当被测频率一定时,闸门信号高电平的时间越长,测量误差越小。但是闸门信号周期越长,测量的响应时间也越长。
2、当被测信号频率较低时,为保证测量精度,常采用测周法。即先测出被测信号的周期,再换算成频率。测周法的实质是把被测信号作为闸门信号。
在它的高电平的时间内,用一个标准频率的信号源作为计数器的时钟脉冲。若计数结果为N,标准信号频率为f1,则被测信号的周期为:T=T1·N。被测信号的频率为:f=1/T1·N=f1/N。
利用测周法所产生的最大绝对误差,显然也等于±1个标准信号周期。如果被测信号周期的真值为T真=T1·N,则T测=T1·(N±1)σmax=(f测-f真)/f真=T真/T测_1=±1/(N±1)由上式可知,对于一定的被测信号,标准信号的频率越高,则N的值越大,因而相对误差越小。
3、低频段的测量,鉴于上述困难,对于低频信号,为了达到规定的精度,要采取一些比较特殊的方法。例如,可考虑将被测信号倍频后再用测频法测量。
或将闸门信号展宽。由于倍频电路比较复杂,所以一般采用后一种方法,实际上闸门信号展宽与被测信号倍频在效果上是相同的。
闸门信号展宽比较容易做到,例如采用分频电路就可以实现。若闸门信号高电平时间从1秒展宽到10秒,则相对误差可以按比例下降,但响应时间也增大相同的比例。
4、显示方式:共用右边四个数码管,左三个显示数据,最右端一个显示单位,为0时单位为Hz,为1时单位为Khz
5、代码:
//#include<>
#include<>
#include<>
#defineuintunsignedint
uinta,b,c,d;
unsignedlong x;
unsignedlong count;
unsignedcharflag=0;
voidTimer0_Init()interrupt1
{
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
if(++count==40)
{
count=0;
TR1=0;
x=TH1*256+TL1;
TH1=0;
TL1=0;
TR1=1;
flag=1;
}
}
voidshow(void)
{if(x>=10&&x<100)
{
a=0;
b=x*10%100;
c=x/10;
d=x%10;
ZLG7289_Download(1,7,0,a);
ZLG7289_Download(1,6,0,b);
ZLG7289_Download(1,5,1,d);
ZLG7289_Download(1,4,0,c);
}
elseif(x>=100&&x<1000)
{
a=0;
b=x/100;
c=x%100/10;
d=x%10;
ZLG7289_Download(1,7,0,a);
ZLG7289_Download(1,6,1,d);
ZLG7289_Download(1,5,0,c);
ZLG7289_Download(1,4,0,b);
}
elseif(x>=1000&&x<10000)
{
a=x/1000;
b=x%1000/100;
c=x%100/10;
d=1;
ZLG7289_Download(1,7,0,d);
ZLG7289_Download(1,6,0,c);
ZLG7289_Download(1,5,0,b);
ZLG7289_Download(1,4,1,a);
}
}
main(void)
{
system_init();
systemclk_init();
port_init();
ZLG7289_Init(40);
ZLG7289_Reset();
timer_init();
while(1)
{
if(flag==1)
{
show();
flag=0;
}
}}
#include<>
#include<>
voidsystem_init()
{
PCA0MD&=~0x40;
}
voidsystemclk_init()
{
OSCICL=OSCICL+42;//设置内部振荡器为24MHZ
OSCICN|=0x01; //内部振荡器4分频
}
voidport_init()
{
P0SKIP=0x00; //跳过做做INT1(模拟输出不跳)
P1SKIP=0x00; //跳过,,
XBR0=0x00; //交叉开关使能UART0
XBR1=0x60; //打开交叉开关
//IT01CF=0x10; //INT0配置在,INT1配置在
P0MDIN=0xFF; //数字输入
P1MDIN=0xFF;
P0MDOUT=0xFF;//推挽
P1MDOUT=0xFF;
}
voidtimer_init()
{
TMOD=0X51;
TH0=(65535-2500)/256;
TL0=(65535-2500)%256;
EA=1;
ET0=1;
TR1=1;
TR0=1;
}
#ifndef__port_H_
#define__port_H_
voidsystem_init(void);
voidsystemclk_init(void);
voidport_init(void);
voidtimer_init(void);
#endif
Hexe留恋不往
摘要: 采用TMS320F2812 DSP芯片为控制单元,在无需任何门控器件控制的情况下,利用DSP 2812丰富的软件资源实现了等精度测量。根据每个门闸时间内高频标准脉冲的个数与已知被测信号的个数,求得被测信号频率,再通过多次平均得到最终结果。关键词: 数字频率计;等精度测量;DSP * 本作品获得2008年德州仪器(TI) C2000 DSP大奖赛命题组一等奖,并得到合肥工业大学2008年大学生创新性实验计划项目的资助作品的意义与概况 随着微电子技术和计算机技术的飞速发展, 各种电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化, 特别是DSP技术诞生以后,电子测量技术更是迈进了一个全新的时代。近年来,DSP逐渐成为各种电子器件的基础器件,逐渐成为21世纪最具发展潜力的朝阳行业,甚至被誉为信息化数字化时代革命旗手。在电子测量技术中,频率是最基本的参数之一,它与许多电参量和非电量的测量都有着十分密切的关系。例如,许多传感器就是将一些非电量转换成频率来进行测量的,因此频率的测量就显得更为重要。数字频率计是用数字来显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号。 数字频率计广泛采用了高速集成电路和大规模集成电路,使得仪器的体积更小、耗电更少、精度和可靠性更高。而传统的频率计测量误差较大,范围也较窄,因此逐渐被新型的数字频率计所代替。基于DSP的等精度频率计以其测量准确、精度高、方便、价格便宜等优势将得到广泛的应用。 我们设计的简易数字频率计在未采用任何门控器件控制的情况下,在很宽的范围内实现了等精度频率测量,的范围内测量方波的最大相对误差小于2e-6,测量正弦波的最大相对误差小于;结果通过RS232通讯显示在计算机上,可以很方便地监测数据。方案设计 总体介绍 传统的等精度测频法使用门控器件产生门控信号,从而实现实际门闸信号与被测信号同步,消除对被测信号计数产生的一个脉冲的误差,其原理图如图1所示。图1 传统的等精度测量原理 由硬件控制计数的门闸时间,当预置们信号(即定闸门信号)为高电平时,基准信号计数器CNT1和被测信号计数器CNT2并不启动,而是等被测信号的上升沿来到时才同时开始计数;当预置们信号为低电平时,两个计数器并不马上关闭,同样要等到被测信号上升沿来到后再关闭;于是,实际闸门时间就是被测信号周期的整数倍,从而实现了闸门与被测信号的同步。但是,实际的门闸时间并不固定,与被测信号的频率有关。此外,无论是采用计数器还是单片机,在实现等精度测量时总是离不开门控器件。 本设计基于DSP丰富的软件资源,经过判断和处理,完成了对被测信号频率的等精度测量。硬件上无需任何门控器件,简化了电路。系统框图如图2所示,信号处理部分以TMS320F2812 DSP芯片作为控制和测量的核心;信号调理部分主要是完成对信号的放大、整形和限幅;标准频率信号由30MHz有源晶振产生,作为高频标准填充脉冲;通过DSP的SCI模块与上位机实现通信,结果显示在上位机上。图2 系统框图 频率/周期测量 在对被测信号频率和周期的测量中,等精度测量是基于DSP比较匹配时T1PWM引脚输出电平的跳变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而实现了门闸时间与被测信号的同步。原理图如图3所示。图3 本等精度频率测量原理 通用定时器T1时钟输入选择外部定时器时钟,此处用调理后的被测信号作为定时器T1的时钟输入,定时器T2时钟输入选择内部CPU时钟,用来产生高频标准填充脉冲。F2812片上EVA中通用定时器T1在发生比较匹配事件时,其比较输出引脚T1CMP输出信号会自动改变电平状态,产生PWM波。捕获单元CAP1设置为上升沿捕获,T1PWM输出的PWM波上升沿被CAP1捕获到,读取此时定时器T2的计数值,同理在下一次比较匹配时再次读取定时器T2的计数值。通过两次T2CNT值的相减,即可获得该门闸时间内标准填充脉冲的个数,然后求出被测信号频率。 基于DSP比较匹配时T1PWM引脚输出电平的跳变作为门闸信号的开启和关闭,由于比较匹配发生在被测信号的上升沿,从而实现了门闸时间与被测信号的同步。两个相邻的比较匹配产生的PWM波的上升沿分别作为门闸信号的开启和关闭信号,其中被测信号的个数为整数,并且是由我们自己任意设定的。定时器T2时钟输入选择内部CPU时钟,用来产生标准填充脉冲。设定捕获单元CAP1为上升沿捕获,当其捕获到上升沿时读取堆栈CAPFIFO内的值,在下一次捕获到时再读堆栈内的值,计算出标准填充脉冲的个数Ny,保证Ny的个数不小于一定的值,即可保证门闸时间大于一定的值。假设现在希望一个门闸时间内高频填充脉冲的总数不小于n,当Ny>n时,就增大定时器T1的定时周期,即增大定时器T1周期寄存器TIPR的值。存在公式T1PR+1=n/Ny,由于n/Ny不一定为整数,假a
阿达殿下
我有一份数字频率计的报告,可能有些要求达不到,要修改一下,如果你要的话,就发给你下面是报告的要求: 要求设计一个简易的数字频率计,其信号是给定的脉冲信号,是比较稳定的。测量信号:方波 ;测量频率范围: 1Hz~9999Hz ; 显示方式: 4位十进制数显示;时基电路由 555 定时器及分频器组成, 555 振荡器产生脉冲信号,经分频器分频产生的时基信号,其脉冲宽度分别为: 1s, ;当被测信号的频率超出测量范围时,报警.
色恋粉雪
这是大规模数字集成电路在系统可编程领域的经典课程设计。数字频率计是近代电子技术领域的重要测量工具之一,同时也是其他许多领域广泛应用的测量仪器。数字频率计是在规定的基准时间内把测量的脉冲数记录下来,换算成频率并以数字形式显示出来。数字频率计用于测量信号(方波,正弦波或其他周期信号)的频率,并用十进制数字显示,它具有精度高,测量速度快,读数直观,使用方便等优点。一个用VHDL语言实现的实例如下:-- Project Name: 恒精度频率计-- Target Devices: FPGA or CPLD-- Revision - File Created-- Comments: clk--系统工作时钟,2MHz-------------reset--系统复位信号,高电平有效-------------Fx--为待测信号-------------FreqNx--为待测信号的计数值-------------FreqNs--为标准信号的计数值-------------Freq--为待测信号的频率------------------------------------------------------------------------------------library IEEE;use ;use ;use ;----------------------------------------------------------entity Cymometer is generic(clk_freq : integer := 2000000);--系统工作时钟频率 Port ( clk : in STD_LOGIC; reset : in STD_LOGIC; Fx : in STD_LOGIC; ----待测信号 FreqNs : out natural; FreqNx : out natural); --Freq : out natural);end Cymometer;----------------------------------------------------------architecture Behavioral of Cymometer is---------------------------------------- signal start : STD_LOGIC;--此信号为高电平时计数器开始计数 signal CTRL : STD_LOGIC;--CTRL信号为待测信号和门控信号产生的计数器启动信号 signal CNTx : natural;--待测信号计数器 signal CNTs : natural;--标准信号计数器----------------------------------------begin--***************************************----产生一个门控信号,高电平有效 GateCtrl : process(clk) --------------------------- variable CNT0 : integer range 0 to 2_097_152;--门控信号计数器 --------------------------- begin if rising_edge(clk) then if reset='1' then CNT0 := 0; else CNT0 := CNT0 + 1; end if; --------- if reset='1' then start <= '0'; elsif CNT0 < (clk_freq*3/4) then start <= '1'; else start <= '0'; end if; end if; end process GateCtrl;--***************************************----产生CTRL信号,由待测信号和门控信号产生的计数器启动信号 CtrlGen : process(Fx) begin if rising_edge(Fx) then if reset='1' then CTRL <= '0'; else CTRL <= start; end if; end if; end process CtrlGen;--***************************************----用两个计数器分别对标准信号clk和待测信号signal计数------------------------------------计数标准信号,CTRL高电平期间有效 CountS : process(clk) begin if rising_edge(clk) then if reset='1' then CNTs <= 0; elsif CTRL='1' then CNTs <= CNTs + 1; else CNTs <= 0; end if; end if; end process CountS;------------------------------------计数待测信号,CTRL高电平期间有效 CountX : process(Fx) begin if rising_edge(Fx) then if reset='1' then CNTx <= 0; elsif CTRL='1' then CNTx <= CNTx + 1; else CNTx <= 0; end if; end if; end process CountX;--***************************************----CTRL下降沿将技术结果和测量值输出 CountOut : process(CTRL) begin if falling_edge(CTRL) then if reset='1' then FreqNs <= 0; FreqNx <= 0;-- Freq <= 0; else FreqNs <= CNTs; FreqNx <= CNTx;-- Freq <= (clk_freq / CNTs * CNTx); end if; end if; end process CountOut;end Behavioral;下面是为上面的模块编写的测试平台,在Modelsim下仿真通过,因为数据量较大,建议不要使用Altera及ISE仿真。--------------------------------------------------------------------------------LIBRARY ieee;USE ;USE ;USE ; ENTITY tb ISEND tb; ARCHITECTURE behavior OF tb IS -- Component Declaration for the Unit Under Test (UUT) COMPONENT Cymometer PORT( clk : IN std_logic; reset : IN std_logic; Fx : IN std_logic; FreqNs : OUT natural; FreqNx : OUT natural; Freq : OUT natural ); END COMPONENT;--Inputs signal clk : std_logic := '0'; signal reset : std_logic := '1'; signal Fx : std_logic := '0'; --Outputs signal FreqNs : natural; signal FreqNx : natural;-- signal Freq : natural; -- Clock period definitions constant clk_period : time := 500ns; BEGIN -- Instantiate the Unit Under Test (UUT) uut: Cymometer PORT MAP ( clk => clk, reset => reset, Fx => Fx, FreqNs => FreqNs, FreqNx => FreqNx, -- Freq => Freq ); -- Clock process definitions clk_process :process begin clk <= '0'; wait for clk_period/2; clk <= '1'; wait for clk_period/2; end process; --产生待测信号 Fx_process : process begin Fx <= '0'; wait for 2*clk_period; Fx <= '1'; wait for 2*clk_period; end process; -- Stimulus process stim_proc: process begin -- hold reset state for 100ms. wait for clk_period*10; reset <= '0'; -- insert stimulus here wait; end process;END;参考原理M/T测频法。
美洋洋童装店
大学是干嘛的地方?无论多高的学历和职称,不会设计、制造教具,不会设计、制造教学仪器,不会维修仪器和设备;用你父母的钱进口教学仪器模仿了委托工厂仿制就是佼佼者;用你父母的钱请校外的人来维修设备、从校外采购配件;用你父母的钱请教学仪器生产企业提供教学实验讲义,将作者填上他们的名字就有教学突出成就奖;教你背诵的公式和外语,永远也比不上美国麻省理工学院在网上公开的教材内容。学生也不要埋怨学费贵,除了上面教师的原因,你们自己的基础实验、专业课就上的迷迷糊糊的,高额投资下的创新实验项目、挑战杯、科技竞赛、毕业论文、商业开发,都见不得阳光,将真金白银变成了一堆堆的垃圾!!!!
数控的设计我可以写
频率测量的方法常用的有测频法和测周法两种。 测频法的基本思想是让计数器在闸门信号的控制下计数1秒时间,计数结果是1秒内被测信号的周期数,即被测信号的频率。若被测
你问的也太多了吧。真是舍得用百度啊。1.频率计应该是能对输出的信号的频率进行调整。比如要求输出10kHZ的某种波。指标:频率,波形,占空比,最高电压,最低电压,
一般不会。全日制大学,论文答辩很少录视频,除非学校硬性要求。一般都是拍几张答辩的照片,留存证据。
通过与同学的讨论与认真计算设计分析所完成的,课程设计的任务是设计、组装并调试一个数字电压表测量系统。需要我们综合运用单片机等课程的知识,通过查阅资料、方案论证与