找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6133|回复: 6
打印 上一主题 下一主题
收起左侧

AD9834信号发生器程序,按键设置频率 AD603放大

[复制链接]
跳转到指定楼层
楼主
AD9834信号发生器程序,按键设置频率,输出波形和幅度增益,用nokia5110液晶显示,增益是通过DA控制AD603对AD9834的输出进行程控放大。界面效果好。程序模块化,方便移植,学习.


全部完整代码下载:
AD9834.rar (66.99 KB, 下载次数: 130)

单片机源程序(部分预览):
  1. #include<common.h>
  2. #include<ad9834.h>

  3. /*****************************************************  
  4. AD9834波形产生程序  
  5. *****************************************************/   
  6.   

  7. /**************************  
  8. 发送控制字  
  9. **************************/   
  10. void Send_Con(uint Con_word)   
  11. {   
  12.    uchar i;   
  13.    FSYNC =0;                              //低电平使数据有效
  14.    for(i=0;i<16;i++)              //传输16位控制字
  15.    {   
  16.       SDATA =Con_word&0x8000;   //最高位不变,最高位赋给SDATA
  17.       Con_word<<=1;                           //控制字左移一位,准备下一次
  18.       SCLK =0;                                   //产生下降沿,传输SDATA
  19.       SCLK =1;   
  20.    }   
  21.    FSYNC =1;                                    //高电平,无效
  22. }   
  23.    
  24. /****************************  
  25. 发送频率字  
  26. ****************************/   
  27. void Send_Freq(uint Freq_word)   
  28. {   
  29.    uchar i;     
  30.    FSYNC =0;                              //低电平使数据有效
  31.    for(i=0;i<16;i++)              //传输16位频率字
  32.    {   
  33.       SDATA =Freq_word&0x8000;  //最高位不变,最高位赋给SDATA
  34.       Freq_word<<=1;                           //频率字左移一位,准备下一次
  35.       SCLK =0;                                   //产生下降沿,传输SDATA
  36.       SCLK =1;   
  37.    }   
  38.    FSYNC =1;                                    //高电平,无效
  39. }   
  40.    
  41. /*****************************  
  42. 发送相位字  
  43. 注:根据情况可设定入口参数,设置相位  
  44. *****************************/   
  45. void Send_Phase()   
  46. {   
  47.    Send_Con(0xC000);   //设置初相位为0   
  48. }   
  49.    
  50.    
  51. /*******************************************************  
  52. 设置频率值   
  53. Freq_value(value)=Freq_data(data)*FCLK/2^28  
  54. 2^28=268435456=0x10000000  
  55. *******************************************************/   
  56. void writing_Freq(uchar freq_number, ulong Freq_value)   
  57. {  
  58.     ulong FREQREG = (ulong)(268435456.0/FCLK*Freq_value);
  59.    
  60.     uint LSB_D = (uint)FREQREG;
  61.     uint MSB_D = (uint)(FREQREG>>14);
  62.    
  63.     if(freq_number == FREQ_0)
  64.     {
  65.         LSB_D &= ~(1U<<15);
  66.         LSB_D |= 1<<14;
  67.         MSB_D &= ~(1U<<15);
  68.         MSB_D |= 1<<14;
  69.     }
  70.     else
  71.     {
  72.         LSB_D &= ~(1<<14);
  73.         LSB_D |= 1U<<15;
  74.         MSB_D &= ~(1<<14);
  75.         MSB_D |= 1U<<15;
  76.     }
  77.    
  78.     Send_Freq(LSB_D);
  79.     Send_Freq(MSB_D);
  80.      
  81. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:194533 发表于 2017-5-8 12:37 | 只看该作者
请问有仿真电路图吗
回复

使用道具 举报

板凳
ID:194533 发表于 2017-5-8 12:38 | 只看该作者
有仿真电路图吗
回复

使用道具 举报

地板
ID:205335 发表于 2017-5-27 10:54 | 只看该作者
请问有仿真电路图吗
回复

使用道具 举报

5#
ID:296658 发表于 2018-3-25 22:04 | 只看该作者
15927493959 发表于 2017-5-8 12:37
**** 作者被禁止或删除 内容自动屏蔽 ****

有仿真电路图吗
回复

使用道具 举报

6#
ID:328502 发表于 2018-5-14 18:27 | 只看该作者
你好,想请问一下有ad9834信号发生器的仿真电路图吗
回复

使用道具 举报

7#
ID:442274 发表于 2021-4-24 11:48 | 只看该作者
学习学习 确实需要由硬件连接最好
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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