基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx

上传人:b****7 文档编号:22404933 上传时间:2023-02-03 格式:DOCX 页数:28 大小:773.77KB
下载 相关 举报
基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx_第1页
第1页 / 共28页
基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx_第2页
第2页 / 共28页
基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx_第3页
第3页 / 共28页
基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx_第4页
第4页 / 共28页
基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx

《基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

基于51单片机和CPLD技术数字频率计的设计Word文档格式.docx

因△et≤1,故△fxe/fxe≤1/NsNs=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标准晶振提供时钟电路。

图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的输出Q0~Q7分别接LED数码管的dp、g、f、e、d、c、b、a,并且Q7连接下一个74LS164的A,B端,时钟CLK连接单片机的TXD端,第一片芯片的AB端连接单片机的RXD端,74LS164芯片的主控复位端接高电平VCC。

在这种状态下,数码管的编码如下表所示。

数码管的编码表

显示数码

段码

0c0h

8

80h

1

0f9h

9

90h

2

0a4h

A

88h

3

0b0h

B

83h

4

99h

C

0c6h

5

92h

D

0a1h

6

82h

E

86h

7

0f8h

F

8eh

3.3电源模块

整个电路的供电电源如图3.3所示,220V交流电经变压、整流、滤波后,由一片7805三端稳压器向系统提供+5V电压信号。

本设计采用5V电源电压供电,直流稳压电源一般由电源变压器、整流滤波电路以及稳压电路所组成。

电源变压器时将交流电网220V的电压变为所需要得值,然后经过整流电路将交流电压变成脉动的直流电压。

由于此脉动的直流电压还含有较大的纹波,必须经过滤波电路加以滤除,从而得到平滑的直流电压。

但这样的电压还随时电网波动(一般由10%左右的波动)负载和温度的变化变化。

因而再整流、滤波电路之后,还需接稳压电路。

稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。

选用输出电压固定为+5V的三端集成稳压器7805。

变压器将电网220V电压变为+9V电压,经二极管桥式整流后,为7~8V的电压送入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的标准频率信号由50MHZ的有源晶振提供。

自校输入信号取自单片机的12MHZ晶振。

被测信号经过放大整形电路调理后输入。

4.单片机控制与运算程序的设计

4.1.1单片机控制电路

单片机测频控制电路如图4.1所示,由单片机完成整个测量电路的测试控制、数据处理和显示输出,CPLD完成测频功能。

(1)由于CPLD在对频率进行计数时,采用32位二进制计数器,8位数据总线的单片机分四次将32立数据全部读出。

