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

📄 main.c

📁 2007年全国大学生电子设计大赛
💻 C
字号:
#include"LCD320240.h"
#include"z7290.h"
#include"flash.h"
#include"config.h"
#include"fft.h"
#include"math.h"
#include"FFT_xgjis.h"
#define unchar unsigned char
#define unint unsigned int

unchar keynumb;
unchar courflag0 = 1;
unchar courflag1 = 1;
unchar ESCflag = 0;
unint K_fft = 3277 ;//变换因子
//unint N_fft;	//频谱个数
unint F_fft=20;	 //分辨率
int source[2048];
unsigned int S_num=0;

 /********************************************
 定时器3中断服务
 *********************************************/
void T3_Int14(void) interrupt 14
{
 EIE2      = 0x00;  
 SFRPAGE   = TMR3_PAGE;
 TMR3CN    = 0x04;
  source[S_num]=ads8505();
  S_num++;
  if(S_num==2048)
   {
   SFRPAGE   = TMR3_PAGE;
   TMR3CN    = 0x00;
   }	  
 EIE2      = 0x01;
}

/***************************************
//函数输入: 
//函数输出:
//函数说明:键盘中断服务函数
**********************************************/
void int0(void) interrupt 0 
 {	EX0=0;     //关闭键盘中断
    SFRPAGE   = 0x0f;
    ZLG7290_ReadReg(ZLG7290_Key,&keynumb);
	EX0=1;    //打开键盘中断;
 }
//***************************************
/***************************************
//函数输入: 
//函数输出:
//函数说明:主菜单函数	   
***************************************/
void menu0(unchar numberflag)
{
  keynumb=0;
  clear(1);
  DisplayChineseArray("全国电子设计竞赛",16,12,1);
  DisplayChineseArray("音频信号分析仪",14,1294,1);
  DisplaySymbol(data1,2570,1);
  DisplaySymbol(datadian3,2571,1);		
  DisplayChineseArray("功率值测量和分析",16,2572,1);
  DisplaySymbol(data2,3210,1);
  DisplaySymbol(datadian3,3211,1);
  DisplayChineseArray("频率谱线绘制",12,3212,1);
  DisplaySymbol(data3,3850,1);
  DisplaySymbol(datadian3,3851,1);
  DisplayChineseArray("系统设置",8,3852,1);
 // DisplayChineseArray("三",2,3852,1);			 编译错误	已解决
  switch(numberflag)
  {
  case 1:
    Redisplay_Area(2570,160,16,1);
    break;
  case 2:
    Redisplay_Area(3210,160,16,1);
    break;
  case 3:
    Redisplay_Area(3850,160,16,1);
    break;
  default:
    break;
  }
}
/***************************************
//函数输入: 
//函数输出:
//函数说明:一级子菜单1函数	
***************************************/
void menu11(unchar numberflag)
{
 keynumb=0;
 clear(1);
 DisplayChineseArray("音频信号分析仪",14,12,1);
 DisplayChineseArray("功率值测量和分析",16,1292,1);
 DisplaySymbol(data1,2570,1);
 DisplaySymbol(datadian3,2571,1);
 DisplayChineseArray("全部参数测试分析",16,2572,1);
 DisplaySymbol(data2,3210,1);
 DisplaySymbol(datadian3,3211,1);
 DisplayChineseArray("查询",4,3212,1);
 DisplaySymbol(data3,3850,1);
 DisplaySymbol(datadian3,3851,1);
 DisplayChineseArray("回放上次分析结果",16,3852,1);
 switch(numberflag)
  {
  case 1:
    Redisplay_Area(2570,160,16,1);
    break;
  case 2:
    Redisplay_Area(3210,160,16,1);
    break;
  case 3:
    Redisplay_Area(3850,160,16,1);
	 break;
  default:
    break;
  }
}
/***************************************
//函数输入: 
//函数输出:
//函数说明:一级子菜单2函数	
***************************************/
void menu12(unchar numberflag)
{
 keynumb=0;
 clear(1);
 DisplayChineseArray("音频信号分析仪",14,12,1);
 DisplayChineseArray("频率谱线绘制",12,1296,1);
 DisplaySymbol(data1,2570,1);
 DisplaySymbol(datadian3,2571,1);
 DisplayChineseArray("第一页",6,2572,1);
 DisplaySymbol(data2,3210,1);
 DisplaySymbol(datadian3,3211,1);
 DisplayChineseArray("第二页",6,3212,1);
 DisplaySymbol(data3,3850,1);
 DisplaySymbol(datadian3,3851,1);
 DisplayChineseArray("第三页",6,3852,1);
 DisplaySymbol(data4,4490,1);
 DisplaySymbol(datadian3,4491,1);
 DisplayChineseArray("第四页",6,4492,1);
 DisplaySymbol(data5,5130,1);
 DisplaySymbol(datadian3,5131,1);
 DisplayChineseArray("第五页",6,5132,1);
 switch(numberflag)
  {
  case 1:
    Redisplay_Area(2570,160,16,1);
    break;
  case 2:
    Redisplay_Area(3210,160,16,1);
    break;
  case 3:
    Redisplay_Area(3850,160,16,1);
	 break;
  case 4:
    Redisplay_Area(4490,160,16,1);
    break;
  case 5:
    Redisplay_Area(5130,160,16,1);
    break;
  default:
    break;
  }
}
/***************************************
//函数输入: 
//函数输出:
//函数说明:一级子菜单3函数	
***************************************/
void menu13(unchar numberflag)
{
 keynumb=0;
 clear(1);
 DisplayChineseArray("音频信号分析仪",16,10,1);
 DisplayChineseArray("系统设置",8,1296,1);
 DisplaySymbol(data1,2570,1);
 DisplaySymbol(datadian3,2571,1);
 DisplayChineseArray("刷新时间设置",12,2572,1);
 DisplaySymbol(data2,3210,1);
 DisplaySymbol(datadian3,3211,1);
 DisplayChineseArray("频率分辨率设置",14,3212,1);
 DisplaySymbol(data3,3850,1);
 DisplaySymbol(datadian3,3851,1);
 DisplayChineseArray("功率因子调整",12,3852,1);
 switch(numberflag)
  {
  case 1:
    Redisplay_Area(2570,160,16,1);
    break;
  case 2:
    Redisplay_Area(3210,160,16,1);
    break;
  case 3:
    Redisplay_Area(3850,160,16,1);
	 break;
  default:
    break;
  }
}

