找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4337|回复: 1
收起左侧

单片机驱动AD9850c语言程序

[复制链接]
ID:140725 发表于 2016-10-17 21:13 | 显示全部楼层 |阅读模式
于51单片机的AD9850控制程序。通过串行数据传输,只需四个IO口,相对并行数据传输要少7个IO。另外,通过四个独立按键设置输出频率值。如果滤波模块效果好,则输出40M正弦波波形良好.
0.png
全部代码下载:
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. }



复制代码



回复

使用道具 举报

ID:620269 发表于 2019-12-12 16:11 | 显示全部楼层
好东西谢谢楼主帮我大忙!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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