📄 main.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 + -