找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6487|回复: 15
收起左侧

AD9850与单片机波形生成程序及设计资料下载

  [复制链接]
ID:245384 发表于 2017-11-14 10:27 | 显示全部楼层 |阅读模式
0.png 0.png

AD9850/AD9851模块说明

原理图:
QQ图片20171114200619.png
概述
=================================================
AD9850/AD9851模块是采用ADI应用最广泛的DDSAD9850AD9851)制作的模块。ADI的性能就不用多说了。模块主要参考AD9850AD9851的资料做的。
  主要功能特点:
  *  模块能够输出正弦波和方波,2个正弦波和2个方波输出。

AD9850: 0-40MHz

AD9851: 0-70MHz

频率在20-30MHz后谐波越来越大,波形会越来越不干净。
方波:     0-1MHz
  *  采用70MHz的低通滤波器,使波形的SN比更好
  *  比较器的基准输入端电压由可变电阻产生,调节该电阻可以得到不同的占空比方波
    注:在输出正弦波的情况下,接线到方波输出的IO口,直接调节蓝色的电位器可输出方波
  * AD9850模块采用125MHz的有源晶振,AD9851模块采用30MHZ的有源晶振
AD9850AD9851主要区别
  *  AD9850的时钟频率最高125MHz,AD9851的时钟频率最高180MHz。输出最高频率AD9851要比AD9850高。
  * AD9850没有6倍频,AD9851有

功能框图============================================================
1:下载对应的HEX程序
   见AD9850_1_V4_C程序文件夹
   OUT1和OUT2端能测试到对应输出1KHz信号。如需测试方波,调节可变电位器,可在方波1和方波2端测试到方波。