main()
{
 
 Init_Device();
 SFRPAGE   = TMR3_PAGE;
 TMR3CN    = 0x00;
 SFRPAGE   = 0x0f;
 P0=0xff;
 P2=0xff;
 P3=0xff;
 LCD_Init();
 DF_Port_Init();
 clear(1);
 
 keynumb=0;
 menu0(1);
 while(!keynumb);
 for(;;)
 {
  switch(keynumb)
  {
   case 17:
         keynumb = 0;
         if(courflag0==1)
          courflag0 = 3;
         else
          courflag0 = courflag0 - 1;
         menu0(courflag0);
		 break;
   case 25:
         keynumb = 0;
         if(courflag0==3)
          courflag0 = 1;
         else
          courflag0 = courflag0 + 1;
         menu0(courflag0);
		 break;
   case 41:
         keynumb = 0;
		 if(courflag0==1)	//一级子菜单1
         {
          menu11(1);
		  for(;;)
		  {
		   switch(keynumb)
		   {
		    case 17:
			      keynumb = 0;
                  if(courflag1==1)
                   courflag1 = 3;
                  else
                   courflag1 = courflag1 - 1;
                  menu11(courflag1);
		          break;
			case 25:
                  keynumb = 0;
                  if(courflag1==3)
                   courflag1 = 1;
                  else
                   courflag1 = courflag1 + 1;
                  menu11(courflag1);
		          break;
			case 41:
			      keynumb=0;
				  if(courflag1==1)
                  {
				   clear(1);					   //全部参数测试分析
				  // display_map(zuobiao,1);
				   Display_glbb(680,1);
				  // while(keynumb!=49)			//按返回键,退出
				   //{
				    //五秒刷新率   未做
					SFRPAGE   = TMR3_PAGE;
                    TMR3CN    = 0x04;
					SFRPAGE   = 0x0f;;
                    while(S_num!=2048);
					S_num=0;
                    Int_FFT(source,2048,'t',1,1);
                    account_mod(source);
                    account_order(source);		 
				
				    Display_gltu(680,1,K_fft,F_fft,source);	   //显示参数
					 while(keynumb==26);		 //按下B暂停,按任意键继续		   */
				  // }
                  }
            
                  if(courflag1==2)
                  {
				   //未做 查询 
              	 
                  }
            
                 if(courflag1==3)
                  {
              		//回放上次 未做 
              	   

                  }
				 for(;;)
                 {
                  if(keynumb==49)
                  {
                   keynumb = 0;
                   courflag1 = 1;
                
                   menu11(courflag1);
                   break;
                
                  }
                 }
				break;
			case 49:
            keynumb = 0;
            courflag1 = 1;
            ESCflag = 1;  
            break;
            default:
            break;
		   }
		  if(ESCflag==1)
          {
            ESCflag = 0;
            courflag0 = 1;
            menu0(courflag0);
            break;
          }
		  }
		 }

		 if(courflag0==2)	   //一级子菜单2
         {
          menu12(1);
		  for(;;)
		  {
		   switch(keynumb)
		   {
		    case 17:
			      keynumb = 0;
                  if(courflag1==1)
                   courflag1 = 5;
                  else
                   courflag1 = courflag1 - 1;
                  menu12(courflag1);
		          break;
			case 25:
                  keynumb = 0;
                  if(courflag1==5)
                   courflag1 = 1;
                  else
                   courflag1 = courflag1 + 1;
                  menu12(courflag1);
		          break;
			case 41:
			      keynumb=0;
				  if(courflag1==1)
                  {
              	   clear(1);
				   display_map(zuobiao,1);
				   Display_ppu(source,8641,courflag1-1,1);
                  }
            
                  if(courflag1==2)
                  {
              	   clear(1);
				   display_map(zuobiao,1);
				   Display_ppu(source,8641,courflag1-1,1);
                  }
            
                 if(courflag1==3)
                  {
              	   clear(1);
				   display_map(zuobiao,1);
				   Display_ppu(source,8641,courflag1-1,1);
                  }
				 if(courflag1==4)
                  {
              	   clear(1);
				   display_map(zuobiao,1);
				   Display_ppu(source,8641,courflag1-1,1);
                  }
				 if(courflag1==5)
                  {
              	   clear(1);
				   display_map(zuobiao,1);
				   Display_ppu(source,8641,courflag1-1,1);
                  }
				 for(;;)
                 {
                  if(keynumb==49)
                  {
                   keynumb = 0;
                   courflag1 = 1;
                
                   menu12(courflag1);
                   break;
                
                  }
                 }
				break;
			case 49:
                 keynumb = 0;
                 courflag1 = 1;
                 ESCflag = 1;  
                 break;
            default:
                 break;
		   }
		  if(ESCflag==1)
          {
            ESCflag = 0;
            courflag0 = 1;
            menu0(courflag0);
            break;
          }
		  }
		 }
		 if(courflag0==3)	   //一级子菜单3
         {
          menu13(1);
		  for(;;)
		  {
		   switch(keynumb)
		   {
		    case 17:
			      keynumb = 0;
                  if(courflag1==1)
                   courflag1 = 3;
                  else
                   courflag1 = courflag1 - 1;
                  menu13(courflag1);
		          break;
			case 25:
                  keynumb = 0;
                  if(courflag1==3)
                   courflag1 = 1;
                  else
                   courflag1 = courflag1 + 1;
                  menu13(courflag1);
		          break;
			case 41:
			      keynumb=0;
				  if(courflag1==1)
                  {						//刷新时间设置
              
                  }
            
                  if(courflag1==2)
                  {					   //频率分辨率设置
				    clear(1);
				    DisplayChineseArray("音频信号分析仪",14,12,1);
					DisplayChineseArray("系统设置",8,1296,1);
					DisplayChineseArray("频率分辨设置",16,2570,1);
					DisplaySymbol(datamaohao,2587,1);
					DisplayInt5(K_fft,2588,1);
					DisplayChineseArray("返回",4,8950,1);
					Redisplay_Area(8950,32,16,1);
              	   while(keynumb==0);
				   switch(keynumb)
				    case 28:
					     keynumb=0;
						 F_fft=100;
						 SFRPAGE   = TMR3_PAGE;
                         TMR3CF    = 0x08;
	                     RCAP3L    = 0x50;
                         RCAP3H    = 0xfe;	  //200k	
						 SFRPAGE   = 0x0f;
						 break;
					case 36:
					     keynumb=0;
						 F_fft=20;
						 SFRPAGE   = TMR3_PAGE;
                         TMR3CF    = 0x08;
	                     RCAP3L    = 0x90;
                         RCAP3H    = 0xf7;	  //40k	
						 SFRPAGE   = 0x0f;
						 break;
					case 20:
					     keynumb=0;
						 F_fft=10;
						 SFRPAGE   = TMR3_PAGE;
                         TMR3CF    = 0x08;
	                     RCAP3L    = 0x20;
                         RCAP3H    = 0xef;	  //20k	
						 SFRPAGE   = 0x0f;
						 break;
					default:
					     break;
                  }
            
                 if(courflag1==3)
                  {					  //转换因子调整
				    clear(1);
					DisplayChineseArray("音频信号分析仪",14,12,1);
					DisplayChineseArray("系统设置",8,1296,1);
					DisplayChineseArray("功率转换因子设置",16,2570,1);
					DisplaySymbol(datamaohao,2587,1);
					DisplayInt5(K_fft,2588,1);
					DisplayChineseArray("返回",4,8950,1);
					Redisplay_Area(8950,32,16,1);
              		while(keynumb!=41)
					 {
					  while(keynumb==0);
					  switch(keynumb)
					   {
					   	case 17:
						     keynumb=0;
							 K_fft=K_fft+10;
							 break;
						case 25:
						     keynumb=0;
							 K_fft=K_fft-10;
							 break;
						default:
						     break;
					   }
					  DisplayInt5(K_fft,2588,1);
					 }
                  }
				
				 for(;;)
                 {
                  if(keynumb==49)
                  {
                   keynumb = 0;
                   courflag1 = 1;
                
                   menu13(courflag1);
                   break;
                
                  }
                 }
				break;
			case 49:
                 keynumb = 0;
                 courflag1 = 1;
                 ESCflag = 1;  
                 break;
		   }
		  if(ESCflag==1)
          {
            ESCflag = 0;
            courflag0 = 1;
            menu0(courflag0);
            break;
          }
		  }
		 }
		 break;
   default:
         break;
  }
 }
}

⌨️ 快捷键说明

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