久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

AD9851模塊資料 用STM32控制輸出兩路波形源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:475916 發(fā)表于 2019-7-12 23:01 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于STM32的AD9851信號源發(fā)生器。

單片機源程序如下:
  1. #include "stm32_config.h"
  2. #include "stdio.h"
  3. #include "led.h"
  4. #include "lcd.h"
  5. #include "AD9851.h"
  6. #include "key.h"
  7. #include "timer.h"
  8. #include "task_manage.h"

  9. char str[30];        //顯示緩存
  10. extern u8 _return;
  11. int main(void)
  12. {
  13.         u16 i=0;

  14.         MY_NVIC_PriorityGroup_Config(NVIC_PriorityGroup_2);        //設(shè)置中斷分組
  15.         delay_init(72);        //初始化延時函數(shù)
  16.         LED_Init();        //初始化LED接口
  17.         key_init();
  18.         initial_lcd();
  19.         LCD_Clear();
  20.         delay_ms(300);
  21.         LCD_Refresh_Gram();
  22.        
  23.         //welcome_KW();
  24.         //標(biāo)志排針插線顏色
  25.         //定時器
  26.         Timerx_Init(99,71);
  27.        
  28.         LCD_Clear();
  29. //        LCD_Show_CEStr(0,0,"B");//黑色
  30.        
  31.         AD9851_Init(ad9851_parallel, 1);
  32.         AD9851_Setfq(1000);
  33.         //ad9851_wr_parrel(0,1000);
  34.        
  35.         while(1)
  36.         {
  37.                 KeyRead();
  38.                 Set_PointFre(Keycode, 0);
  39.                 if(_return){_return=0;LCD_Refresh_Gram();}
  40.                 KEY_EXIT();
  41.         }       
  42. }
