//---------------------------------------------------// //AD9833模块测试程序 //功能:循环输出1KHz方波,正弦波。三角波 //版本:V2.0 //日期:2011-3-25 //作者:无风电子 //博客:http://blog.ednchina.com/wufeng_dz/ //邮箱:wufeng_dz@163.com //接口:DAT --> P1.0 // CLK --> P1.1 // FNC --> P1.2 //---------------------------------------------------// //定义头文件 # include # include # include //---------------------------------------------------// sbit ad9833_sdata =P1^0; sbit ad9833_sclk =P1^1; sbit ad9833_fsync =P1^2; //---------------------------------------------------// //延时程序 //---------------------------------------------------// void delay(unsigned int m) { unsigned int n; for (n=0;n<=m;n++) { } } //---------------------------------------------------// //向AD9833写16位数据 //---------------------------------------------------// void write_ad9833_d16(unsigned int x) { int i,w; ad9833_sclk=1; ad9833_fsync=1; ad9833_fsync=0; //写16位数据 w=x; for(i=0;i<16;i++) { ad9833_sdata=w&0x8000; ad9833_sclk=0; ad9833_sclk=1; w=w<<1; } ad9833_fsync=1; ad9833_sclk=0; } //---------------------------------------------------// // 主程序 // //---------------------------------------------------// main() { P0=0XFF; P1=0XFF; P2=0XFF; P3=0XFF; while(1) { delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); //寄存器频率0输出1KHz波形 write_ad9833_d16(0x0100); //复位AD9833 write_ad9833_d16(0x2100); //选择数据一次写入 write_ad9833_d16(0x69F1); //L14 write_ad9833_d16(0x4000); //H14 频率寄存器0为1KHz write_ad9833_d16(0x93E3); //L14 write_ad9833_d16(0x8001); //H14 频率寄存器1为2KHz write_ad9833_d16(0x2000); //芯片进入工作状态,寄存器频率0输出1KHz波形 //寄存器频率1输出2KHz波形 delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); write_ad9833_d16(0x2800); //寄存器频率0输出1KHz三角波波形 delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); write_ad9833_d16(0x2002); //寄存器频率0输出1KHz方波波形 delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); delay(100000); write_ad9833_d16(0x2020); } }