0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ad9854單片機程序詳細(xì)說明(ad9854結(jié)構(gòu)框圖及電路)

姚小熊27 ? 來源:網(wǎng)絡(luò)整理 ? 2018-05-17 08:32 ? 次閱讀

ad9854結(jié)構(gòu)框圖

ad9854單片機程序詳細(xì)說明(ad9854結(jié)構(gòu)框圖及電路)

如圖4-2所示,AD9854內(nèi)部包括一個具有48位相位累加器、一個可編程時鐘倍頻器、一個反sinc濾波器、兩個12位300MHzDAC,一個高速模擬比較器以及接口邏輯電路。其主要性能特點如下:

1.高達(dá)300MHz的系統(tǒng)時鐘;

2.能輸出一般調(diào)制信號,F(xiàn)SK,BPSK,PSK,CHIRP,AM等:

3.100MHz時具有80dB的信噪比:

4.內(nèi)部有4*到20*的可編程時鐘倍頻器:

5.兩個48位頻率控制字寄存器,能夠?qū)崿F(xiàn)很高的頻率分辨率。

6.兩個14位相位偏置寄存器,提供初始相位設(shè)置。

7.帶有100MHz的8位并行數(shù)據(jù)傳輸口或10MHz的串行數(shù)據(jù)傳輸口。

兩款ad9854應(yīng)用電路

電路一:

下面給出一種用AD9854開發(fā)高精度頻率信號發(fā)生器的簡易方法,開發(fā)者只需要熟悉MCS-51單片機編程即可。該系統(tǒng)具有開發(fā)周期短,開發(fā)成本低的特點,也可以作為探索AD9854功能的一種方法,它的電路原理圖見圖2。

ad9854單片機程序詳細(xì)說明(ad9854結(jié)構(gòu)框圖及電路)

系統(tǒng)主要由DDS芯片AD9854、單片機AT89C51、看門狗定時器X25045和LED顯示驅(qū)動芯片MAX7219組成。在這個系統(tǒng)中提供了8位七段LED顯示器,其中前五位為輸出頻率值,顯示范圍為00.000~99.999MHz,后三位為幅度顯示位,顯示范圍為0~999,表示幅值從零幅度到滿幅度的變化。

電路二:

ad9854單片機程序詳細(xì)說明(ad9854結(jié)構(gòu)框圖及電路)

正交信號源選擇了DDS芯片AD9854,具體實現(xiàn)電路見下圖。對AD9854進(jìn)行編程控制,使之輸出兩路幅度相同并且正交的信號,然后對輸出信號進(jìn)行濾波,使得正弦波變得更加平滑,濾波之后再把輸出峰值為512mV的信號放大2倍到1.24V。

ad9854單片機程序

//=====================================================================

// AD9854 驅(qū)動程序設(shè)計

//AD9854.c

//說明:10MHZ 有源晶振

//=====================================================================

#include 《reg52.h》

#include 《lcd1602.h》

#include 《intrins.h》

sfr P4 = 0xC0; //1111,1111 端口4

sbit KEY1 = P3^5;

sbit KEY2 = P3^4;

sbit KEY3 = P3^3;

sbit KEY4 = P3^2;

unsigned char FreqWord[6]; //6個字節(jié)頻率控制字

/*

CLK_Set為時鐘倍頻設(shè)置,可設(shè)置4~20倍倍頻,但最大不能超過300MHZ

Freq_mult_unsigned long和Freq_mult_doulle均為2的48次方除以系統(tǒng)時鐘,一個為長整形,一個為雙精度型

*/

#define CLK_Set 20

const unsigned long Freq_mult_ulong = 1407375;

const double Freq_mult_doulle = 1407374.88355328;

//**************************修改硬件時要修改的部分********************************

#define AD9854_DataBus P2

#define AD9854_AdrBus P0

sbit AD9854_RST = P3^6; //AD9854復(fù)位端口

sbit AD9854_UDCLK = P3^7; //AD9854更新時鐘

sbit AD9854_WR = P4^1; //AD9854寫使能,低有效

sbit AD9854_RD = P4^2; //AD9854讀使能,低有效

sbit AD9854_FDATA = P4^3; //AD9854 FSK,PSK控制

sbit AD9854_OSK = P4^4; //AD9854 OSK控制端

unsigned char flag = 1;

unsigned int fc = 1000;

unsigned long LFerq = 750;

unsigned long HFerq = 1250;

void AD9854_WR_Byte(unsigned char addr,unsigned char dat);

void AD9854_Init(void);

void Freq_convert(long Freq);

void AD9854_InitFSK(void);

void AD9854_SetFSK(unsigned long Freq1,unsigned long Freq2);

//void delay (unsigned int us);

void UpDisplay()

{

unsigned char disbuf[5];

LCD_Write_String(0, 0, “BaseFerq M”);

LCD_Write_String(0, 1, “Now Ferq M”);

disbuf[0] = fc / 1000 + ‘0’;

disbuf[1] = ‘?!?

disbuf[2] = fc % 1000 / 100 + ‘0’;

disbuf[3] = fc % 100 / 10 + ‘0’;

disbuf[4] = fc % 10 + ‘0’;

disbuf[5] = 0;

LCD_Write_String(9, 0, disbuf);

disbuf[0] = HFerq / 1000 + ‘0’;

disbuf[1] = ‘?!?

disbuf[2] = HFerq % 1000 / 100 + ‘0’;

disbuf[3] = HFerq % 100 / 10 + ‘0’;

disbuf[4] = HFerq % 10 + ‘0’;

disbuf[5] = 0;

LCD_Write_String(9, 1, disbuf);

}

void DownDisplay()

{

unsigned char disbuf[5];

LCD_Write_String(0, 0, “BaseFerq M”);

LCD_Write_String(0, 1, “Now Ferq M”);

disbuf[0] = fc / 1000 + ‘0’;

disbuf[1] = ‘。’;

disbuf[2] = fc % 1000 / 100 + ‘0’;

disbuf[3] = fc % 100 / 10 + ‘0’;

disbuf[4] = fc % 10 + ‘0’;

disbuf[5] = 0;

LCD_Write_String(9, 0, disbuf);

disbuf[0] = LFerq / 1000 + ‘0’;

disbuf[1] = ‘?!?

disbuf[2] = LFerq % 1000 / 100 + ‘0’;

disbuf[3] = LFerq % 100 / 10 + ‘0’;

disbuf[4] = LFerq % 10 + ‘0’;

disbuf[5] = 0;

LCD_Write_String(9, 1, disbuf);

}

void AD9854_SetSine(unsigned long Freq,unsigned int Shape)

{

unsigned char count;

unsigned char Adress;

Adress = 0x04; //選擇頻率控制字地址的初值

Freq_convert(Freq); //頻率轉(zhuǎn)換

for(count=6;count》0;) //寫入6字節(jié)的頻率控制字

{

AD9854_WR_Byte(Adress++,F(xiàn)reqWord[--count]);

}

AD9854_WR_Byte(0x21,Shape》》8); //設(shè)置I通道幅度

AD9854_WR_Byte(0x22,(unsigned char)(Shape&0xff));

AD9854_WR_Byte(0x23,Shape》》8); //設(shè)置Q通道幅度

AD9854_WR_Byte(0x24,(unsigned char)(Shape&0xff));

AD9854_UDCLK=1; //更新AD9854輸出

AD9854_UDCLK=0;

}

void main()

