标题: 单片机DAC0832的DDS信号发生器设计 原理图+PCB图+程序代码+仿真 [打印本页]

作者: zzm12345    时间: 2019-3-2 16:37
标题: 单片机DAC0832的DDS信号发生器设计 原理图+PCB图+程序代码+仿真
基于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图:



单片机源程序如下:
  1. #include "reg51.h"
  2. unsigned char flag;
  3. bit time;
  4. unsigned char sin(unsigned char x)
  5. {
  6. 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];  }
  7. void DAC0832(unsigned char x)
  8. {
  9. P2=x;
  10. }
  11. void main()
  12. {
  13. unsigned char i;
  14. i=0;
  15. TMOD=0X02;                                 //低半字节用来定义定时器0,用于控制输出波的频率
  16. TH0=256-40;                         //定时时间
  17. ET0=1;                                         //定时中断允许控制位,允许
  18. IT0=1;                                         //外中断0触发方式控制位,低电平有效
  19. IT1=1;
  20. EX0=1;                                         //外中断0允许控制位,允许
  21. EX1=1;
  22. EA=1;                                         //中断允许总控制位,允许
  23. TR0=1;                                         //启动定时器工作
  24. flag=0;                                 //开始时无输出

  25. while(1)
  26. {
  27. if(time==1)
  28. {
  29.   time=0;
  30.   if(i>249)
  31.   i=0;
  32.   else
  33.   i++;
  34.   switch(flag)
  35.   {
  36.    case 0:DAC0832(0);
  37.    break;
  38.    case 1:                                //三角波
  39.    if(i>125)
  40.    DAC0832(250-i);
  41.    else
  42.    DAC0832(i);
  43.    break;
  44.    case 2:                                //正弦波
  45.    DAC0832(sin(i));
  46.    break;
  47.    default: break;
  48.   }
  49. }
  50. }
  51. }

  52. void time0()interrupt 1
  53. {time=1;}

  54. void int0() interrupt 0
  55. {flag=1;}

  56. void int1() interrupt 2
  57. {flag=2;}  
复制代码


所有资料51hei提供下载:
基于DAC0832的DDS信号发生器报告+原理图+PCB图+程序代码+proteus的isis的仿真等文件.zip (179.51 KB, 下载次数: 129)






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1