AD9850是AD公司生产的最高时钟为125 MHz、采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能数模变换器(DAC)和高速比较器3部分构成,能实现全数字编程控制的频率合成。
AD9850采用直接数字合成(DDS)技术,内含可编程DDS 系统和高速比较器,可实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N 一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。
正原理框图弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC 输出模拟量。
单片机控制AD9850的数字信号发生器C51程序 //-----------------------函数声明,变量定义
------------------------------ #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
//-------------------------------------------------------------------------------------------------- // 函数名称: delay
// 入口参数: N
// 函数功能:延时子程序,实现(16*N+24)us的延时
// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动 //-------------------------------------------------------------------------------------------------- void delay(unsigned int N) { int i;
for(i=0;i《N;i++); }
//-------------------------------------------------------------------------------------------------- // 函数名称: WRITE_AD9850 // 函数功能: 将控制字写入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改变输出 }
//-------------------------------------------------------------------------------------------------- // 函数名称:main // 用户主函数 // 函数功能:主函数
//-------------------------------------------------------------------------------------------------- void main() { FQ_UD=0; WRITE_AD9850(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)