📄 menu.c
字号:
extern wavedata[8];
#include "SPCE061V004.H"
#include "lcd.h"
#include "menu.h"
//#define up 0x01
//#define down 0x10
//#define right 0x40
//#define relf 0x20
//#define 0k 0x02
//按键up:0x80 按键down:0x04
//按键relf:0x02 按键right:0x40
//按键ok:0x20
//
void step_forword(void);
void step_backword(void);
void sin_send(unsigned long int f_con);
void xieenglish();
//=======================================================================================
// 菜单1
//
// 正玄波发生器
// 调副调制器
// psk,ask
// 调频发生器
//=======================================================================================
int menu1(void) //菜单代码 1
{
unsigned int i,option=1,f_option=1;
xiezi(0+16,0,&zheng); xiezi(16+16,0,&xuan); xiezi(32+16,0,&bo); xiezi(48+16,0,&fa);xiezi(64+16,0,&sheng); xiezi(80+16,0,&qi);
xiezi(0+16,2,&tiao); xiezi(16+16,2,&fu); xiezi(32+16,2,&tiao); xiezi(48+16,2,&zhi);xiezi(64+16,2,&qi);
xieenglish(16,4,&bP); xieenglish(24,4,&bS); xieenglish(32,4,&bK); xieenglish(42,4,&bA);xieenglish(50,4,&bS); xieenglish(58,4,&bK);
xiezi(0+16,6,&tiao); xiezi(16+16,6,&pin); xiezi(32+16,6,&fa);xiezi(64,6,&sheng); xiezi(80,6,&qi);
cpl(16,0,112,1); //取反按键1
w_scr();
while(1) //key event opporation
{
if((*P_IOA_Data&0x80)==0) //key_up on clip
{
option--;
cpl_menu1(f_option);
if(option==0)
{
option=4;
}
f_option=option;
cpl_menu1(option);
w_scr();
delay(5000);
while((*P_IOA_Data&0x80)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x04)==0) //key_down on clip
{
option++;
cpl_menu1(f_option);
if(option==5)
{
option=1;
}
f_option=option;
cpl_menu1(option);
w_scr();
delay(5000);
while((*P_IOA_Data&0x04)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x20)==0) //key_ok on clip
{
switch(option)
{
case 1: i=2;break;
case 2: i=5;break;
case 3: i=4;break;
case 4: i=6;break;
}
delay(5000);
while((*P_IOA_Data&0x20)==0){delay(5000);}
goto menu1_end;
}
delay(5000);
}
menu1_end:
return i;
}
//=======================================================================================
//
//=======================================================================================
cpl_menu1(unsigned int i)
{
switch(i)
{
case 1: cpl(0+16,0,96+16,1);break; //取反按键1
case 2: cpl(0+16,2,96+16,3);break;
case 3: cpl(0+16,4,96+16,5);break;
case 4: cpl(0+16,6,96+16,7);break;
}
}
//=======================================================================================
// 菜单2
// 正玄波发生器
// 输出频率: 10 000 000Hz
// 步进 设定频率
//=======================================================================================
int menu2(void) //菜单代码 2
{
unsigned int i,option=1,f_option=1,ge=0,shi=1,j;
unsigned long int sin_data;
xiezi(16,0,&zheng); xiezi(32,0,&xuan); xiezi(48,0,&bo); xiezi(64,0,&fa);xiezi(80,0,&sheng); xiezi(96,0,&qi);
xiezi(0,3,&pin); xiezi(16,3,&lv); xieword(32,4,10);
xiebword(40,3,wavedata[0]); xiebword(48,3,wavedata[1]); xiebword(56,3,wavedata[2]); xiebword(64,3,wavedata[3]);
xiebword(72,3,wavedata[4]); xiebword(80,3,wavedata[5]); xiebword(88,3,wavedata[6]); xiebword(96,3,wavedata[7]);
xieword(104,4,11);//H
xieword(112,4,12);//Z
xiezi(0,5,&bu); xiezi(16,5,&jin); xiezi(48,5,&ajfan); xiezi(64,5,&ajhui); xiezi(96,5,&she); xiezi(112,5,&ajding);
cpl(0,5,31,6); //取反按键1
w_scr();
sin_data=0;
for(j=0;j<8;j++)
{
sin_data=(sin_data+wavedata[j])*10;
}
//计算正弦波数据并发送数
sin_send(sin_data/10);
while(1) //key event opporation
{
if((*P_IOA_Data&0x02)==0) //key_relf on clip
{
option--;
cpl_menu2(f_option);
if(option==0)
{
option=3;
}
f_option=option;
cpl_menu2(option);
w_scr();
delay(5000);
while((*P_IOA_Data&0x02)==0){delay(5000);}
}
if((*P_IOA_Data&0x40)==0) //key_right on clip
{
option++;
cpl_menu2(f_option);
if(option==4)
{
option=1;
}
f_option=option;
cpl_menu2(option);
w_scr();
delay(5000);
while((*P_IOA_Data&0x40)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x80)==0) //key_up on clip
{
i=0;
if(option==1)
{
kkup:
if((wavedata[0]==1)&(wavedata[1]==0)&(wavedata[2]==0)&(wavedata[3]==0)&(wavedata[4]==0)&(wavedata[5]==0));
else
{
wavedata[5]++;
if(wavedata[5]>9){wavedata[4]++;wavedata[5]=0;}
if(wavedata[4]>9){wavedata[3]++;wavedata[4]=0;}
if(wavedata[3]>9){wavedata[2]++;wavedata[3]=0;}
if(wavedata[2]>9){wavedata[1]++;wavedata[2]=0;}
if(wavedata[1]>9){wavedata[0]++;wavedata[1]=0;}
if(wavedata[0]>9){wavedata[0]=0;}
xiebword(40,3,wavedata[0]); xiebword(48,3,wavedata[1]); xiebword(56,3,wavedata[2]); xiebword(64,3,wavedata[3]);
xiebword(72,3,wavedata[4]); xiebword(80,3,wavedata[5]); xiebword(88,3,wavedata[6]); xiebword(96,3,wavedata[7]);
w_scr();
step_forword();
}
}
delay(5000);
while((*P_IOA_Data&0x80)==0)
{
delay(5000);
i++;
if(i>20)
{
i--;
goto kkup;
}
}
}
if((*P_IOA_Data&0x04)==0) //key_down on clip
{
i=0;
if(option==1)
{
kkdown:
if((wavedata[0]==0)&(wavedata[1]==0)&(wavedata[2]==0)&(wavedata[3]==0)&(wavedata[4]==0)&(wavedata[5]==1));
else
{
wavedata[5]--;
if(wavedata[5]==0xffff){wavedata[4]--;wavedata[5]=9;}
if(wavedata[4]==0xffff){wavedata[3]--;wavedata[4]=9;}
if(wavedata[3]==0xffff){wavedata[2]--;wavedata[3]=9;}
if(wavedata[2]==0xffff){wavedata[1]--;wavedata[2]=9;}
if(wavedata[1]==0xffff){wavedata[0]--;wavedata[1]=9;}
if(wavedata[0]==0xffff){wavedata[0]=1;}
xiebword(40,3,wavedata[0]); xiebword(48,3,wavedata[1]); xiebword(56,3,wavedata[2]); xiebword(64,3,wavedata[3]);
xiebword(72,3,wavedata[4]); xiebword(80,3,wavedata[5]); xiebword(88,3,wavedata[6]); xiebword(96,3,wavedata[7]);
w_scr();
step_backword();
}
}
delay(5000);
while((*P_IOA_Data&0x04)==0){delay(5000);i++;if(i>20) {i--;goto kkdown;}}
}
if((*P_IOA_Data&0x20)==0) //key_ok on clip
{
if(option>1)
{
switch(option)
{
case 1: break;
case 2:i=1;break; //关闭正弦波发生
case 3: i=3;break;
}
delay(5000);
while((*P_IOA_Data&0x20)==0){delay(5000);}
goto menu1_1_end;
}
}
delay(5000);
}
menu1_1_end :
return i;
}
//=======================================================================================
//
//=======================================================================================
cpl_menu2(unsigned int i)
{
switch(i)
{
case 1: cpl(0,5,30,6); break; //取反按键1
case 2: cpl(48,5,79,6);break;
case 3: cpl(96,5,127,6); break;
}
}
//=======================================================================================
// 菜单3
// 正玄波发生器
// 频率: 10000000Hz
// 确定 取消
//=======================================================================================
int menu3(void) //菜单代码 2
{
unsigned int i,option=1,f_option=1,data[8]={1};
xiezi(16,0,&zheng); xiezi(32,0,&xuan); xiezi(48,0,&bo); xiezi(64,0,&fa);xiezi(80,0,&sheng); xiezi(96,0,&qi);
xiezi(0,3,&pin); xiezi(16,3,&lv); xieword(32,3,10); xiebword(40,3,wavedata[0]); xiebword(48,3,wavedata[1]); xiebword(56,3,wavedata[2]);
xiebword(64,3,wavedata[3]);xiebword(72,3,wavedata[4]); xiebword(80,3,wavedata[5]); xiebword(88,3,wavedata[6]); xiebword(96,3,wavedata[7]);
xieword(104,4,11); xieword(112,4,12); //Hz
xiezi(0+16,5,&ajque); xiezi(16+16,5,&ajding); xiezi(64,5,&ajqu); xiezi(80,5,&ajxiao);
cpl(40,4,47,4); //取反按键1
w_scr();
for(i=0;i<8;i++)
{
data[i]=wavedata[i];
}
while(1) //key event opporation
{
if((*P_IOA_Data&0x02)==0) //key_relf on clip
{
option--;
cpl_menu3(f_option);
if(option==0)
{
option=10;
}
f_option=option;
cpl_menu3(option);
w_scr();
delay(5000);
while((*P_IOA_Data&0x02)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x40)==0) //key_right on clip
{
option++;
cpl_menu3(f_option);
if(option==11)
{
option=1;
}
f_option=option;
cpl_menu3(option);
w_scr();
delay(5000);
while((*P_IOA_Data&0x40)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x80)==0) //key_up on clip
{
if(option<9)
{
data[option-1]++;
if(data[option-1]==10)
data[option-1]=0;
if((option-1)==0&data[0]==1)
{
data[0]=1;
data[1]=0;
data[2]=0;
data[3]=0;
data[4]=0;
data[5]=0;
data[6]=0;
data[7]=0;
}
else data[0]=0;
xiebword(40,3,data[0]); xiebword(48,3,data[1]); xiebword(56,3,data[2]); xiebword(64,3,data[3]);xiebword(72,3,data[4]); xiebword(80,3,data[5]); xiebword(88,3,data[6]); xiebword(96,3,data[7]);
cpl_menu3(option);
w_scr();
}
delay(5000);
while((*P_IOA_Data&0x80)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x04)==0) //key_down on clip
{
if(option<9)
{
data[option-1]--;
if((option-1)>0)data[0]=0;
if(data[option-1]==0xffff)
data[option-1]=9;
if(data[0]==9)
data[0]=1;if(data[0]==1){data[1]=0;data[2]=0;data[3]=0;data[4]=0;data[5]=0;data[6]=0;data[7]=0;}
xiebword(40,3,data[0]); xiebword(48,3,data[1]); xiebword(56,3,data[2]); xiebword(64,3,data[3]);xiebword(72,3,data[4]); xiebword(80,3,data[5]); xiebword(88,3,data[6]); xiebword(96,3,data[7]);
cpl_menu3(option);
w_scr();
}
w_scr();
delay(5000);
while((*P_IOA_Data&0x04)==0)
{
delay(5000);
}
}
if((*P_IOA_Data&0x20)==0) //key_ok on clip
{
delay(5000);
if(option>8)
{
switch(option)
{
case 9:
for(i=0;i<8;i++)
{
wavedata[i]=data[i];
}
F_FlashErase(0xf000);
delay(5000);
F_FlashWrite(0xf000,&wavedata, 8);
i=2;
break;
case 10:
i=2;
break;
}
while((*P_IOA_Data&0x20)==0)
{
delay(5000);
}
goto menu3_end;
}
while((*P_IOA_Data&0x20)==0)
{
delay(5000);
}
}
delay(500);
}
menu3_end :
return i;
}
//=======================================================================================
//
//=======================================================================================
cpl_menu3(unsigned int i)
{
switch(i)
{
case 1: cpl(40,3,47,4); break; //取反按键1
case 2: cpl(48,3,55,4); break;
case 3: cpl(56,3,63,4); break; //取反按键1
case 4: cpl(64,3,71,4); break;
case 5: cpl(72,3,79,4); break; //取反按键1
case 6: cpl(80,3,87,4); break;
case 7: cpl(88,3,95,4); break; //取反按键1
case 8: cpl(96,3,103,4); break;
case 9: cpl(0+16,5,31+16,6);break;
case 10: cpl(64,5,95,6);break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -