⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9954s.c

📁 2005年全国大学生电子设计大赛 频谱仪 题 源代码。作品获国家一等奖
💻 C
字号:
#include<9954.h>
#include<aduc841.h>
#include<math.h>


#define IO_SS P3_2
#define A1k 13427

void SPI_Write(unsigned char sdata);




void ddsSetCFR1 (unsigned long int idata cfr1)	// Set Control Function Register 1-------------
{
    unsigned long  idata tmp1,tmp2,tmp3;
    tmp1=cfr1>>8;
    tmp2=tmp1>>8;
    tmp3=tmp2>>8;
    IO_SS=0;
    SPI_Write (AD9954_CFR1);
    SPI_Write ((unsigned char)(tmp3));
    SPI_Write ((unsigned char)(tmp2));
    SPI_Write ((unsigned char)(tmp1));
    SPI_Write ((unsigned char)cfr1);
    IO_SS=1;
}

void ddsSetCFR2 (unsigned long int idata cfr2)	// Set Control Function Register 2-------------
{
    unsigned long  idata tmp1,tmp2;
    tmp1=cfr2>>8;
    tmp2=tmp1>>8;
    IO_SS=0;
    SPI_Write (AD9954_CFR2);
	  SPI_Write ((unsigned char)(tmp2));
    SPI_Write ((unsigned char)(tmp1));
    SPI_Write ((unsigned char)cfr2);
    IO_SS=1;

}

void ddsSetASF (unsigned int idata asf)		// Set DDS Amplitude Scale Factor--------------
{
    IO_SS=0;
    SPI_Write (AD9954_ASF);
    SPI_Write ((asf >> 8) & 0xff);
    SPI_Write (asf & 0xff);
    IO_SS=1;

}
/*
void ddsSetARR (unsigned char idata arr)		// Set DDS Amplitude Ramp Rate-----------------
{
    IO_SS=0;
    SPI_Write (AD9954_ARR);
    SPI_Write ((arr >> 8) & 0xff);
    SPI_Write (arr & 0xff);
    IO_SS=1;

}
*/
void ddsSetFTW0 (unsigned long int idata ftw)		// Set DDS frequency tuning word---------------
{
    unsigned long  idata tmp1,tmp2,tmp3;
    tmp1=ftw>>8;
    tmp2=tmp1>>8;
    tmp3=tmp2>>8;
    IO_SS=0;
    SPI_Write (AD9954_FTW0);
    SPI_Write ((unsigned char)(tmp3));
    SPI_Write ((unsigned char)(tmp2));
    SPI_Write ((unsigned char)(tmp1));
    SPI_Write ((unsigned char)ftw);
    IO_SS=1;

}

void ddsSetFTW1 (unsigned long int idata ftw)		// Set DDS frequency tuning word---------------
{
    unsigned long idata tmp1,tmp2,tmp3;
    tmp1=ftw>>8;
    tmp2=tmp1>>8;
    tmp3=tmp2>>8;
    IO_SS=0;
    SPI_Write (AD9954_FTW1);
    SPI_Write ((unsigned char)(tmp3));
    SPI_Write ((unsigned char)(tmp2));
    SPI_Write ((unsigned char)(tmp1));
    SPI_Write ((unsigned char)ftw);
    IO_SS=1;

}

/*

void ddsSetPOW (unsigned int idata pow)		// Set the output phase------------------------
{
    IO_SS=0;
    SPI_Write (AD9954_POW);
    SPI_Write ((unsigned char)(pow >> 8));
    SPI_Write ((unsigned char)pow);
    IO_SS=1;

}


void ddsPD()
{
 SPI_Write(0xff,0);
 SPI_Write(0xfe,1);

}
*/
void ddsSetSwpN(unsigned long idata delta,unsigned char idata rate)
{

 unsigned long  idata tmp1,tmp2,tmp3;
    tmp1=delta>>8;
    tmp2=tmp1>>8;
    tmp3=tmp2>>8;
 IO_SS=0;
 SPI_Write (AD9954_NLSCW);
 SPI_Write ((unsigned char)rate);
 SPI_Write ((unsigned char)(tmp3));
 SPI_Write ((unsigned char)(tmp2));
 SPI_Write ((unsigned char)(tmp1));
 SPI_Write ((unsigned char)delta);
 IO_SS=1;

}

void ddsSetSwpP(unsigned long idata delta,unsigned char idata rate)
{
  unsigned long idata tmp1,tmp2,tmp3;
    tmp1=delta>>8;
    tmp2=tmp1>>8;
    tmp3=tmp2>>8;
 IO_SS=0;
 SPI_Write (AD9954_PLSCW);
 SPI_Write ((unsigned char)rate);
 SPI_Write ((unsigned char)(tmp3));
 SPI_Write ((unsigned char)(tmp2));
 SPI_Write ((unsigned char)(tmp1));
 SPI_Write ((unsigned char)delta);
 IO_SS=1;

}
/*
void FM(unsigned int mfrq,unsigned char band,unsigned long fc)
{
 unsigned int idata temp;                         
 unsigned int idata Rrr=8000000/1024/mfrq;
 unsigned char idata send[5];
 P3_4=0;
 send[4]=(unsigned char)Rrr;
 send[3]=(unsigned char)Rrr/256;
 send[2]=0xff;
 send[1]=0x03;
 send[0]=0x70;
 ddsSetCFR1(0x82000000);
 ddsSetRAMS(send);
 IO_SS=0;
 SPI_Write(0x0b);                                 
 for(temp=0;temp<1024;temp++)
 {
  ddsSetRAM(fc+A1k*band*sin(temp*0.006135923));
 } 
  
 IO_SS=1;
 
}


*/
void DDS_Ini(void) //   Initialize the DDS
{

	ddsSetCFR1(0x02000042);
  
  ddsSetCFR2(0x00000026);
  
  ddsSetFTW0(0x10000000);
  /*
  ddsSetCFR1(0x02000082,1);
  
  ddsSetCFR2(0x00000026,1);
  
  ddsSetFTW0(0x10000000,1);
   */
  ddsSetASF(0xffff);
  
  //ddsSetASF(0xffff,1);
  
}


void initUart(void)
{
 SPICON=0x3a;
 //SCON=0xd0;
 //T3CON=0x84;
 //T3FD=0x07;
 

}

void SPI_Write(unsigned char sdata)
{
 SPIDAT=sdata;
 while(!ISPI);
 ISPI=0;

}

/*
void sendUart(unsigned char idata sdata,bit cmd)
{
 if(cmd==1)
  {
   TB8=1;
   SBUF=sdata;
   TB8=0;
   while(TI==0);
   TI=0;
   
  }
 else
  {
   SBUF=sdata;
   while(TI==0);
   TI=0;

  }

}


void ddsSetRAM (unsigned long int ram)		// Set DDS frequency tuning word---------------
{
    unsigned long tmp1,tmp2,tmp3;
    tmp1=ram/256;
    tmp2=tmp1/256;
    tmp3=tmp2/256;
    SPI_Write ((unsigned char)(tmp3));
    SPI_Write ((unsigned char)(tmp2));
    SPI_Write ((unsigned char)(tmp1));
    SPI_Write ((unsigned char)ram );
}
 

 void ddsSetRAMS(unsigned char ram[])
{
 IO_SS=0;
 SPI_Write (0x07);
 SPI_Write (ram[4]);
 SPI_Write (ram[3]);
 SPI_Write (ram[2]);
 SPI_Write (ram[1]);
 SPI_Write (ram[0]);
 IO_SS=1;
 

}
 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -