A. 51单片机DDS程序 (dds>>8)&0xFF 的意思
ww[5]={0x09,0x0E,0x38,0xE3,0x8E} 是在给数组定值,以后如果你要调用这些值的话直接调用数组就可以了,方便而且有比较好的移植性
&这符号是"与"运算,你可以把它理解为相乘,
ww[1]=(dds>>8)&0xFF 就是对数组ww里的第二个元素(数组下标最低为0),进行赋值,赋的值是将dds这个变量的值向右移8位,然后与0xFF相与(假如dds右移8位后的值为10101010,那么与0xFF(11111111)相与后得到的值就是10101010,前面说过,&就是做相乘的动作,所以1*0=0,1*1则等于1)
这样你理解了吗?
B. DDS与单片机之间有什么区别
楼主:
1,DDS:直接数字合成技术;单片机:一个小微处理器.
2,例如:基于DDS技术 和AT89C51 组成的单片机小系统进行硬件和软件的设计,实现低频信号源的产生。
3,如使用AT89C51+DAC0832(数模芯片)设计一个简单的信号发生器,就是DDS技术与单片机结合。就是基于DDS 和单片机的应用。
C. 基于FPGA的DDS波形发生器和由单片机控制,并采用FPGA实现DDS功能这俩个有什么区别,急需高手指教
如果为了提高毕设的成功率的话还是用FPGA来做好,这样调试起来简单
如果用单片机控制FPGA的话还需要增加单片机和FPGA之间的接口调试,不确定因素多了,调试会更复杂。增加工作量。但是这样能够学到更多东西,看你怎么取舍了。
D. dds和单片机制作信号发生器有什么缺陷
dds 波形好,单片机波形差,单片机波形发生器波形可以任意设置,但不能真正用,速度低,失真大。除非采用很高速处理器,高速DA。
E. 单片机DDS波形发生器
外接一块AD9850
# include <reg51.h>
# include <intrins.h>
sbit ad9850_w_clk =P2^2; //P2.2口接ad9850的w_clk脚/PIN7
sbit ad9850_fq_up =P2^1; //P2.1口接ad9850的fq_up脚/PIN8
sbit ad9850_rest =P2^0; //P2.0口接ad9850的rest脚/PIN12
sbit ad9850_bit_data =P1^7; //P1.7口接ad9850的D7脚/PIN25
//P1为8位数据口
//***************************************************//
// ad9850复位(并口模式) //
//---------------------------------------------------//
void ad9850_reset()
{
ad9850_w_clk=0;
ad9850_fq_up=0;
//rest信号
ad9850_rest=0;
ad9850_rest=1;
ad9850_rest=0;
}
void ad9850_wr_parrel(unsigned char w0,double frequence)
{
unsigned char w;
long int y;
double x;
//计算频率的HEX值
x=4294967295/40;//适合40M晶振
//如果时钟频率不为40MHZ,修改该处的频率值,单位MHz !!!
frequence=frequence/1000000;
frequence=frequence*x;
y=frequence;
//写w0数据
w=w0;
P1=w; //w0
ad9850_w_clk=1;
ad9850_w_clk=0;
//写w1数据
w=(y>>24);
P1=w; //w1
ad9850_w_clk=1;
ad9850_w_clk=0;
//写w2数据
w=(y>>16);
P1=w; //w2
ad9850_w_clk=1;
ad9850_w_clk=0;
//写w3数据
w=(y>>8);
P1=w; //w3
ad9850_w_clk=1;
ad9850_w_clk=0;
//写w4数据
w=(y>>=0);
P1=w; //w4
ad9850_w_clk=1;
ad9850_w_clk=0;
//移入始能
ad9850_fq_up=1;
ad9850_fq_up=0;
}
main()
{
P0=0x00;
P1=0x00;
P2=0x00;
P3=0x00;
//---------------------------------------------------//
//并行写1000Hz程序
ad9850_reset();
ad9850_wr_parrel(0x00,1000);
//---------------------------------------------------//
while(1);
}