收藏 分销(赏)

基于AD9854的DDS外围电路设计和程序.doc

上传人:xrp****65 文档编号:7439538 上传时间:2025-01-04 格式:DOC 页数:7 大小:324KB 下载积分:10 金币
下载 相关 举报
基于AD9854的DDS外围电路设计和程序.doc_第1页
第1页 / 共7页
基于AD9854的DDS外围电路设计和程序.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
前段时间非常忙,AD9854这个芯片真是整的我头好疼,虽然在网上也查了大量的资料,不过关于AD9854使用的资料真是少之又少,无奈,只好自己去研究DATASHEET,好在终于实现了,并且通过调试,输出波形稳定!现在把我的设计法出来供大家使用参考。原理图和PCB图为AD9854外围电路! 以下是AD9854的控制程序! //#include    <reg51f.h> #include  "sst89x5xxrd2.h" #include    <intrins.h> #define   USE_KEY  0 #define   uchar  unsigned char #define   uint   unsigned int #define   schar  signed char #define   sint   signed int #define   ulong  unsigned long int //须主程序定义的参数 / sbit  ADDR0       =P2^0;      // sbit  ADDR1       =P2^1;      // sbit  ADDR2       =P2^2;      // sbit  ADDR3       =P2^3;      // sbit  ADDR4       =P2^4;      // sbit  ADDR5       =P2^5;      // / sbit  AD_FUD      =P3^7;      //UP_DATA sbit  RUN         =P3^2;  sbit  WR_LOW      =P3^5;      // WR sbit  MASTER_RESET=P3^3;      bit bdata F_Flag,OneSec_Flag,Re_Flag,P_Flag; // uchar  SecOne;  uchar  Time_count;  uchar   AD_Addr;   uchar   dats; uchar   TAB_Data[40]; // //初始化串口。配置定时器 // void initial_system()  {     EA = 0;     TMOD=0x21;             //初始化定时器0     PCON=0x00;      SCON=0x50;     TH0 = 0xdc;           //10毫秒定时,   采用晶体11.0592   定时器0,方式1     TL0 = 0x00;     TH1 = 0xfd;          //波特率9600     采用晶体11.0592   定时器1,方式1      TL1 = 0xfd;     TR0 =1;             //开启定时器0     TR1 =1;             //开启定时器0     ET0 =1;             //时钟0     ES  =0;             //开串口中断     EA = 1 ;            // 使能所有中断 } void Timer0() interrupt 1 using 3 {                 TH0 = 0xdc;    //10毫秒    采用晶体11.0592  定时器0,方式1         TL0 = 0x00;         SecOne++;         if(SecOne>200)        //计时1秒钟         {           SecOne=0x00;             OneSec_Flag=1;             RUN=~RUN;                 } } // void AD9854_delay(int time)   {       int i;       for(i = 0; i < time; i++)       {           _nop_();           _nop_();           _nop_();           _nop_();       }   } void TAB_DataWord() {  TAB_Data[0]=0x00;   //00H Phase Adjust Register #1 <13:8> (Bits 15, 14 don't care) Phase #1 相位为0  TAB_Data[1]=0x00;  //01H Phase Adjust Register #1 <7:0> 01H    TAB_Data[2]=0x00;  //02H Phase Adjust Register #2 <13:8> (Bits 15, 14 don't care) Phase #2 相位为0  TAB_Data[3]=0x00;  //03H Phase Adjust Register #1 <7:0> 03H  //100M  TAB_Data[4]=0X31;  //Frequency Tuning Word 1 <47:40>//623795E0184A       TAB_Data[5]=0X1B;  //Frequency Tuning Word 1 <39:32>  TAB_Data[6]=0xE6;  //Frequency Tuning Word 1 <31:24>  TAB_Data[7]=0xE6;  //Frequency Tuning Word 1 <23:16>  TAB_Data[8]=0x53;  //Frequency Tuning Word 1 <15:8>  TAB_Data[9]=0x86;  //Frequency Tuning Word 1 <7:0>  //FTW2  TAB_Data[10]=0x31;  //Frequency Tuning Word 2 <47:40  TAB_Data[11]=0x1B;  //Frequency Tuning Word 2 <39:32>  TAB_Data[12]=0xE6;  //Frequency Tuning Word 2 <31:24>  TAB_Data[13]=0xE6;  //Frequency Tuning Word 2 <23:16>  TAB_Data[14]=0x53;  //Frequency Tuning Word 2 <15:8>  TAB_Data[15]=0x86;  //Frequency Tuning Word 2 <7:0> //500KHZ  //FTW  TAB_Data[16]=0x01;  //Delta Frequency Word <47:40>  TAB_Data[17]=0x47;  //Delta Frequency Word <39:32>  TAB_Data[18]=0xAE;  //Delta Frequency Word <31:24>  TAB_Data[19]=0x14;  //Delta Frequency Word <23:16>  TAB_Data[20]=0x7A;  //Delta Frequency Word <15:8>  TAB_Data[21]=0xE1;  //Delta Frequency Word <7:0> 三角波  //频率为0  //Upclok  TAB_Data[22]=0x00;  //Update Clock <31:24>  TAB_Data[23]=0x00;  //Update Clock <23:16>  TAB_Data[24]=0x00;  //Update Clock <15:8>  TAB_Data[25]=0xF0;  //Update Clock <7:0> //系统出现寄存器更新信号reg. Int Update Clk.=0;外部更新  TAB_Data[26]=0x00;  //Ramp Rate Clock <19:16> (Bits 23, 22, 21, 20 don't care)  TAB_Data[27]=0x00;  //Ramp Rate Clock <15:8>  TAB_Data[28]=0x00;  //Ramp Rate Clock <7:0>  TAB_Data[29]=0x10;  //Don't Care(0),Don't Care(0),Don't Care(0),Comp PD (1),Reserved_Always Low(0),QDAC PD(0),DAC PD(0),DIG PD(0).  TAB_Data[30]=0x20;  //Don't Care(0),PLL Range(1),Bypass PLL(1),Ref Mult 4(0),Ref Mult 3(0),Ref Mult 2(0),Ref Mult 1(0),Ref Mult 0(0).  TAB_Data[31]=0x10;  //CLR ACC1(0),CLR ACC2(0),Triangle(0)(三角波),SRC QDAC(0),Mode 2(0),Mode 1(0),Mode 0(0),Int Update Clk(0). 注意  TAB_Data[32]=0x50;  //Don't Care(0),Bypass_Inv_Sinc(0),OSK EN(0),OSK INT(0),Don't Care(0),Don't Care(0),LSB First(0),SDO_Active(0).  TAB_Data[33]=0x00;  //Output Shape Key I Mult <11:8> (Bits 15, 14, 13, 12 don't care)  TAB_Data[34]=0x0F;  //Output Shape Key I Mult <7:0>                         TAB_Data[35]=0x00;  //Output Shape Key Q Mult <11:8> (Bits 15, 14, 13, 12 don't care)  TAB_Data[36]=0x0F;  //Output Shape Key Q Mult <7:0>  TAB_Data[37]=0xFF;  //Output Shape Key Ramp Rate <7:0>    TAB_Data[38]=0x00;  //QDAC <11:8> (Bits 15, 14, 13, 12 don't care)  TAB_Data[39]=0x0F;  //QDAC <7:0> (Data is required to be in twos complement format) }  void AD9854_ParallelSendByte(uchar addr,uchar data1)   {       // WR_LOW=0;     //lhyaddr  WR_LOW=WRB     _nop_();     P2=addr&0x3F;      _nop_();     P1=data1;     WR_LOW=0;     //lhyaddr  WR_LOW=WRB     _nop_();     WR_LOW=1;     _nop_();       _nop_();      WR_LOW=0;     //lhyaddr  WR_LOW=WRB       }           data0=*(SWord+i);            AD9854_ParallelSendByte(Special_addr,data0);           AD9854_delay(5);       }   }    void Init9854(void)   {       WR_LOW=0;       AD_FUD=0;     MASTER_RESET=0; } //   void main(void)    {    uchar i;      MASTER_RESET=0;      initial_system();    //系统初始化       Init9854();      TAB_DataWord();      MASTER_RESET=0;      _nop_();        _nop_();        _nop_();        _nop_();        MASTER_RESET=1;      AD9854_delay(30);      _nop_();        _nop_();        _nop_();        _nop_();       _nop_();     MASTER_RESET=0;     _nop_();        _nop_();        _nop_();        _nop_();       _nop_();     _nop_();        _nop_();        _nop_();        _nop_();       _nop_();      AD9854_delay(500);       AD9854_delay(500);       AD9854_delay(500);        for (i=0;i<40;i++)        {  dats=TAB_Data[i];  AD_Addr=i;         AD9854_ParallelSendByte(AD_Addr,dats);           }        _nop_();        AD_FUD=0;        _nop_();        _nop_();        _nop_();            AD_FUD=1;        AD9854_delay(80);           _nop_();          _nop_();        AD_FUD=0;      while(1)    {     if(OneSec_Flag==1)       {      _nop_();         _nop_();        _nop_();         AD9854_delay(80);      _nop_();        _nop_();       _nop_();            AD9854_delay(80);      _nop_();         for (i=0;i<40;i++)       {        dats=TAB_Data[i];        AD_Addr=i;        AD9854_ParallelSendByte(AD_Addr,dats);         }       _nop_();       AD_FUD=0;       _nop_();         _nop_();       AD9854_delay(80);       AD_FUD=1;        _nop_();         AD9854_delay(80);         _nop_();         _nop_();      AD_FUD=0;         OneSec_Flag=0;           }      _nop_();       _nop_();          }    }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服