微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 如何改进程序让AD9850输出40MHz

如何改进程序让AD9850输出40MHz

时间:10-02 整理:3721RD 点击:
最近在学习DDS,用51控制AD9850输出的频率一直上不去,不知道要什么调整,用的是串口。有没有大神。//---------------------------------------------------//# include <reg51.h># include <stdio.h># include <intrins.h>sbit ad9850_w_clk    =P2^2;  //P2.2口接ad9850的w_clk脚/PIN7sbit ad9850_fq_up    =P2^1;  //P2.1口接ad9850的fq_up脚/PIN8sbit ad9850_rest     =P2^0;  //P2.0口接ad9850的rest脚/PIN12sbit 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;}//***************************************************////              ad9850复位(并口模式)                 ////---------------------------------------------------//void ad9850_reset_serial(){ad9850_w_clk=0;ad9850_fq_up=0;//rest信号ad9850_rest=0;ad9850_rest=1;ad9850_rest=0;//w_clk信号ad9850_w_clk=0;ad9850_w_clk=1;ad9850_w_clk=0;//fq_up信号ad9850_fq_up=0;ad9850_fq_up=1;ad9850_fq_up=0;}//***************************************************////          向ad9850中写命令与数据(并口)             ////---------------------------------------------------//void ad9850_wr_parrel(unsigned char w0,double frequence){unsigned char w;long int y;double x;//计算频率的HEX值x=4294967295/125;//适合125M晶振//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz !frequence=frequence/1000000;frequence=frequence*x;y=frequence;//写w0数据w=w0;   P1=w;      //w0ad9850_w_clk=1;ad9850_w_clk=0;//写w1数据w=(y>>24);P1=w;      //w1ad9850_w_clk=1;ad9850_w_clk=0;//写w2数据w=(y>>16);P1=w;      //w2ad9850_w_clk=1;ad9850_w_clk=0;//写w3数据w=(y>>8);P1=w;      //w3ad9850_w_clk=1;ad9850_w_clk=0;//写w4数据w=(y>>=0);P1=w;      //w4ad9850_w_clk=1;ad9850_w_clk=0;//移入始能ad9850_fq_up=1;ad9850_fq_up=0;}//***************************************************////          向ad9850中写命令与数据(串口)             ////---------------------------------------------------//void ad9850_wr_serial(unsigned char w0,double frequence){unsigned char i,w;long int y;double x;//计算频率的HEX值x=4294967295/125;//适合125M晶振//如果时钟频率不为180MHZ,修改该处的频率值,单位MHz  !frequence=frequence/1000000;frequence=frequence*x;y=frequence;//写w4数据w=(y>>=0);for(i=0;i<8;i++){ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;}//写w3数据w=(y>>8);for(i=0;i<8;i++){ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;}//写w2数据w=(y>>16);for(i=0;i<8;i++){ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;}//写w1数据w=(y>>24);for(i=0;i<8;i++){ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;}//写w0数据w=w0;   for(i=0;i<8;i++){ad9850_bit_data=(w>>i)&0x01;ad9850_w_clk=1;ad9850_w_clk=0;}//移入始能ad9850_fq_up=1;ad9850_fq_up=0;}//***************************************************////                   测试程序1000Hz                  ////---------------------------------------------------//main(){P0=0x00;P1=0x00;P2=0x00;P3=0x00;//---------------------------------------------------////---------------------------------------------------////串行写1000Hz程序ad9850_reset_serial();ad9850_wr_serial(0x00,1000);//---------------------------------------------------//while(1){}}

file:///C:/Users/night watcher/Desktop/电赛/AD9850_AD9851_模块/AD9850_1_V3_C程序/新建文件夹/ad9850.c

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top