;
文章:行业新闻EDA文摘电源技术无线通信测量仪表嵌入式类电子技术制造技术半导体网络/协议展会实验家电维修  
  下载:EDA教程电源技术电子书籍电子元件无线通信通信网络电路图纸嵌入式类单片机传感/控制电子教材模拟数字
.... 音视频类
消费电子机械电子行业软件C/C++FPGA/ASIC规则标准家电维修DSPIC资料ARM软件电路图电子技术论坛
 
位置:电子发烧友 > 行业新闻 > 电子技术 > AD技术 >ad9850-c程序-设计源代码 退出登录 用户管理
栏目导航


· 电路图 · 视音频设计
· AD技术 · 显示及光电
· 传感技术 · 控制技术
· 电子常识 · 接口定义
热门文章
· [组图] 电子元器件基础知识...
· [图文] USB接口定义
· [图文] 三极管开关电路图
· [组图] RS232 RS485接口原理...
· [组图] [组图]电动车充电器...
· [组图] 电子捕鱼器电路图
· [组图] 高品质音调电路的制...
· [组图] JRC4558电路
· [图文] M51134P低音炮电路图...
· [图文] TL494脉宽调制控制电...
相关文章

· [组图] ad9850应用电路
· [图文] ad9850管脚图引脚图...
· [组图] ad9851原理图及引脚...
· [图文] 基于TMS320C6701控制...

ad9850-c程序-设计源代码
作者:本站  来源:本站原创  发布时间:2008-4-10 13:12:17 减小字体 增大字体

ad9850-c程序-源代码

#include
#include
float l,m,n,q,z;
double k; 
//-----------------------定义管脚-----------------------------
#define  data_OUT P1
sbit FQ_UD=P3^0;          //AD9850信号更新申请
sbit W_CLK=P3^1;
sbit FESET="P3"^2;          //写控制字时钟
unsigned char CON_word[5];
//Word data[7] data[6] data[5] data[4] data[3] data[2] data[1] data[0]
//W0  Phase b  Phase b3  Phase b2  Phase b1 Phase b0  Power Down  Control     Control
//W1 Freq-b31    Freq-b30 Freq-b29 Freq-b28 Freq-b27 Freq-b26 Freq-b25 Freq-b24
//W2 Freq-b23 Freq-b22 Freq-b21 Freq-b20 Freq-b19 Freq-b18 Freq-b17 Freq-b16
//W3 Freq-b15 Freq-b14 Freq-b13 Freq-b12 Freq-b11 Freq-b10 Freq-b9      Freq-b8
//W4 Freq-b7     Freq-b6     Freq-b5     Freq-b4     Freq-b3     Freq-b2 

//--------------------------------------------------------------------------------------------------
// 函数名称: delay
// 入口参数: N
// 函数功能:延时子程序,实现(16*N+24)us的延时
// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
//--------------------------------------------------------------------------------------------------
 // void delay(unsigned  int N) 
 // {
 // int i;
  //for(i=0;i // }
//--------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------
 /*******************************************************/
   void Freq_Adjust(long value_Freq)

    unsigned int i;
   long f;
 unsigned char L4,L3,L2,L1,L0;
   FQ_UD=0;
    f="value"_Freq*86;
    L0=0x28;
    L4= f&0x000000ff;
    L3=(f>>8)&0x000000ff;
    L2=(f>>16)&0x000000ff;
    L1=(f>>24)&0x000000ff;
   CON_word[0]=L0;
   CON_word[4]=L4;
   CON_word[3]=L3;
   CON_word[2]=L2;
   CON_word[1]=L1;
     FQ_UD=0;
     W_CLK=0;
  //delay(0);
  _nop_(); _nop_(); _nop_();  _nop_(); _nop_();
  CON_word[0]=CON_word[0]&0xFC;   //置工作方式选择位为00
     for(i=0;i<5;i++)
     { 
  FESET="1";
  W_CLK=0;
     data_OUT=CON_word[i];      //送控制字
    // delay(0);
 _nop_(); _nop_(); _nop_(); _nop_();_nop_();
  FESET="0";
     W_CLK=1;                   //上升延
     //delay(0);
  _nop_(); _nop_(); _nop_();_nop_();_nop_();
     }
     FQ_UD=1;
 
}


//-------------------------------------------------------------------------------
// 函数名称:main
// 用户主函数
// 函数功能:主函数
//-------------------------------------------------------------------------------


main()
{
    BEGAIN:
 LCD_Initial();
 P2=0XF0;
 GotoXY(0,0);
    Print("Please Input :");
 GotoXY(0,1);
 Print("              ");
 m=0;
 k=0;
 l=0;
 //q=5;
  FQ_UD=0; 
    Freq_Adjust(50000);
    while(1)
  { 
      while(1)
      { 
 
    m="keynum"();
    if(m>=0&&m<=9||m==15||m==14)
      {
      z="m";
   Delay1ms(150);
   break;
    }
    }
     if(m>=0&&m<=9)
      {
    l++;
   }
  

    if(z==14)
      {
     goto  BEGAIN;
   }
    if(z==15)
    {

     GotoXY(0,1);
     Print(&TempBuffer[0]);
     GotoXY(9,1);
     Print("OK!!");
     Delay1ms(1000);
     break;
    }
      
     if(l==1)
      {k=z;}
     if(l==2)
      {
    k="k"*10+z;
   }
 
     if(l==3)
      {
     k="k"*10+z;
    }
    if(l==4)
    { 
    k="k"*10+z;
    }
    if(l==5)
    { 
    k="k"*10+z;
    }
     if(l==6)
    { 
    k="k"*10+z;
    }
     if(l==7)
    { 
    k="k"*10+z;
    }
     if(l==8)
    { 
    k="k"*10+z;
    }
  
     if(l>8||k>25000000)
     {
        GotoXY(0,1);
        Print("     ERROR!!      ");
     Delay1ms(500);
        goto  BEGAIN;
      }
  
   IntToStr(k,&TempBuffer[0],0);
   GotoXY(0,1);
   Print(&TempBuffer[0]);
         P2=0XF0;
   Delay1ms(150);   
    }
 FQ_UD=0;
 Freq_Adjust(k);
 while(1)
 {
 
 GotoXY(0,0);
 Print("THE PL DISPLAY");
 IntToStr(k,&TempBuffer[0],0);
 GotoXY(0,1);
 Print(&TempBuffer[0]);
        m="keynum"();
       if(m==10)
     { Delay1ms(300) ;
     if(k>=30000000){k=30000000;}
    else{ k="k"+1000;}
     }
     if(m==11)
     {Delay1ms(300) ;
      if(k<=0){k=0;}
       else{k=k-1000;}
     }
        if(m==14)
      {
   goto  BEGAIN;
   }
 
    }
}

AD9850内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合
成。可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄
存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M
递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正
弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~3
60°范围的一个相位点。

[] [返回上一页] [打 印] [收 藏]
 

上一篇文章:ad9850应用电路
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
 
关于本站- 意见反馈 - 网站导航 - 帮助 - 隐私政策 - 联系我们 - 使用条款 - 安全承诺 - 友情连接
站长QQ:39550527 Powered by: 飓风网络(电路图
Copyright 2006-2008 Elecfans.Com.电子发烧友: 粤ICP备07065979号All Rights Reserved