四位十进制频率计设计 自己写的

更新时间:2024-01-17 06:41:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字频率计设计 1. 设计任务

设计一简易数字频率计,其基本要求是:

1)测量频率范围1Hz~10Hz,量程分为4档,即×1,×10,×100,×1000。 2)频率测量准确度

?fxfx??2?10?3.

3)被测信号可以是下弦波、三角波和方波。 4)显示方式为4位十进制数显示。 5)使用EWB进行仿真。 2. 设计原理及方案

频率的定义是单位时间(1s)内周期信号的变化次数。若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为

f=N/T

据此,设计方案框图如图1所示。

图1 数字频率计组成框图

其基本原理是,被测信号ux首先经整形电路变成计数器所要求的脉冲信号,频率与被测信号的频率fx相同。时钟电路产生时间基准信号,分频后控制计数与保持状态。当其高电平时,计数器计数;低电平时,计数器处于保持状态,数据送入锁存器进行锁存显示。然后对计数器清零,准备下一次计数。其波形逻辑关系图如图2所示。 3. 基本电路设计 1)整形电路

整形电路是将待测信号整形变成计数器所要求的脉冲信号。电路形式采用由555定时器所构成的施密特触发器,电路如图XXX所示。若待测信号为三角波,输入整形电路,设置分析为瞬态分析,启动电路,其输入、输出波形如图XXX所示。可见输出为方波,二者频率相同。

2)时钟产生电路

时钟信号是控制计数器计数的标准时间信号,其精度很大程度上决定了频率计的频率测量精度。当要求频率测量精度较高时,应使用晶体振荡器通过分频获得。在此频率计中,时钟信号采用555定时器构成的多谐振荡器电路,产生频率为1Kz的信号,然后再进行分频。多谐振荡器电路如图XXX所示。由555定时器构成多谐振荡器的周期计算公式为

XXXXXXXXXX

取XXXXXXXXXXXXXX,则得到振荡频率为1Kz的负脉冲,其振荡波形如图XXX所示。

3)分频器电路

采用计数器构成分频电路,对1Kz的时钟脉冲进行分频,取得不同量程所需要的时间基准信号,实现量程控制。1Kz的时钟脉冲,对其进行3次10分频,每个10分频器的输出信号频率分别为100Hz,10Hz,1Hz三种时间基准信号。对应于以1Kz,100Hz,10Hz,1Hz的信号作为时间基准信号时,相应的量程为×1000,×100,×10,×1。

构成10分频带电路是采用十进制计数器74LS160实现的。具体电路及其输入、输出波形如图XXX所示。

(1) T触发器

T触发器电路是用来将分频带器输出阻抗的窄脉冲整形为方波,因为计数器需要用方波来控制其计数/保持状态的切换。整形后方波的频率为频器输出信号频率的一半,则对应于1Kz,100Kz,10Kz,1Hz的信号,T触发器输出信号的高电平持续时间分别为0.001s,0.01s,0.1s,1s。T触发器采用JK触发器7473为实现,其电路连接图及其输入、输出波形如图XXX所示。

(2) 单稳触发器

单稳触发器用于产生一窄脉冲,以触发锁存器,使计数器在计数完毕后更新锁存器数值。单稳触发器电路采用555定时器实现,为了保证系统正常工作,单稳电路产生的脉冲宽度不能大于该量程分频带器输出信号的周期。例如,计数器的最大量程是×1000,对应分频带器输出的时间基准信号频率为1000Hz,周期是1ms。取单稳电路输出脉冲宽度TW=0.1ms。根据TW=1.1RC,取C=0.01Uf,则R=9.8KΩ,取标称什为10KΩ。单稳触发器输入信号是T触发器输出信号经Rd、Cd组成的微分器将方波变成尖脉冲后加到555定时器的触发器。电路图及输入、输出波形如图XXX所示。

(3) 延迟反相器

延时反相器的功能是为了得到一个对计数器清零的信号。由于计数器清零

是低电平有效,而且计数器清零必须在单稳触发信号之后,故延迟反相器是在上述单稳电路之后,再加一级单稳触发电路,且在其输出端加反相器输出。其输入、输出波形如图XXX所示。 (4) 计数器

计数器在T触发器输出信号的控制下,对经过整形的待测信号进行脉冲计数,所得结果乘以量程即为待测信号频率。

根据精度要求,采用4个十进制计数器级联,构成N=1000计数器。十进制计数器仍采用74LS160实现。其电路图如图XXX所示。其中计数器的清零信号由延迟反相器提供,控制信号由T触发器提供,计数器输出结果送入锁存器。

(5) 锁存器和显示

计数器的结果进入锁存器锁存,4个七段数码管显示测试信号的频率。锁存器使用了两片8D集成触发器实现,其控制信号来自于延迟反相器,具体电路如图XXX所示。

