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

📄 dds.c

📁 使用单片机控制FPGA完成直接数字频率合成(DDFS),采用Keil C51
💻 C
字号:
#include"includes.h"

extern unsigned char wav[256];		 //波形数据
extern unsigned char addr[256];	     //地址数据
extern unsigned long K_value;              //K值
extern unsigned char P_value;              //P值
extern unsigned char wav_flag;


void wav_count(unsigned char f)	        //计算波形数据
{
     unsigned int i;
	 for(i=0;i<256;i++)
	 {
	   addr[i]=i;
	 }
     if(f==0)
	 {
	     for(i = 0; i <256;i++)
	    {
        	wav[i]=125*(1+sin(6.28*i/255));
		}
	 }

	 else if(f==1)
	 {
	    for(i=0;i<128;i++)
		{
		   wav[i]=0;
		}
		for(i=128;i<256;i++)
		{
		   wav[i]=250;
		}
	 }
	 else if(f==2)
	 {
	    for(i=0;i<128;i++)
		{
		   wav[i]=2*i;
		}
		for(i=128;i<256;i++)
		{
		   wav[i]=255-((i-128)*2);
		}
	 }
	 else if(f==3)
	 {	 
	     for(i=0;i<256;i++)
		 {
		    wav[i]=256-i;
		 }
	 }

}
void write_wav_addr()	    //	写波形、地址
{
    unsigned char wave,address;
	unsigned int i,j;
	for(i=0;i<256;i++)
	{  
	    wave=wav[i];
		address=addr[i];
		for(j=0;j<8;j++)
		{
		   wave<<=1;
		   da=CY;
		   clk=0;
		   clk=1;
		   clk=0;
		}
		for(j=0;j<8;j++)
		{
		   address<<=1;
		   da=CY;
		   clk=0;
		   clk=1;
		   clk=0;
		}
		wren=0;
		wren=1;
		wren=0;
	}
   
}



void write_fre()		   //写频率、相位
{
     unsigned int i;
	 for(i=0;i<32;i++)
	 {
		   K_value<<=1;
		   da=CY;
		   clk=0;
		   clk=1;
		   clk=0;
     }
	 P_value<<=3;
	 for(i=0;i<5;i++)
	 {
	       P_value<<=1;
		   da=CY;
		   clk=0;
		   clk=1;
		   clk=0;
	     
	 }


}

void wtite_clr()		   //清零
{
   clr=0;
   clr=1;
   mydelay(500);
   clr=0;
   
}

void saom()
{
			 unsigned int i;
		     ena=0;
			 
			 for(i=0;i<64;i++)
			 K_value=i*1310720;
             wtite_clr();
			 wav_count(wav_flag);
			 write_wav_addr();
			 write_fre();
			 mydelay(100);
			 ena=1;
			 delay_nms(1000);
			 
}


void delay_1msb(void)
{
     unsigned int i;
	 for(i=0;i<1950;i++);
	 
}

void delay_nms(unsigned int num)	//延时nms子程序
{
	unsigned int i;
	for(i=0;i<num;i++)
	{
	   delay_1msb();
	 }
	
} 

⌨️ 快捷键说明

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