{

LCD_Init();

LCD_Clear();

/*LCD_Write_String(0,0,“BaseFerq 0.875 M”);

LCD_Write_String(0,1,“Now Ferq 1.125 M”);*/

UpDisplay();

AD9854_Init();

AD9854_SetSine(HFerq * 1000,4000);

// AD9854_SetSine(1000000,4000);

// while(1);

// AD9854_InitFSK();

//

// AD9854_SetFSK(HFerq * 1000, LFerq * 1000);

// AD9854_SetFSK(1000000,1000000);

// AD9854_FDATA = 1;

// while(1);

while(1)

{

if(!KEY1)

{

if (flag == 1)

{

AD9854_SetSine(0,0);

//AD9854_InitFSK();

flag = 0;

}

else

{

// AD9854_InitFSK();

// AD9854_SetFSK(HFerq * 1000, LFerq * 1000);

AD9854_SetSine(HFerq * 1000,4000);

flag = 1;

}

while (!KEY1);

}

if (flag == 1)

{

if (!KEY2)

{

AD9854_SetSine(0,0);

fc += 100;

if (fc == 7900) fc = 7800;

LFerq = fc * 3 / 4;

HFerq = fc * 5 / 4;

UpDisplay();

AD9854_SetSine(HFerq * 1000,4000);

// AD9854_InitFSK();

// AD9854_SetFSK(HFerq * 1000, LFerq * 1000);

while (!KEY2);

}

if (!KEY3)

{

AD9854_SetSine(0,0);

fc -= 100;

if (fc == 300) fc = 400;

LFerq = fc * 3 / 4;

HFerq = fc * 5 / 4;

UpDisplay();

AD9854_SetSine(HFerq * 1000,4000);

// AD9854_InitFSK();

// AD9854_SetFSK(HFerq * 1000, LFerq * 1000);

while (!KEY3);

}

if (!KEY4)

{

//AD9854_FDATA = 1;

AD9854_SetSine(LFerq * 1000,4000);

DownDisplay();

while (!KEY4);

AD9854_SetSine(HFerq * 1000,4000);

//AD9854_FDATA = 0;

UpDisplay();

}

}

}

}

//====================================================================================

//函數(shù)名稱:void AD9854_WR_Byte(unsigned char addr,unsigned char dat)

//函數(shù)功能:AD9854并行口寫入數(shù)據(jù)

//入口參數(shù):addr 6位地址

// dat 寫入的數(shù)據(jù)

//出口參數(shù):無

//====================================================================================

void AD9854_WR_Byte(unsigned char addr,unsigned char dat)

{

AD9854_AdrBus = (addr&0x3f) | (AD9854_AdrBus&0xc0);

AD9854_DataBus = dat;

AD9854_WR = 0;

AD9854_WR = 1;

}

//====================================================================================

//函數(shù)名稱:void AD9854_Init(void)

//函數(shù)功能:AD9854初始化

//入口參數(shù):無

//出口參數(shù):無

//====================================================================================

void AD9854_Init(void)

{

AD9854_WR=1;//將讀、寫控制端口設(shè)為無效

AD9854_RD=1;

AD9854_UDCLK=0;

AD9854_RST=1; //復(fù)位AD9854

AD9854_RST=0;

AD9854_WR_Byte(0x1d,0x10); //關(guān)閉比較器

AD9854_WR_Byte(0x1e,CLK_Set); //設(shè)置系統(tǒng)時鐘倍頻

AD9854_WR_Byte(0x1f,0x00); //設(shè)置系統(tǒng)為模式0,由外部更新

AD9854_WR_Byte(0x20,0x60); //設(shè)置為可調(diào)節(jié)幅度,取消插值補償

AD9854_UDCLK=1; //更新AD9854輸出

AD9854_UDCLK=0;

}

//====================================================================================

//函數(shù)名稱:void Freq_convert(long Freq)

//函數(shù)功能:正弦信號頻率數(shù)據(jù)轉(zhuǎn)換

//入口參數(shù):Freq 需要轉(zhuǎn)換的頻率,取值從0~SYSCLK/2

//出口參數(shù):無 但是影響全局變量FreqWord[6]的值

//說明: 該算法位多字節(jié)相乘算法,有公式FTW = (Desired Output Frequency × 2N)/SYSCLK

// 得到該算法,其中N=48,Desired Output Frequency 為所需要的頻率,即Freq,SYSCLK

// 為可編程的系統(tǒng)時鐘,F(xiàn)TW為48Bit的頻率控制字,即FreqWord[6]

//====================================================================================

void Freq_convert(long Freq)

{

unsigned long FreqBuf;

unsigned long Temp=Freq_mult_ulong;

unsigned char Array_Freq[4]; //將輸入頻率因子分為四個字節(jié)

Array_Freq[0]=(unsigned char)Freq;

Array_Freq[1]=(unsigned char)(Freq》》8);

Array_Freq[2]=(unsigned char)(Freq》》16);

Array_Freq[3]=(unsigned char)(Freq》》24);

FreqBuf=Temp*Array_Freq[0];

FreqWord[0]=FreqBuf;

FreqBuf》》=8;

FreqBuf+=(Temp*Array_Freq[1]);

FreqWord[1]=FreqBuf;

FreqBuf》》=8;

FreqBuf+=(Temp*Array_Freq[2]);

FreqWord[2]=FreqBuf;

FreqBuf》》=8;

FreqBuf+=(Temp*Array_Freq[3]);

FreqWord[3]=FreqBuf;

FreqBuf》》=8;

FreqWord[4]=FreqBuf;

FreqWord[5]=FreqBuf》》8;

}

