标题: 单片机驱动AD9850c语言程序 [打印本页]

作者: 51hei学习技术中    时间: 2016-10-17 21:13
标题: 单片机驱动AD9850c语言程序
于51单片机的AD9850控制程序。通过串行数据传输,只需四个IO口,相对并行数据传输要少7个IO。另外,通过四个独立按键设置输出频率值。如果滤波模块效果好,则输出40M正弦波波形良好.

全部代码下载:
AD9850控制程序.rar (56.46 KB, 下载次数: 80)

单片机源程序部分预览:
  1. #include <ad9850.h>

  2. //ad9850复位(串口模式)
  3. void ad9850_reset_serial()
  4. {
  5.         ad9850_w_clk=0;
  6.         ad9850_fq_up=0;
  7.         ad9850_rest=0;
  8.         ad9850_rest=1;
  9.         ad9850_rest=0;
  10.         //w_clk信号
  11.         ad9850_w_clk=0;
  12.         ad9850_w_clk=1;
  13.         ad9850_w_clk=0;
  14.         //fq_up信号
  15.         ad9850_fq_up=0;
  16.         ad9850_fq_up=1;
  17.         ad9850_fq_up=0;
  18. }

  19. //向ad9850中写命令与数据(串口)
  20. void ad9850_wr_serial(uchar w0,double frequence)
  21. {
  22.         uchar i,w;
  23.         long int y;
  24.         double x;
  25.         //计算频率的HEX值
  26.         x=4294967295/125;//适合125M晶振,如果时钟频率不为125MHZ,修改该处的频率值,单位MHz  !!!
  27.         frequence=frequence/1000000;
  28.         frequence=frequence*x;
  29.         y=frequence;
  30.         //写w4数据
  31.         w=(y>>=0);
  32.         for(i=0;i<8;i++)
  33.         {
  34.                 ad9850_bit_data=(w>>i)&0x01;
  35.                 ad9850_w_clk=1;
  36.                 ad9850_w_clk=0;
  37.         }
  38.         //写w3数据
  39.         w=(y>>8);
  40.         for(i=0;i<8;i++)
  41.         {
  42.                 ad9850_bit_data=(w>>i)&0x01;
  43.                 ad9850_w_clk=1;
  44.                 ad9850_w_clk=0;
  45.         }
  46.         //写w2数据
  47.         w=(y>>16);
  48.         for(i=0;i<8;i++)
  49.         {
  50.                 ad9850_bit_data=(w>>i)&0x01;
  51.                 ad9850_w_clk=1;
  52.                 ad9850_w_clk=0;
  53.         }
  54.         //写w1数据
  55.         w=(y>>24);
  56.         for(i=0;i<8;i++)
  57.         {
  58.                 ad9850_bit_data=(w>>i)&0x01;
  59.                 ad9850_w_clk=1;
  60.                 ad9850_w_clk=0;
  61.         }
  62.         //写w0数据
  63.         w=w0;   
  64.         for(i=0;i<8;i++)
  65.         {
  66.                 ad9850_bit_data=(w>>i)&0x01;
  67.                 ad9850_w_clk=1;
  68.                 ad9850_w_clk=0;
  69.         }
  70.         //移入始能
  71.         ad9850_fq_up=1;
  72.         ad9850_fq_up=0;
  73. }



复制代码




作者: 山瑜木    时间: 2019-12-12 16:11
好东西谢谢楼主帮我大忙!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1