日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

9851电路程序设计

發(fā)布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9851电路程序设计 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

AD9851工作前必須對其進行初始化,AD9851上電后默認為并行通信方式,如需采用串行通信方式,上電后應將AD9851D7~D0置為二進制數(shù)XXXXX011,緊接著依次往W_CLKFQ_UD端輸入寬度約1 S的高電平脈沖就可以使AD9851工作在串行模式下。

?

?

//AVR并行驅(qū)動,數(shù)據(jù)輸出口用PA口,控制線放在PC

//端口定義

#define? clk????????? 0

#define? fq_ud???? 1

#define? rst????????? 2

unsigned char phase_word=0x00;?????????? //相位控制字,使用低5

unsigned char power_down=0x00;?? //低功耗模式

unsigned char mult=0x01;??????????????? //6倍頻是否打開

unsigned char ww[5]={0x09,0x0E,0x38,0xE3,0x8E};

unsigned long freq,set_value;

//AD9851寫數(shù)據(jù)

void write_dds(unsigned long dds)

{

?????? unsigned char i;

?????? ww[0]=0x01;????????????????????? //開啟6倍頻功能

?????? ww[0]= (phase_word<<3)|| power_down<<2 || mult;

?????? ww[1]=dds>>24;???????????????? //頻率字最高字節(jié)

?????? ww[2]=(dds>>16)&0xFF;

?????? ww[3]=(dds>>8)&0xFF;

?????? ww[4]=dds&0xFF; ??????????????????? //頻率字最低字節(jié)

?????? PORTC&=~(1<<fq_ud);??????? //FQ_UD置低

?????? PORTC&=~(1<<clk);??????????????????? //CLK置低

?????? for(i=0;i<5;i++)?????????????????? //送入5個字節(jié)的控制字

?????? {

????????????? PORTA=ww[i];

????????????? delay_us(2);

????????????? PORTC|=(1<<clk);

????????????? delay_us(2);

????????????? PORTC&=~(1<<clk);

????????????? delay_us(2);

?????? }

?????? PORTC|=(1<<fq_ud);?????????? //使能信號

?????? delay_us(3);

?????? PORTC&=~(1<<fq_ud);

}??

//寫入頻率

void write_freq(unsigned long freq)

{

?????? unsigned long dds;

?????? dds=23.860929422*freq;??????????? //頻率字計算,可進行微調(diào)

?????? write_dds(dds);

}

?

void init_dds(void)

{

PORTC|=(1<<rst); ????????????? //高電平復位

?????? delay_us(10000);???????? //延時10mS

?????? PORTC&=~(1<<rst);

?????? delay_us(10000);???????? //延時10mS

}

?

?

?

//51并行驅(qū)動,數(shù)據(jù)輸出口用PA口,控制線放在PC

//端口定義

sbit clk????????? =P2^0;

sbit fq_ud???? =P2^1;

sbit rst????????? =P2^2;

?

unsigned char phase_word=0x00;?????????? //相位控制字,使用低5

unsigned char power_down=0x00;?? //低功耗模式

unsigned char mult=0x01;??????????????? //6倍頻是否打開

unsigned char ww[5]={0x09,0x0E,0x38,0xE3,0x8E};

unsigned long freq,set_value;

//AD9851寫數(shù)據(jù)

void write_dds(unsigned long dds)

{

?????? unsigned char i;

???????????????????????????????????????????????? //控制字

?????? ww[0]= (phase_word<<3)|| power_down<<2 || mult;

?????? ww[1]=dds>>24;???????????????? //頻率字最高字節(jié)

?????? ww[2]=(dds>>16)&0xFF;

?????? ww[3]=(dds>>8)&0xFF;

?????? ww[4]=dds&0xFF; ??????????????????? //頻率字最低字節(jié)

?????? fq_ud=0;????????????? ???????????????????? //FQ_UD置低

?????? clk=0;?????????????????? ????????????? //CLK置低

?????? for(i=0;i<5;i++)???? ????????????? //送入5個字節(jié)的控制字

?????? {

????????????? P0=ww[i];

????????????? delay_us(2);

????????????? clk=1;

????????????? delay_us(2);

????????????? clk=0;

????????????? delay_us(2);

?????? }

?????? fq_ud=1;????????????? //使能信號

?????? delay_us(3);

?????? fq_ud=0;

}??

//寫入頻率

void write_freq(unsigned long freq)

{

?????? unsigned long dds;

?????? dds=23.860929422*freq;??????????? //頻率字計算,可進行微調(diào)

?????? write_dds(dds);

}

?

void init_dds(void)

{

rst=1;????????????????????????? //高電平復位

?????? delay_us(10000);???????? //延時10mS

?????? rst=0;

?????? delay_us(10000);???????? //延時10mS

}

?

//AVR串行驅(qū)動,數(shù)據(jù)輸出口用PA口,控制線放在PC

//端口定義

#define? clk????????? 0

#define? fq_ud???? 1

#define? rst????????? 2

#define? dat????????????? 3

unsigned char phase_word=0x00;?????????? //相位控制字,使用低5

unsigned char power_down=0x00;?? //低功耗模式

unsigned char mult=0x01;??????????????? //6倍頻是否打開