//====================================================================================

//函數(shù)名稱:void AD9854_InitFSK(void)

//函數(shù)功能:AD9854的FSK初始化

//入口參數(shù):無

//出口參數(shù):無

//====================================================================================

void AD9854_InitFSK(void)

{

AD9854_WR=1; //將讀、寫控制端口設(shè)為無效

AD9854_RD=1;

AD9854_UDCLK=0;

AD9854_RST=1; //復(fù)位AD9854

AD9854_RST=0;

AD9854_WR_Byte(0x1d,0x10); //關(guān)閉比較器

AD9854_WR_Byte(0x1e,CLK_Set); //設(shè)置系統(tǒng)時鐘倍頻

AD9854_WR_Byte(0x1f,0x02); //設(shè)置系統(tǒng)為模式1,由外部更新

AD9854_WR_Byte(0x20,0x60); //設(shè)置為可調(diào)節(jié)幅度,取消插值補償

AD9854_UDCLK=1; //更新AD9854輸出

AD9854_UDCLK=0;

}

//====================================================================================

//函數(shù)名稱:void AD9854_SetFSK(unsigned long Freq1,unsigned long Freq2)

//函數(shù)功能:AD9854的FSK設(shè)置

//入口參數(shù):Freq1 FSK頻率1

// Freq2 FSK頻率2

//出口參數(shù):無

//====================================================================================

void AD9854_SetFSK(unsigned long Freq1,unsigned long Freq2)