(6) 数字频率计的总体电路

图XXX是数字频率计的总体电路图。

4. 测试

搭建好以上电路以后,进行调试,首先分模块进行调试,待每一个模块调试正确后,不规则进行联调。因为整个电路的分析是瞬态分析,故总体电路的分析需要较长时间。 以上仅仅是学生所做综合电路分析与设计的例子,由于EWB5.12教学版本库元件的限制,

有些电路与系统无法进行全部电路的仿真(例如收发信通信系统等),但有些局部电路也可以进行仿真,从而节省对这部分电路设计化费的时间。

求4位可自动转换量程的十进制频率计EPM7128S可用的VHDL程序

其他回答:我有详细论文。VHDl程序,详细原理和框图。不过我当时用的是epm240.。。它的逻辑门比epm7128多。那时候我想用epm7128的。但是逻辑门不够。你或者需要考虑换一下芯片。不然难以实现功能。125319557@qq.com联系。 偏差由D控制什么意思

晶蓝刚买一周系列18千瓦升级版。显示温

其他答案:根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这0个信号可以由一个测频控制信号发生器产生,即图7-1中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的ENA使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。其工作时序波形如图7-2。 【例7-1】

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4B IS

PORT (CLK : IN STD_LOGIC; RST : IN STD_LOGIC; ENA : IN STD_LOGIC;

OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT4B;

ARCHITECTURE behav OF CNT4B IS

SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

P_REG: PROCESS(CLK, RST, ENA) BEGIN

IF RST = '1' THEN CQI <= \ ELSIF CLK'EVENT AND CLK = '1' THEN IF ENA = '1' THEN CQI <= CQI + 1; END IF; END IF; OUTY <= CQI ;

END PROCESS P_REG ; --进位输出

COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); END behav; 【例7-2】

LIBRARY IEEE; --测频控制器 USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY TESTCTL IS

PORT ( CLKK : IN STD_LOGIC; -- 1Hz CNT_EN,RST_CNT,LOAD : OUT STD_LOGIC); END TESTCTL;

ARCHITECTURE behav OF TESTCTL IS SIGNAL DIV2CLK : STD_LOGIC; BEGIN

PROCESS( CLKK ) BEGIN

IF CLKK'EVENT AND CLKK = '1' THEN DIV2CLK <= NOT DIV2CLK; END IF;

END PROCESS;

PROCESS (CLKK, DIV2CLK) BEGIN

IF CLKK='0' AND Div2CLK='0' THEN RST_CNT <= '1'; ELSE RST_CNT <= '0'; END IF; END PROCESS;

LOAD <= NOT DIV2CLK ; CNT_EN <= DIV2CLK; END behav; 【例7-3】

LIBRARY IEEE; --4位锁存器

USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG4B IS

