|
|
AD9834信號發生器程序,按鍵設置頻率,輸出波形和幅度增益,用nokia5110液晶顯示,增益是通過DA控制AD603對AD9834的輸出進行程控放大。界面效果好。程序模塊化,方便移植,學習.
全部完整代碼下載:
AD9834.rar
(66.99 KB, 下載次數: 139)
2016-10-17 21:07 上傳
點擊文件名下載附件
單片機源程序(部分預覽):
- #include<common.h>
- #include<ad9834.h>
- /*****************************************************
- AD9834波形產生程序
- *****************************************************/
-
- /**************************
- 發送控制字
- **************************/
- void Send_Con(uint Con_word)
- {
- uchar i;
- FSYNC =0; //低電平使數據有效
- for(i=0;i<16;i++) //傳輸16位控制字
- {
- SDATA =Con_word&0x8000; //最高位不變,最高位賦給SDATA
- Con_word<<=1; //控制字左移一位,準備下一次
- SCLK =0; //產生下降沿,傳輸SDATA
- SCLK =1;
- }
- FSYNC =1; //高電平,無效
- }
-
- /****************************
- 發送頻率字
- ****************************/
- void Send_Freq(uint Freq_word)
- {
- uchar i;
- FSYNC =0; //低電平使數據有效
- for(i=0;i<16;i++) //傳輸16位頻率字
- {
- SDATA =Freq_word&0x8000; //最高位不變,最高位賦給SDATA
- Freq_word<<=1; //頻率字左移一位,準備下一次
- SCLK =0; //產生下降沿,傳輸SDATA
- SCLK =1;
- }
- FSYNC =1; //高電平,無效
- }
-
- /*****************************
- 發送相位字
- 注:根據情況可設定入口參數,設置相位
- *****************************/
- void Send_Phase()
- {
- Send_Con(0xC000); //設置初相位為0
- }
-
-
- /*******************************************************
- 設置頻率值
- 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);
-
- }
復制代碼 |
|