花生漫画

AD9832两相正弦信号发生程序

0
阅读(5495)

 

函数名称:延时函数,void Delay(unsigned int i)
 函数功能:延时时间为——(0.565i+1.13)uS
 入口参数:
 出口参数:
 ***********************************************************************/
 void Delay(unsigned int i)
 {
 //unsigned char j;
 for(i;i>0;i--)
 {}

}
 /***********************************************************************
 函数名称:发送子函数,void SendDate(unsigned int Date)
 函数功能:发送16位地址和数据
 入口参数:
 出口参数:
 ***********************************************************************/
 void SendDate(unsigned int DataA,DataB)
 {
 unsigned int i;
 SY9832=0;   //When this input is taken low, the internal logic is informed that a Date is being loaded into the device.
 SCLK9832=1;   //Date is clocked into the AD9832 on each falling SCLK edge.
 for (i=0;i<16;i++)
 {
    SCLK9832=1;
    DataA<<=1;
    SDA9832_A=CY;
    DataB<<=1;
    SDA9832_B=CY;
    Delay(1);
    SCLK9832=0;
    Delay(1);
 }
 SCLK9832=1;
 SY9832=1;
 }

/***********************************************************************
 函数名称:AD9832初始化子函数,void AD9832Init(void)
 函数功能:发送16位地址和数据
 入口参数:
 出口参数:
 ***********************************************************************/
 /*void AD9832Init(void)
 {
 SY9832=1;
    SendDate(0xf800);//复位AD9832
 SendDate(0xb000);//用位选择频率相位寄存器
 SendDate(0x3088);//分四次把频率控制字送入寄存器0
 SendDate(0x2188);
 SendDate(0x3288);
 SendDate(0x2300);
 SendDate(0x1800);//初始化相位寄存器0
 SendDate(0x0900);
 SendDate(0x6000);//选择频率寄存器0、相位寄存器0
 SendDate(0xc000);//AD9832开始输出
 }
 */
 /***********************************************************************
 函数名称:
 函数功能:
 入口参数:
 出口参数:
 ***********************************************************************/
 void Output(float freq,phaseA_B)
 {
 unsigned long ddsf,ddsp;
 unsigned char ddsf1,ddsp1,i,j;
 ddsf=freq*pow(2,32)/25e6;
 ddsp=phaseA_B*pow(2,12)/360;
 //dds1=dds;
 //ww[0]=dds1|0x3000;
 //dds1 =dds>>8;
 //ww[1]=dds1;

 for(i;i<4;i++)
 {
    ddsf1=ddsf>>i*8;
    wwA[i]=ddsf1|wwA[i];
    wwB[i]=wwA[i];
 }
 for(j;j<2;j++)
 {
    ddsp1=ddsp>>j*8;
    wwB[j+4]=ddsp1|wwB[j+4];
 }


}

/***********************************************************************
 函数名称:主函数,void AD9832Init(void)
 函数功能:
 入口参数:
 出口参数:
 ***********************************************************************/
 void main ()
 {   char i;
 Init_Device();
 Output(50,120);
 SendDate(0xD800,0xD800);//复位AD9832
 Delay(100);
 SendDate(0x9000,0x9000);//用位选择频率寄存器和相位偏移寄存器
 for(i=0;i<8;i++)
 {
    SendDate(wwA[i],wwB[i]);
 }
 Delay(100);
     for(;;){}
 }