找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2053|回复: 0
打印 上一主题 下一主题
收起左侧

MSP430单片机AD9851 AD9850源码

[复制链接]
跳转到指定楼层
楼主
ID:595716 发表于 2019-8-5 19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DDS的应用

单片机源程序如下:
  1. #include <msp430x14x.h>
  2. /**********定义w_clk***********************************************************/
  3. #define  W_CLK_PORT  P3OUT
  4. #define  W_CLK_DIR   P3DIR
  5. #define  W_CLK_BIT   BIT5

  6. #define  W_CLK_HIGH   W_CLK_PORT |= W_CLK_BIT    //w_ckl高
  7. #define  W_CLK_LOW    W_CLK_PORT &=~ W_CLK_BIT //w_clk 低


  8. /**********定义fq_up***********************************************************/
  9. #define  FQ_UP_PORT P3OUT
  10. #define  FQ_UP_DIR  P3DIR
  11. #define  FQ_UP_BIT  BIT6

  12. #define  FQ_UP_HIGH FQ_UP_PORT |=FQ_UP_BIT    //FQ_UP高
  13. #define  FQ_UP_LOW  FQ_UP_PORT &=~FQ_UP_BIT   //FQ_UP 低

  14. /**********定义rest***********************************************************/
  15. #define  REST_PORT P3OUT
  16. #define  REST_DIR  P3DIR
  17. #define  REST_BIT   BIT7

  18. #define  REST_HIGH  REST_PORT |=REST_BIT     //w_ckl高
  19. #define  REST_LOW   REST_PORT &=~REST_BIT   //w_clk 低


  20. int  table[5]={100,300,1000,3000,10000};


  21. /*******************************************
  22. 函数名称:delay
  23. 功    能:延时约 z us的时间
  24. 参    数:z
  25. 返回值  :无
  26. ********************************************/
  27. void delay(unsigned int z)
  28. {
  29.     unsigned char i;
  30.    
  31.         for(i = 0;i < z;i++)
  32.           _NOP();
  33. }       



  34. /*******************************************
  35. 函数名称: ad9850_Init
  36. 功    能: ad9850初始化
  37. 参    数:无
  38. 返回值  :无
  39. ********************************************/

  40. void ad9850_Init(void)
  41. {
  42.   P3DIR|=BIT5+BIT6+BIT7;
  43.   P1DIR=0xFF;
  44.   P1OUT=0x00;
  45. }



  46. /*******************************************
  47. 函数名称: ad9850_Reset
  48. 功    能: ad9850复位(并口模式)
  49. 参    数:无
  50. 返回值  :无
  51. ********************************************/

  52. void ad9850_Reset(void)
  53. {
  54.    W_CLK_LOW;
  55.    FQ_UP_LOW ;
  56.   //reset 信号
  57.     REST_LOW;
  58.     _NOP();
  59.     REST_HIGH;
  60.     _NOP();
  61.     REST_LOW;
  62.     _NOP();
  63. }

  64. /*******************************************
  65. 函数名称: ad9850_wr_parrel
  66. 功    能: w0,frequence --频率
  67. 参    数:无
  68. 返回值  :无
  69. ********************************************/


  70. void ad9850_Wr_parrel(unsigned char w0,double frequence)
  71. {
  72.     unsigned char w;
  73.     long int y;
  74.     double x;
  75.     //计算频率的HEX值
  76.     x=4294967295/125;//适合125M晶振
  77.     //如果时钟频率不为125MHZ,修改该处的频率值,单位MHz !!!
  78.     frequence=frequence/1000000;
  79.     frequence=frequence*x;
  80.     y=frequence;
  81.     //写w0数据
  82.     w=w0;   
  83.     P1OUT=w;      //w0
  84.     W_CLK_HIGH;
  85.     _NOP();
  86.     W_CLK_LOW ;
  87.     _NOP();
  88.     //写w1数据
  89.     w=(y>>24);
  90.     P1OUT=w;      //w1
  91.     W_CLK_HIGH;
  92.     _NOP();
  93.     W_CLK_LOW;
  94.     _NOP();
  95.     //写w2数据
  96.     w=(y>>16);
  97.     P1OUT=w;      //w2
  98.     W_CLK_HIGH;
  99.     _NOP();
  100.     W_CLK_LOW;
  101.     _NOP();
  102.     //写w3数据
  103.     w=(y>>8);
  104.     P1OUT=w;      //w3
  105.     W_CLK_HIGH;
  106.     _NOP();
  107.     W_CLK_LOW;
  108.     _NOP();
  109.     //写w4数据
  110.     w=(y>>=0);
  111.     P1OUT=w;      //w4
  112.     W_CLK_HIGH;
  113.     _NOP();
  114.     W_CLK_LOW;
  115.     _NOP();
  116.    
  117.     //移入始能
  118.     FQ_UP_HIGH;
  119.     _NOP();
  120.     FQ_UP_LOW;
  121.     _NOP();
  122. }
复制代码

所有资料51hei提供下载:
DDS.7z (7.63 MB, 下载次数: 12)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表