|
AD9834信号发生器程序,按键设置频率,输出波形和幅度增益,用nokia5110液晶显示,增益是通过DA控制AD603对AD9834的输出进行程控放大。界面效果好。程序模块化,方便移植,学习.
全部完整代码下载:
AD9834.rar
(66.99 KB, 下载次数: 139)
单片机源程序(部分预览):
- #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);
-
- }
复制代码 |
|