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

📄 main.c

📁 当然他好通惠家园进45一任何牛肉汤教育局人格温热图5一45 王汝刚奖金额汤旺河安徽认为他易货交易精华
💻 C
📖 第 1 页 / 共 2 页
字号:
//=========================================================================================
//作    者:北京邮电大学 刘轩 张绍亮 张迪
//题    目:简易频谱分析仪
//备    注:
//         2005年全国大学生电子竞赛
//=========================================================================================
//#include "math.h"
//#include "hardware.inc"
#include "SPCE061V004.H"
#define HaveKey  1
#define NoKey    0
unsigned int  KeyVal;
unsigned int  KeyDownTimes;                                //保存按键次数
unsigned int  KeyFlag;										//按键标识 
char KeyData;  
unsigned int  Key,sflag=0;  
    char data;
    float temp;
unsigned int flow,fhigh,N,xstep,ystep,n,m,val,z,lsflag,p,ma,q;
float tempma;

#define NONE     0x0  
#define SIN      0x1  
#define AM       0x2  
#define FM       0x3  
#define UNKNOWN  0x4 
#define VAL      0xf000 
unsigned int DDS_data1,DDS_data2,DDS_data3,DDS_1,DDS_2,DDS_3,DDS_4,DDS_5;
long int dds_ctrl=0x108c3f3,fre=500000;//0x10624dd
unsigned int v[1024],fexist[50],vexist[50],tempv;
unsigned int i,j,k,type,centralf,ctrlVx,ctrlVy,o;
unsigned int en[6];
unsigned int ensize,enflagMK,enflagfw,endata;
unsigned int wdata,fdata,dotflag,mo,b,pbflag=0;
//=========================================================================================
//
//=========================================================================================
void dispb()
{
	for (b=0;b<=N;b++)
 	{
  		if (b%100==0 & v[b]==0) v[b]=20;
 	}
}
//=========================================================================================
//
//=========================================================================================
void delpb()
{
 	for (b=0;b<=N;b++)
 	{
  		if (b%100==0 & v[b]==20) v[b]=0;
 	}
}

//=========================================================================================
//
//=========================================================================================
void modify()
{
 	float tempa;
 	clearwd();
	if (i>1400) mo+=30;
}
//=========================================================================================
//
//=========================================================================================
void axis()
{
 	unsigned int x,temp;
 	temp=fdata-100;
	if (temp<wdata/2) 
 	{
  		flow=0;
  		fhigh=wdata;
  		fdata=(fhigh+flow)/2+100;
  		WrAdd(0x83);
  		displayf(fdata);
 	}
 	else if((temp+wdata/2)>2900)
 	{
 	fhigh=2900;
 	flow=2900-wdata;
 	fdata=(fhigh+flow)/2+100;
  	WrAdd(0x83);
  	displayf(fdata);
 	}
 	else
 	{
  	fhigh=temp+wdata/2;
  	flow=temp-wdata/2;
  	}
   	clearwd();

 	N=fhigh-flow;
 	xstep=1024/N;
 	for (x=0;x<=N;x++)
 	{
  		v[x]=*(Addr+flow+x);
  		if (v[x]==0 & (flow+x)%100==0) v[x]=20;
 		//if(x==100) v[x]=1000;
  		//else if(x%100==0) v[x]=50;
  		//else v[x]=0;
 	}
   	clearwd();
  	if(type==FM & flow<=20) 
  	{
   		for (x=0;x<65;x++)
  		v[x]=0;
   	}
}

