资源描述
评阅成绩电子信息技术综合实训报告格式 竞赛题名称: DDS信号发生器的设计 队员名称: 评阅人签名: 2012年9月15日竞赛题名称: DDS信号发生器的设计 1、 设计思路描述:本设计是一个以AT89C51单片机为核心基于DAC0832芯片的DDS信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出正弦波和三角波,波形的转换可通过软件控制。本设计通过按键选择波形,经过AT89C51单片机将数据输出到DAC0832,由数字信号转变为模拟信号,再通过运放器稳定地输出到示波器上。原理框图如下:键 盘单 片 机DAC0832运 放 器信 号 输 出2、 硬件电路图: DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。该片逻辑输入满足TTL电压电平范围,可直接与TTL电路或微机电路相接。下面是DAC0832引脚图和内部结构电路图 竞赛题名称: DDS信号发生器的设计 DAC0832引脚功能说明:DI0DI7:数据输入线,TLL电平。 ILE:数据锁存允许控制信号输入线,高电平有效。 CS:片选信号输入线,低电平有效。 WR1:为输入寄存器的写选通信号。 XFER:数据传送控制信号输入线,低电平有效。 WR2:为DAC寄存器写选通输入线。 Iout1:电流输出线。当输入全为1时Iout1最大。 Iout2: 电流输出线。其值与Iout1之和为一常数。 Rfb:反馈信号输入线,芯片内部有反馈电阻。Vcc:电源输入线(+5v+15v) Vref:基准电压输入线(-10v+10v) AGND:模拟地,摸拟信号和基准电源的参考地。 DGND:数字地,两种地线在基准电源处共地比较好。主控电路及数模转换电路分别如下:主控电路竞赛题名称: DDS信号发生器的设计 数模转换电路3软件流程图:NY开始AT89C51初始化DAC0832初始化是否按键三角波、正弦波数据输出结束竞赛题名称: DDS信号发生器的设计 4测试方法描述:运用proteus软件设计好电路图,将程序代码编译好以后载入proteus中的AT89C51芯片进行仿真。5测试数据: 仿真结果如下图所示:三角波正弦波6数据分析与结论:经过proteus软件的仿真,在示波器中完整地显示出了三角波和正弦波,整个电路设计基本成功。附件1:整体电路图:附件2:PCB图:附件3:程序设计:#include reg51.hunsigned char flag;bit time;unsigned char sin(unsigned char x) unsigned char code sin_tab=125,128,131,134,138,141,144,147,150,153,156,159, 162,165,168,171,174,177,180,182,185,188,191,193,196,198,201,203, 206,208,211,213,215,217,219,221,223,225,227,229,231,232,234,235, 237,238,239,241,242,243,244,245,246,246,247,248,248,249,249,250, 250,250,250,250,250,250,250,249,249,248,248,247,246,246,245,244, 243,242,241,239,238,237,235,234,232,231,229,227,225,223,221,219, 217,215,213,211,208,206,203,201,198,196,193,191,188,185,182,180, 177,174,171,168,165,162,159,156,153,150,147,144,141,138,134,131, 128,125,122,119,116,112,109,106,103,100,97,94,91,88,85,82,79,76,73, 70,68,65,62,59,57,54,52,49,47,44,42,39,37,35,33,31,29,27,25,27,29,27,25,23,21, 19,18,16,15,13,12,11,9,8,7,6,5,4,4,3,2,2,1,1,0,0,0,0,0,0,0,0,1,1,2, 2,3,4,4,5,6,7,8,9,11,12,13,15,16,18,19,21,23,25,27,29,31,33,35,37, 39,42,44,47,49,52,54,57,59,62,65,68,70,73,76,79,82,85,88,97,94,97, 100,103,106,109,112,116,119,122; return sin_tabx; void DAC0832(unsigned char x) P2=x;void main() unsigned char i; i=0; TMOD=0X02; /低半字节用来定义定时器0,用于控制输出波的频率 TH0=256-40; /定时时间 ET0=1; /定时中断允许控制位,允许 IT0=1; /外中断0触发方式控制位,低电平有效 IT1=1; EX0=1; /外中断0允许控制位,允许 EX1=1; EA=1; /中断允许总控制位,允许 TR0=1; /启动定时器工作 flag=0; /开始时无输出 while(1) if(time=1) time=0; if(i249) i=0; else i+; switch(flag) case 0:DAC0832(0); break; case 1:/三角波 if(i125) DAC0832(250-i); else DAC0832(i); break; case 2:/正弦波 DAC0832(sin(i); break; default: break; void time0()interrupt 1time=1;void int0() interrupt 0flag=1;void int1() interrupt 2flag=2;
展开阅读全文