找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7022|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

MSP430控制的DDS輸出波形為正弦波和方波c語言程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51337 發(fā)表于 2013-7-14 16:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //***************************************************//
  2. //                  子程序說明                       //
  3. //***************************************************//
  4. //函數(shù)1:  ad9850_reset()
  5. //        復(fù)位ad9850,之后為并口寫入模式        
  6. //函數(shù)2:  ad9850_reset_serial()
  7. //        復(fù)位ad9850,之后為串口寫入模式
  8. //函數(shù)3:  ad9850_wr_parrel(unsigned char w0,double frequence)
  9. //        并口寫ad9850數(shù)據(jù),w0為ad9850中w0的數(shù)據(jù),frequence
  10. //        為寫入的頻率   
  11. //函數(shù)4:  ad9850_wr_serial(unsigned char w0,double frequence)
  12. //        串口寫ad9850數(shù)據(jù),w0為ad9850中w0的數(shù)據(jù),frequence
  13. //        為寫入的頻率   
  14. //需定義的位:
  15.          //ad9850_w_clk    ;
  16.          //ad9850_fq_up    ;
  17.          //ad9850_rest     ;
  18.          //ad9850_bit_data ;
  19. //例:
  20.          //sbit ad9850_w_clk    =P2^2;
  21.          //sbit ad9850_fq_up    =P2^1;
  22.          //sbit ad9850_rest     =P2^0;
  23.          //sbit ad9850_bit_data =P1^7;
  24. //***************************************************//
  25. //                 寫數(shù)據(jù)說明                        //
  26. //***************************************************//
  27. //寫數(shù)據(jù)例:
  28. //       ad9850_reset()
  29. //       wr_lcd02_data(unsigned char x)
  30. //       ad9850_wr_parrel(0x01,1000)
  31. //       ad9850_wr_serial(0x01,1000)
  32. //***************************************************//
  33. //---------------------------------------------------//
  34. //                   程序                            //
  35. //---------------------------------------------------//
  36. # include <msp430f149.h>
  37. # include <stdio.h>

  38. #define ad9850_w_clk_High   P2OUT|=0x04
  39. #define ad9850_w_clk_Low    P2OUT&=~0x04
  40. #define ad9850_fq_up_High   P2OUT|=0x02
  41. #define ad9850_fq_up_Low    P2OUT&=~0x02
  42. #define ad9850_rest_High    P2OUT|=0x01
  43. #define ad9850_rest_Low     P2OUT&=~0x01
  44. #define ad9850_bit_data     P1OUT

  45. //***************************************************//
  46. //              ad9850復(fù)位(并口模式)                 //
  47. //---------------------------------------------------//
  48. void ad9850_reset()
  49. {
  50.   ad9850_w_clk_Low;
  51.   ad9850_fq_up_Low;
  52.   ad9850_rest_Low;
  53.   ad9850_rest_High;
  54.   ad9850_rest_Low;
  55. }
  56. //***************************************************//
  57. //              ad9850復(fù)位(并口模式)                 //
  58. //---------------------------------------------------//
  59. void ad9850_reset_serial()
  60. {
  61. ad9850_w_clk_Low;
  62. ad9850_fq_up_Low;
  63. //rest信號
  64.   ad9850_rest_Low;
  65.   ad9850_rest_High;
  66.   ad9850_rest_Low;
  67. //w_clk信號
  68. ad9850_w_clk_Low;
  69. ad9850_w_clk_High;
  70. ad9850_w_clk_Low;
  71. //fq_up信號
  72. ad9850_fq_up_Low;
  73. ad9850_fq_up_High;
  74. ad9850_fq_up_Low;
  75. }
  76. //***************************************************//
  77. //          向ad9850中寫命令與數(shù)據(jù)(并口)             //
  78. //---------------------------------------------------//
  79. void ad9850_wr_parrel(unsigned char w0,double frequence)
  80. {
  81. unsigned char w;
  82. long int y;
  83. double x;
  84. //計算頻率的HEX值
  85. x=4294967295/125;//適合125M晶振
  86. //如果時鐘頻率不為125MHZ,修改該處的頻率值,單位MHz 。!
  87. frequence=frequence/1000000;
  88. frequence=frequence*x;
  89. y=(double)frequence;
  90. //寫w0數(shù)據(jù)
  91. w=w0;   
  92. ad9850_bit_data=w;      //w0
  93. ad9850_w_clk_High;
  94. ad9850_w_clk_Low;
  95. //寫w1數(shù)據(jù)
  96. w=(y>>24);
  97. ad9850_bit_data=w;      //w1
  98. ad9850_w_clk_High;
  99. ad9850_w_clk_Low;
  100. //寫w2數(shù)據(jù)
  101. w=(y>>16);
  102. ad9850_bit_data=w;      //w2
  103. ad9850_w_clk_High;
  104. ad9850_w_clk_Low;
  105. //寫w3數(shù)據(jù)
  106. w=(y>>8);
  107. ad9850_bit_data=w;      //w3
  108. ad9850_w_clk_High;
  109. ad9850_w_clk_Low;
  110. //寫w4數(shù)據(jù)
  111. w=(y>>=0);
  112. ad9850_bit_data=w;      //w4
  113. ad9850_w_clk_High;
  114. ad9850_w_clk_Low;
  115. //移入始能
  116. ad9850_fq_up_High;
  117. ad9850_fq_up_Low;
  118. }

  119. //***************************************************//
  120. //                   測試程序1000Hz                  //
  121. //---------------------------------------------------//
  122. main()
  123. {
  124.    WDTCTL=WDTPW+WDTHOLD;
  125.    P1DIR=0XFF;
  126.    P2DIR=0XFF;
  127. //---------------------------------------------------//
  128. //并行寫1000Hz程序
  129. ad9850_reset();
  130. ad9850_wr_parrel(0x00,1);
  131. //---------------------------------------------------//
  132. while(1)
  133. {
  134. }
  135. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:51540 發(fā)表于 2013-8-22 08:40 | 只看該作者
看了很不錯!可實用!
回復(fù)

使用道具 舉報

板凳
ID:157106 發(fā)表于 2016-12-23 12:36 | 只看該作者
這要用到那幾個模塊
回復(fù)

使用道具 舉報

地板
ID:194371 發(fā)表于 2017-4-27 21:22 | 只看該作者
非常不錯!謝謝樓主。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表