资源简介
C语言,基于51单片机的DDS信号发生器(AD9833)程序
代码片段和文件信息
#include
#include
//定义AD9833的时钟
#define FMCLK 250000000 //AD9833的主晶振为1MHz
sbit FSYNC1 =P1^0; //DDS使能引脚低电平有效
sbit SCLK9833 =P3^2; //DDS串行时钟输入
sbit SDATA9833=P3^3; //DDS串行数据输入
//函数声明
void Write_word(unsigned int dataa);//写16位数据到SPI接口
void init_ad9833(void);
void output(unsigned long freq_dword);//AD9833输出指定频率的正弦波:freq_dword=fout*268435456/FMCLK
void delay_nus(unsigned int t);//延时函数——微妙
void delay_nms(unsigned int t);//延时函数——毫秒
int main(void)
{
init_ad9833();
output(100007);//freq_dword=fout*268435456/FMCLK
while(1)
{
}
}
/*-----------------------------------------------------------------------
delay_nus :长延时函数(GCC内部延时函数的延时过短)
输入参数: t :延时时间 us
-----------------------------------------------------------------------*/
void delay_nus(unsigned int t)
{
while (t--);
}
/*-----------------------------------------------------------------------
delay_nms :长延时函数(GCC内部延时函数的延时过短)
输入参数: t :延时时间 ms
-----------------------------------------------------------------------*/
void delay_nms(unsigned int t)
{
while (t--);
}
//-----------------------------------------------------------------------
//Write_word : 写16位数据到SPI接口,软件SPI方式
//
//输入参数: data: 数据(16位)
//-----------------------------------------------------------------------
void Write_word(unsigned int dataa)
{
unsigned char i;
SCLK9833=1;
SDATA9833=1;
FSYNC1=1;
delay_nus(2);
FSYNC1=0;
for(i=0;i<16;i++)
{
if(dataa&0x8000) SDATA9833=1;
else SDATA9833=0;
delay_nus(1);
SCLK9833=0;
delay_nus(5);
SCLK9833=1;
dataa=dataa<<1;
}
delay_nus(2);
FSYNC1=1;
delay_nus(1);
SCLK9833=0;
delay_nus(200);
}
void init_ad9833(void)
{
Write_word(0x2100); //28位连续,选择频率0,相位0,RESET=1
delay_nus(1000);
Write_word(0x2000);
Write_word(0x4000); //写频率0寄存器的低字节LSB
Write_word(0x403f); //写频率0寄存器的高字节MSB
Write_word(0x2900); //28位连续,选择频率0,相位0,RESET=1
Write_word(0x8000); //写频率1寄存器的低字节LSB
Write_word(0x803f); //写频率1寄存器的高字节MSB
Write_word(0xC002); //写相位0寄存器
Write_word(0xF100); //写相位1寄存器
Write_word(0x2000); //28位连续,选择频率0,相位0,RESET=0
}
//------------------------------------------------------------------
//output :AD9833输出指定频率的正弦波
//
//输入参数:freq_value 类型:unsigned long
//输出参数:无
//------------------------------------------------------------------
void output(unsigned long freq_dword)//freq_dword=fout*2684
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4706 2011-07-21 10:19 AD9833\AD9833程序\AD9833
文件 1038 2011-07-21 10:19 AD9833\AD9833程序\AD9833.hex
文件 42 2011-07-21 10:19 AD9833\AD9833程序\AD9833.lnp
文件 7485 2011-07-14 10:55 AD9833\AD9833程序\AD9833.LST
文件 7191 2011-07-21 10:19 AD9833\AD9833程序\AD9833.M51
文件 0 2009-06-29 15:30 AD9833\AD9833程序\AD9833.mpw
文件 7356 2011-07-14 10:55 AD9833\AD9833程序\AD9833.OBJ
文件 1848 2011-08-05 07:53 AD9833\AD9833程序\AD9833.Opt
文件 198 2011-08-05 07:53 AD9833\AD9833程序\AD9833.plg
文件 2001 2011-07-14 12:10 AD9833\AD9833程序\AD9833.Uv2
....... 1848 2011-07-21 10:19 AD9833\AD9833程序\AD9833_Opt.Bak
文件 2204 2009-07-03 10:03 AD9833\AD9833程序\AD9833_Uv2.Bak
文件 781 2009-07-23 15:29 AD9833\AD9833程序\config.h
文件 77878 2009-08-11 12:55 AD9833\AD9833程序\Copy_2009811125512.bmp
文件 77878 2009-08-11 12:55 AD9833\AD9833程序\Copy_2009811125531.bmp
文件 6432 2011-07-14 12:10 AD9833\AD9833程序\include\AT89X52.H
文件 3795 2013-03-09 11:26 AD9833\AD9833程序\main.c
文件 6584 2011-07-21 10:19 AD9833\AD9833程序\main.LST
文件 5308 2011-07-21 10:19 AD9833\AD9833程序\main.OBJ
..A.SH. 19456 2009-08-11 19:50 AD9833\AD9833程序\Thumbs.db
文件 1668702 2009-07-07 16:45 AD9833\AD9833程序\仿真时序.bmp
文件 74989 2009-07-15 11:42 AD9833\AD9833程序\仿真时序Final.bmp
文件 230454 2009-07-07 03:45 AD9833\AD9833程序\时基时序0X2100.bmp
文件 230454 2009-07-08 17:45 AD9833\AD9833程序\时序0X2100.bmp
目录 0 2011-07-21 10:19 AD9833\AD9833程序\include
目录 0 2011-08-05 07:53 AD9833\AD9833程序
目录 0 2013-03-09 11:25 AD9833
----------- --------- ---------- ----- ----
2438628 27
............此处省略0个文件信息
- 上一篇:求陪集分解
- 下一篇:gco-v3.0代码
评论
共有 条评论