unsigned char ww[5]={0x09,0x0E,0x38,0xE3,0x8E};

unsigned long freq,set_value;

?

//AD9851初始化,在此之前請確認D0,D1D2的電平狀態(tài)

?

void init_dds(void)

{??

PORTC|=(1<<rst); ????????????? //高電平復位

?????? delay_us(10000);???????? //延時10mS

?????? PORTC&=~(1<<rst);

?????? delay_us(10000);???????? //延時10mS

?????? PORTC&=~(1<<clk);

?????? PORTC&=~(1<<fq_ud);

?????? delay_us(2);

?????? PORTC|=(1<<clk);????? //送入W0

?????? delay_us(2);

?????? PORTC&=~(1<<clk);

?????? delay_us(2);

?????? PORTC|=(1<<fq_ud);??? //使能

?????? delay_us(2);

?????? PORTC&=~(1<<fq_ud);

?????? delay_us(2);

}

?

//AD9851寫數(shù)據(jù)

void write_dds(unsigned long dds)

{

?????? unsigned char i,j,temp;

????????????????????????????????????????????????

?????? ww[0]=dds&0xFF; ??????????????????? //頻率字最低字節(jié)

?????? ww[1]=(dds>>8)&0xFF;

?????? ww[2]=(dds>>16)&0xFF;

?????? ww[3]=dds>>24;???????????????? //頻率字最高字節(jié)

ww[4]= (phase_word<<3)|| power_down<<2 || mult; //控制字

??????

?????? PORTC&=~(1<<fq_ud);???????????????????????????? //FQ_UD置低

?????? PORTC&=~(1<<clk);????????????????????????????????? //CLK置低

?????? for(i=0;i<5;i++)?????????????????? //送入5個字節(jié)的控制字

?????? {

????????????? temp=ww[i];

for(j=0;j<8;j++)

{

?????? PORTC&=~(1<<clk);

?????? if(temp&0x01)PORTC|=(1<<dat);

?????? else PORTC&=~(1<<dat);

?????? delay_us(2);

?????? PORTC|=(1<<clk);

?????? delay_us(2);

}

?????? }

PORTC&=~(1<<clk);

?????? PORTC|=(1<<fq_ud);?????????? //使能信號

?????? delay_us(3);

?????? PORTC&=~(1<<fq_ud);

}

?

//寫入頻率

void write_freq(unsigned long freq)

{

?????? unsigned long dds;

?????? dds=23.860929422*freq;??????????? //頻率字計算,可進行微調(diào)

?????? write_dds(dds);

}

?

?

?

?

//51串行驅(qū)動

sbit clk????????? =P2^0;

sbit fq_ud???? =P2^1;

sbit rst????????? =P2^2;

sbit dat???????? =P2^3;

?

unsigned char phase_word=0x00;?????????? //相位控制字,使用低5

unsigned char power_down=0x00;?? //低功耗模式

unsigned char mult=0x01;??????????????? //6倍頻是否打開

unsigned char ww[5]={0x09,0x0E,0x38,0xE3,0x8E};

unsigned long freq,set_value;

?

//AD9851初始化,在此之前請確認D0,D1D2的電平狀態(tài)

void init_dds(void)

{??

rst=1; ????????? //高電平復位

?????? delay_us(10000);???????? //延時10mS

?????? rst=0;

?????? delay_us(10000);???????? //延時10mS

?????? clk=0;

?????? fq_ud=0;

?????? delay_us(2);

?????? clk=1;????? ??????????????? //送入W0

?????? delay_us(2);

?????? clk=0;

?????? delay_us(2);

?????? fq_ud=1;??????????????????????????? //使能

?????? delay_us(2);

?????? fq_ud=0;

?????? delay_us(2);

}

?

//AD9851寫數(shù)據(jù)

void write_dds(unsigned long dds)

{

?????? unsigned char i,j,temp;

????????????????????????????????????????????????

?????? ww[0]=dds&0xFF; ??????????????????? //頻率字最低字節(jié)

?????? ww[1]=(dds>>8)&0xFF;

?????? ww[2]=(dds>>16)&0xFF;

?????? ww[3]=dds>>24;???????????????? //頻率字最高字節(jié)

ww[4]= (phase_word<<3)|| power_down<<2 || mult; //控制字

??????

?????? fq_ud=0;?????????????????????????????????? //FQ_UD置低

?????? clk=0;???????????????????????????????? //CLK置低

?????? for(i=0;i<5;i++)?????????????????? //送入5個字節(jié)的控制字

?????? {

????????????? temp=ww[i];

for(j=0;j<8;j++)

{

?????? clk=0;

?????? if(temp&0x01)dat=1;

?????? else dat=0;

?????? delay_us(2);

?????? clk=1;

?????? delay_us(2);

}

?????? }

clk=0;

?????? fq_ud=1;????????????? //使能信號

?????? delay_us(3);

?????? fq_ud=0;

}

//寫入頻率

void write_freq(unsigned long freq)

{

?????? unsigned long dds;

?????? dds=23.860929422*freq;??????????? //頻率字計算,可進行微調(diào)

?????? write_dds(dds);

}

?

總結

以上是生活随笔為你收集整理的9851电路程序设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。