版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE1前言波形发生器是能够产生大量的标准信号和用户定义信号,并保证高精度、高稳定性、可重复性和易操作性的电子仪器。函数波形发生器具有连续的相位变换、和频率稳定性等优点,不仅可以模拟各种复杂信号,还可对频率、幅值、相移、波形进行动态、及时的控制,并能够与其它仪器进行通讯,组成自动测试系统,因此被广泛用于自动控制系统、震动激励、通讯和仪器仪表领域。在70年代前,信号发生器主要有两类:正弦波和脉冲波,而函数发生器介于两类之间,能够提供正弦波、余弦波、方波、三角波、上弦波等几种常用标准波形,产生其它波形时,需要采用较复杂的电路和机电结合的方法。这个时期的波形发生器多采用模拟电子技术,而且模拟器件构成的电路存在着尺寸大、价格贵、功耗大等缺点,并且要产生较为复杂的信号波形,则电路结构非常复杂。同时,主要表现为两个突出问题,一是通过电位器的调节来实现输出频率的调节,因此很难将频率调到某一固定值;二是脉冲的占空比不可调节。在70年代后,微处理器的出现,可以利用处理器、A/D/和D/A,硬件和软件使波形发生器的功能扩大,产生更加复杂的波形。这时期的波形发生器多以软件为主,实质是采用微处理器对DAC的程序控制,就可以得到各种简单波形。90年代末,出现几种真正高性能、高价格的函数发生器、但是HP公司推出了型号为HP770S的信号模拟装置系统,它由HP8770A任意波形数字化和HP1776A波形发生软件组成。HP8770A实际上也只能产生8中波形,而且价格昂贵。不久以后,Analogic公司推出了型号为Data-2020的多波形合成器,Lecroy公司生产的型号为9100的任意波形发生器等。到了二十一世纪,随着集成电路技术的高速发展,出现了多种工作频率可过GHz的DDS芯片,同时也推动了函数波形发生器的发展,2003年,Agilent的产品33220A能够产生17种波形,最高频率可达到20M,2005年的产品N6030A能够产生高达500MHz的频率,采样的频率可达1.25GHz。由上面的产品可以看出,函数波形发生器发展很快近几年来,国际上波形发生器技术发展主要体现在以下几个方面:(1)过去由于频率很低应用的范围比较狭小,输出波形频率的提高,使得波形发生器能应用于越来越广的领域。波形发生器软件的开发正使波形数据的输入变得更加方便和容易。波形发生器通常允许用一系列的点、直线和固定的函数段把波形数据存入存储器。同时可以利用一种强有力的数学方程输入方式,复杂的波形可以由几个比较简单的公式复合成v=f(t)形式的波形方程的数学表达式产生。从而促进了函数波形发生器向任意波形发生器的发展,各种计算机语言的飞速发展也对任意波形发生器软件技术起到了推动作用。目前可以利用可视化编程语言(如VisualBasic,VisualC等等)编写任意波形发生器的软面板,这样允许从计算机显示屏上输入任意波形,来实现波形的输入。(2)与VXI资源结合。目前,波形发生器由独立的台式仪器和适用于个人计算机的插卡以及新近开发的VXI模块。由于VXI总线的逐渐成熟和对测量仪器的高要求,在很多领域需要使用VXI系统测量产生复杂的波形,VXI的系统资源提供了明显的优越性,但由于开发VXI模块的周期长,而且需要专门的VXI机箱的配套使用,使得波形发生器VXI模块仅限于航空、军事及国防等大型领域。在民用方面,VXI模块远远不如台式仪器更为方便。(3)随着信息技术蓬勃发展,台式仪器在走了一段下坡路之后,又重新繁荣起来。不过现在新的台式仪器的形态,和几年前的己有很大的不同。这些新一代台式仪器具有多种特性,可以执行多种功能。而且外形尺寸与价格,都比过去的类似产品减少了一半。以下给出了几种波形发生器的性能指标,从中可以看出当今世界上重要电子仪器生产商在波形发生器上的研制水平。公司TektronixTektronix横河电机Wavetek型号AG320AWG710AG5100295最高采用频率16MS/s4GMS/s1GMS/s50MS/s通道数2224垂直分辨率12bit8bit8bit12bit存储容量64K8M8M64K输出电压10V2.5V2V15V1.总体设计方案与论证1.1总体设计框图图1总体设计框图波形发生器使用内调制(软件调制),通过单片机中断,对外来模拟调制信号进行采样,采样速率为32KHz,然后对采样值进行转换,把电压转换成对应的频偏,然后转换成相应的频率控制字送DDS,采用专用DDS芯片产生正弦波。1.2方案与论证1.2.1信号产生方案一:使用传统的锁相频率合成的方法。要求产生1KHz到10MHz的信号,用锁相环直接产生这么宽的范围很困难,所以先产生50.001M到60M的可调信号,然后把此信号与一个50M的本振混频,得到需要的频率。此方法产生的频率稳定度高,但波形频谱做纯很困难,幅度也不恒定,实现也麻烦。方案二:采用专用DDS芯片产生正弦波。优点:软件设计,控制方便,电路易实现,容易直接达到题目要求的频率范围和步进值,且稳定性和上法一样,频谱纯净,幅度恒定,失真小。综上所述,选择方案二用专用DDS芯片AD9850产生正弦波。AD9850是采用DDS技术、高度集成化的器件,当它在并行工作方式时,有8根数据线、3根控制线与单片机相连。AD9850的频率控制字为:其中FTW为频率控制字,为要输出的正弦的频率,为系统时钟的频率,由晶振产生。1.2.2模拟频率调制
方案一:使用内调制(软件调制),通过单片机中断,对外来模拟调制信号进行采样,采样速率为32KHz,然后对采样值进行转换,把电压转换成对应的频偏,然后转换成相应的频率控制字送DDS,以实现对1KHz正弦信号的调频,这样可以满足最大频偏的精度要求。
方案二:使用外调制,通过锁相环控制DDS总时钟,在锁相环电路中进行频率调制,来改变DDS输出信号频率,间接实现调频,这样实现简单,频域内频谱连续,但是很难做到精确的10KHz和5KHz的最大频偏。
综合以上方案,选择方案一,实际中要求调制信号是固定不变的1KHz正弦信号,所以,我们直接把正弦信号存储在单片机中,并且换算好频率控制字。
1.2.3模拟幅度调制
方案一:使用二极管调幅电路。较常用的二极管调幅电路有二极管平衡调幅电路和二极管环形调幅电路。但由于二极管的特性不一致,会造成电路不可能完全对称,造成控制信号的泄漏。
方案二:充分利用单片机的资源,1K的调制信号使用单片机的DA口输出,经滤波放大后送MC1496与DDS产生的载波进行混频,这样效果非常好,而且成本低。
综合以上方案,选择方案二。1.2.4键盘非编码式键盘有行扫描法和线反转法,采用线反转法,并建立一张键码转换表,如下表(1)所示。表1键码转换表键名特征码顺序码00x7E0x0010xBE0x0120xDE0x0230xEE0x0340x7D0x0450xBD0x0560xDD0x0670xED0x0780x7B0x0890xBB0x09A0xDB0x0AB0xEB0x0BC0x770x0CD0xb70x0DE0xD70x0EF0xE70x0F空键0xFF0xFF2.主要器件简介2.1LM8962简介德州仪器(TI)公司Stellaris®所提供一系列的微控制器是首款基于ARM®CortexTM-M3的控制器,它们为对成本尤其敏感的嵌入式微控制器应用方案带来了高性能的32位运算能力。这些具备领先技术的芯片使用户能够以传统的8位和16位器件的价位来享受32位的性能,而且所有型号都是以小占位面积的封装形式提供。LM3S8962微控制器包含了下列特性:通用定时器-32位定时器模式
可编程的单次触发定时器
可编程的周期定时器
当接入32.768-KHz外部时钟输入时可作为实时时钟使用
当控制器在调试期间使CPU暂停标志有效时,用户可以在周期和单次触发模式中使能中止(stalling)
ADC事件触发器
-16位定时器模式
通用定时器功能,并带一个8位的预分频器
可编程的单次触发定时器
可编程的周期定时器
ADC事件触发器
-16位输入捕获模式
提供输入边沿计数捕获功能
提供输入边沿时间捕获功能
-16位PWM模式
简单的PWM模式,对PWM信号输出的取反可由软件编程决定遵循ARMFiRM规范的看门狗定时器
-32位向下计数器,带可编程的装载寄存器
-带使能功能的独立看门狗时钟
-带中断屏蔽功能的可编程中断发生逻辑
-软件跑飞时可锁定寄存器以提供保护
-带使能/禁能的复位发生逻辑
控制器局域网(CAN)
-支持CAN协议版本2.0partA/B
-传输位速率可达1Mb/s
-32个消息对象,每个都带有独立的标识符屏蔽
-可屏蔽的中断
-可禁止TTCAN的自动重发模式
-可编程设定的循环模式用于自检操作10/100以太网控制器
-遵循IEEE802.3-2002规范
-遵循IEEE1588-2002精确时间协议(PTP)
-在100Mbps和10Mbps速率运作下支持全双工和半双工的操作方式
-集成10/100Mbps收发器(PHY)
-自动的MDI/MDI-X交叉校验
-可编程MAC地址
-节能和断电模式
同步串行接口(SSI)
-主机或从机操作
-可编程控制的时钟位速率和预分频
-独立的发送和接收FIFO,16位宽,8位深
-可编程的数据帧大小,范围为4到16位
-内部循环测试模式可用于诊断/调试测试
UART
-2个完全可编程的16C550-typeUART,支持IrDA
-带有独立的16×8发送(TX)和16×12接收(RX)FIFO,减轻CPU中断服务负载
-可编程的波特率发生器,带有小数分频器
-可编程设置FIFO长度,包括1字节深度的操作,以提供传统的双缓冲接口。
-FIFO触发水平可设为1/8、1/4、1/2、3/4和7/8
-标准异步通信位:起始位、停止位、奇偶位
-无效起始位检测
-行中断的发生和检测
ADC
-单输入和差分输入配置
-当用作单终端输入时的4个10位通道(输入)
-采样速率:500,000样片/秒
-灵活、可配置的模数转换
-4个可编程的采样转换序列,从1到8单元(entries)长,带有相对应的转换结果FIFO
-每个序列由软件或内部事件(定时器、模拟比较器、PWM或GPIO)触发
-片上温度传感器模拟比较器
-1个集成的模拟比较器
-可以把输出配置为:驱动输出管脚、产生中断或启动ADC采样序列
-比较两个外部管脚输入或者将外部管脚输入与内部可编程参考电压相比较
I2C
-在标准模式下主机和从机接收和发送操作的速度可达100Kbps,在快速模式下可达400Kbps
-中断的产生
-主机带有仲裁和时钟同步功能、支持多个主机、以及7位寻址模式
PWM
-3个PWM信号发生模块,每个模块都带有1个16位计数器、2个比较器,1个PWM信号发生器和1个死区发生器
-1个16位的计数器
运行在递减或递增/递减模式
输出频率由一个16位的装载值控制
可同步更新装载值
当计数器的值到达零或者装载值时产生输出信号
-死区发生器
产生2个带有可编程死区延时的PWM信号,适合驱动半H桥
可以被旁路,不修改输入PWM信号
-可启动ADC采样序列
QEI
-2个QEI模块
-硬件位置积分器跟踪编码器位置
-速度捕获使用内置定时器
-在索引脉冲、速度定时器时间到达、方向改变或正交错误检测时产生中断
GPIO
-输入/输出可承受5V
-中断产生可编程为边沿触发或电平检测
-在读和写操作中通过地址线进行位屏蔽
-可启动ADC采样序列
-GPIO端口配置的可编程控制2.2AD9850简介AD9850内含可编程DDS系统和高速比较器,可实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC输出模拟量。相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相应地正弦查询表。每经过一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。输出的正弦波频率fout=M*fc/2的N次方,fc为外部参考时钟频率。AD9850采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10位后输入到DAC,DAC再输出两个互补的电流。DAC满量程输出电流通过一个外接电阻RSET调节,典型值3.9千欧。将DAC的输出经低通滤波后接到AD9850内部的高速比较器上即可直接输出方波。在125MHz的时钟下,32位频率控制字可使AD9850输出频率分辨率达0.0291Hz。3.单元模块设计3.1电源电路三端稳压集成电路lm7805。电子产品中,常见的三端稳压集成电路有正电压输出的lm78系列和负电压输出的lm79系列。顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。它的样子象是普通的三极管TO-220的标准封装,也有lm9013样子的TO-92封装。电源电路如图(2)所示。图2电源电路3.2单片机硬件复位电路系统受到外界干扰或其他原因,采用硬件复位可以人为地使系统快速复位,从而重新工作,复位电路如图(3)所示。图3复位电路3.3DDS电路设计及滤波电路的设计通过图(4)DDS电路可以把信号放大,也可以把正弦波变为三角波,整流电路虽然可将交流电变成直流电,但其脉动成分较大,在一些要求直流电平滑的场合是不适用的,需加上滤波电路,以减小整流后直流电中的脉动成分。(仿真波形图见附录二)。图4DDS电路设计及滤波电路和波形产生电路总体设计键盘设计如图(5)键盘电路所示,键盘电路采用4*4非编码式键盘,采用线反转法,这样的键盘结构简单。非编码式键盘将案件排列成矩阵的形势,由硬件或软件随时对矩阵扫描,一旦某一键被按下,该键的行列信息即被转换为位置码并送入主机。图5键盘电路4.程序设计4.1程序流程图如下图(6)所示,程序流程图通过按键判断输入的信号,然后经过DDS电路输出需要产生的正弦波、方波、三角波等波形图。图6程序流程图4.2程序代码头文件sign.h#defineDINGPIO_PORTA_BASE,GPIO_PIN_1 //与ad9850进行串口通信#defineW_CLKGPIO_PORTA_BASE,GPIO_PIN_6//AD9850写时钟输入端#defineFQ_UDGPIO_PORTA_BASE,GPIO_PIN_7//AD9850更新输入#defineRESTGPIO_PORTA_BASE,GPIO_PIN_0#defineGPIO_PORTC_BASE,GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3#defineGPIO_PORTC_BASE,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7voidGPIOInt(){SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);GPIOPinTypeGPIOOutput(DB,0XFF);GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); }voidad9850_reset_serial() //AD9850复位{GPIOPinWrite(W_CLK,0X00);GPIOPinWrite(FQ_UD,0X00); GPIOPinWrite(REST,0X00);GPIOPinWrite(REST,0X02);GPIOPinWrite(REST,0X00);GPIOPinWrite(W_CLK,0X00);GPIOPinWrite(W_CLK,0X40);GPIOPinWrite(W_CLK,0X00);GPIOPinWrite(FQ_UD,0X00);GPIOPinWrite(FQ_UD,0X80);GPIOPinWrite(FQ_UD,0X00);}voidad9850_wr_serial(unsignedcharw0,doublefrequence){unsignedchari,w;longinty;longx;//计算频率的HEX值x=4294967295/125;//适合125M晶振//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz!!!frequence=frequence/1000000;frequence=frequence*x;y=frequence;//写w4数据w=(y>>=0);for(i=0;i<8;i++){GPIOPinWrite(DIN,(w>>i)&0x01);GPIOPinWrite(W_CLK,0X40);GPIOPinWrite(W_CLK,0X00);}//写w3数据w=(y>>8);for(i=0;i<8;i++){GPIOPinWrite(DIN,(w>>i)&0x01);GPIOPinWrite(W_CLK,0X40);GPIOPinWrite(W_CLK,0X00);}//写w2数据w=(y>>16);for(i=0;i<8;i++){GPIOPinWrite(DIN,(w>>i)&0x01);GPIOPinWrite(W_CLK,0X40);GPIOPinWrite(W_CLK,0X00);}//写w1数据w=(y>>24);for(i=0;i<8;i++){GPIOPinWrite(DIN,(w>>i)&0x01);GPIOPinWrite(W_CLK,0X40);GPIOPinWrite(W_CLK,0X00);}//写w0数据w=w0;for(i=0;i<8;i++){GPIOPinWrite(DIN,(w>>i)&0x01);GPIOPinWrite(W_CLK,0X40);GPIOPinWrite(W_CLK,0X00);}//移入始能GPIOPinWrite(FQ_UD,0X80);GPIOPinWrite(FQ_UD,0X00);}头文件long.hvoidFM(){longf0=1000000;unsignedints=1;while(s){if(key_board()==0x7d){SysCtlDelay(700);if(key_board()==0x7d)f0=f0+500;}if(key_board()==0xbd){SysCtlDelay(700);if(key_board()==0xbd)s=0;}}ad9850_reset_serial();ad9850_wr_serial(0x00,f0);display(change(f0));}voidSINE(){longf0=1000;unsignedints=1;while(s){if(key_board()==0xdd){SysCtlDelay(700);if(key_board()==0xdd)f0=f0+500;}if(key_board()==0xbd){SysCtlDelay(700);if(key_board()==0xbd)s=0;}}ad9850_reset_serial();ad9850_wr_serial(0x00,f0);}voidsquaren(){longf0=1000;unsignedints=1;while(s){if(key_board()==0xed){SysCtlDelay(700);if(key_board()==0xed)f0=f0+500;}if(key_board()==0xbd){SysCtlDelay(700);if(key_board()==0xbd)s=0;}}ad9850_reset_serial();ad9850_wr_serial(0x00,f0);}voidAM(){longf0=1000;unsignedints=1;while(s){if(key_board()==0xbe){SysCtlDelay(700);if(key_board()==0x7d)f0=f0+500;}if(key_board()==0x7f){SysCtlDelay(700);if(key_board()==0x7d)s=0;}}ad9850_reset_serial();ad9850_wr_serial(0x00,f0);}主函数#include"lm3sxxx.h"#include"sign.h"#include"long.h"main(){unsignedintnumber=0x7e;GPIOInt();lcd12864int();while(1){number=key_board();switch(number){case0x7e:FM();case0xbe:AM();case0xde:SINE();case0xee:squaren();
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论