//=========================================================================================
//
//=========================================================================================
void display1()
{ 
 	// N=fhigh-flow;
 	// xstep=1024/N;
 	ctrlVx=0;
  	for(z=0;z<=N;z++)
  	{
   		ctrlVy=0;
   		ctrlVx+=xstep;
   		while (ctrlVy<=v[z])
   		{
    		sendxy();
    		ctrlVy+=10;
   		}
  	clearwd();
 	}     
} 
//=========================================================================================
//
//=========================================================================================
void incf() 
{
 	dds_ctrl+=0x0053e2d;//0x20c49ba;//
 	DDS_5=dds_ctrl & 0x000000ff;
 	DDS_4=(dds_ctrl>>8) & 0x000000ff;
 	DDS_3=(dds_ctrl>>16) & 0x000000ff;
 	DDS_2=(dds_ctrl>>24) & 0x000000ff;
 	DDS_data1=dds_ctrl & 0x0000ffff;
 	DDS_data2=dds_ctrl>>16;
}
//=========================================================================================
//
//=========================================================================================
void judgetype()
{
	unsigned int temp;
	k=0;
	q=0;
 	fdata=1000;
 	for (j=0;j<=2900;j++)
 	{
  		getvalue();
  		if (tempv>0x0060) 
   		{
    		fexist[k]=j;
    		vexist[k]=tempv;
    		k++;
   		}
  		clearwd();
	}
 	if (k==0)  type=NONE;
 	else if (k==1)  
 	{
  		type=SIN;
  		centralf=fexist[0]+100;
 	}
 	else if (k==2)  
 	{
  		type=AM;
  		centralf=(fexist[0]+fexist[1])/2+100;
 	}
 	else if(k==3) 
 	{ 
  		if ((fexist[1]-fexist[0])==(fexist[2]-fexist[1]))
  		{
   			type=AM;
   			centralf=fexist[1]+100;
  		}
   		else type=UNKNOWN;
  	}
//  else if (k%2==1)  type=UNKNOWN;
//  else 
//  { 
//   if ((fexist[1]-fexist[0])==(fexist[k-1]-fexist[k-2]))
//   {
//   type=FM;
//   centralf=fexist[k/2]+100;
//   }
//   else type=UNKNOWN;
//  } 
//
  	else 
  	{
   		type=FM;
   		temp=vexist[0];
   		q=0;
   		for(p=1;p<k;p++)
   		{
    		if (vexist[p]>temp) 
    		{
     			temp=vexist[p];
     			q=p;
     		}
    	}    
   		centralf=fexist[q]+100;
   		temp=(centralf/100+1)*100;
   		if(centralf%100>(temp-centralf)) centralf=temp;
   		else centralf=centralf/100*100;
   	} 
}
//=========================================================================================
//
//=========================================================================================
void DDSstart()
{
	WrCom(0x01);
 	WrDat('S');
 	WrDat('c'); 
 	WrDat('a'); 
 	WrDat('n'); 
 	WrDat('n'); 
 	WrDat('i');
 	WrDat('n'); 
 	WrDat('g');
 	WrDat('.');
 	WrDat('.');
 	WrDat('.');
 	WrDat(' ');
 	WrDat('.');
 	WrDat('.');
 	WrDat('.');
 	WrAdd(0xc0);
 	WrDat('P');
 	WrDat('l');
 	WrDat('e');
 	WrDat('a');
 	WrDat('s');
 	WrDat('e');
 	WrDat(' ');
 	WrDat('w');
 	WrDat('a');
 	WrDat('i');
 	WrDat('t');
 	clearflash();
  
 	dds_ctrl=0x20d130e;//0x20c49ba;//0x108c3f3;
 	DDS_data1=dds_ctrl & 0x0000ffff;
	DDS_data2=dds_ctrl>>16;
 	DDS_data3=0;
  	DDS1();
  	DDS1();

  	for(i=0;i<=2900;i++)
  	{
  		DDS1();
  		//send603ctrlv();
   		o=8000;
  		while(o--);
  		incf();
  		Sample(); 
   		clearwd();
  	}
  	judgetype();
}
//=========================================================================================
//
//=========================================================================================
int countf()
{
	int j,n;
	for(j=0;j<6;j++)
	{
		if(en[j]==11)
		{
			n=j;break;
		}
	}
	
	if (enflagMK==0)
	{	
		for(j=0;j<n;j++)
		{
			if (en[j]==10)
			{
				dotflag=1;
				if (j==1)
				{
					endata=en[0]*100;
					if (n==3)
					{endata+=en[2]*10;}
					else if(n>=4)
					{endata+=en[2]*10;endata+=en[3];	}
				}
				else if(j==2)
				{
					if(en[0]>3)
					{en[0]=3;}
					endata=en[0]*1000;
			
					if (n==4)
					{endata+=en[1]*100;endata+=en[3]*10;}
					else if(n==5)
					{endata+=en[1]*100;endata+=en[3]*10;endata+=en[4];}	
				}
				else if(j==0)
				{
					endata=en[1]*10;
					if (n==3)
					{endata+=en[2];}
				}
				break;
			}
		}
		if(dotflag==0)		
  		{
  			if(n==2)
			{
				endata=en[0]*1000;
				endata+=en[1]*100;
			}
   			else if(n==1)
			{endata=en[0]*100;}
    		else 
    		{endata=3000;}
		}	
	}
	else
	{
		if(n==4)
		{endata=en[0]*100;endata+=en[1]*10;endata+=en[2];}
		else if(n==5)
		{endata=en[0]*1000;endata+=en[1]*100;endata+=en[2]*10;endata+=en[3];}
		else
		{ endata=50;}

	}
	if(enflagfw==0)
	{
 		if(endata<100) fdata=100;
 		else 		
   			if(endata>3000) fdata=3000;
   			else {fdata=endata;}
 		WrAdd(0x0083);  //10000010
 		displayf(fdata);
	}
	else
	{
		if(endata<50)  wdata=50;
		else   
  			if(endata>1000)  wdata=1000;
			else  {wdata=endata;}
		WrAdd(0x00c6);
		displayf(wdata);
	}
}
//=========================================================================================
//
//========================================================================================= 
void main()
{
	*P_SystemClock=0x0023;
	SP_Init_IOA();
    InitLcd();

    initDDS1();
    initdisp();
    //initdisp();
    
    WrCom(0x38);
    WrCom(0x01);
    WrCom(0x06);
    WrCom(0x0c);
    WrCom(0x01);
    clearwd();
menu1:
	WrCom(0x01);
 	WrDat(' ');
 	WrDat(' ');
 	WrDat(' ');
 	WrDat(' ');
 	WrDat('W');
 	WrDat('E'); 
 	WrDat('L'); 
 	WrDat('C'); 
 	WrDat('O'); 
 	WrDat('M');
 	WrDat('E');
 	WrDat('!'); 
 	WrAdd(0xc0);
 	WrDat('P');
 	WrDat('r'); 
 	WrDat('e'); 
 	WrDat('s'); 
 	WrDat('s'); 
 	WrDat(' ');
 	WrDat(' ');
 	WrDat('S');
 	WrDat('t');
 	WrDat('a');
 	WrDat('r');

⌨️ 快捷键说明

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