PORT ( LOAD : IN STD_LOGIC;

DIN : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END REG4B;

ARCHITECTURE behav OF REG4B IS BEGIN

PROCESS(LOAD, DIN) BEGIN

IF LOAD'EVENT AND LOAD = '1' THEN DOUT <= DIN; --时钟到来时,锁存输入数据 END IF;

END PROCESS; END behav;

还有用Verilog HDL语言设计的程序

//测频控制器

module testctl(clkk,cnt_en,rst_cnt,load); input clkk;

output cnt_en,rst_cnt,load; reg rst_cnt; reg div2clk;

always@(posedge clkk) begin

div2clk=~div2clk; end

always@(clkk or div2clk) begin

if((clkk==’b0)&(div2clk==’b0)) rst_cnt=’b1;

else rst_cnt=’b0; end

assign load=~div2clk; assign cnt_en=div2clk; endmodule //十进制计数器

module cnt10(clk,rst,ena,outy,cout); input clk,rst,ena; output[3:0] outy; output cout; reg[3:0] outy;

always@(posedge clk) begin

if(rst) outy=’b0000; else if(ena) begin

if(outy<’b0001) outy=outy+1; else outy=’b0000; end end

assign cout=outy[3]&outy[0]; endmodule //四位锁存器

module reg4b(load,din,dout); input[3:0] din;

input load; output[3:0] dout; reg[3:0] dout;

always@(posedge load) begin

dout=din; end

endmodule

//频率计顶层文件源代码:

moudle plj_v(flhz,fin,doutt,coutt); input flhz,fin; output[15:0] doutt; output coutt; reg [15:0] doutt;

wire [3:0] cnt_ent,rst_cntt,loadt; wire [3:0] outy1,outy2,outy3,outy4; wire cout1,cout2,cout3;

testctl u1(flhz,cnt_ent,rst_cntt,loadt);

cnt10 u2(fin,rst_cntt,cnt_ent,outy1,cout1); cnt10 u3(cout1,rst_cntt,cnt_ent,outy2,cout2); cnt10 u4(cout2,rst_cntt,cnt_ent,outy3,cout3); cnt10 u5(cout3,rst_cntt,cnt_ent,outy4,coutt); reg4b u6(loadt,outy1,doutt[3:0]); reg4d u7(loadt,outy2,doutt[7:4]); reg4d u8(loadt,outy3,doutt[11:8]); reg4d u9(loadt,outy4,doutt[15:12]) endmodule

免费论文>>计算机>>单片机>>正文内容

一种基于单片机的数字频率计的实现

作者:会员 来源:会员提供 发布时间:2010年05月05日 点击数: 100

摘要:设计一种以单片机AT89C51为核心的数字频率计,介绍了单片机、数字译码和显示单元的组成及工作原理。测量时,将被测输入信号送给单片机,通过程序控制计数,结果送译码器74- LS145与移位寄存器74LS164,驱动LED数码管显示频率值。通过测量结果对比,分析了测量误差的来源,提出了减小误差应采取的措施。频率计具有电路结构简单、成本低、测量方便、精度较高等特点,适合测量低频信号。

论文分享平台: 免费论文 优秀毕业论文下载 全套源码设计下载 课程设计下载 论文辅导下载 赚取金币 购买金币 1 测频设计原理

频率计测频原理方框图如图1所示。被测输入信号通过脉冲形成电路进行放大与整形(可由放大器与门

电路组成),然后送到单片机入口,单片机计数脉冲的输入个数。计数结果经LED数码管显示,从而得到被测信号频率。

2 元器件选择与使用 2.1 单片机

选择单片机AT89C51是因为有编程灵活、易调试的特点,而且AT89C51的引脚较多,利于电路的展。它集成了CPU,RAM,ROM,定时器/计数器和多功能I/0口等一台计算机所需的基本功能部件,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含两个外中断口,两个16位可编程定时计数器,两个全双工串行通信口。其片内集成了4 KB的FLASHPEROM用来存放应用程序,这个FLASH程序存储器除允许一般的编程器离线编程外,还允许在应用系统中实现在线编程,并且还提供了对程序进行三级加密保护的功能。AT89C51的另一个特点是工作速度更高,晶振频率可高达24 MHz,一个机器周期仅为500 ms,比MCS-51系列单片机快了一倍。 其具体使用方法如下:

P1.0口与寄存器74LS164的A,B端口连接,串行输出待显示的数据。 P1.1口接移位寄存器74LS164的CLK(第8引脚),输出时钟信号。

P1.5,P1.6,P1.7口分别与译码器74LS145的A,B,C端口连接,输出位控制信号。 P3.5口(即T1)输入脉冲信号。

XTAL1与XTAL2管脚接两个30 pF电容和12 MHz晶振构成时钟电路。 RST管脚接1 kΩ,10 kΩ电阻,20 μF电容及复位开关构成开关复位电路。 2.2 显示译码单元

显示部分采用译码器74LS145与移位寄存器74LS164,主要是考虑了性价比的原因。比如,此处可以采用HARRIS公司推出的ICM7218B共阴极数码管驱动芯片,它集BCD译码器、多路扫描器、段驱动和位驱动于一体。用此驱动可使电路相对简单,显示部分的软件设计也比较简单,但由于其价位相对较高,故采用译码器74LS145与移位寄存器74LS164。 2.3 数字显示单元

LED显示器采用动态显示方式。显示时将所有位的段选线相应的并联在一起,由一个8位I/O口控制,形成段选线的多路复用。译码器74LS145是位选部分,移位寄存器74LS164是段选部分。由于各位的段选线并联,段选码的输出对各位来说都是相同的。同一时刻,如果各位选线都处于选通状态的话,六位的LED将显示相同的字符。要各位LDE能够显示出与本位相应的显示字符,就须采用扫描显示方式。即在同一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位

要显示字型码,这样同一时刻,六位LED中只有选通的那一位显示出字符,而其他五位则是熄灭的。而在下一刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段选线上输出相应位将要显示字符的字符码。

这样循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于人眼有视觉残留现象,只要每位显示间隔足够短,则可造成多位同时亮的效果。 3 硬件设计

电路原理图如图2所示。以单片机AT89C51为核心,由译码器74LS145与移位寄存器74LS164实现串行输出显示,其中74LS164输出段选信号,74LS145输出位选信号。

具体连接方法是将P1.0口与寄存器74LS164的A,B端口连接,P1.1口与移位寄存器74LS164的CLK连接,P1.5,P1.6,P1.7口分别与译码器74LS145的A,B,C端口连接,在P3.5口(即T1)输入脉冲信号。

电路实现的关键是设法取得准确的一秒定时,并让计数器只计数一秒,这样计数结果则为频率值。实现的方法是利用单片机内的16位定时/计数器,用定时器/计数器0作为定时器,实现一秒定时;用定时器/计数器1作为计数器,对输入的脉冲进行计数。当按动开关时,开始定时及计数,时间到停止计数,计数值通过LED显示,得到频率值。再次按动开关又进行定时计数。 4 软件设计 4.1 实现一秒定时

采用12 MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时/计数器TO作定时器,工作于方式1产生50 ms

的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。 4.2 计数部分

将定时器/计数器的方式寄存器TMOD,用软件赋初值51H,即01010001B。这时定时器/计数器1采用工作方式1,方式选择位C/T设为1,即设T1为16位计数器。定时器/计数器O采用工作方式1,C/T设为0,即设TO为16位定时器。

计算计数初值:设计数初值为X,本设计采用12 MHz的晶振。机器周期=12×(1/晶振频率)=12×(1/12×10。)一1×10一。,(2M—X)×1×10—0—50×10_。,X一15 536。 所以计数初值为15 536,用十六进制表示为3CBOH。

当定时器/计数器T1设定为计数方式时,其计数脉冲是来源T1端口的外部事件。当T1端口上出现由“1”(高电平)到“0”(低电平)的负跳变脉冲时,计数器则加1计数。计算机是在每个机器周期的S5P2状态时采样T1端口,当前一个机器周期采样为1且后一个机器周期采样为0时,计数器加1计数。计算机需用两个机器周期来识别1次计数,因而最大计数速率为振荡频率的1/24。在采用12 MHz晶振的情况下,单片机最大计数速度为0.5 MHz即500 kHz。

另外,此处对外部事件计数脉冲的占空比(即脉冲的持续宽度)无特殊要求,但必须保证所给出的高电平在其改变之前至少被采样1次,即至少保持1个完整的机器周期。由此可见,从T1口输入脉冲信号,T1可实现对脉冲个数的计数。 4.3 程序流程图

计时采用定时T0中断完成,其余状态循环调用显示子程序。主程序流程如图3所示。

5 测量结果及误差分析 5.1 测量结果

给电路加+5 V电压,输入信号,按动开关,即可得到频率值。将所测频率值与示波器测量结果比较,如表1所示。

5.2 误差来源分析

(1)单片机计数速率的限制引起误差。从表l测量数据可以看出被测信号频率越高,测量误差越大,且所测信号频率不能超过480 kHz。这是因为采用的是12 MHz的晶振,单片机最大计数速度为500 kHz,所以当被测信号越接近500 kHz时,测量结果与实际频率的误差就越大。而当被测信号大于500 kHz时,频率计将测不出信号频率。

(2)原理上存在±1误差。由于该设计是在计数门限时间一秒内的频率信号脉冲数,所以定时开始时的第

一个脉冲和定时时间到时的最后一个脉冲信号是否被记录,存在随机性。这种误差对测量频率低的信号影响较大。其误差原理示意图如图4所示。

(3)晶振的准确度会影响一秒定时的准确度,从而引起测量结果误差。 5.3 减小误差措施

(1)选用频率较高和稳定性好的晶振。如选24 kHz的晶振可使测量范围扩大,稳定性好的晶振可以减小误差。

(2)测量频率低的信号时,可适当调整程序,延长门限时间,减少原理上±1的相对误差。 (3)测量频率较高的信号时,可先对信号进行分频,再进行测量。 6 结 语

基于单片机设计的数字频率计具有原理简单、易于调试和测量方便等优点,主要用来测量低频信号的频率。由于其测量范围会受单片机计数速率的限制,其测量量程较小,所以可以从原理上进行改进以提高其测频范围,比如通过增加分频电路,就可实现对高频信号的测量。(刘竹琴,白泽生 延安大学)

一个脉冲和定时时间到时的最后一个脉冲信号是否被记录,存在随机性。这种误差对测量频率低的信号影响较大。其误差原理示意图如图4所示。

(3)晶振的准确度会影响一秒定时的准确度,从而引起测量结果误差。 5.3 减小误差措施

(1)选用频率较高和稳定性好的晶振。如选24 kHz的晶振可使测量范围扩大,稳定性好的晶振可以减小误差。

(2)测量频率低的信号时,可适当调整程序,延长门限时间,减少原理上±1的相对误差。 (3)测量频率较高的信号时,可先对信号进行分频,再进行测量。 6 结 语

基于单片机设计的数字频率计具有原理简单、易于调试和测量方便等优点,主要用来测量低频信号的频率。由于其测量范围会受单片机计数速率的限制,其测量量程较小,所以可以从原理上进行改进以提高其测频范围,比如通过增加分频电路,就可实现对高频信号的测量。(刘竹琴,白泽生 延安大学)

本文来源:https://www.bwwdw.com/article/fi2o.html

Top