專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

AD9850(DDS)驅(qū)動(dòng)程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年09月18日   【字體:
//串行時(shí)序

#include <reg51.h>
sbit ad9850_fq_up    =P1^1;  //接ad9850的fq_up腳
sbit ad9850_bit_data =P1^2;  //接ad9850的D7腳
sbit ad9850_w_clk    =P1^3;  //接ad9850的w_clk腳
//***************************************************//
//          向ad9850中寫(xiě)命令(串口)             //
//---------------------------------------------------//
void ad9850_wr_com(unsigned char w, double frequence)
{
unsigned char i;
unsigned long int M;
//計(jì)算頻率值
frequence=frequence*85.89934592+0.5; //適合50M晶振  f=fclk*M/2^32即M=f*2^32/fclk
M=frequence;        //頻率控制字
ad9850_w_clk=0;       //初始化 
ad9850_fq_up=0;

//寫(xiě)頻率控制字
for(i=0;i<32;i++)       //連續(xù)寫(xiě)入32位頻率控制字
{
ad9850_w_clk=0;
ad9850_bit_data=(bit)((M>>i)&0x0001);
ad9850_w_clk=1;         //上升沿寫(xiě)入數(shù)據(jù)
}
//寫(xiě)相位控制字  
for(i=0;i<8;i++)        //需要w<=32  相位有180、90、45、22.5、11.25以及它們的組合。
{
ad9850_w_clk=0;
ad9850_bit_data=(bit)(w>>i)&0x01;
ad9850_w_clk=1;         //上升沿寫(xiě)入數(shù)據(jù)
}
//移入始能 
ad9850_fq_up=0;       
ad9850_fq_up=1;         //上升沿將40位數(shù)一次性打入數(shù)據(jù)寄存器
}
void main()
{
ad9850_wr_com(0,1000000);    
while(1);
}

//該芯片使用簡(jiǎn)單,新手可能困惑于相位,如無(wú)特殊情況相位設(shè)置為0即可,如需參考不明白處可留言。
關(guān)閉窗口

相關(guān)文章