|
AD9834信號(hào)發(fā)生器程序,按鍵設(shè)置頻率,輸出波形和幅度增益,用nokia5110液晶顯示,增益是通過(guò)DA控制AD603對(duì)AD9834的輸出進(jìn)行程控放大。界面效果好。程序模塊化,方便移植,學(xué)習(xí).
0.png (62.56 KB, 下載次數(shù): 75)
下載附件
2016-10-17 21:04 上傳
全部完整代碼下載:
AD9834.rar
(66.99 KB, 下載次數(shù): 139)
2016-10-17 21:07 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
單片機(jī)源程序(部分預(yù)覽):
- #include<common.h>
- #include<ad9834.h>
- /*****************************************************
- AD9834波形產(chǎn)生程序
- *****************************************************/
-
- /**************************
- 發(fā)送控制字
- **************************/
- void Send_Con(uint Con_word)
- {
- uchar i;
- FSYNC =0; //低電平使數(shù)據(jù)有效
- for(i=0;i<16;i++) //傳輸16位控制字
- {
- SDATA =Con_word&0x8000; //最高位不變,最高位賦給SDATA
- Con_word<<=1; //控制字左移一位,準(zhǔn)備下一次
- SCLK =0; //產(chǎn)生下降沿,傳輸SDATA
- SCLK =1;
- }
- FSYNC =1; //高電平,無(wú)效
- }
-
- /****************************
- 發(fā)送頻率字
- ****************************/
- void Send_Freq(uint Freq_word)
- {
- uchar i;
- FSYNC =0; //低電平使數(shù)據(jù)有效
- for(i=0;i<16;i++) //傳輸16位頻率字
- {
- SDATA =Freq_word&0x8000; //最高位不變,最高位賦給SDATA
- Freq_word<<=1; //頻率字左移一位,準(zhǔn)備下一次
- SCLK =0; //產(chǎn)生下降沿,傳輸SDATA
- SCLK =1;
- }
- FSYNC =1; //高電平,無(wú)效
- }
-
- /*****************************
- 發(fā)送相位字
- 注:根據(jù)情況可設(shè)定入口參數(shù),設(shè)置相位
- *****************************/
- void Send_Phase()
- {
- Send_Con(0xC000); //設(shè)置初相位為0
- }
-
-
- /*******************************************************
- 設(shè)置頻率值
- Freq_value(value)=Freq_data(data)*FCLK/2^28
- 2^28=268435456=0x10000000
- *******************************************************/
- void writing_Freq(uchar freq_number, ulong Freq_value)
- {
- ulong FREQREG = (ulong)(268435456.0/FCLK*Freq_value);
-
- uint LSB_D = (uint)FREQREG;
- uint MSB_D = (uint)(FREQREG>>14);
-
- if(freq_number == FREQ_0)
- {
- LSB_D &= ~(1U<<15);
- LSB_D |= 1<<14;
- MSB_D &= ~(1U<<15);
- MSB_D |= 1<<14;
- }
- else
- {
- LSB_D &= ~(1<<14);
- LSB_D |= 1U<<15;
- MSB_D &= ~(1<<14);
- MSB_D |= 1U<<15;
- }
-
- Send_Freq(LSB_D);
- Send_Freq(MSB_D);
-
- }
復(fù)制代碼 |
|