標(biāo)題: AD9850串行與并行編程實(shí)例 [打印本頁(yè)]

作者: lichenjie    時(shí)間: 2017-11-12 16:49
標(biāo)題: AD9850串行與并行編程實(shí)例
包括AD9850串行和并行代碼所有資料51hei提供下載::
AD9850-串行.rar (46.25 KB, 下載次數(shù): 29)
ad9850-并行.rar (39.72 KB, 下載次數(shù): 23)

單片機(jī)源程序(串行)如下:
  1. # include <reg51.h>
  2. # include <stdio.h>
  3. # include <intrins.h>
  4. sbit ad9850_w_clk    =P0^2;  //P2.2口接ad9850的w_clk腳/PIN7
  5. sbit ad9850_fq_up    =P0^1;  //P2.1口接ad9850的fq_up腳/PIN8
  6. sbit ad9850_rest     =P0^0;  //P2.0口接ad9850的rest腳/PIN12
  7. sbit ad9850_bit_data =P0^3;  //P1.3口接ad9850的D7腳/PIN25
  8. sbit ad9850_w_clks    =P0^6;  //P2.6口接ad9850的w_clk腳/PIN7
  9. sbit ad9850_fq_ups    =P0^5;  //P2.5口接ad9850的fq_up腳/PIN8
  10. sbit ad9850_rests     =P0^4;  //P2.4口接ad9850的rest腳/PIN12
  11. sbit ad9850_bit_datas =P0^7;  //P1.7口接ad9850的D7腳/PIN25
  12. //***************************************************//
  13. //              ad9850復(fù)位(串口模式)                 //
  14. //---------------------------------------------------//
  15. void ad9850_reset_serial()
  16. {
  17. ad9850_w_clk=0;
  18. ad9850_fq_up=0;
  19. //rest信號(hào)
  20. ad9850_rest=0;
  21. ad9850_rest=1;
  22. ad9850_rest=0;
  23. //w_clk信號(hào)
  24. ad9850_w_clk=0;
  25. ad9850_w_clk=1;
  26. ad9850_w_clk=0;
  27. //fq_up信號(hào)
  28. ad9850_fq_up=0;
  29. ad9850_fq_up=1;
  30. ad9850_fq_up=0;
  31. }
  32. void ad9850_reset_serials()
  33. {
  34. ad9850_w_clks=0;
  35. ad9850_fq_ups=0;
  36. //rest信號(hào)
  37. ad9850_rests=0;
  38. ad9850_rests=1;
  39. ad9850_rests=0;
  40. //w_clk信號(hào)
  41. ad9850_w_clks=0;
  42. ad9850_w_clks=1;
  43. ad9850_w_clks=0;
  44. //fq_up信號(hào)
  45. ad9850_fq_ups=0;
  46. ad9850_fq_ups=1;
  47. ad9850_fq_ups=0;
  48. }
  49. //***************************************************//
  50. //          向ad9850中寫命令與數(shù)據(jù)(串口)             //
  51. //---------------------------------------------------//
  52. void ad9850_wr_serial(unsigned char w0,double frequence)
  53. {
  54. unsigned char i,w;
  55. long int y;
  56. double x;
  57. //計(jì)算頻率的HEX值
  58. x=4294967295/125;//適合125M晶振
  59. //如果時(shí)鐘頻率不為180MHZ,修改該處的頻率值,單位MHz  !。
  60. frequence=frequence/1000000;
  61. frequence=frequence*x;
  62. y=frequence;
  63. //寫w4數(shù)據(jù)
  64. w=(y>>=0);
  65. for(i=0;i<8;i++)
  66. {
  67. ad9850_bit_data=(w>>i)&0x01;
  68. ad9850_w_clk=1;
  69. ad9850_w_clk=0;
  70. }
  71. //寫w3數(shù)據(jù)
  72. w=(y>>8);
  73. for(i=0;i<8;i++)
  74. {
  75. ad9850_bit_data=(w>>i)&0x01;
  76. ad9850_w_clk=1;
  77. ad9850_w_clk=0;
  78. }
  79. //寫w2數(shù)據(jù)
  80. w=(y>>16);
  81. for(i=0;i<8;i++)
  82. {
  83. ad9850_bit_data=(w>>i)&0x01;
  84. ad9850_w_clk=1;
  85. ad9850_w_clk=0;
  86. }
  87. //寫w1數(shù)據(jù)
  88. w=(y>>24);
  89. for(i=0;i<8;i++)
  90. {
  91. ad9850_bit_data=(w>>i)&0x01;
  92. ad9850_w_clk=1;
  93. ad9850_w_clk=0;
  94. }
  95. //寫w0數(shù)據(jù)
  96. w=w0;   
  97. for(i=0;i<8;i++)
  98. {
  99. ad9850_bit_data=(w>>i)&0x01;
  100. ad9850_w_clk=1;
  101. ad9850_w_clk=0;
  102. }
  103. //移入始能
  104. ad9850_fq_up=1;
  105. ad9850_fq_up=0;
  106. }
  107. void ad9850_wr_serials(unsigned char w0,double frequence)
  108. {
  109. unsigned char i,w;
  110. long int y;
  111. double x;
  112. //計(jì)算頻率的HEX值
  113. x=4294967295/125;//適合125M晶振
  114. //如果時(shí)鐘頻率不為180MHZ,修改該處的頻率值,單位MHz  。!
  115. frequence=frequence/1000000;
  116. frequence=frequence*x;
  117. y=frequence;
  118. //寫w4數(shù)據(jù)
  119. w=(y>>=0);
  120. for(i=0;i<8;i++)
  121. {
  122. ad9850_bit_datas=(w>>i)&0x01;
  123. ad9850_w_clks=1;
  124. ad9850_w_clks=0;
  125. }
  126. //寫w3數(shù)據(jù)
  127. w=(y>>8);
  128. for(i=0;i<8;i++)
  129. {
  130. ad9850_bit_datas=(w>>i)&0x01;
  131. ad9850_w_clks=1;
  132. ad9850_w_clks=0;
  133. }
  134. //寫w2數(shù)據(jù)
  135. w=(y>>16);
  136. for(i=0;i<8;i++)
  137. {
  138. ad9850_bit_datas=(w>>i)&0x01;
  139. ad9850_w_clks=1;
  140. ad9850_w_clks=0;
  141. }
  142. //寫w1數(shù)據(jù)
  143. w=(y>>24);
  144. for(i=0;i<8;i++)
  145. {
  146. ad9850_bit_datas=(w>>i)&0x01;
  147. ad9850_w_clks=1;
  148. ad9850_w_clks=0;
  149. }
  150. //寫w0數(shù)據(jù)
  151. w=w0;   
  152. for(i=0;i<8;i++)
  153. {
  154. ad9850_bit_datas=(w>>i)&0x01;
  155. ad9850_w_clks=1;
  156. ad9850_w_clks=0;
  157. }
  158. //移入始能
  159. ad9850_fq_ups=1;
  160. ad9850_fq_ups=0;
  161. }
  162. void delay(int max)
  163. {
  164.         int i,j,k;
  165.         for(i=0;i<max;i++)
  166.         for(j=0;j<6144;j++)
  167.         k++;
  168. }
  169. //***************************************************//
  170. //                   測(cè)試程序1000Hz                  //
  171. //---------------------------------------------------//
  172. main()
  173. {
  174. ……………………

  175. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼






作者: zxy2266    時(shí)間: 2017-11-25 19:57
看來關(guān)心的不多啊,玩信號(hào)的少




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1