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);
}