基于51单片机和CPLD技术数字频率计的设计

上传人:仙*** 文档编号:33120070 上传时间:2021-10-16 格式:DOC 页数:24 大小:1.25MB
返回 下载 相关 举报
基于51单片机和CPLD技术数字频率计的设计_第1页
第1页 / 共24页
基于51单片机和CPLD技术数字频率计的设计_第2页
第2页 / 共24页
基于51单片机和CPLD技术数字频率计的设计_第3页
第3页 / 共24页
点击查看更多>>
资源描述
基于51单片机和CPLD技术数字频率计 课题设计方案 自动化09-9班 李雄、张杰、马勇1 绪论 测量频率是电子测量技术中最常见的测量之一。不少物理量的测量, 如时间、速度等都涉及到或本身可转化为频率的测量。目前, 市场上有各种多功能、高精度、高频率的数字频率计, 但价格不菲。而在实际工程中, 并不是对所有信号的频率测量都要求达到非常高的精度。 本系统以单片机AT89C51为核心,采用自上向下的设计方法,设计了基于复杂可编程逻辑器件的数字频率计。以AT89C51单片机作为系统的主控部件,完成电路的测试信号控制、数据运算处理、键盘扫描和控制数码管显示。用VHDL语言编程,由CPLD(Complex Programmable Logic Device)完成各种时序控制及计数功能。不仅能够测量正弦波、方波和三角波等信号的频率,而且还能对其他多种物理量进行测量。该系统具有结构紧凑、可靠性高、测频范围宽和精度高等特点。2 系统设计方案的选择 常用的频率测量方案一下几种:直接测频法:把被测频率信号经脉冲整形电路处理后加到闸门的一个出入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲送到十进制计数器进行计数;设计数器的值为N,则可得到被测信号频率为f=N/T,经分析,本测量在低频率的相对测量误差较大,即在低频段不能满足本设计的要求。组合测频法:这种方法可以在一定程度上弥补方法(1)中的不足,但是难以确定最佳分测点,且电路实现较复杂。倍频法:是指把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数,将经整形的低频信号进行倍频后在进行测量,对高频段则直接进行测量。倍频法较难实现。等精度测频法:其实现方式可用图2.1来说明。图中,预置门控信号是宽度为TPR的一个脉冲,CNT1和CNT2是两个可控计数器。标准频率信号从CNT1的时钟输出端CLK输入,其频率为fs,经整形后的被测信号从CNT2的时钟输入端CLK输入,设其实际频率为fx;当预置门控信号为高时,经整形后的被测信号的上升沿通过D触发器的Q端同时启动计数器CNT1和CNT2。CNT1和CNT2分别对被测信号(频率为fs)和标准频率信号(频率为fx)同时计数。当预置门信号为低时,随后而至的被测信号的上升沿将两个计数器同时关闭。设在一次预置门时间Tpr内对被测信号的计数值为Nx,对标准信号的计数值为Ns。则下式成立:fx/Nx=fs/Ns由此推得:fx=fs*Nx/Ns图2.1 等精度测频法原理框图若所测频率值为fx,其真实值为fxe,标准频率为fs,一次测量中,由于fx计数的起停时间都是该信号的上跳沿触发的,因此在Tpr时间内对fx的计数Nx无误差,在此时间内的计数Ns最多相差一个脉冲,即fx/Nx=fs/Ns,则下式成立: fxe/Nx=fs/Ns+et 可分别推得 fx=fs*Nx/Ns fxe=fs*Nx/Ns+et 根据相对误差的公式有:fxe/fxe=fxe-fx/fxe 经整理可得到:fxe/fxe=et/Ns因et1,故fxe/fxe1/Ns Ns=Tpr*fs根据以上分析,我们可知等精度测频法具有三个特点:1,相对测量误差与被测频率的高低无关;2,增大Tpr或fs可以增大Ns,减少测量误差,提高测量精度;3,测量精度与预置门宽度和标准频率有关,与被测信号的频率无关,在预置门和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度不变;经过综合考虑,结合设计需求,选用第种方案,即用等精度测频法来实现本设计频率测量。3 系统总体设计方案3.1 系统整体结构电路系统原理框图如图3.1所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD完成各种测试功能;键盘控制命令通过一片74LSl65并入串出移位寄存器读入单片机,实现测频、测脉宽及测占空比等功能,单片机从CPLD读回计数数据并进行运算,向显示电路输出测量结果;显示器电路采用七段LED动态显示,由8个芯片74LSl64分别驱动数码管。系统总体设计本系统的硬件电路包括键盘控制模块、显示模块、输入信号整形模块以及单片机主控和CPLD模块。键控制模块设置5个功能键和3个时间选择键,键值读入采用一片74LSl65来完成,显示模块用8只74LSl64完成LED的串行显示。系统由一片CPLD完成各种测试功能,对标准频率和被测信号进行计数。单片机对整个测试系统进行控制,包括对键盘信号的读入与处理;对CPLD测量过程的控制、测量结果数据的处理;最后将测量结果送LED显示输出。被测信号整形电路主要对被测信号进行限幅、放大、再经施密特触发器整形后送入CPLD。用50MHz的有源晶振作为CPLD的测试标准频率,单片机由外接12MHz标准晶振提供时钟电路。可 编 程 芯 片电源部分显示电路单键盘输入时钟电路单 片 机片机50MHZ标准频率被测信号整信电路自较输入图3.1 系统原理框图3.2 显示电路 系统硬件电路中,单片机MCU与FPGA进行数据交换占用了P0口、P1口和P3口,因此数据显示电路的设计采用静态显示的方式,显示电路由8个共阳极七段数码管和8片1位串入8位并出的74LS164芯片组成。 图3.2显示电路图这种显示方式不仅占用单片机端口少,而且充分利用了单片机的资源,容易掌握其编码规律,简化了软件编程,在实验过程中,也体现出较高的可靠性。数据显示电路如图4.4所示。74LS164是一种8位高速串入/并出的移位寄存器,随着时钟信号的高低变化,串行数据通过一个2输入与门同步的送入,使用独立于时钟的主控复位端让寄存器的输出端变为低电平,并且采用肖特基钳位电路以达到高速运行的目的。并且还具有以下的特点:典型的35MHZ移位频率;异步主控复位;门控串行输入;同步数据传输;采用钳位二极管限制高速的终端;静电放电值大于3500V。在本系统中,74LS164的连接方式为:74LS164的输出Q0Q7分别接LED数码管的dp、g、f、e、d、c、b、a,并且Q7连接下一个74LS164的A,B端,时钟CLK连接单片机的TXD端,第一片芯片的AB端连接单片机的RXD端,74LS164芯片的主控复位端接高电平VCC。在这种状态下,数码管的编码如下表所示。 数码管的编码表显示数码段 码显示数码段 码00c0h880h10f9h990h20a4hA88h30b0hB83h499hC0c6h592hD0a1h682hE86h70f8hF8eh 3. 3电源模块 整个电路的供电电源如图3.3所示,220V交流电经变压、整流、滤波后,由一片7805三端稳压器向系统提供+5V电压信号。本设计采用5V电源电压供电,直流稳压电源一般由电源变压器、整流滤波电路以及稳压电路所组成。电源变压器时将交流电网220V的电压变为所需要得值,然后经过整流电路将交流电压变成脉动的直流电压。由于此脉动的直流电压还含有较大的纹波,必须经过滤波电路加以滤除,从而得到平滑的直流电压。但这样的电压还随时电网波动(一般由10%左右的波动)负载和温度的变化变化。因而再整流、滤波电路之后,还需接稳压电路。稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。选用输出电压固定为+5V的三端集成稳压器7805。变压器将电网220V电压变为+9V电压,经二极管桥式整流后,为78V的电压送入7805的输入端,电容C5和C6用来实现频率补偿,防止稳压器7805产生高频自激和抑制电路引入的高频干扰,C4和C7是电解电容,以减少稳压电源输出端由输入电源引入得低频干扰。D8为大电流保护二极管,防止在输入端偶然短路到地时,输出端大电容上存储的电压反极性加到输出、输入端之间而损坏芯片。图中用一个发光二极管来检测电源电路是否通电,同时还可作为电源电路是否出现故障的标志,当LED亮则完好,否则电源电路可能未上电或出现错误,起到一个很好的自动电源检测功能。图3.3 电源电路3.4 信号整形电路 图3.4为输入信号整形电路。放大整形电路由9018和74F14等组成,其中9018组成放大电路将输入为FX得周期信号如正弦波、三角波等进行放大。74F14施密特触发器对放大器得输出信号进行整形,使之称为矩形脉冲。其连线如图所示。待测信号经过时,由D1、D2两个二极管进行限幅,以免电压过大而烧毁,信号经过9018进行放大,由74F14对其进行整形,产生出得波形为标准方波,方便CPLD进行计数。图3.4 被测信号整形电路 3.4其它电路单片机的时钟电路由12MHz的晶振提供。CPLD的标准频率信号由50 MHZ的有源晶振提供。自校输入信号取自单片机的12MHZ晶振。被测信号经过放大整形电路调理后输入。4. 单片机控制与运算程序的设计4.1.1单片机控制电路 单片机测频控制电路如图4.1所示,由单片机完成整个测量电路的测试控制、数据处理和显示输出,CPLD完成测频功能。(1) 由于CPLD在对频率进行计数时,采用32位二进制计数器,8位数据总线的单片机分四次将32立数据全部读出。利用AT89C51的PO口读计数器COUNT 输出B 7. . 0标准频率信号的值,P2口读计数器COUNT输出B15. .8 被测信号的值。被读出的四组8位数据通过AT89C51的SSO, SSl地址编码选择。由Pl口输出控制。(2) CS:由单片机的P1. 0口控制。CS=0时,等精度测频;CS=1时,测脉宽。(3) CLR:系统全清零功能。 (4) ED2:脉宽计数结束状态信号,ED2=1计数结束。图4.1单片机控制电路(5) AS:自校和测频选择。AS=1测频,AS=0自校。(6) STROBE:为预置门闸,门宽可通过键盘由单片机控制,打开;STROBE=0时,预置门关闭。(7) ED1:测频计数结束状态信号,ED1=0时计数结束。(8) SSO, SSl:计数值读出选通控制。若令SS=SS1, SSO,STROBE=1时,预置门则当SS=0, 1, 2, 3时可从PO口和P2口由低8位至高8位分别读出两组4个8位计数值。(9) FS为标准频率信号输入,此频率来源于50MHZ的有源晶振。(10) FX为被测信号输入,此信一号是经过限幅整形电络后的信号。(11) FC为自校频率,取自单片机的外接晶振。4.1.2 单片机主程序图4.2表示单片机主程序流程图。各种测试功能流程如下:系统初始化后,主程序不断扫描键盘子程序,当开始键按下后,程序转到测频子程序执行测频功能。那么读入开始键之后马上跳转到测频子程序,测频子程序先置测频控制位CLR(P1.0),将CPLD内的计数器清零,然后通过健盘将顶置门的时间值读入单片机,打开预置门进行测频计数,等预置门时间到后,关断预置门,CPLD关断预置门后将给单片机一个结束信号,单片机读到结束信号后,通过置 SS1,SS0的四个状态,分四次将测频结果的32位数据读入单片机,计算后将结果转换为BCD码送LED显示输出。显示子程序通过查表方式,将频率测量值以十进制的形式显示出来。空闲状态程序始终扫描键盘,等待输入,并在LED上显示CPUREADY的字样,执行完某一功能后程序又会回到键盘扫描状态上来。图4.2主程序流程图4.2.1 测频程序流程图测频程序先置测频控制位CLR(P1.6). AS(P1.4),将CPLD内的计数器清零,选择测量被测信号。并将CS (P1. 3)置零,即为选择测频。然后通过键盘将预置门的时间值读入单片机,打开预置门进行测频计数,等预置门时间到后,关断预置门,CPLD关断预置门后将给单片机一个结束信号,单片机读到结束信号后,通过置SS1,SSO的四个编码状态,分四次将测频结果的3位数据读入单片机,计算后将结果转换为BCD码送LED显示输出。开始置测频控制位清计数器读入预置门时间值 开预置门定时读结束位调显示子程序关预置门计算并将结果转换BCD码返回读入计算结果图4.1测频程序流程图4.2.2具体程序见附录5. 系统调试的方法本系统既含有FPGA自编程硬件设计电路,又含有单片机控制电路,整个系统比较复杂,因此我们采用自底向上的调试方法,也就是先进行各个单元电路的软件仿真和硬件调试,在各个单元电路调试好后再进行系统联调,最后进行硬件的编程固化及系统的组装。5.1 调试的软/硬件 系统设计开发软件:MAX+plus 10.0,伟福6000(WAVE 6000 for windows)。(2) 单片机及FPGA/CPLD调试设备:PIV计算机,伟福E6000L单片机仿真器及POD8X5XP仿真头,GW48-CK EDA实验开发系统及EPF10K20TC144-4FPGA适配板,GWDVPB电子设计开发板单片机最小系统,炜煌WH-500B程序编写加密器,GDS-820S数字存储示波器。5.2系统的硬件验证 单元电路的调试 FPGA/CPLD测频专用电路的调试:使用MAX+plus 10.0,计算机,GW48-CK EDA实验开发系统等软件和设备,对FPGA/CPLD测控电路进行VHDL程序的调试,有关仿真以及编程下载,硬件测试等。统的联合调试 在各个单元电路调试好后即可进行系统联调。统的硬件验证系统联合调试成功后,可将单片机程序通过编程器固化到单片机中并插入EDA实验开发系统中的单片机插座上,将VHDL设计经过综合适配后的网表对CPLD/FPGA进行编程下载,输入相关的信号,并进行有关性能指标的测试,直到满足系统的设计要求为止。5.3系统扩展思路 (1) 设计并制作系统工作的外围电路:系统用方波信号源、直流工作电源。(2) 系统联合调试成功后,可将单片机程序通过编程器固化到单片机中,将VHDL设计经过综合适配后的网表对CPLD/FPGA进行编程下载,将整个系统的外围电路设计制作印刷电路板。 6.技术难点分析本设计因采用单片机与CPLD结合设计系统,难点在于单片机程序编写和写入,CPLD的自学以及调试软件的学习以及VDHL语言的学习和运用。在调试成功后的外围电路制版焊接也是难点之一。附录附录 单片机控制程序清单*主程序*ORG OOOOHKEYIN: ACALL LOAD ;装入CPUREADY ACALL DISP ;调显示子程序START: STEB P3.5 ;开键盘控制CLR P3.2 ;并行置入键值 STEB P3.2 ;允许串行移位 MOV SCON, #00010000B ;设置串行口模式0,启动接收WAIT1: JNB RI ,WAIT1 ;等待接受一帧数据的结束 CLR RI MOV A, SBUF ;取键值 ANL A,#01H ;屏蔽高三位 MOV R3,A ;暂存键值 ACALL D_10MS ;延时,去抖 CLR P3.2 STEB P3.2 MOV SCON,#00010000HWAIT2: JNB RI,WAIT2 CLR RI MOV A,SBUF ANL A,#01H MOV 20H,A MOV A R3 CJNE A,20H,KEYIN ;判断键值是否由抖动引起的 CJNE A,FEH,KEYIN ;判断开始键是否按下 CLR P3.5 ;关键盘控制 ACALL KEY ;调测频子程序 ACALL DISP ;调显示子程序 JMP KEYIN*测频子程序*KEY: LCALL CLEAR ;调LED熄灭子程序 LCALL TIME ;调预置时间值 MOV R0,20H ;读入预置门时间值 STEB P1.0 ;计数器清零 CLR P1.0 STEB P1.1 ;开始计数DELY: ACALL D_100MS DJNZ R0,DELY CLR P1.1 EEND: MOV C,P1.2 ;读计数结束标志位 JC EEND MOV A,#11100111B ;置SS=0,读数 ANL P1,A NOP MOV A,P0 ;将NS的值存入70-73H MOV 70H,A MOV A,P2 MOV 71H,P2 STEB P1.3 ;置SS=1 NOP MOV A,P0 MOV 72H,A MOV A,P2 MOV 73H,A STEB P1.4 ;将NX的值存入74-77H CLR P1.3 NOP MOV A,P0 MOV 74H,A MOV A,P2 MOV 75H,A STEB P1.3 NOP MOV A,P0 MOV 76H,A MOV A,P2 MOV 77H,A MOV R0,#00H ;40HZ标准频率转换为16进制为2625A00H MOV R1,#O5AH MOV R2,#O62H MOV R3,#02H MOV R4,74H MOV R5,75H MOV R6,76H MOV R7,77H ACALL MUL_SUB ;调四字节乘法子程序FS*NX ACALL NDIV ;调除法子程序FX=(FS*NX)/NS ACALL BIN_BCD ;调二进制转换BCD码子程序 ACALL EXTD ;调字节展开子程序 RET*显示子程序*DISP: SETB P3.4 ;开显示控制 MOV R7,#08H ;设置显示个数 MOV R0,#30H ;置显示缓冲区指针 MOV SCON,#00H ;设串行口方式SEND: MOV A RO ADD A,#0DH ;设置偏移值 MOVC A,A+PC MOV SBUF,A ;启动发送WAIT: JNB TI,WAIT ;判断1帧数据是否发送完毕 CLR TI INC RO DJNZ R7,SEND ;判断数据是否发送完毕 CLR P3.4 ;关显示控制 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H, ;0,1,2,3,4 DB 92H,82H,0F8H,80H,98H, ;5,6,7,8,9 DB 88H,83H,0C6H,0A1H,86H,8EH, ;A,B,C,D,E,F DB 7FH,0FFH,0C6,8CH,0C1H, ;.,暗,C,P,U DB 0CEH,86H,88H,0A1H,91H ;R,E,A,D,Y DB 86H,0C8H,0F8H,86H,0CEH,;E,N,T,E,R DB 0BFH,92H,0F0H, ;-,S,J*提示字装入子程序*LOAD: MOV R7,#08H MOV R0,#30H MOV A,#13H ;CPUREADYLD: MOV R0,A INC R0 INC A DJNZ R7,LD RET LED熄灭子程序CLEAR: MOV R7,#08H MOV R0,#30H MOV A,#12H ;显示熄灭ABCL: MOV R0,A INC R0 DJNZ R7,ABCL RET*时间值输入子程序*TIME: MOV R7,#08H MOV R0,#30H MOV A,#19H ;显示ENTER-SJLP: MOV R0,A INC R0 INC R0 DJNZ R7,LP LCALL DISPBEGIN:STEB P3.5 ;开键盘控制CLR P3.2 ;并行置入键值 STEB P3.2 ;允许串行移位 MOV SCON,#00010000BWTI: JNB RI,WTI ;判断是否接收完毕 CLR RI MOV A,#0EH ;屏蔽开始键 MOV R3,A LCALL D_10MS ;延时,消抖 CLR P3.2STEB P3.2MOV SCON,#00010000BWT2: JNB RI,WT2 CLR RI MOV A,SBUF ANL A,#0EH MOV 22H,A MOV A,R3 CJNE A,22H,BEGIN CJNE A,#FDH,S_10 MOV 20H,#01H ;预置门时间0.1S CLR P3.5 ;关键盘控制 RET S_10 :CJNE A,#FBH,S_20 MOV 20H,#0AH ; 预置门时间1S CLR P3.5 RETS_20: CJNE A,#F7H,BEGIN MOV 20H,#64H ; 预置门时间10S CLR P3.5 RET*延时10MS子程序*D_10MS: MOV R7,#14HLOOP1: MOV R6,#0F9HLOOP2: DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET*延时100MS子程序*D_100MS: MOV R7,#0C8HDL1: MOV R6,#0F9HDL2: DJNZ R6,DL1 DJNZ R7,DL2 RET*字节展开子程序*EXTD: MOV R1,#30H MOV R7,#04HAGAN: MOV A,R0 MOV R3,A ANL A,#00001111B MOV R1,A MOV A,R3 INC R1 ANL A,#11110000B MOV R1,A INC R1 INC R0 DJNZ R7,AGAN RET*4字节乘法子程序FS*NX*MUL_SUB:MOV A,M ADD A,R0 MOV R5,A XCH A,R1 XCH A,R5 ADD A,N XCH A,R0 MOV R6,A MOV B,M MOV NCNT,BNMLMN1: DEC R0 DEC R1 CLR A XCH A,R1 MOV R0,A DJNZ NCNT,NMLMN1 MOV NCNT,BNMLMN2: CLR A XCH A,R0 MOV R2,A MOV A,R6 MOV R0,A MOV A,R5 MOV R1,A MOV R7,N CLR CNMLMN3: MOV A,R2 MOV B,R1 INC R1 MUL AB ADDC A,R0 MOV R0,A INC R0 MOV A,B ADDC A,R0 MOV R0,A DJNZ R7,NMLMN3 INC R0 INC R6 DJNZ NCNT,NMLMN2 MOV A,R0 CLR C*除法子程序(FS*NX)/NS*NDIV: MOV A,M CLR C SUBB A,N MOV B,A ADD A,R0 MOV R4,A XCH A,R0 MOV R3,A MOV A,R1 MOV R5,A MOV R2,#00HNDVMN1 :MOV R7,N CLR CNDVMN2 :MOV A,R0 SUBB A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,NDVMN2 MOV A,R4 MOV R0,A MOV A,R5 MOV R1,A JC NDVMN3 INC R2 SJMP NDVMN1NDVMN3 :MOV R7,N CLR CNDVMN4 :MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,NDVMN4 MOV A,#08H MUL AB MOV B,ANDVMN5 :MOV A,R3 MOV R0,A MOV R7,M CLR CNDVMN6 :MOV A,R0 RLC A MOV R0,A INC R0 DJNZ R7,NDVMN6 MOV F0,C MOV A,R4 MOV R0,A MOV A,R5 MOV R1,A MOV R7,N CLR CNDVMN7 :MOV A,R0 SUBB A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,NDVMN7 JB F0,NDVMNB JC NDVMN8NDVMNB :MOV A,R3 MOV R0,A INC R0 SJMP NDVMNANDVMN8 :MOV R7,N MOV A,R4 MOV R0,A MOV A,R5 MOV R1,A CLR CNDVMN9 :MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,NDVMN9NDVMNA :DJNZ B,NDVMN5 MOV A,M CLR C SUBB A,N ADD A,R3 MOV R1,A MOV A,R2 MOV R1,A MOV A,R3 MOV R0,A RET*二进制转换BCD码子程序*BIN_BCD: MOV R1,30H MOV R2,#08H INC R2 CLR AB0: MOV R1,A ;BCD单元清零 INC R1 DJNZ R2,BO MOV A,#08H ;计算二进制位数 MOV B,#08H MUL AB MOV R3,AB3: MOV R0,BINDR MOV R2,#08H CLR CB1: MOV A,R0 RLC A MOV R0,A INC R0 DJNZ R2,B1 MOV R2,#08H INC R2 MOV R1,30HB2: MOV A,R1 ADDC A,R1 DA A MOV R1,A INC R1 DJNZ R2,B2 DJNZ R3,B3 RET 附录 元器件清单器件名称型号规格数量单片机AT89C511CPLDEPM7128SLC84-151并入串出移位寄存器74LS1651串入并出移位寄存器74LS1648发光二极管LED HG5011集成稳压器78051三极管90181变压器1开关5集成与门74LS081施密特触发器74F14150MHz有源晶振POX-6061晶振12MHz1二极管IN40053数码管8电阻若干电容若干附录 电路原理图24
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


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

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


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