利用AT89C51的PO口读计数器COUNT输出B[7..0]标准频率信号的值,P2口读计数器COUNT输出B[15..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显示输出。

图4.1测频程序流程图

4.2.2具体程序见附录

5.系统调试的方法

本系统既含有FPGA自编程硬件设计电路,又含有单片机控制电路,整个系统比较复杂,因此我们采用自底向上的调试方法,也就是先进行各个单元电路的软件仿真和硬件调试,在各个单元电路调试好后再进行系统联调,最后进行硬件的编程固化及系统的组装。

5.1调试的软/硬件

系统设计开发软件:

MAX+plusⅡ10.0,伟福6000(WAVE6000forwindows)。

(2)单片机及FPGA/CPLD调试设备:

PIV计算机,伟福E6000L单片机仿真器及POD—8X5XP仿真头,GW48-CKEDA实验开发系统及EPF10K20TC144-4FPGA适配板,GWDVPB电子设计开发板单片机最小系统,炜煌WH-500B程序编写加密器,GDS-820S数字存储示波器。

5.2系统的硬件验证

①单元电路的调试

FPGA/CPLD测频专用电路的调试:

使用MAX+plusⅡ10.0,计算机,GW48-CKEDA实验开发系统等软件和设备,对FPGA/CPLD测控电路进行VHDL程序的调试,有关仿真以及编程下载,硬件测试等。

②统的联合调试

在各个单元电路调试好后即可进行系统联调。

③统的硬件验证

系统联合调试成功后,可将单片机程序通过编程器固化到单片机中并插入EDA实验开发系统中的单片机插座上,将VHDL设计经过综合适配后的网表对CPLD/FPGA进行编程下载,输入相关的信号,并进行有关性能指标的测试,直到满足系统的设计要求为止。

5.3系统扩展思路

(1)设计并制作系统工作的外围电路:

系统用方波信号源、直流工作电源。

(2)系统联合调试成功后,可将单片机程序通过编程器固化到单片机中,将VHDL设计经过综合适配后的网表对CPLD/FPGA进行编程下载,将整个系统的外围电路设计制作印刷电路板。

6.技术难点分析

本设计因采用单片机与CPLD结合设计系统,难点在于单片机程序编写和写入,CPLD的自学以及调试软件的学习以及VDHL语言的学习和运用。

在调试成功后的外围电路制版焊接也是难点之一。

附录

附录Ⅰ单片机控制程序清单

***************************主程序*********************************

ORGOOOOH

KEYIN:

ACALLLOAD;

装入CPUREADY

ACALLDISP;

调显示子程序

START:

STEBP3.5;

开键盘控制

CLRP3.2;

并行置入键值

STEBP3.2;

允许串行移位

MOVSCON,#00010000B;

设置串行口模式0,启动接收

WAIT1:

JNBRI,WAIT1;

等待接受一帧数据的结束

CLRRI

MOVA,SBUF;

取键值

ANLA,#01H;

屏蔽高三位

MOVR3,A;

暂存键值

ACALLD_10MS;

延时,去抖

CLRP3.2

STEBP3.2

MOVSCON,#00010000H

WAIT2:

JNBRI,WAIT2

MOVA,SBUF

ANLA,#01H

MOV20H,A

MOVAR3

CJNEA,20H,KEYIN;

判断键值是否由抖动引起的

CJNEA,FEH,KEYIN;

判断开始键是否按下

CLRP3.5;

关键盘控制

ACALLKEY;

调测频子程序

JMPKEYIN

*************************测频子程序*********************************

KEY:

LCALLCLEAR;

调LED熄灭子程序

LCALLTIME;

调预置时间值

MOVR0,20H;

读入预置门时间值

STEBP1.0;

计数器清零

CLRP1.0

STEBP1.1;

开始计数

DELY:

ACALLD_100MS

DJNZR0,DELY

CLRP1.1

EEND:

MOVC,P1.2;

读计数结束标志位

JCEEND

MOVA,#11100111B;

置SS=0,读数

ANLP1,A

NOP

MOVA,P0;

将NS的值存入70-73H

MOV70H,A

MOVA,P2

MOV71H,P2

STEBP1.3;

置SS=1

MOVA,P0

MOV72H,A

MOV73H,A

STEBP1.4;

将NX的值存入74-77H

CLRP1.3

MOV74H,A

MOV75H,A

STEBP1.3

MOV76H,A

MOV77H,A

MOVR0,#00H;

40HZ标准频率转换为16进制为2625A00H

MOVR1,#O5AH

MOVR2,#O62H

MOVR3,#02H

MOVR4,74H

MOVR5,75H

MOVR6,76H

MOVR7,77H

ACALLMUL_SUB;

调四字节乘法子程序FS*NX

ACALLNDIV;

调除法子程序FX=(FS*NX)/NS

ACALLBIN_BCD;

调二进制转换BCD码子程序

ACALLEXTD;

调字节展开子程序

RET

*************************显示子程序*******************************

DISP:

SETBP3.4;

开显示控制

MOVR7,#08H;

设置显示个数

MOVR0,#30H;

置显示缓冲区指针

MOVSCON,#00H;

设串行口方式

SEND:

MOVA@RO

ADDA,#0DH;

设置偏移值

MOVCA,@A+PC

MOVSBUF,A;

启动发送

WAIT:

JNBTI,WAIT;

判断1帧数据是否发送完毕

CLRTI

INCRO

DJNZR7,SEND;

判断数据是否发送完毕

CLRP3.4;

关显示控制

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,;

0,1,2,3,4

DB92H,82H,0F8H,80H,98H,;

5,6,7,8,9

DB88H,83H,0C6H,0A1H,86H,8EH,;

A,B,C,D,E,F

DB7FH,0FFH,0C6,8CH,0C1H,;

.,暗,C,P,U

DB0CEH,86H,88H,0A1H,91H;

R,E,A,D,Y

DB86H,0C8H,0F8H,86H,0CEH,;

E,,N,T,E,R

DB0BFH,92H,0F0H,;

-,S,J

************************提示字装入子程序************************

LOAD:

MOVR7,#08H

MOVR0,#30H

MOVA,#13H;

CPUREADY

LD:

MOV@R0,A

INCR0

INCA

DJNZR7,LD

RET

LED熄灭子程序

CLEAR:

MOVA,#12H;

显示熄灭

ABCL:

DJNZR7,ABCL

************************时间值输入子程序************************

TIME:

MOVA,#19H;

显示ENTER-SJ

LP:

DJNZR7,LP

LCALLDISP

BEGIN:

STEBP3.5;

MOVSCON,#00010000B

WTI:

JNBRI,WTI;

判断是否接收完毕

MOVA,#0EH;

屏蔽开始键

MOVR3,A

LCALLD_10MS;

延时,消抖

STEBP3.2

MOVSCON,#00010000B

WT2:

JNBRI,WT2

ANLA,#0EH

MOV22H,A

MOVA,R3

CJNEA,22H,BEGIN

CJNEA,#FDH,S_10

MOV20H,#01H;

预置门时间0.1S

S_10:

CJNEA,#FBH,S_20

MOV20H,#0AH;

预置门时间1S

CLRP3.5

S_20:

CJNEA,,#F7H,BEGIN

MOV20H,#64H;

预置门时间10S

*************************延时10MS子程序*************************

D_10MS:

MOVR7,#14H

LOOP1:

MOVR6,#0F9H

LOOP2:

DJNZR6,LOOP2

DJNZR7,LOOP1

************************延时100MS子程序*************************

D_100MS:

MOVR7,#0C8H

DL1:

DL2:

DJNZR6,DL1

DJNZR7,DL2

*************************字节展开子程序****************************

EXTD:

MOVR1,#30H

MOVR7,#04H

AGAN:

MOVA,@R0

ANLA,#00001111B

MOV@R1,A

INCR1

ANLA,#11110000B

DJNZR7,AGAN

*********************4字节乘法子程序FS*NX*************************

MUL_SUB:

MOV 

A,M

ADD 

A,R0

MOV 

R5,A

XCH 

A,R1

A,R5

A,N

R6,A

B,M

NCNT,B

NMLMN1 

:

DEC 

R0

R1

CLR 

A

A,@R1

MO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1