简易频率特性测试仪设计—毕业设计论文内容摘要:

Freq,uint Shape)。 extern void AD9854_InitFSK(void)。 extern void AD9854_SetFSK(ulong Freq1,ulong Freq2)。 extern void AD9854_InitBPSK(void)。 extern void AD9854_SetBPSK(uint Phase1,uint Phase2)。 extern void AD9854_InitOSK(void)。 extern void AD9854_SetOSK(uchar RateShape)。 extern void AD9854_InitAM(void)。 毕业设计(论文) 25 extern void AD9854_SetAM(uint Shape)。 extern void AD9854_InitRFSK(void)。 extern void AD9854_SetRFSK(ulong Freq_Low,ulong Freq_High,ulong Freq_Up_Down,ulong FreRate)。 static void delay (uint us)。 //==================================================================================== //函数名称 :void AD9854_WR_Byte(uchar addr,uchar dat) //函数功能 :AD9854 并行口写入数据 //入口参数 :addr 6 位地址 // dat 写入的数据 //出口参数 :无 //==================================================================================== void AD9854_WR_Byte(uchar addr,uchar dat) { AD9854_AdrBus = (addramp。 0x3f) | (P2amp。 0xc0)。 AD9854_DataBus = dat。 AD9854_WR = 0。 AD9854_WR = 1。 } //=====================================================毕业设计(论文) 26 =============================== //函数名称 :void AD9854_Init(void) //函数功能 :AD9854 初始化 //入口参数 :无 //出口参数 :无 //==================================================================================== void AD9854_Init(void) { AD9854_WR=1。 //将读、写控制端口设为无效 AD9854_RD=1。 AD9854_UDCLK=0。 AD9854_RST=1。 //复位 AD9854 AD9854_RST=0。 AD9854_WR_Byte(0x1d,0x10)。 //关闭比较器 AD9854_WR_Byte(0x1e,CLK_Set)。 //设置系统时钟倍频 AD9854_WR_Byte(0x1f,0x00)。 //设置系统为模式 0,由外部更新 AD9854_WR_Byte(0x20,0x60)。 //设置为可调节幅度,取消插值补偿 AD9854_UDCLK=1。 //更新 AD9854 输出 AD9854_UDCLK=0。 毕业设计(论文) 27 } //==================================================================================== //函数名称 :void Freq_convert(long Freq) //函数功能 :正弦信号频率数据转换 //入口参数 :Freq 需要转换的频率,取值从 0~SYSCLK/2 //出口参数 :无 但是影响全局变量 FreqWord[6]的值 //说明: 该算法位多字节相乘算法,有公式 FTW = (Desired Output Frequency 2N)/SYSCLK // 得到该算法,其中 N=48, Desired Output Frequency 为所需要的频率,即 Freq, SYSCLK // 为可编程的系统时钟, FTW 为 48Bit 的频率控制字,即 FreqWord[6] //==================================================================================== void Freq_convert(long Freq) { ulong FreqBuf。 ulong Temp=Freq_mult_ulong。 uchar Array_Freq[4]。 //将输入频率因子分为毕业设计(论文) 28 四个字节 Array_Freq[0]=(uchar)Freq。 Array_Freq[1]=(uchar)(Freq8)。 Array_Freq[2]=(uchar)(Freq16)。 Array_Freq[3]=(uchar)(Freq24)。 FreqBuf=Temp*Array_Freq[0]。 FreqWord[0]=FreqBuf。 FreqBuf=8。 FreqBuf+=(Temp*Array_Freq[1])。 FreqWord[1]=FreqBuf。 FreqBuf=8。 FreqBuf+=(Temp*Array_Freq[2])。 FreqWord[2]=FreqBuf。 FreqBuf=8。 FreqBuf+=(Temp*Array_Freq[3])。 FreqWord[3]=FreqBuf。 FreqBuf=8。 毕业设计(论文) 29 FreqWord[4]=FreqBuf。 FreqWord[5]=FreqBuf8。 } //==================================================================================== //函数名称 :void AD9854_SetSine(ulong Freq,uint Shape) //函数功能 :AD9854 正弦波产生程序 //入口参数 :Freq 频率设置,取值范围为 0~(1/2)*SYSCLK // Shape 幅度设置 . 为 12 Bit,取值范围为 (0~4095) ,取值越大 ,幅度越大 //出口参数 :无 //==================================================================================== void AD9854_SetSine(ulong Freq,uint Shape) { uchar count。 uchar Adress。 Adress = 0x04。 //选择频率控制字地址的初值 Freq_convert(Freq)。 //频率转换 for(count=6。 count0。 ) //写入 6 字节的频率控制字 毕业设计(论文) 30 { AD9854_WR_Byte(Adress++,FreqWord[count])。 } AD9854_WR_Byte(0x21,Shape8)。 //设置 I 通道幅度 AD9854_WR_Byte(0x22,(uchar)(Shapeamp。 0xff))。 AD9854_WR_Byte(0x23,Shape8)。 //设置 Q 通道幅度 AD9854_WR_Byte(0x24,(uchar)(Shapeamp。 0xff))。 AD9854_UDCLK=1。 //更新 AD9854 输出 AD9854_UDCLK=0。 } //==================================================================================== //函数名称 :void Freq_doublt_convert(double Freq) //函数功能 :正弦信号频率数据转换 //入口参数 :Freq 需要转换的频率,取值从 0~SYSCLK/2 //出口参数 :无 但是影响全局变量 FreqWord[6]的值 //说明: 有公式 FTW = (Desired Output Frequency 2N)/SYSCLK得到该函数, // 其中 N=48, Desired Output Frequency 为所需要的频率,即 Freq, SYSCLK // 为可编程的系统时钟, FTW 为 48Bit 的频率控制字,毕业设计(论文) 31 即 FreqWord[6] //注意: 该函数与上面函数的区别为该函数的入口参数为double,可使信号的频率更精确 // 谷雨建议在 100HZ 以下用本函数,在高于 100HZ 的情况下用函数 void Freq_convert(long Freq) //==================================================================================== void Freq_double_convert(double Freq) { ulong Low32。 uint High16。 double Temp=Freq_mult_doulle。 //23ca99 为 2 的 48次方除以 120M Freq*=(double)(Temp)。 // 1 0000 0000 0000 0000 0000 0000 0000 0000 = 4294967295 High16 = (int)(Freq/4294967295)。 //2^32 = 4294967295 Freq = (double)High16*4294967295。 Low32 = (ulong)Freq。 FreqWord[0]=Low32。 FreqWord[1]=Low328。 FreqWord[2]=Low3216。 毕业设计(论文) 32 FreqWord[3]=Low3224。 FreqWord[4]=High16。 FreqWord[5]=High168。 } //==================================================================================== //函数名称 :void AD9854_SetSine_double(double Freq,uint Shape) //函数功能 :AD9854 正弦波产生程序 //入口参数 :Freq 频率设置,取值范围为 0~1/2*SYSCLK // Shape 幅度设置 . 为 12 Bit,取值范围为 (0~4095) //出口参数 :无 //==================================================================================== void AD9854_SetSine_double(double Freq,uint Shape) { uchar count=0。 uchar Adress。 Adress=0x04。 //选择频率控制字 1地址的初值 Freq_double_convert(Freq)。 //频率转换 毕业设计(论文) 33 for(count=6。 count0。 )。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。