{

unsigned char count=6;

unsigned char Adress1,Adress2;

const unsigned int Shape=4000; //幅度設(shè)置。 為12 Bit,取值范圍為(0~4095)

Adress1=0x04; //選擇頻率控制字1地址的初值

Adress2=0x0a; //選擇頻率控制字2地址的初值

……………………

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 信號發(fā)生器
    +關(guān)注

    關(guān)注

    28

    文章

    1443

    瀏覽量

    108603
  • AD9854
    +關(guān)注

    關(guān)注

    12

    文章

    50

    瀏覽量

    28061
收藏 人收藏

    評論

    相關(guān)推薦

    很好的AD9854程序

    `很好的AD9854程序`
    發(fā)表于 08-30 11:54

    如何判斷AD9854芯片

    又重新編了一個小程序測試了一下FPGA,結(jié)果可以產(chǎn)生正常的信號,初步懷疑AD9854芯片壞了,可是我不知道如何判斷這個芯片的好壞,請問有什么辦法可以測試一下這個芯片的好壞嗎?謝謝您能熱心的給我解答!
    發(fā)表于 11-08 19:05

    AD9854產(chǎn)生正交信號的程序分享

    剛買了AD9854芯片,需用單片機控制產(chǎn)生正交信號,求大神給個程序
    發(fā)表于 10-31 15:28

    AD9854及其在直擴發(fā)射中的應(yīng)用

    AD9854是美國Analog Device公司生產(chǎn)的一種新型DDS芯片,該器件內(nèi)含48位頻率累加器、48位相位累加器、正余弦波形表、12位正交數(shù)模轉(zhuǎn)換器以及調(diào)制和控制電路,文中介紹了AD9854
    發(fā)表于 04-25 15:54 ?45次下載

    DDS工作原理及基于AD9854的信號發(fā)生器的設(shè)計

    介紹了用數(shù)字方式實現(xiàn)頻率合成技術(shù)的基本原理和 DDS 芯片 AD9854 的內(nèi)部結(jié)構(gòu)及工作模式。設(shè)計了一種采用單片機控制 AD9854 為核心的信號發(fā)生器, 它具有輸出信號波形種類多、
    發(fā)表于 11-16 14:49 ?46次下載
    DDS工作原理及基于<b class='flag-5'>AD9854</b>的信號發(fā)生器的設(shè)計

    ad9854中文資料匯總(ad9854引腳圖及功能_內(nèi)部結(jié)構(gòu)及應(yīng)用電路

    本文首先介紹了AD9854特征與內(nèi)部結(jié)構(gòu)框圖,其次介紹了AD9854引腳功能和AD9854的編程,最后介紹了兩款
    發(fā)表于 05-16 15:17 ?2.5w次閱讀
    <b class='flag-5'>ad9854</b>中文資料匯總(<b class='flag-5'>ad9854</b>引腳圖及功能_內(nèi)部<b class='flag-5'>結(jié)構(gòu)</b>及應(yīng)用<b class='flag-5'>電路</b>)

    基于AD9854產(chǎn)生MSK調(diào)制信號詳細(xì)說明

    AD9854數(shù)字合成器是高集成度的器件。本文首先介紹了AD9854的特征,其次介紹了AD9854構(gòu)成的信號發(fā)生電路,最后介紹了AD9854產(chǎn)
    發(fā)表于 05-16 15:50 ?4824次閱讀
    基于<b class='flag-5'>AD9854</b>產(chǎn)生MSK調(diào)制信號<b class='flag-5'>詳細(xì)說明</b>

    16位單片機AD9854控制的探討

    本文首先介紹了AD9854的優(yōu)勢和特點,其次介紹了AD9854高精度頻率信號發(fā)生器的電路圖,最后詳細(xì)介紹了16位單片機
    的頭像 發(fā)表于 05-16 16:16 ?6584次閱讀
    16位<b class='flag-5'>單片機</b>對<b class='flag-5'>AD9854</b>控制的探討

    STM32的AD9854 DDS模塊調(diào)試總結(jié)

    本文首先介紹了DDS的基本原理和特點,其次介紹了DDS芯片AD9854的概念,最后詳細(xì)介紹了STM32的AD9854 DDS模塊調(diào)試經(jīng)驗總結(jié)。
    發(fā)表于 05-16 16:43 ?1.9w次閱讀
    STM32的<b class='flag-5'>AD9854</b> DDS模塊調(diào)試總結(jié)

    ad9854應(yīng)用電路圖大全(五款ad9854信號發(fā)生/頻率發(fā)生器/正交信號源電路

    本文介紹了五款ad9854的應(yīng)用電路圖。其中包括了ad9854信號發(fā)生電路ad9854高精度頻率發(fā)生器、
    發(fā)表于 05-16 17:33 ?9386次閱讀
    <b class='flag-5'>ad9854</b>應(yīng)用<b class='flag-5'>電路</b>圖大全(五款<b class='flag-5'>ad9854</b>信號發(fā)生/頻率發(fā)生器/正交信號源<b class='flag-5'>電路</b>)

    stm32驅(qū)動ad9854程序分享_ad9854構(gòu)成信號發(fā)生器電路

    AD9854數(shù)字合成器是高集成度的器件。本文首先介紹了ad9854優(yōu)勢和特點,其次介紹了ad9854構(gòu)成的信號發(fā)生器電路,最后分享了stm32驅(qū)動a
    的頭像 發(fā)表于 05-17 09:23 ?1.6w次閱讀
    stm32驅(qū)動<b class='flag-5'>ad9854</b><b class='flag-5'>程序</b>分享_<b class='flag-5'>ad9854</b>構(gòu)成信號發(fā)生器<b class='flag-5'>電路</b>

    基于FPGA控制AD9854產(chǎn)生正弦波

    本文首先介紹了ad9854的工作原理,其次介紹了兩款AD9854應(yīng)用電路圖,最后介紹了基于FPGA控制AD9854產(chǎn)生正弦波。
    發(fā)表于 05-17 09:53 ?6834次閱讀
    基于FPGA控制<b class='flag-5'>AD9854</b>產(chǎn)生正弦波

    AD9854的FPGA程序免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是AD9854的FPGA程序免費下載。
    發(fā)表于 11-16 08:00 ?22次下載

    AD9854參考代碼

    AD9854參考代碼
    發(fā)表于 03-18 11:07 ?42次下載
    <b class='flag-5'>AD9854</b>參考代碼

    AD9854/AD9852評估板說明

    AD9854/AD9852評估板說明
    發(fā)表于 05-11 14:31 ?15次下載
    <b class='flag-5'>AD9854</b>/AD9852評估板<b class='flag-5'>說明</b>