找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2013|回复: 2
收起左侧

ad9850芯片的单片机例程

[复制链接]
ID:410231 发表于 2019-5-24 16:30 | 显示全部楼层 |阅读模式
最近一段时间在做电设竞赛,竞赛中用到了ad9850芯片,虽然ad9850芯片的引脚多而且功能很强,但是这块芯片的使用并不困难。lz整理了一些芯片使用的函数,以便后来者学习使用。
0.png

单片机源程序如下:
  1. #include"ad9850.h"
  2. sbit ad9850_w_clk    =P2^2;  //P2.2口接ad9850的w_clk脚/PIN7
  3. sbit ad9850_fq_up    =P2^1;  //P2.1口接ad9850的fq_up脚/PIN8
  4. sbit ad9850_rest     =P2^0;  //P2.0口接ad9850的rest脚/PIN12
  5. sbit ad9850_bit_data =P1^7;  //P1.7口接ad9850的D7脚/PIN25
  6. //P1为8位数据口
  7. //***************************************************//
  8. //              ad9850复位(并口模式)                 //
  9. //---------------------------------------------------//
  10. void ad9850_reset()
  11. {
  12. ad9850_w_clk=0;
  13. ad9850_fq_up=0;
  14. //rest信号
  15. ad9850_rest=0;
  16. ad9850_rest=1;
  17. ad9850_rest=0;
  18. }
  19. //***************************************************//
  20. //              ad9850复位(并口模式)                 //
  21. //---------------------------------------------------//
  22. void ad9850_reset_serial()
  23. {
  24. ad9850_w_clk=0;
  25. ad9850_fq_up=0;
  26. //rest信号
  27. ad9850_rest=0;
  28. ad9850_rest=1;
  29. ad9850_rest=0;
  30. //w_clk信号
  31. ad9850_w_clk=0;
  32. ad9850_w_clk=1;
  33. ad9850_w_clk=0;
  34. //fq_up信号
  35. ad9850_fq_up=0;
  36. ad9850_fq_up=1;
  37. ad9850_fq_up=0;
  38. }
  39. //***************************************************//
  40. //          向ad9850中写命令与数据(并口)             //
  41. //---------------------------------------------------//
  42. void ad9850_wr_parrel(unsigned char w0,double frequence)
  43. {
  44. unsigned char w;
  45. long int y;
  46. double x;
  47. //计算频率的HEX值
  48. x=4294967295/125;//适合125M晶振
  49. //如果时钟频率不为125MHZ,修改该处的频率值,单位MHz !!!
  50. frequence=frequence/1000000;
  51. frequence=frequence*x;
  52. y=frequence;
  53. //写w0数据
  54. w=w0;   
  55. P1=w;      //w0
  56. ad9850_w_clk=1;
  57. ad9850_w_clk=0;
  58. //写w1数据
  59. w=(y>>24);
  60. P1=w;      //w1
  61. ad9850_w_clk=1;
  62. ad9850_w_clk=0;
  63. //写w2数据
  64. w=(y>>16);
  65. P1=w;      //w2
  66. ad9850_w_clk=1;
  67. ad9850_w_clk=0;
  68. //写w3数据
  69. w=(y>>8);
  70. P1=w;      //w3
  71. ad9850_w_clk=1;
  72. ad9850_w_clk=0;
  73. //写w4数据
  74. w=(y>>=0);
  75. P1=w;      //w4
  76. ad9850_w_clk=1;
  77. ad9850_w_clk=0;
  78. //移入始能
  79. ad9850_fq_up=1;
  80. ad9850_fq_up=0;
  81. }
  82. //***************************************************//
  83. //          向ad9850中写命令与数据(串口)             //
  84. //---------------------------------------------------//
  85. void ad9850_wr_serial(unsigned char w0,double frequence)
  86. {
  87. unsigned char i,w;
  88. long int y;
  89. double x;
  90. //计算频率的HEX值
  91. x=4294967295/125;//适合125M晶振
  92. //如果时钟频率不为180MHZ,修改该处的频率值,单位MHz  !!!
  93. frequence=frequence/1000000;
  94. frequence=frequence*x;
  95. y=frequence;
  96. //写w4数据
  97. w=(y>>=0);
  98. for(i=0;i<8;i++)
  99. {
  100. ad9850_bit_data=(w>>i)&0x01;
  101. ad9850_w_clk=1;
  102. ad9850_w_clk=0;
  103. }
  104. //写w3数据
  105. w=(y>>8);
  106. for(i=0;i<8;i++)
  107. {
  108. ad9850_bit_data=(w>>i)&0x01;
  109. ad9850_w_clk=1;
  110. ad9850_w_clk=0;
  111. }
  112. //写w2数据
  113. w=(y>>16);
  114. for(i=0;i<8;i++)
  115. {
  116. ad9850_bit_data=(w>>i)&0x01;
  117. ad9850_w_clk=1;
  118. ad9850_w_clk=0;
  119. }
  120. //写w1数据
  121. w=(y>>24);
  122. for(i=0;i<8;i++)
  123. {
  124. ad9850_bit_data=(w>>i)&0x01;
  125. ad9850_w_clk=1;
  126. ad9850_w_clk=0;
  127. }
  128. //写w0数据
  129. w=w0;   
  130. for(i=0;i<8;i++)
  131. {
  132. ad9850_bit_data=(w>>i)&0x01;
  133. ad9850_w_clk=1;
  134. ad9850_w_clk=0;
  135. }
  136. //移入始能
  137. ad9850_fq_up=1;
  138. ad9850_fq_up=0;
  139. }
复制代码

所有资料51hei提供下载:
ad9850.zip (1.03 KB, 下载次数: 28)
回复

使用道具 举报

ID:552869 发表于 2019-6-2 10:34 | 显示全部楼层
哈哈,我也是,写谢分享
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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