基于DAC0832的DDS信号发生器报告+原理图+PCB图+程序代码+proteus的isis的仿真等文件
本设计是一个以AT89C51单片机为核心基于DAC0832芯片的DDS信号发生器。信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出正弦波和三角波,波形的转换可通过软件控制。 本设计通过按键选择波形,经过AT89C51单片机将数据输出到DAC0832,由数字信号转变为模拟信号,再通过运放器稳定地输出到示波器上。 原理框图如下:

DAC0832是采样频率为八位的D/A转换器件,芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。D/A转换结果采用电流形式输出。要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。该片逻辑输入满足TTL电压电平范围,可直接与TTL电路或微机电路相接。 下面是DAC0832引脚图和内部结构电路图 
DAC0832引脚功能说明: DI0~DI7:数据输入线,TLL电平。 ILE:数据锁存允许控制信号输入线,高电平有效。 CS:片选信号输入线,低电平有效。 WR1:为输入寄存器的写选通信号。 XFER:数据传送控制信号输入线,低电平有效。 WR2:为DAC寄存器写选通输入线。 Iout1:电流输出线。当输入全为1时Iout1最大。 Iout2: 电流输出线。其值与Iout1之和为一常数。 Rfb:反馈信号输入线,芯片内部有反馈电阻。 Vcc:电源输入线 (+5v~+15v) Vref:基准电压输入线 (-10v~+10v) AGND:模拟地,摸拟信号和基准电源的参考地。 DGND:数字地,两种地线在基准电源处共地比较好。 主控电路及数模转换电路分别如下: 
主控电路

数模转换电路
3软件流程图: 
4测试方法描述: 运用proteus软件设计好电路图,将程序代码编译好以后载入proteus中的AT89C51芯片进行仿真。 5测试数据: 仿真结果如下图所示: 
三角波 
正弦波 6数据分析与结论: 经过proteus软件的仿真,在示波器中完整地显示出了三角波和正弦波,整个电路设计基本成功。
附件1:
整体电路图:

附件2:
PCB图:

单片机源程序如下:
- #include "reg51.h"
- unsigned 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_tab[x]; }
- 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(i>249)
- i=0;
- else
- i++;
- switch(flag)
- {
- case 0:DAC0832(0);
- break;
- case 1: //三角波
- if(i>125)
- DAC0832(250-i);
- else
- DAC0832(i);
- break;
- case 2: //正弦波
- DAC0832(sin(i));
- break;
- default: break;
- }
- }
- }
- }
- void time0()interrupt 1
- {time=1;}
- void int0() interrupt 0
- {flag=1;}
- void int1() interrupt 2
- {flag=2;}
复制代码
所有资料51hei提供下载:
基于DAC0832的DDS信号发生器报告+原理图+PCB图+程序代码+proteus的isis的仿真等文件.zip
(179.51 KB, 下载次数: 131)
|