专业课设报告.docx
- 文档编号:29257393
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:27
- 大小:702.02KB
专业课设报告.docx
《专业课设报告.docx》由会员分享,可在线阅读,更多相关《专业课设报告.docx(27页珍藏版)》请在冰豆网上搜索。
专业课设报告
目录
1系统总体方案的分析和设计1
1.1DDS技术的基本原理1
1.2DDS的工作特点2
1.3系统设计原理2
1.4系统框图分析和设计3
2系统的硬件设计4
2.1DDS芯片的选择及与单片机之间的通信4
2.2单片机(AT89S52)控制电路6
2.3液晶显示模块8
2.4低通滤波器的设计9
2.5AD9851模块电路设计10
3信号发生器的软件设计12
3.1程序流程图12
3.2程序代码:
12
4系统的实物调试20
5心得体会21
参考文献22
1系统总体方案的分析和设计
1.1DDS技术的基本原理
DDS的基本工作原理是在采样时钟信号的控制下,通过由频率码控制的相位累加器输出相位码,将存储于只读存储器的波形量化采样数据值按一定的规律读出,经D/A转换和低通滤波后输出正弦信号。
其主要组成为:
相位累加器、相位相加器、波形存储器、数字相乘器和D/A转换器。
下面就AD9851如何实现正弦波和方波来介绍DDS的基本原理,如图1-1所示。
图1-1中层虚线内是一个完整的可编程DDS系统,外层虚线内包含了AD9851的主要组成部分。
AD9851内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。
可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄存器组成。
每来一个外部参考时钟,相位寄存器便以步长M递加。
相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。
正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。
查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC以输出模式量。
相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相位地正弦查询表每一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。
输出的正弦波周期To=Tc*2N/M,频率fout=M*fc/2N,Tc、fc分别为外部参考时钟的周期和频率。
AD9851采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10位后输入到DAC,DAC再输出两个互补的电流。
DAC满量程输出电流通过一个外接电阻RSET调节,调节关系为ISET=32(1.148V/RSET),RSET的典型值是3.9kΩ。
将DAC的输出经低通滤波后接到AD9851内部的高速比较器上即可直接输出一个抖动很小的方波。
AD9851在接上精密时钟源和写入频率相位控制字之间后就可产生一个频率和相位都可编程控制的模拟正弦波输出,此正弦波可直接用作频率信号源或经内部的高速比较器转换为方波输出。
在125MHz的时钟下,32位的频率控制字可使AD9851的输出频率分辨率达0.0291Hz;并具有5位相位控制位,而且允许相位按增量180°、90°、45°、22.5°、11.25°或这些值的组合进行调整。
图1-1AD9851的结构框图
1.2DDS的工作特点
DDS的原理使其具备了以下优良的工作特点:
(1)频率分辨率高
如前所述,DDS的分辨率在fc固定时,取决于相位累加器的位数N,只要N取足够大,理论上可以获得相应的频率分辨精度,这在传统的频率合成方法上是难以实现的。
(2)频率变化速度快
在DDS中,一个频率的建立时间通常取决于滤波器的带宽。
其影响因素有内部数控振荡器内的工艺结构、数模变换及其它可能的信号处理步骤产生的时延,其中数字信号处理部分的时延与时钟周期相关。
由于DDS中无须相位反馈控制,因而频率建立及切换快并且与频率分辨率、频谱纯度相互独立。
(3)易于实现各种数字调制
由于DDS信号的频率、相位、幅度均可由数字信号控制,所以可以通过预
置内部相位累加器的初始值来精确控制输出信号,调幅时直接在ROM表输出端对幅度进行控制,调相时在相位累加器输出端直接加上调制信号即可,调频可通过频率控制字进行,在进行CHIRP调制时,也只需在频率控制字前再加一个累加器即可。
同时,DDS也非常易于实现如PSK、FSK等高精度的数字调制和正交调制。
(4)集成度高
DDS中除了滤波器以外,几乎所有的部件都属于数字信号处理部件,系统易于集成,功耗低,体积小,重量轻。
1.3系统设计原理
本系统主要由单片机、DDS直接频率信号合成器、低通滤波器、键盘输入模块、LCD液晶显示模块等部分组成。
单片机AT89S52是整个系统关键部分,通过对键盘进行扫描读入相位信息,经转换后输出到芯片AD9851,输出波形。
键盘输入的数字信息经AT89S52控制的LCD1602显示。
1.4系统框图分析和设计
系统结构组成如图1-2所示,主要由单片机控制模块、键盘与显示模块、数字合成模块、滤波模块及运放模块。
其中,信号产生由单片机控制模块和数字合成模块实现,键盘与显示模块则用来实现人机交互的功能,滤波模块及运放模块用来对信号进行后期处理。
图1-2信号发生器系统框图
用户从仪器面板上按键输入命令,数据将显示在字符型LCD上,并将命令传输到单片机,再由单片机控制DDS芯片输出信号,并通过后级信号调理电路,最后输出所需的信号。
因为是可调控制,调节按钮不仅可以输出不同频率的波形,而且能改变波形输出的相位。
2系统的硬件设计
2.1DDS芯片的选择及与单片机之间的通信
信号的产生与控制部分电路由DDS片AD9851与单片机AT89S52组成,用户通过键盘输入的信号要求被AT89S52接收,并经其处理后将计算出的控制字传送给AD9851,由AD9851产生频率相位可控的信号。
下面以AD9851芯片为中心加以讨论。
2.1.1DDS芯片选择及引脚图
本系统采用了美国模拟器件公司生产的高集成度产品AD9851芯片。
AD9851是在AD9850的基础上,做了一些改进以后生成的具有新功能的DDS芯片。
AD9851相对于AD9850的内部结构,只是多了一个6倍参考时钟倍乘器,当系统时钟为180MHz时,在参考时钟输入端,只需输入30MHz的参考时钟即可。
AD9851是由数据输入寄存器、频率/相位寄存器、具有6倍参考时钟倍乘器的DDS芯片、10位的模/数转换器、内部高速比较器这几个部分组成。
其中具有6倍参考时钟倍乘器的DDS芯片是由32位相位累加器、正弦函数功能查找表、D/A变换器以及低通滤波器集成到一起。
这个高速DDS芯片时钟频率可达180MHz,输出频率可达70MHz,分辨率为0.04Hz。
AD9851采用28引脚的SSOP表面封装,其引脚排列如图2-1所示,各引脚定义如下:
D0~D7:
8位数据输入口,可给内部寄存器装入40位控制数据。
PGND:
6倍参考时钟倍乘器地。
PVCC:
6倍参考时钟倍乘器电源。
W-CLK:
字装入信号,上升沿有效。
FQ-UD:
频率更新控制信号,时钟上升沿确认输入数据有效。
FREFCLOCK:
外部参考时钟输入。
CMOS/TTL脉冲序列可直接或间接地加到6倍参考时钟倍乘器上。
在直接方式中,输入频率即是系统时钟;在6倍参考时钟倍乘器方式,系统时钟为倍乘器输出。
AGND:
模拟地。
AVDD:
模拟电源(+5V)。
DGND:
数字地。
DVDD:
数字电源(+5V)。
RSET、DAC:
外部复位连接端。
VOUTN:
内部比较器负向输出端。
VOUTP:
内部比较器正向输出端。
VINN:
内部比较器的负向输入端。
VINP:
内部比较器的正向输入端。
DACBP:
DAC旁路连接端。
IOUTB:
“互补”DAC输出。
IOUT:
内部DAC输出端。
图2-1AD9851管脚示意图
RESET:
复位端。
低电平清除DDS累加器和相位延迟器为0Hz和0相位,同时置数据输入为串行模式以及禁止6倍参考时钟倍乘器工作。
2.1.2AD9851的串、并行通信
AD9851的串行操作有两种数据传送方式,即从最高位开始传送和从最低位开始传送,这是由控制寄存器1的第8位来决定的。
默认状态为低电平,此时先传送最高位,若为高电平则先传送最低位。
串行操作的时序如图2-2所示。
图2-2控制字串行输入时序图
在串行输入方式,W-CLK上升沿把25引脚的一位数据串行移入,当移动40位后,用一个FQ_UD脉冲即可更新输出频率和相位。
图2-3是相应的控制字串行输入的控制时序图。
AD9851的复位(RESET)信号为高电平有效,且脉冲宽度不小于5个参考时钟周期。
AD9851的参考时钟频率一般远高于单片机的时钟频率,因此AD9851的复位(RESET)端可与单片机的复位端直接相连。
图2-3控制字并行输入的时序图
在并行装入方式中,通过8位总线D0-D7将可数据输入到寄存器,在重复5次之后再在FQ-UD上升沿把40位数据从输入寄存器装入到频率/相位数据寄存器(更新DDS输出频率和相位),同时把地址指针复位到第一个输入寄存器。
接着在W-CLK的上升沿装入8位数据,并把指针指向下一个输入寄存器,连续5个W-CLK上升沿后,W-CLK的边沿就不再起作用,直到复位信号或FQ-UD上升沿把地址指针复位到第一个寄存器。
2.2单片机(AT89S52)控制电路
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用ATMEL公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash、256字节RAM、32位I/O口线、看门狗定时器、2个数据指针、三个16位定时器/计数器、一个6向量2级中断结构、全双工串行口、片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.2.1单片机控制电路图
图2-4单片机控制电路原理图
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),在flash编程和校验时,P1口接收低8位地址字节。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器。
能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
2.2.2单片机与AD9851的接口
单片机与AD9851的接口既可采用并行方式,也可采用串行方式,但为了本次为了以后扩展电路时尽量少的使用端口,使用串口方式。
P2.3作为I/O方式串行行接口,图2-5是I/O方式串行行接口的电路图,AD9851的数据线D7与P2.3口相连,FQ_UD和W_CLK分别与P2.2(10引脚)和P2.3(11引脚)相连,所有的时序关系均可通过软件控制实现。
图2-5AT89S52与AD9851的电路连接图
2.3液晶显示模块
2.3.1LCD1602的主要性能
1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能[6]。
1602型LCD的接口信号说明,如表3.1所示:
表2.1LCD1602接口说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
DataI/O
2
VDD
电源正极
10
D3
DataI/O
3
VL
液晶显示偏压信号
11
D4
DataI/O
4
RS
数据/命令选择端(H/L)
12
D5
DataI/O
5
R/W
读写选择端(H/L)
13
D6
DataI/O
6
E
使能信号
14
D7
DataI/O
7
D0
DataI/O
15
BLA
背光源正极
8
D1
DataI/O
16
BLK
背光源负极
读状态:
输入:
RS=L,RW=H,E=H输出:
D0~D7=状态字
读数据:
输入:
RS=H,RW=H,E=H输出:
无
写指令:
输入:
RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:
D0~D7=数据
写数据:
输入:
RS=H,RW=L,D0~D7=数据,E=高脉冲输出:
无
2.3.2LCD与单片机的连接
图2-6LCD与单片机的接口电路
在实际的接线中,1602的DB0—DB7与89S52的P0口相接,RS与P1.7相接,R/W与P1.6相接,E与P2.4相接。
VL与地之间接一个10K的滑动变阻器来到1602初始显示的调节。
2.4低通滤波器的设计
为了使输出的频率不受外界和一些杂波的干扰,需用一个低通滤波器(LPF)滤除高次谐波。
常用的滤波器的频率响应有三种:
巴特沃斯型(Butterworth),切比雪夫型(Chebyshev)和椭圆型(Cauer)。
其中巴特沃斯滤波器通带最平坦,它的通带内没有纹波,在靠近零频处,有最平坦通带,趋向阻带时衰减单调增大,缺点是从通带到阻带的过渡带最宽,对于带外干扰信号的衰减作用最弱,过渡带不够陡峭,因此它适用于对通带要求较高,而去除的频率离通带较远的情况;切比雪夫滤波器在通带内衰减在零值和一个上限值之间做等起伏变化,阻带内衰减单调增大,带内有起伏,但过渡带比较陡峭;椭圆滤波器不仅通带内有起伏,阻带内也有起伏,而且过渡带陡峭。
比较起来,椭圆滤波器性能更好,本设计中采的是椭圆滤波器。
具体电路图如图2-7所示。
图2-7滤波电路
2.5AD9851模块电路设计
经过以上的分析与设计,并参考官方给的芯片资料的典型电路接法,本模块原理图设计图及PCB设计图如下:
图2-8AD9851整体电路图
PCB电路图:
图2-9AD9851PCB图
3信号发生器的软件设计
在应用系统中,系统软件的设计是建立在具体硬件电路基础之上,根据系统功能要求可靠地实现系统的各种功能。
好的软件设计能够充分发挥微控制器的运算和逻辑控制功能,从而提高仪器的精度和使用的方便性。
3.1程序流程图
通过程序预置频率,并实现对频率步进的控制,处理用户由键盘键入的频率值,判断是否超出范围,生成频率控制字,经并行方式送入DDS,合成用户所需的频率,并通过程序实现频率的显示。
程序流程图如下:
图3-1程序流程图
3.2程序代码:
#include
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitad9850_w_clk=P2^2;//P2.2口接ad9850的w_clk脚/PIN7
sbitad9850_fq_up=P2^1;//P2.1口接ad9850的fq_up脚/PIN8
sbitad9850_rest=P2^0;//P2.0口接ad9850的rest脚/PIN12
sbitad9850_bit_data=P2^3;//P1.7口接ad9850的D7脚/PIN25
uintge,shi,bai,qian,flag;
doubletimer;
uchartemp=0,temp1=0;
uinta[]={0x30,0x30,0x30,0x2e,0x30,0xdf};//相位数据结果保存
sbitlcdrs=P1^7;
sbitlcdrw=P1^6;
sbitlcde=P2^4;
sbits1=P1^0;
sbits2=P1^1;
sbits3=P1^2;
sbits4=P1^3;
sbite=P3^7;
voidad9850_reset_serial(void)
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
//w_clk信号
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
//fq_up信号
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
voidad9850_wr_serial(unsignedcharw0,doublefrequence)
{
unsignedchari,w;
longuinty;
doublex;
//计算频率的HEX值
x=4294967295/125;//适合125M晶振
//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz!
!
!
frequence=frequence/1000000;
frequence=frequence*x;//*34.359738368;//;
y=frequence;
//写w4数据
w=(y>>=0);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w3数据
w=(y>>8);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w2数据
w=(y>>16);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w1数据
w=(y>>24);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w0数据
w=w0;
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//移入始能
ad9850_fq_up=1;
ad9850_fq_up=0;
}
voiddelay(uintn)//延时程序
{
uinti,j;
for(i=0;i for(j=0;j<110;j++); } voidwrite_com(ucharcom)//液晶控制指令子程序 { lcdrs=0; P0=com; delay(5); lcde=1; delay(5); lcde=0; } voidwrite_data(uchardate)//液晶数据输入子程序 { lcdrs=1; P0=date; delay(5); lcde=1; delay(5); lcde=0; } voiddisplay(uchart)//初始化显示子程序 {uintphase; ucharj; phase=22.5*t; a[0]=phase/100+48; a[1]=phase%100/10+48; a[2]=phase%10+48; a[4]=48+5*(temp&0x01); write_com(0x80+0X02); for(j=0;j<6;j++) { write_data(a[j]); delay(10); } } voidkeyscan()//键盘检测 { if(s1==0) { delay(25); if(s1==0) flag++; write_com(0x0f); while(! s1); } if(flag==4) { if(s2==0) delay(70); if(s2==0) {while(! s2); ge++; if(ge==10) ge=0; } if(s3==0) delay(70); if(s3==0) {while(! s3); ge--; if(ge==-1) ge=9; } write_com(0x80+0x45); write_data(0x30+ge); } elseif(flag==3) { if(s2==0); delay(70); if(s2==0) {while(! s2); shi++; if(shi==10) shi=0; } if(s3==0); delay(70); if(s3==0) {while(! s3); shi--; if(shi==-1) shi=9; } write_com(0x80+0x44); write_data(0x30+shi); } elseif(flag==2) { if(s2==0) delay(70); if(s2==0) {while(! s2); bai++; if(bai==10) bai=0; } if(s3==0) delay(70); if(s3==0) {while(! s3); bai--; if(bai==-1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课 报告