标题:
单片机驱动AD9850c语言程序
[打印本页]
作者:
51hei学习技术中
时间:
2016-10-17 21:13
标题:
单片机驱动AD9850c语言程序
于51单片机的AD9850控制程序。通过串行数据传输,只需四个IO口,相对并行数据传输要少7个IO。另外,通过四个独立按键设置输出频率值。如果滤波模块效果好,则输出40M正弦波波形良好.
0.png
(61.07 KB, 下载次数: 38)
下载附件
2016-10-17 21:12 上传
全部代码下载:
AD9850控制程序.rar
(56.46 KB, 下载次数: 80)
2016-10-17 21:13 上传
点击文件名下载附件
下载积分: 黑币 -5
单片机源程序部分预览:
#include <ad9850.h>
//ad9850复位(串口模式)
void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
//w_clk信号
ad9850_w_clk=0;
ad9850_w_clk=1;
ad9850_w_clk=0;
//fq_up信号
ad9850_fq_up=0;
ad9850_fq_up=1;
ad9850_fq_up=0;
}
//向ad9850中写命令与数据(串口)
void ad9850_wr_serial(uchar w0,double frequence)
{
uchar i,w;
long int y;
double x;
//计算频率的HEX值
x=4294967295/125;//适合125M晶振,如果时钟频率不为125MHZ,修改该处的频率值,单位MHz !!!
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
//写w4数据
w=(y>>=0);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w3数据
w=(y>>8);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w2数据
w=(y>>16);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w1数据
w=(y>>24);
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//写w0数据
w=w0;
for(i=0;i<8;i++)
{
ad9850_bit_data=(w>>i)&0x01;
ad9850_w_clk=1;
ad9850_w_clk=0;
}
//移入始能
ad9850_fq_up=1;
ad9850_fq_up=0;
}
复制代码
作者:
山瑜木
时间:
2019-12-12 16:11
好东西谢谢楼主帮我大忙!!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1