单片机源程序如下:
  1. //***************************************************//
  2. //函数1:           ad9851_reset()                    //
  3. //函数2:           ad9851_reset_serial()             //
  4. //函数3:           ad9851_wr_parrel(unsigned char w0,double frequence)//
  5. //函数4:           ad9851_wr_serial(unsigned char w0,double frequence)//
  6. //版本:              V1.1                            //
  7. //***************************************************//
  8. //                  子程序说明                       //
  9. //***************************************************//
  10. //函数1:  ad9851_reset()
  11. //        复位ad9851,之后为并口写入模式        
  12. //函数2:  ad9851_reset_serial()
  13. //        复位ad9851,之后为串口写入模式
  14. //函数3:  ad9851_wr_parrel(unsigned char w0,double frequence)
  15. //        并口写ad9851数据,w0为ad9851中w0的数据,frequence
  16. //        为写入的频率        
  17. //函数4:  ad9851_wr_serial(unsigned char w0,double frequence)
  18. //        串口写ad9851数据,w0为ad9851中w0的数据,frequence
  19. //        为写入的频率        
  20. //需定义的位:
  21.          //ad9851_w_clk    ;
  22.          //ad9851_fq_up    ;
  23.          //ad9851_rest     ;
  24.          //ad9851_bit_data ;
  25. //例:
  26.          //sbit ad9851_w_clk    =P2^2;
  27.          //sbit ad9851_fq_up    =P2^1;
  28.          //sbit ad9851_rest     =P2^0;
  29.          //sbit ad9851_bit_data =P1^7;
  30. //***************************************************//
  31. //                 写数据说明                        //
  32. //***************************************************//
  33. //写数据例:
  34. //       ad9851_reset()
  35. //       wr_lcd02_data(unsigned char x)
  36. //       ad9851_wr_parrel(0x01,1000)
  37. //       ad9851_wr_serial(0x01,1000)
  38. //***************************************************//
  39. //---------------------------------------------------//
  40. //                   程序                            //
  41. //---------------------------------------------------//
  42. # include <reg51.h>
  43. # include <stdio.h>
  44. # include <intrins.h>
  45. sbit ad9851_w_clk    =P2^2;  //P2.2口接AD9851的w_clk脚/PIN7
  46. sbit ad9851_fq_up    =P2^1;  //P2.1口接AD9851的fq_up脚/PIN8
  47. sbit ad9851_rest     =P2^0;  //P2.0口接AD9851的rest脚/PIN12
  48. sbit ad9851_bit_data =P1^7;  //P1.7口接AD9851的D7脚/PIN25
  49. //P1为8位数据口
  50. //***************************************************//
  51. //              ad9851复位(并口模式)                 //
  52. //---------------------------------------------------//
  53. void ad9851_reset()
  54. {
  55. ad9851_w_clk=0;
  56. ad9851_fq_up=0;
  57. //rest信号
  58. ad9851_rest=0;
  59. ad9851_rest=1;
  60. ad9851_rest=0;
  61. }
  62. //***************************************************//
  63. //              ad9851复位(并口模式)                 //
  64. //---------------------------------------------------//
  65. void ad9851_reset_serial()
  66. {
  67. ad9851_w_clk=0;
  68. ad9851_fq_up=0;
  69. //rest信号
  70. ad9851_rest=0;
  71. ad9851_rest=1;
  72. ad9851_rest=0;
  73. //w_clk信号
  74. ad9851_w_clk=0;
  75. ad9851_w_clk=1;
  76. ad9851_w_clk=0;
  77. //fq_up信号
  78. ad9851_fq_up=0;
  79. ad9851_fq_up=1;
  80. ad9851_fq_up=0;
  81. }
  82. //***************************************************//
  83. //          向ad9851中写命令与数据(并口)             //
  84. //---------------------------------------------------//
  85. void ad9851_wr_parrel(unsigned char w0,double frequence)
  86. {
  87. unsigned char w;
  88. long int y;
  89. double x;
  90. //计算频率的HEX值
  91. x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
  92. //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
  93. frequence=frequence/1000000;
  94. frequence=frequence*x;
  95. y=frequence;
  96. //写w0数据
  97. w=w0;   
  98. P1=w;      //w0
  99. ad9851_w_clk=1;
  100. ad9851_w_clk=0;
  101. //写w1数据
  102. w=(y>>24);
  103. P1=w;      //w1
  104. ad9851_w_clk=1;
  105. ad9851_w_clk=0;
  106. //写w2数据
  107. w=(y>>16);
  108. P1=w;      //w2
  109. ad9851_w_clk=1;
  110. ad9851_w_clk=0;
  111. //写w3数据
  112. w=(y>>8);
  113. P1=w;      //w3
  114. ad9851_w_clk=1;
  115. ad9851_w_clk=0;
  116. //写w4数据
  117. w=(y>>=0);
  118. P1=w;      //w4
  119. ad9851_w_clk=1;
  120. ad9851_w_clk=0;
  121. //移入始能
  122. ad9851_fq_up=1;
  123. ad9851_fq_up=0;
  124. }
  125. //***************************************************//
  126. //          向ad9851中写命令与数据(串口)             //
  127. //---------------------------------------------------//
  128. void ad9851_wr_serial(unsigned char w0,double frequence)
  129. {
  130. unsigned char i,w;
  131. long int y;
  132. double x;
  133. //计算频率的HEX值
  134. x=4294967295/180;//适合180M晶振/180为最终时钟频率(或30M六倍频)
  135. //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz  !!!
  136. frequence=frequence/1000000;
  137. frequence=frequence*x;
  138. y=frequence;
  139. //写w4数据
  140. w=(y>>=0);
  141. for(i=0;i<8;i++)
  142. {
  143. ad9851_bit_data=(w>>i)&0x01;
  144. ad9851_w_clk=1;
  145. ad9851_w_clk=0;
  146. }
  147. //写w3数据
  148. w=(y>>8);
  149. for(i=0;i<8;i++)
  150. {
  151. ad9851_bit_data=(w>>i)&0x01;
  152. ad9851_w_clk=1;
  153. ad9851_w_clk=0;
  154. }
  155. //写w2数据
  156. w=(y>>16);
  157. for(i=0;i<8;i++)
  158. {
  159. ad9851_bit_data=(w>>i)&0x01;
  160. ad9851_w_clk=1;
  161. ad9851_w_clk=0;
  162. }
  163. //写w1数据
  164. w=(y>>24);
  165. for(i=0;i<8;i++)
  166. {
  167. ad9851_bit_data=(w>>i)&0x01;
  168. ad9851_w_clk=1;
  169. ad9851_w_clk=0;
  170. }
  171. //写w0数据
  172. w=w0;   
  173. for(i=0;i<8;i++)
  174. {
  175. ad9851_bit_data=(w>>i)&0x01;
  176. ad9851_w_clk=1;
  177. ad9851_w_clk=0;
  178. }
  179. //移入始能
  180. ad9851_fq_up=1;
  181. ad9851_fq_up=0;
  182. }
  183. //***************************************************//
  184. //                   测试程序1000Hz                  //
  185. //---------------------------------------------------//
  186. main()
  187. {
  188. P0=0x00;
  189. P1=0x00;
  190. P2=0x00;
  191. P3=0x00;
  192. //---------------------------------------------------//
  193. ……………………

  194. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
AD9850模块资料 .rar (6.03 MB, 下载次数: 182)

评分

参与人数 3黑币 +60 收起 理由
liaoyx0214 + 5 回帖助人的奖励!
李文健 + 5
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2017-11-15 04:46 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:201936 发表于 2017-11-15 08:33
下载后卡巴斯基扫描显示有木马

ID:508200 发表于 2019-4-9 20:04 | 显示全部楼层
非常感谢
回复

使用道具 举报

ID:98926 发表于 2019-5-7 21:59 | 显示全部楼层
正好可以
学习学习
回复

使用道具 举报

ID:530672 发表于 2019-5-8 20:07 | 显示全部楼层
看着很齐全,下载看看。希望能解决问题。
回复

使用道具 举报

ID:419064 发表于 2019-5-13 09:29 | 显示全部楼层
AD9850与单片机波形生成程序,多谢提供宝贵资料,手头上正好有个吃灰的AD9850的模块,有空研究一下。
回复

使用道具 举报

ID:417483 发表于 2019-7-13 13:29 | 显示全部楼层
内容精致
回复

使用道具 举报

ID:596958 发表于 2019-8-7 16:04 | 显示全部楼层
知秋 2019/8/7 15:43:02 我现在需要一份STC15单片机和AD9850生成正弦波的程序
回复

使用道具 举报

ID:439556 发表于 2019-8-8 08:20 | 显示全部楼层
这个并行数据引脚接线是怎么接的?我的为什么不合适
回复

使用道具 举报

ID:598509 发表于 2019-8-9 17:58 | 显示全部楼层

非常感谢
回复

使用道具 举报

ID:511461 发表于 2019-9-21 21:07 | 显示全部楼层
那个D0~D7怎么接线的
回复

使用道具 举报

ID:651278 发表于 2019-11-28 01:08 | 显示全部楼层
好资料
回复

使用道具 举报

ID:620269 发表于 2019-12-12 17:44 | 显示全部楼层
可以实现频率程控吗?输出幅值可以调节吗?
回复

使用道具 举报

ID:649767 发表于 2019-12-14 16:43 | 显示全部楼层
请问是串行口吗
回复

使用道具 举报

ID:696066 发表于 2020-2-21 13:48 | 显示全部楼层
好资料
回复

使用道具 举报

ID:767388 发表于 2020-6-2 12:15 | 显示全部楼层
好资料
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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