AD9850是AD公司生產(chǎn)的最高時鐘為125 MHz、采用先進的CMOS技術(shù)的直接頻率合成器,主要由可編程DDS系統(tǒng)、高性能數(shù)模變換器(DAC)和高速比較器3部分構(gòu)成,能實現(xiàn)全數(shù)字編程控制的頻率合成。
AD9850采用直接數(shù)字合成(DDS)技術(shù),內(nèi)含可編程DDS 系統(tǒng)和高速比較器,可實現(xiàn)全數(shù)字編程控制的頻率合成。可編程DDS系統(tǒng)的核心是相位累加器,由一個加法器和一個N位相位寄存器組成,N 一般為24~32。每來一個外部參考時鐘,相位寄存器便以步長M遞加。相位寄存器的輸出與相位控制字相加后可輸入到正弦查詢表地址上。
正原理框圖弦查詢表包含一個正弦波周期的數(shù)字幅度信息,每一個地址對應(yīng)正弦波中0°~360°范圍的一個相位點。查詢表把輸入地址的相位信息映射成正弦波幅度信號,然后驅(qū)動DAC 輸出模擬量。
單片機控制AD9850的數(shù)字信號發(fā)生器C51程序 //-----------------------函數(shù)聲明,變量定義
------------------------------ #include 《reg51.h》 #include 《intrins.h》 #include《ABSACC.H》 //-----------------------定義管腳
---------------------------------------- #define data_OUT P1
sbit FQ_UD=P3^0; //AD9850信號更新申請 sbit W_CLK=P3^1; //寫控制字時鐘 unsigned char CON_word[5];
//Word data[7] data[6] data[5] data[4] data[3] data[2] data[1] data[0]
//W0 Phase b Phase b3 Phase b2 Phase b1 Phase b0 Power Down Control Control
//W1 Freq-b31 Freq-b30 Freq-b29 Freq-b28 Freq-b27 Freq-b26 Freq-b25 Freq-b24
//W2 Freq-b23 Freq-b22 Freq-b21 Freq-b20 Freq-b19 Freq-b18 Freq-b17 Freq-b16
//W3 Freq-b15 Freq-b14 Freq-b13 Freq-b12 Freq-b11 Freq-b10 Freq-b9 Freq-b8
//W4 Freq-b7 Freq-b6 Freq-b5 Freq-b4 Freq-b3 Freq-b2
//-------------------------------------------------------------------------------------------------- // 函數(shù)名稱: delay
// 入口參數(shù): N
// 函數(shù)功能:延時子程序,實現(xiàn)(16*N+24)us的延時
// 系統(tǒng)采用11.0592MHz的時鐘時,延時滿足要求,其它情況需要改動 //-------------------------------------------------------------------------------------------------- void delay(unsigned int N) { int i;
for(i=0;i《N;i++); }
//-------------------------------------------------------------------------------------------------- // 函數(shù)名稱: WRITE_AD9850 // 函數(shù)功能: 將控制字寫入AD9850
//-------------------------------------------------------------------------------------------------- void WRITE_AD9850(void) {
unsigned char i; FQ_UD=0; W_CLK=0; delay(0);
CON_word[0]=CON_word[0]&0xFC; //置工作方式選擇位為00 for(i=0;i《5;i++) {
data_OUT=CON_word[i]; //送控制字 W_CLK=0; delay(0);
W_CLK=1; //上升延
delay(0); }
FQ_UD=1; //上升延要求AD9850改變輸出 }
//-------------------------------------------------------------------------------------------------- // 函數(shù)名稱:main // 用戶主函數(shù) // 函數(shù)功能:主函數(shù)
//-------------------------------------------------------------------------------------------------- void main() { FQ_UD=0; WRITE_AD9850(); }
評論
查看更多