登录
|
立即注册
|
使用QQ帐号登录
论坛
>
51单片机
发帖
|
AD9850串行与并行编程实例
看3306
|
回1
|
收藏
楼主
ID:248641
只看他
2017-11-12 16:49
包括AD9850串行和并行代码所有资料51hei提供下载::
AD9850-串行.rar
(46.25 KB)
(下载次数: 29, 2017-11-12 16:47 上传)
下载积分: 黑币 -5
ad9850-并行.rar
(39.72 KB)
(下载次数: 23, 2017-11-12 16:47 上传)
下载积分: 黑币 -5
单片机源程序(串行)如下:
代码:
# include <reg51.h>
# include <stdio.h>
# include <intrins.h>
sbit ad9850_w_clk =P0^2; //P2.2口接ad9850的w_clk脚/PIN7
sbit ad9850_fq_up =P0^1; //P2.1口接ad9850的fq_up脚/PIN8
sbit ad9850_rest =P0^0; //P2.0口接ad9850的rest脚/PIN12
sbit ad9850_bit_data =P0^3; //P1.3口接ad9850的D7脚/PIN25
sbit ad9850_w_clks =P0^6; //P2.6口接ad9850的w_clk脚/PIN7
sbit ad9850_fq_ups =P0^5; //P2.5口接ad9850的fq_up脚/PIN8
sbit ad9850_rests =P0^4; //P2.4口接ad9850的rest脚/PIN12
sbit ad9850_bit_datas =P0^7; //P1.7口接ad9850的D7脚/PIN25
//***************************************************//
// ad9850复位(串口模式) //
//---------------------------------------------------//
void ad9850_reset_serial()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
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;
}
void ad9850_reset_serials()
{
ad9850_w_clks=0;
ad9850_fq_ups=0;
//rest信号
ad9850_rests=0;
ad9850_rests=1;
ad9850_rests=0;
//w_clk信号
ad9850_w_clks=0;
ad9850_w_clks=1;
ad9850_w_clks=0;
//fq_up信号
ad9850_fq_ups=0;
ad9850_fq_ups=1;
ad9850_fq_ups=0;
}
//***************************************************//
// 向ad9850中写命令与数据(串口) //
//---------------------------------------------------//
void ad9850_wr_serial(unsigned char w0,double frequence)
{
unsigned char i,w;
long int y;
double x;
//计算频率的HEX值
x=4294967295/125;//适合125M晶振
//如果时钟频率不为180MHZ,修改该处的频率值,单位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;
}
void ad9850_wr_serials(unsigned char w0,double frequence)
{
unsigned char i,w;
long int y;
double x;
//计算频率的HEX值
x=4294967295/125;//适合125M晶振
//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !!!
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
//写w4数据
w=(y>>=0);
for(i=0;i<8;i++)
{
ad9850_bit_datas=(w>>i)&0x01;
ad9850_w_clks=1;
ad9850_w_clks=0;
}
//写w3数据
w=(y>>8);
for(i=0;i<8;i++)
{
ad9850_bit_datas=(w>>i)&0x01;
ad9850_w_clks=1;
ad9850_w_clks=0;
}
//写w2数据
w=(y>>16);
for(i=0;i<8;i++)
{
ad9850_bit_datas=(w>>i)&0x01;
ad9850_w_clks=1;
ad9850_w_clks=0;
}
//写w1数据
w=(y>>24);
for(i=0;i<8;i++)
{
ad9850_bit_datas=(w>>i)&0x01;
ad9850_w_clks=1;
ad9850_w_clks=0;
}
//写w0数据
w=w0;
for(i=0;i<8;i++)
{
ad9850_bit_datas=(w>>i)&0x01;
ad9850_w_clks=1;
ad9850_w_clks=0;
}
//移入始能
ad9850_fq_ups=1;
ad9850_fq_ups=0;
}
void delay(int max)
{
int i,j,k;
for(i=0;i<max;i++)
for(j=0;j<6144;j++)
k++;
}
//***************************************************//
// 测试程序1000Hz //
//---------------------------------------------------//
main()
{
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
沙发
ID:198286
只看他
2017-11-25 19:57
看来关心的不多啊,玩信号的少
51黑电子论坛
Powered by
Discuz!
X3.1
首页
|
标准版
|
触屏版
|
电脑版