⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dds.c

📁 采用Atmega16的变频式超声波发生器的源代码
💻 C
字号:
#include"main.h"

//AD9835
void ad9835_spi(uint data)
{
cbi(portb,4);
uchar temp;
temp=(uchar) (data>>8);
spi(temp);

temp=(uchar) (data);
spi(temp);
sbi(portb,4);

}

void ad9835(ulong f)
{
ulong data;
uchar temp;

data=ad9835_f_to_data(f);

temp=(uchar) (data);
ad9835_spi((0x3000+temp));

temp=(uchar) (data>>8);
ad9835_spi((0x2100+temp));

temp=(uchar) (data>>16);
ad9835_spi((0x3200+temp));

temp=(uchar) (data>>24);
ad9835_spi((0x2300+temp));

//ad9835_spi(0x6000); //fre register0,phase register0
ad9835_spi(0xc000);//sleep,reset,clr=0
}

void ad9835_init(void)
{
ulong data;
uchar temp;
ad9835_spi(0xf800); //sleep,reset,clr=1
ad9835_spi(0xa000);  //sync=1;selsrc=0;
//fre0=62000hz
data=ad9835_f_to_data(62000);

temp=(uchar) (data);
ad9835_spi((0x3000+temp));

temp=(uchar) (data>>8);
ad9835_spi((0x2100+temp));

temp=(uchar) (data>>16);
ad9835_spi((0x3200+temp));

temp=(uchar) (data>>24);
ad9835_spi((0x2300+temp));

//fre1=138000hz  
data=ad9835_f_to_data(138000);

temp=(uchar) (data);
ad9835_spi((0x3400+temp));

temp=(uchar) (data>>8);
ad9835_spi((0x2500+temp));

temp=(uchar) (data>>16);
ad9835_spi((0x3600+temp));

temp=(uchar) (data>>24);
ad9835_spi((0x2700+temp));

//ad9835_spi(0x6000); //fre register0,phase register0
ad9835_spi(0xc000);//sleep,reset,clr=0
}

ulong ad9835_f_to_data(ulong f)
{
ulong data;
data=268.435436*f; //16M crystal oscillator
return data;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -