等精度数字频率计-EDA技术综合应用实例与分析--ppt课件

上传人:29 文档编号:242805824 上传时间:2024-09-04 格式:PPT 页数:145 大小:1.34MB
返回 下载 相关 举报
等精度数字频率计-EDA技术综合应用实例与分析--ppt课件_第1页
第1页 / 共145页
等精度数字频率计-EDA技术综合应用实例与分析--ppt课件_第2页
第2页 / 共145页
等精度数字频率计-EDA技术综合应用实例与分析--ppt课件_第3页
第3页 / 共145页
点击查看更多>>
资源描述
第二级,第三级,第四级,第五级,第13章 等精度数字频率计的,设计与分析,第13章 等精度数字频率计的设计与分析,13.1 系统设计要求,13.2 系统设计方案,13.3 主要VHDL和单片机源程序,13.4 系统仿真/硬件验证,13.5 设计技巧分析,13.6 系统扩展思路,第13章 等精度数字频率计的设计与分析 13.1 系统设,13.1 系统设计要求,基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。本系统设计的基本指标如下:,13.1 系统设计要求 基于传统测,(1) 对于频率测试功能,测频范围为0.1 Hz70 MHz;对于测频精度,测频全域相对误差恒为百万分之一。,(2) 对于周期测试功能,信号测试范围与精度要求与测频功能相同。,(3) 对于脉宽测试功能,测试范围为0.1 s1 s,测试精度为0.01 s。,(4) 对于占空比测试功能,测试精度为1%99%。,(1) 对于频率测试功能,测频范围为0,13.2 系统设计方案,13.2.1 系统设计方案选择,根据频率计的设计要求,我们可将整个电路系统划分为几个基本模块,如图13.1所示。各模块的实现均有几种不同的设计方案。,13.2 系统设计方案 13.2.1 系统设计方案选,图13.1 频率计组成模块框图,图13.1 频率计组成模块框图,1频率测量模块,(1) 直接测频法:把被测频率信号经脉冲整形电路处理后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲送到十进制计数器进行计数。,(2) 组合测频法:是指在高频时采用直接测频法,低频时采用直接测量周期法测信号的周期,然后换算成频率。,1频率测量模块,(3) 倍频法:是指把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数,将经整形的低频信号进行倍频后再进行测量,对高频段则直接进行测量。倍频法较难实现。,(4) 等精度测频法:其实现方式可用图13.2来说明。,(3) 倍频法:是指把频率测量范围分成,(13.1),由此可推得,(13.2),(13.1) 由此可推得 (13.2),图13.2 等精度测频法原理框图,图13.2 等精度测频法原理框图,若所测频率值为f,x,,其真实值为f,xe,,标准频率为f,s,,一次测量中,由于f,x,计数的起停时间都是由该信号的上跳沿触发的,因此在T,pr,时间内对f,x,的计数N,x,无误差,在此时间内的计数N,s,最多相差一个脉冲,即et1,则下式成立:,(13.3),(13.4),若所测频率值为fx,其真实值为fxe,标,可分别推得,(13.5),(13.6),根据相对误差的公式有,(13.7),可分别推得 (13.5) (13.6) 根据相对误差的公,经整理可得到,(13.8),因et1,故et/N,s,1/N,s,,即,N,s,=T,pr,f,s,(13.9),经整理可得到 (13.8) 因et1,故et/Ns1,2,周期测量模块,(1) 直接周期测量法:用被测信号经放大整形后形成的方波信号直接控制计数门控电路,使主门开放时间等于信号周期T,x,,时标为T,s,的脉冲在主门开放时间进入计数器。设在T,x,期间计数值为N,可以根据以下公式来算得被测信号周期:,T,x,=NT,s,(13.10),经误差分析,可得结论:用该测量法测量时,被测信号的频率越高,测量误差越大。,2周期测量模块,(2) 等精度周期测量法:该方法在测量电路和测量精度上与等精度频率测量完全相同,只是在进行计算时公式不同,用周期1/T代换频率f即可,其计算公式为,T,x,=,(13.11),(2) 等精度周期测量法:该方法在测,3脉宽测量模块,在进行脉冲宽度测量时,首先经信号处理电路进行处理,限制只有信号的50%幅度及其以上部分才能输入数字测量部分。脉冲边沿被处理得非常陡峭,然后送入测量计数器进行测量。,测量电路在检测到脉冲信号的上升沿时打开计数器,在下降沿时关闭计数器,设脉冲宽度为T,wx,,计算公式为,T,wx,=,(13.12),3脉宽测量模块 (13.12),4占空比测量模块,测一次脉冲信号的脉宽,记录其值为T,wx1,,然后将信号反相,再测一次脉宽并记录其值为T,wx2,,通过下式计算占空比:,占空比= 100%,5标准频率发生电路,本模块采用高频率稳定度和高精度的晶振作为标,准频率发生器。,4占空比测量模块占空比=,13.2.2 系统总体设计方案,等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现。因此,我们选择单片机和CPLD/FPGA的结合来实现。电路系统原理框图如图13.3所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD/FPGA完成各种测试功能;键盘信号由AT89C51单片机进行处理,它从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LS164分别驱动数码管。,13.2.2 系统总体设计方案,图13.3 等精度数字频率计电路系统原理框图,图13.3 等精度数字频率计电路系统原理框图,系统的基本工作方式如下:,(1) P0口是单片机与FPGA的数据传送通信口,P1口用于键盘扫描,实现各测试功能的转换;P2口为双向控制口。P3口为LED的串行显示控制口。系统设置5个功能键:占空比、脉宽、周期、频率和复位。,(2) 7个LED数码管组成测量数据显示器,另一个独立的数码管用于状态显示。,(3) BCLK为测频标准频率50 MHz信号输入端,由晶体振荡源电路提供。,(4) 待测信号经放大整形后输入CPLD/FPGA的TCLK。,系统的基本工作方式如下:,13.2.3 CPLD/FPGA测频专用模块的VHDL程序设计,利用VHDL设计的测频模块逻辑结构如图13.4所示,其中有关的接口信号规定如下:,(1) TF(P2.7):TF=0时等精度测频;TF=1时测脉宽。,(2) CLR/TRIG(P2.6):当TF=0时系统全清零功能;当TF=1时CLRTRIG的上跳沿将启动CNT2,进行脉宽测试计数。,(3) ENDD(P2.4):脉宽计数结束状态信号,ENDD=1计数结束。,13.2.3 CPLD/FPGA测频专用模块的VH,(4) CHOICE(P3.2):自校/测频选择,CHOICE=1测频;CHOICE=0自校。,(5) START(P2.5):当TF=0时,作为预置门闸,门宽可通过键盘由单片机控制,START=1时预置门开;当TF=1时,START有第二功能,此时,当START=0时测负脉宽,当START=1时测正脉宽。利用此功能可分别获得脉宽和占空比数据。,(6) EEND(P2.3):等精度测频计数结束状态信号,EEND=0时计数结束。,(7) SEL2.0(P2.2,P2.1,P2.0):计数值读出选通控制。,(4) CHOICE(P3.2):,图13.4 测频模块逻辑图,图13.4 测频模块逻辑图,1测频/测周期的实现,(1) 令TF=0,选择等精度测频,然后在CONTRL的CLR端加一正脉冲信号以完成测试电路状态的初始化。,(2) 由预置门控信号将CONTRL的START端置高电平,预置门开始定时,此时由被测信号的上沿打开计数器CNT1进行计数,同时使标准频率信号进入计数器CNT2。,1测频/测周期的实现,(3) 预置门定时结束信号把CONTRL的START端置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,CNT1停止计数,同时关断CNT2对fs的计数。,(4) 计数结束后,CONTRL的EEND端将输出低电平来指示测量计数结束,单片机得到此信号后,即可利用ADRC(P2.2)、ADRB(P2.1)、ADRA(P2.0)分别读回CNT1和CNT2的计数值,并根据等精度测量公式进行运算,计算出被测信号的频率或周期值。,(3) 预置门定时结束信号把CON,2控制部件设计,如图13.5所示,当D触发器的输入端START为高电平时,若FIN端来一个上升沿,则Q端变为高电平,导通FINCLK1和FSDCLK2,同时EEND被置为高电平作为标志;当D触发器的输入端START为低电平时,若FIN端输入一个脉冲上沿,则FINCLK1与FSDCLK2的信号通道被切断。,2控制部件设计,图13.5 测频与测周期控制部分电路,图13.5 测频与测周期控制部分电路,3计数部件设计,图13.4中的计数器CNT1/CNT2是32位二进制计数器,通过DSEL模块的控制,单片机可分4次将其32位数据全部读出。,4脉冲宽度测量和占空比测量模块设计,根据上述脉宽测量原理,设计如图13.6(CONTRL2)所示的电路原理示意图。,3计数部件设计,图13.6 脉冲宽度测量原理图,图13.6 脉冲宽度测量原理图,测量脉冲宽度的工作步骤如下:,(1) 向CONTRL2的CLR端送一个脉冲以便进行电路的工作状态初始化。,(2) 将GATE的CNL端置高电平,表示开始脉冲宽度测量,这时CNT2的输入信号为FSD。,(3) 在被测脉冲的上沿到来时,CONTRL2的PUL端输出高电平,标准频率信号进入计数器CNT2。,测量脉冲宽度的工作步骤如下:,(4) 在被测脉冲的下沿到来时,CONTRL2的PUL端输出低电平,计数器CNT2被关断。,(5) 由单片机读出计数器CNT2的结果,并通过上述测量原理公式计算出脉冲宽度。CONTRL2子模块的主要特点是:电路的设计保证了只有CONTRL2被初始化后才能工作,否则PUL输出始终为零。,(4) 在被测脉冲的下沿到来时,CO,只有在先检测到上沿后PUL才为高电平,然后在检测到下沿时,PUL输出为低电平;ENDD输出高电平以便通知单片机测量计数已经结束;如果先检测到下沿,PUL并无变化;在检测到上沿并紧接一个下沿后,CONTRL2不再发生变化直到下一个初始化信号到来。占空比的测量方法是通过测量脉冲宽度记录CNT2的计数值N1,然后将输入信号反相,再测量脉冲宽度,测得CNT2计数值N2则可以计算出:,占空比,100%,(13.14),只有在先检测到上沿后PUL才为高电平,然后在检测到下,13.2.4 单片机控制与运算程序的设计,主要单片机控制与运算程序流程图如图13.7图13.14所示。,13.2.4 单片机控制与运算程序的设计,图13.7 主程序流程图,图13.7 主程序流程图,图13.8 显示子程序流程图,图13.8 显示子程序流程图,图13.9 频率、周期计数子程序流程图,图13.9 频率、周期计数子程序流程图,图13.10 键扫子程序流程图,图13.10 键扫子程序流程图,图13.11 测周期子程序流程图,图13.11 测周期子程序流程图,图13.12 测频率子程序流程图,图13.12 测频率子程序流程图,图13.13 测脉宽子程序流程图,图13.13 测脉宽子程序流程图,图13.14 脉宽、占空比计数子程序流程图,图13.14 脉宽、占空比计数子程序流程图,13.3 主要VHDL和单片机源程序,13.3.1 主要VHDL源程序,-频率计测试模块DJDPLJ.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY DJDPLJ IS,PORT(CHEKF, FINPUT, CHOICE: IN STD_LOGIC;,START, CLRTRIG, FSTD, TF: IN STD_LOGIC;,13.3 主要VHDL和单片机源程序 13.3.1 主要,SEL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);,OO: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);,EEND: OUT STD_LOGIC; -CPBZ,ENDD: OUT STD_LOGIC;,END ENTITY DJDPLJ;,ARCHITECTURE ART OF DJDPLJ IS,COMPONENT FIN IS,PORT(CHKF, FIN, CHOIS: IN STD_LOGIC;,FOUT: OUT STD_LOGIC);,SEL: IN STD_LOGIC_VECTOR(2 DOW,END COMPONENT FIN;,COMPONENT CONTRL IS,PORT(FIN, START, CLR, FSD: IN STD_LOGIC;,CLK1, EEND, CLK2, CLRC: OUT STD_LOGIC);,END COMPONENT CONTRL;,COMPONENT CNT IS,PORT(CLK, CLR: IN STD_LOGIC;,Q: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);,END COMPONENT FIN;,END COMPONENT CNT ;,COMPONENT CONTRL2 IS,PORT(FIN, START, CLR: IN STD_LOGIC;,ENDD, PUL: OUT STD_LOGIC);,END COMPONENT CONTRL2;,COMPONENT GATE IS,PORT(CLK2, FSD, CNL, PUL: IN STD_LOGIC;,CLKOUT: OUT STD_LOGIC);,END COMPONENT CNT ;,END COMPONENT GATE;,SIGNAL INCLK: STD_LOGIC;,SIGNAL FOUT, CLRC: STD_LOGIC;,SIGNAL CLK1, CLK2, CLKOUT, PUL: STD_LOGIC;,SIGNAL Q1, Q2: STD_LOGIC_VECTOR(31 DOWNTO 0);,BEGIN,OO= Q1(7 DOWNTO 0) WHEN SEL=000,ELSE Q1(15 DOWNTO 8) WHEN SEL=001 ELSE,Q1(23 DOWNTO 16) WHEN SEL=010 ELSE,END COMPONENT GATE;,Q1(31 DOWNTO 24) WHEN SEL=011 ELSE,Q2(7 DOWNTO 0) WHEN SEL=100 ELSE,Q2(15 DOWNTO 8) WHEN SEL=101 ELSE,Q2(23 DOWNTO 16) WHEN SEL=110 ELSE,Q2(31 DOWNTO 24) WHEN SEL=111 ELSE,00000000;,FENPIN: PROCESS(FSTD) IS,BEGIN,IF FSTDEVENT AND FSTD=1 THEN,INCLKCHEKF, FIN=FINPUT, CHOIS=CHOICE, FOUT=FOUT);,CON: CONTRL PORT MAP(FIN=FOUT, START=START, CLR=CLRTRIG, FSD=INCLK,CLK1=CLK1, EEND=EEND, CLK2=CLK2, CLRC=CLRC);,CONT1: CNT PORT MAP(CLK=CLK1, CLR=CLRC, Q=Q1);,END IF;,CONT2: CNT PORT MAP(CLK=CLKOUT, CLR=CLRC, Q=Q2);,CON2: CONTRL2 PORT MAP(FIN=FOUT, START=START, CLR=CLRC,PUL=PUL, ENDD=ENDD);,GATE1: GATE PORT MAP(CLK2=CLK2, FSD=INCLK, CNL=TF,PUL=PUL, CLKOUT=CLKOUT);,END ARCHITECTURE ART;,CONT2: CNT PORT MAP(CLK=CLK,-计数模块CNT.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY CNT IS,PORT(CLK, CLR: IN STD_LOGIC;,Q: OUT STD_LOGIC_VECTOR(31 DOWNTO 0);,END ENTITY CNT;,ARCHITECTURE ART OF CNT IS,-计数模块CNT.VHD,SIGNAL CNT: STD_LOGIC_VECTOR(31 DOWNTO 0);,BEGIN,PROCESS(CLK, CLR) IS,BEGIN,IF CLR=1 THEN CNT=00000000000000000000000000000000;,ELSIF CLKEVENT AND CLK=1 THEN CNT=CNT+1;,END IF;,END PROCESS;,Q=CNT;,END ARCHITECTURE ART;,SIGNAL CNT: STD_LOGIC_VECTOR(,-测频、周期控制模块CONTRL.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY CONTRL IS,PORT(FIN, START, CLR, FSD: IN STD_LOGIC;,CLK1, EEND, CLK2, CLRC: OUT STD_LOGIC);,END ENTITY CONTRL;,ARCHITECTURE ART OF CONTRL IS,SIGNAL QQ1: STD_LOGIC;,BEGIN,PROCESS(FIN, CLR, START) IS,-测频、周期控制模块CONTRL.VHD,BEGIN,IF CLR=1 THEN QQ1=0;,ELSIF FINEVENT AND FIN=1 THEN QQ1=START;,END IF;,END PROCESS;,CLRC=CLR; EEND=QQ1;,CLK1=FIN AND QQ1;,CLK2=FSD AND QQ1;,END ARCHITECTURE ART;,-测脉宽、占空比控制模块CONTRL2.VHD,LIBRARY IEEE;,BEGIN,USE IEEE.STD_LOGIC_1164.ALL;,USE IEEE.STD_LOGIC_UNSIGNED.ALL;,ENTITY CONTRL2 IS,PORT (FIN, START, CLR: IN STD_LOGIC;,ENDD, PUL: OUT STD_LOGIC);,END ENTITY CONTRL2;,ARCHITECTURE ART OF CONTRL2 IS,SIGNAL QQ: STD_LOGIC_VECTOR(3 DOWNTO 1);,SIGNAL A0, B0, C0, F2: STD_LOGIC;,SIGNAL S: STD_LOGIC_VECTOR(1 DOWNTO 0);,USE IEEE.STD_LOGIC_1164.ALL;,BEGIN,S(0)=QQ(3); S(1)=QQ(2);,PROCESS(START, S) IS,BEGIN,IF START=1 THEN F2=FIN;,ELSE F2=NOT FIN;,END IF;,IF S=2 THEN PUL=1;,ELSE PUL=0;,END IF;,IF S=3 THEN ENDD=1;,ELSE ENDD=0;,BEGIN,END IF;,END PROCESS;,A0=F2 AND QQ(1);,B0=NOT A0;,C0=NOT F2;,PROCESS(C0, CLR) IS,BEGIN,IF CLR=1 THEN QQ(1)=0;,ELSIF C0EVENT AND C0=1 THEN QQ(1)=1;,END IF;,END PROCESS;,END IF;,PROCESS(A0, CLR) IS,BEGIN,IF CLR=1 THEN QQ(2)=0;,ELSIF A0EVENT AND A0=1 THEN QQ(2)=1;,END IF;,END PROCESS;,PROCESS(B0, CLR) IS,BEGIN,IF CLR=1 THEN QQ(3)=0;,ELSIF B0EVENT AND B0=1 THEN QQ(3)=1;,END IF;,END PROCESS;,END ARCHITECTURE ART;,PROCESS(A0, CLR) IS,-自校/测试频率选择模块FIN.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY FIN IS,PORT (CHKF, FIN, CHOIS: IN STD_LOGIC;,FOUT: OUT STD_LOGIC);,END ENTITY FIN;,ARCHITECTURE RTL OF FIN IS,BEGIN,FOUT=(FIN AND CHOIS) OR (CHKF AND NOT CHOIS);,END ARCHITECTURE RTL;,-自校/测试频率选择模块FIN.VHD,-计数器二频率切换模块GATE.VHD,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY GATE IS,PORT (CLK2, FSD, CNL, PUL: IN STD_LOGIC;,CLKOUT: OUT STD_LOGIC);,END ENTITY GATE;,ARCHITECTURE ART OF GATE IS,BEGIN,PROCESS(CLK2, PUL, FSD, CNL) IS,-计数器二频率切换模块GATE.VHD,BEGIN,IF CNL=0 THEN CLKOUT=CLK2;,ELSE CLKOUT=PUL AND FSD;,END IF;,END PROCESS;,END ARCHITECTURE ART;,BEGIN,13.3.2 单片机源程序,LED8 EQU 7FH,LED7 EQU 7EH,LED6 EQU 7DH,LED5 EQU 7CH,LED4 EQU 7BH,LED3 EQU 7AH,LED2 EQU 79H,LED1 EQU 78H,TF BIT P2.7,CLRTRIG BIT P2.6,13.3.2 单片机源程序,START BIT P2.5,ENDD BIT P2.4,EEND BIT P2.3,ADRC BIT P2.2,ADRB BIT P2.1,ADRA BIT P2.0,CHOICE BIT P3.2,SB1 BIT P1.0; TEST频率,SB2 BIT P1.1; TEST周期,SB3 BIT P1.2; TEST脉宽,SB4 BIT P1.3; TEST占空比,SB5 BIT P1.4; RET,START BIT P2.5,AD0 EQU 30H,AD1 EQU 31H,AD2 EQU 32H,AD3 EQU 33H,AD4 EQU 34H,AD5 EQU 35H,AD6 EQU 36H,ADA EQU 4FH,ADB EQU 5FH,ADC EQU 4DH,ADE EQU 5DH,KEYNUM EQU 29H,INT_R1 EQU 46H,AD0 EQU 30H,INT_R0 EQU 47H,INT_R2 EQU 48H,; 主程序,ORG 0000H,LJMP MAIN,ORG 0030H,MAIN :,CLEAR: MOV R0, #00H,MOV R1, #128,MOV A, #00H,INT_R0 EQU 47H,L1: MOV R0, A,INC R0,DJNZ R1, L1,MOV SP, #60H,MOV P2, #00H ; 控制信号初始化为0,SETB CHOICE,LCALL NL0 ; 7个数码管熄灭,MOV LED8, #13H ; 开始显示“P.”,MOV LED7, #0CFH,L1: MOV R0, A,DIR: LCALL DISP ; 调显示子程序,KKE1: LCALL KKEYII ; 调键扫子程序,KK0: CJNE A, #00H, KK1,KKK0:,LCALL TESTF; 调用测频子程序,LCALL KKEYI,LCALL DELAY,LCALL DELAY,JB 28H.4, KK0,SJMP KKK0,KK1: CJNE A, #01H, KK2,DIR: LCALL DISP ; 调显示,KKKK1:,SETB 28H.1,LCALL TESTT; 调测周期子程序,CLR 28H.1,LCALL KKEYI,JB 28H.4, KK0,SJMP KKKK1,KK2: CJNE A, #02H, KK3,KKKK1:,KKKK2:,SETB 28H.2,LCALL TESPW; 调用测脉宽子程序,CLR 28H.2,LCALL KKEYI,JB 28H.4, KK0,SJMP KKKK2,KK3: CJNE A, #03H, KK4,KKKK2:,KKKK3:,SETB 28H.2,CLR 28H.1,LCALL TESZKB; 调用测占空比子程序,CLR 28H.2,LCALL KKEYI,JB 28H.4, KK0,SJMP KKKK3,KK4: SJMP KKE1,; 测频子程序,KKKK3:,TESTF: ; 测频,LCALL FTJS ; 控制测试计数程序,IF 1=8,MOV R1, #3FH ; 另存Ns和Nx,MOV R0, #LED8,MOV R2, #08H,MML1: MOV A, R0,MOV R1, A,DEC R1,DEC R0,DJNZ R2, MML1,TESTF: ; 测频,ENDIF,MOV 4CH, #01H ; 标准频率值fs=25 MHz,高位,MOV 4DH, #7DH,MOV 4EH, #78H,MOV 4FH, #40H,MOV R0, #LED1 ; Nx=(5FH5CH),MOV R1, #ADB,MOV R3, #04H,ENDIF,TFL0: MOV A, R0,MOV R1, A,DEC R1,INC R0,DJNZ R3, TFL0,LCALL MULNM,; (4CH 4D, 4E, 4FH)(5C 5D, 5E, 5FH)=(57H5FH),; fsNx,TFL0: MOV A, R0,IF 1=3 ; 乘法未经处理送显缓,MOV R0, #5FH,MOV R1, #LED1,MOV R2, #07H,LLL3: MOV A, R0,MOV R1, A,DEC R0,INC R1,DJNZ R2, LLL3,IF 1=3 ; 乘法未经,ENDIF ; 除法运算参数传递,MOV R0, #5FH ; 先送乘法结果到4F4AH,MOV R1, #4FH,MOV R2, #08H,TFL1: MOV A, R0,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TFL1,MOV R0, #LED5 ; Ns 送5FH57H中,MOV R1, #5FH,MOV R3, #04H,ENDIF ; 除法运算,TFL2: MOV A, R0,MOV R1, A,DEC R1,INC R0,DJNZ R3, TFL2,LCALL DIVD1,; (4A, 4B, 4C, 4D, 4E, 4FH)/(5D, 5E, 5FH)=(4D, 4E, 4FH),; (fsNx)/Ns=fx,MOV 22H, 4DH ; 高位, 计算结果fx,TFL2: MOV A, R0,MOV 21H, 4EH,MOV 20H, 4FH,JB 28H.1, NEXT3,LCALL HEXBCD2,; 待显示数据转换为BCD码放于7E77H共8个单元,MOV LED8, #0FH;“F”,LCALL DISP ; 显示,NEXT3: RET,; 周期测试子程序,MOV 21H, 4EH,TESTT: ; 测周期,LCALL TESTF,MOV R0, #4FH,MOV R1, #5FH,MOV R2, #04H,TETL1: MOV A, R0,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TETL1,MOV 48H, #00H,TESTT: ; 测周期,MOV 49H, #00H,MOV 4AH, #00H,MOV 4BH, #00H,MOV 4CH, #00H ; *(1000)D,MOV 4DH, #0FH,MOV 4EH, #42H,MOV 4FH, #40H,; 除法运算参数传递,LCALL DIVD1 ; (4A, 4B, 4C, 4D, 4E, 4FH)/(5D, 5E),MOV 22H, 4DH ; 高位,MOV 49H, #00H,MOV 21H, 4EH,MOV 20H, 4FH,LCALL HEXBCD2,; 待显示数据转换为BCD码放于7E77H共8个单元,MOV LED8, #10H ; “P”,LCALL DISP ; 显示,RET,; 频率周期测试计数子程序,MOV 21H, 4EH,FTJS: ; 频率周期测试计数子程序,SETB CHOICE,SETB CLRTRIG ; 计数器清零,CLR CLRTRIG,SETB START ; 打开预置门,LCALL T1S,LCALL T1S,LCALL T1S,LCALL T1S,FTJS: ; 频率周期测试计数子程序,LCALL T1S,LCALL T1S,LCALL T1S,LCALL T1S,CLR START,FL0: JB EEND, FL0; ; 等待计数,; 中断延时结束,即计数完,MOV R0, #LED1 ; 读入数据最低位缓冲单元,MOV R3, #08H ; 读8次P0口,LCALL T1S,FL1: MOV A, P0,MOV R0, A,INC R0,MOV A, P2,INC A ; 指向CPLD/FPGA下一个数据ADRC、ADRB、ADRA,MOV P2, A,DJNZ R3, FL1,MOV P2, #00H,RET,FL1: MOV A, P0,T1S: MOV INT_R1, #0FFH,TSM3: MOV INT_R0, #0FFH,TSM4: DJNZ INT_R0, TSM4,DJNZ INT_R1, TSM3,RET,; 测脉宽子程序,TESPW:,T1S: MOV INT_R1, #0FFH,MOV R4, #02H,LCALL PWZJS,MOV R0, #3FH ; +,MOV R1, #4FH,MOV R2, #04H,TEL2: MOV A, R0,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TEL2,MOV R4, #02H,MOV 4BH, #00H,MOV 4AH, #00H,MOV 49H, #00H,MOV 48H, #00H,MOV 5CH, #00H ; 标准频率值fs=25 MHz,高位,MOV 5DH, #00H,MOV 5EH, #00H,MOV 5FH, #19H,LCALL DIVD1,MOV 22H, 4DH ; 高位,MOV 4BH, #00H,MOV 21H, 4EH,MOV 20H, 4FH,LCALL HEXBCD2 ; 待显示数据转换为BCD码放于7E77H共8个单元,MOV LED8, #0AH ; “A”,LCALL DISP ; 显示,RET,; 测占空比子程序,MOV 21H, 4EH,TESZKB :,MOV R4, #02H,TEL1: LCALL PWZJS,DJNZ R4, TEL1,SETB 28H.2,MOV R0, #3FH ; +,MOV R1, #4FH,MOV R2, #04H,TEL4: MOV A, R0,TESZKB :,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TEL4,MOV R0, #57H,MOV R1, #5FH,MOV R2, #04H,TEL3: MOV A, R0,MOV R1, A,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TEL3,LCALL ADDMB,MOV R0, #5FH,MOV R1, #3FH,MOV R2, #04H,TEL7: MOV A, R0,MOV R1, A,DEC R0,DEC R0,DEC R1,DJNZ R2, TEL7,MOV 5CH, #00H,MOV 5DH, #00H,MOV 5EH, #03H,MOV 5FH, #0E8H,LCALL MULNM,MOV R0, #5FH,MOV R1, #4FH,MOV R2, #04H,DEC R1,TEL5: MOV A, R0,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TEL5,MOV R0, #3FH,MOV R1, #5FH,MOV R2, #04H,TEL5: MOV A, R0,TEL8: MOV A, R0,MOV R1, A,DEC R0,DEC R1,DJNZ R2, TEL8,MOV 48H, #00H,MOV 49H, #00H,MOV 4AH, #00H,MOV 4BH, #00H,LCALL DIVD1,MOV 22H, 4DH ; 高位,TEL8: MOV A, R0,MOV 21H, 4EH,MOV 20H, 4FH,LCALL HEXBCD2,; 待显示数据转换为BCD码放于7E77H共8个单元,MOV LED8, #0BH ; “B”,LCALL DISP ; 显示,RET,; 脉宽/占空比测量计数子程序,MOV 21H, 4EH,PWZJS: SETB P2.2,SETB CHOICE; P3.2,SETB TF,JNB 28H.2, PWL1,SETB START,CLR 28H.2,LJMP PWL2,PWL1: CLR START,PWZJS: SETB P2.2,PWL2: SETB CLRTRIG,CLR CLRTRIG ; P2.6,MOV R1, #0FH ; 延时,PWL3: LCALL T1S,DJNZ R1, PWL3,PL0: JNB P3.3, PL0 ; P2.4,MOV A, R4,CJNE A, #02, PL2,PWL2: SETB CLRTRIG,MOV R0, #3FH ; 读入数据最低位缓冲单元,MOV R3, #04H ; 读8次P0口,PL1: MOV A, P0,MOV R0, A,DEC R0,MOV A, P2,INC A ; 指向CPLD/FPGA下一个数据,MOV P2, A,DJNZ R3, PL1,LJMP NEXT6,MOV R0, #3FH ; 读入数据最低位缓冲单元,PL2: MOV R0, #57H ; 读入数据最低位缓冲单元,MOV R3, #04H ; 读8次P0口,PL3: MOV A, P0,MOV R0, A,DEC R0,MOV A, P2,INC A ; 指向CPLD/FPGA下一个数据,MOV P2, A,DJNZ R3, PL3,PL2: MOV R0, #57H ; 读入数据,LOPP1: MOVR0, A,INCR0,DJNZR7, LOPP1,MOVR7, #18H ; 32BIT,LOOP4: MOVR1, #20H,MOVR6, #03H,CLRC,LOPP1: MOVR0, A,LOPP2: MOV A, R1,RLCA,MOVR1, A,INCR1,DJNZR6, LOPP2,MOVR5, #04H,MOVR0, #23H,LOPP2: MOV A, R1,LOOP3: MOVA, R0,ADDCA, R0,DA A,MOVR0, A,INCR0,DJNZR5, LOOP3,DJNZR7, LOOP4,SBCD: MOV R0, #23H,MOV R1, #40H,MOV R3, #04H,LOOP3: MOVA, R0,HEX1: MOV A, R0,ANL A, #0FH,MOV R1, A,INC R1,MOV A, R0,ANL A, #0F0H,SWAP A,MOV R1, A,INC R1,INC R0,DJNZ R3, HEX1,HEX1: MOV A, R0,MOV A, 47H,CJNE A, #00H, HEX3,CLR 28H.0,MOV R0, #40H,MOV R1, #LED1,MOV R2, #07H,HEX4: MOV A, R0,MOV R1, A,INC R0,INC R1,DJNZ R2, HEX4,LJMP NEXT2,MOV A, 47H,HEX3: SETB 28H.0,MOV R0, #47H,MOV R1, #LED7,MOV R2, #07H,HEX2: MOV A, R0,MOV R1, A,DEC R0,DEC R1,DJNZ R2, HEX2,NEXT2: RET,HEX3: SETB 28H.0,; 2N BYTE / N BYTE = N BYTE , HERE N=3 IN 31H,; (4A, 4B, 4C, 4D, 4E, 4FH)/(5D, 5E, 5FH)=(4D, 4E, 4FH),DIVD1: NOP,MOVAD0, #08H,; 被除数的字节数为6,AD0=06H,MOVAD1, #04H; 除数的字节数,; 2N BYTE / N BYTE = N BYTE ,DIVPP: MOVA, AD1 ;,MOVR2, A ; R2=03H,RL A,RL A,RL A,MOVR3, A ; R3=18H=24D,CLR0F0H ; B.0=0,清标志位,CLRC ; C=0,MOVA, #ADA,SUBBA, R2,MOVAD3, A ; AD3=4CH,MOVR1, #ADB,DIVPP: MOVA, AD1 ;,DIVMB2B: MOVA, R1,JNZDIVM2B,DECR1,DJNZR2, DIVMB2B,SETB0F0H,RET,DIVM2B: MOVR2, AD1,MOVR1, #ADB,MOVR0, AD3,DIVMB2B: MOVA, R1,DIVM2L: MOVA, R0,SUBBA, R1,DECR0,DECR1,DJNZR2, DIVM2L,JNCDIVM20,DIVM2D: LCALL SHIL1,JC DIVM2S,DIVM2C: MOVR0, AD3,MOVR1, #ADB,MOVR2, AD1,DIVM2L: MOVA, R0,DIVM2CL: MOVA, R0,SUBBA, R1,DECR0,DECR1,DJNZR2, DIVM2CL,JCDIVM2E,DIVM2S: INCADA,MOVR2, AD1,MOVR0, AD3,MOVR1, #ADB,LCALLSUBMBB,DIVM2CL: MOVA, R0,DIVM2E: DJNZR3, DIVM2D,RET,DIVM20: SETB0F0H,RET,DB 02H, 12H,SHIL1: MOVR2, AD0,MOVR0, #ADA,DIVM2E: DJNZR3, DIVM2D,SHIL1B: CLRC,SHILL: MOVA, R0,RLCA,MOVR0, A,DECR0,DJNZR2, SHILL,RET,SHIL1B: CLRC,SUBMB:MOVR2, AD0,; NO SIGN N BYTES MINUSE N BYTES,MOVR0, #ADA,;(.4FH)-(.5FH)=(.4FH),MOVR1, #ADB,SUBMBB: CLRC,SUBMB1: MOVA, R0,SUBBA, R1,MOV R0, A,DEC R0,DECR1,DJNZR2, SUBMB1,RET,SUBMB:MOVR2, AD0,MULNM: NOP,; N BYTES X M BYTES = N+M BYTES HERE N=3; M=3,MOVAD0, #04H ; (4CH 4D, 4E, 4FH)(5C 5D, 5E, 5FH)=(57H5FH),MOVAD1, #04H,MULTT: MOVA, AD0 ;,MOVR3, AD1,MOVR2, A,ADDA, R3;,INCA,MULNM: NOP,MOVAD2, A,MOVA, #ADB,CLRC,SUBBA, R3,MOVAD6, A,MOVR1, A,SUBBA, R2,MOVAD5, A,INCR2,MOVAD2, A,MULNMZ: MOVR1, #00H,DECR1,DJNZR2, MULNMZ,MULNMB: MOVR2, AD0,MOVR1, AD6,MOVR0, #ADA,CLR00H,MULNMZ: MOVR1, #00H,MULNML: MOVA, ADB,JZMULNMD,MOVB, R0,MULAB,ADDA, R1,MOVR1, A,JNB00H, MULNM1,INCB,MULNML: MOVA, ADB,MULNM1:MOVA, B,DECR1,ADDCA, R1,MOVR1, A,MOV00H, C,DECR0,DJNZR2, MULNML,MULNMD:MOVR0, AD5,CLRA,MOVR2, AD2,MULNM1:MOVA, B,MULNMS: XCHA, R0,INCR0,DJNZR2, MULNMS,DJNZR3, MULNMB,RET,; 显示子程序,DISP:,MOV R0, #LED8,MOV R1, #08H,MULNMS: XCHA, R0,DL0: JNB 28H.2, DL6,MOV A, R1,CJNE A, #02H, DL3,LJMP DL4,DL6: JNB 28H.0, DL3,MOV A, R1,CJNE A, #07H, DL5,LJMP DL4,DL5: CJNE A, #06H, DL3,LJMP DL4,DL0: JNB 28H.2, DL6,DL3: MOV A, R0,MOV DPTR, #TAB1,MOVC A, A+DPTR,MOV SBUF, A,LJMP DL1,DL4:,MOV A, R0,MOV DPTR, #TAB1,MOVC A, A+DPTR,ORL A, #01H,MOV SBUF, A,DL3: MOV A, R0,DL1: JNB TI, DL1,CLR TI,DEC R0,DJNZ R1, DL0,RET,DL1: JNB TI, DL1,TAB1: DB 0FCH, 60H, 0DAH ; 0 1 2,DB 0F2H, 66H, 0B6H ; 3 4 5,DB 0BEH, 0E0H, 0FEH ; 6 7 8,DB 0F6H, 0EEH, 3EH ; 9 A B,DB 9CH, 7AH, 9EH ; C D E,DB 8EH, 0CEH, 02H ; F P -,DB 00H, 0CFH, 6EH ; NL, P. , H,TAB1: DB 0FCH, 60H, 0DAH,IF 1=3,DB08FH, 7DH, 61H ; 17; 15H-F , 16H-U. , 17H-I. , 18H-S.,DB0B7H, 6EH, 09DH,; 1A; 19H-H, 1AH-C. , 1BH-O(DIGREE),DB0C6H, 7BH, 02H,; 1D; 1CH-D., 1DH- -(MINUSE SIGN),DB0CFH, 0EFH, 01DH,; 20; 1EH-P., 1FH-A. , 20H-L.,DB0FDH, 7CH, 1CH, 0FFH,; 21H-O. , 22H-U, 23H-L, 24H,DB8
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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