復(fù)制代碼
  1. //***************************************************//
  2. //函數(shù)1:           ad9851_reset()                    //
  3. //函數(shù)2:           ad9851_reset_serial()             //
  4. //函數(shù)3:           ad9851_wr_parrel(unsigned char w0,double frequence)//
  5. //函數(shù)4:           ad9851_wr_serial(unsigned char w0,double frequence)//
  6. //版本:              V1.1                            //
  7. //日期:             2008/12/19                      //
  8. //修改日期:         2008/12/19                      //
  9. //編寫者:         xyc5208@163.com)            //
  10. //***************************************************//
  11. //                  子程序說明                       //
  12. //***************************************************//
  13. //函數(shù)1:  ad9851_reset()
  14. //        復(fù)位ad9851,之后為并口寫入模式        
  15. //函數(shù)2:  ad9851_reset_serial()
  16. //        復(fù)位ad9851,之后為串口寫入模式
  17. //函數(shù)3:  ad9851_wr_parrel(unsigned char w0,double frequence)
  18. //        并口寫ad9851數(shù)據(jù),w0為ad9851中w0的數(shù)據(jù),frequence
  19. //        為寫入的頻率       
  20. //函數(shù)4:  ad9851_wr_serial(unsigned char w0,double frequence)
  21. //        串口寫ad9851數(shù)據(jù),w0為ad9851中w0的數(shù)據(jù),frequence
  22. //        為寫入的頻率       
  23. //需定義的位:
  24.          //ad9851_w_clk    ;
  25.          //ad9851_fq_up    ;
  26.          //ad9851_rest     ;
  27.          //ad9851_bit_data ;
  28. //例:
  29.          //sbit ad9851_w_clk    =P2^2;
  30.          //sbit ad9851_fq_up    =P2^1;
  31.          //sbit ad9851_rest     =P2^0;
  32.          //sbit ad9851_bit_data =P1^7;
  33. //***************************************************//
  34. //                 寫數(shù)據(jù)說明                        //
  35. //***************************************************//
  36. //寫數(shù)據(jù)例:
  37. //       ad9851_reset()
  38. //       wr_lcd02_data(unsigned char x)
  39. //       ad9851_wr_parrel(0x01,1000)
  40. //       ad9851_wr_serial(0x01,1000)
  41. //***************************************************//
  42. //---------------------------------------------------//
  43. //                   程序                            //
  44. //---------------------------------------------------//
  45. # include <AD9851.h>
  46. # include <stdio.h>

  47. u8 AD9851_FD=0x00; //倍頻數(shù)
  48. void (*_AD9851_Setfq)(u8 w0,double frequence);
  49. //P1為8位數(shù)據(jù)口
  50. //***************************************************//
  51. //              ad9851復(fù)位(并口模式)                 //
  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復(fù)位(口模式)                 //
  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中寫命令與數(shù)據(jù)(并口)             //
  84. //---------------------------------------------------//
  85. void ad9851_wr_parrel(u8 w0,double frequence)
  86. {
  87. u32 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數(shù)據(jù)
  97. w=w0;   
  98. AD9851_DataBus=w|(w^0xff)<<16;     //w0
  99. ad9851_w_clk=1;
  100. ad9851_w_clk=0;
  101. //寫w1數(shù)據(jù)
  102. w=(y>>24);
  103. AD9851_DataBus=w|(w^0xff)<<16;     //w0
  104. ad9851_w_clk=1;
  105. ad9851_w_clk=0;
  106. //寫w2數(shù)據(jù)
  107. w=(y>>16);
  108. AD9851_DataBus=w|(w^0xff)<<16;     //w0
  109. ad9851_w_clk=1;
  110. ad9851_w_clk=0;
  111. //寫w3數(shù)據(jù)
  112. w=(y>>8);
  113. AD9851_DataBus=w|(w^0xff)<<16;     //w0
  114. ad9851_w_clk=1;
  115. ad9851_w_clk=0;
  116. //寫w4數(shù)據(jù)
  117. w=(y>>=0);
  118. AD9851_DataBus=w|(w^0xff)<<16;     //w0
  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中寫命令與數(shù)據(jù)(串口)             //
  127. //---------------------------------------------------//
  128. void ad9851_wr_serial(u8 w0,double frequence)
  129. {
  130. unsigned char i,w;
  131. long int y;
  132. double x;
  133. //計算頻率的HEX值
  134. x=4294967295/125;//適合180M晶振/180為最終時鐘頻率(或30M六倍頻)
  135. //如果時鐘頻率不為180MHZ,修改該處的頻率值,單位MHz  !!!
  136. frequence=frequence/1000000;
  137. frequence=frequence*x;
  138. y=frequence;
  139. //寫w4數(shù)據(jù)
  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數(shù)據(jù)
  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數(shù)據(jù)
  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數(shù)據(jù)
  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數(shù)據(jù)
  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. void AD9851_IO_Init(void)
  184. {
  185.    GPIO_InitTypeDef GPIO_InitStructure ;
  186.        
  187.          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);         //使能PB,PE端口時鐘

  188.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0| GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7 ;
  189.         GPIO_Init(GPIOC ,&GPIO_InitStructure) ;
  190.        
  191.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3|GPIO_Pin_4| GPIO_Pin_6;
  192.         GPIO_Init(GPIOA ,&GPIO_InitStructure) ;

  193. }
  194. void AD9851_Setfq(double fq)
  195. {
  196.         if(ad9851_ad9850)
  197.         {
  198.                 fq *= 1.44;
  199.                 AD9851_FD = 0;
  200.         }
  201.         _AD9851_Setfq(AD9851_FD,fq);
  202. }
  203. //***************************************************//
  204. //                   測試程序1000Hz                  //
  205. //---------------------------------------------------//
  206. //輸入:mode  ad9851_parallel 并口    ad9851_serial 串口
  207. //FD:0:不倍頻 1:2倍頻
  208. void AD9851_Init(u8 mode,u8 FD)
  209. {
  210.         AD9851_IO_Init();
  211.         AD9851_DataBus=0x00|(~0x00)<<16;
  212.        
  213. //        ad9851_reset_serial();
  214. //        ad9851_wr_serial(0x00,1000000);
  215.         if(mode==ad9851_parallel){_AD9851_Setfq=ad9851_wr_parrel;ad9851_reset();}
  216.         else {_AD9851_Setfq=ad9851_wr_serial;ad9851_reset_serial();}
  217.         if(FD==1)AD9851_FD=0x01;
  218.         AD9851_Setfq(1000000);
  219. }
復(fù)制代碼


所有資料51hei提供下載:
AD9851模塊-源代碼(STM32)-資料-V0.2.zip (10.46 MB, 下載次數(shù): 180)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:282095 發(fā)表于 2019-7-13 09:44 | 只看該作者
感覺應(yīng)該蠻不錯的 贊一個
回復(fù)

使用道具 舉報

板凳
ID:421308 發(fā)表于 2019-7-13 18:45 | 只看該作者
還可以
回復(fù)

使用道具 舉報

地板
ID:435708 發(fā)表于 2019-7-13 19:10 | 只看該作者
這個應(yīng)該也兼容AD9958吧
回復(fù)

使用道具 舉報

5#
ID:574708 發(fā)表于 2019-8-5 14:34 | 只看該作者
萬分感謝,一直在找32控制的程序呢。
回復(fù)

使用道具 舉報

6#
ID:955564 發(fā)表于 2021-7-22 16:44 | 只看該作者

萬分感謝,一直在找32控制的程序呢 很不錯
回復(fù)

使用道具 舉報

7#
ID:958803 發(fā)表于 2021-8-4 13:14 來自手機 | 只看該作者
gameplayer1997 發(fā)表于 2019-8-5 14:34
萬分感謝,一直在找32控制的程序呢。

怎么連接它們兩個呢
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本视频在线播放 | aa级毛片毛片免费观看久 | 黑人粗黑大躁护士 | 久久69精品久久久久久久电影好 | 97人人澡人人爽91综合色 | 国内精品视频免费观看 | 大学生a级毛片免费视频 | 亚洲一区二区三区在线免费 | 九一视频在线观看 | 亚洲在线 | 国产精品区二区三区日本 | 一级毛片黄片 | 亚洲一区二区三区在线播放 | 毛片韩国| 亚洲国产第一页 | 亚洲国产第一页 | 日本成人免费网站 | 欧美激情国产日韩精品一区18 | 99久久精品国产一区二区三区 | 日韩在线综合网 | 国产一二区免费视频 | 国产精品s色 | 欧美亚洲国产一区二区三区 | 最新av在线网址 | 久久久久久久久久一区二区 | 日韩一级一区 | 一区二区三区四区在线视频 | 国产特一级黄色片 | 九九热在线精品视频 | 国产日韩欧美一区二区 | 国产亚洲一区二区在线观看 | 天天干天天玩天天操 | 中文字幕蜜臀 | 国产一级黄色网 | 一区二区三区亚洲视频 | 一区免费观看 | 国产精品一区二区三级 | 国产国语精品 | 天天天久久久 | 天天夜干 | 欧美成人一区二区 |