📄 interfacedef.c
字号:
#include "lcd.h"
#include "func.h"
#include "interface.h"
#include "key.h"
#include "getinputnum.h"
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
void DisplayStateDef(void)
{
char temp[10];
uchar len,j,i;
LcdClear();
SetPos(0,0);
LcdPrint("频率:",sizeof("频率:")-1);
len=ltoa(Wave[CurWaveType].Freq,temp);
if(Wave[CurWaveType].Freq>1000)
{
for(j=len;j>len-3;j--)
{
temp[j]=temp[j-1];
}
temp[len-3]='.';
LcdPrint(temp,len+1);
LcdPrint("KHz",3);
}
else
{
LcdPrint(temp,len);
LcdPrint("Hz",2);
}
/////////////////
SetPos(0,1);
LcdPrint("幅度:",sizeof("幅度:")-1);
Wave[CurWaveType].Peak=0;
for(i=0;i<4;i++)
{
Wave[CurWaveType].Peak+=Wave[i].Peak+HarPeak[i];
}
temp[3]=Wave[CurWaveType].Peak;
if(temp[3]<0){temp[3]*=-1;}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,2);
LcdPrint("设定基波",sizeof("设定基波")-1);
SetPos(0,3);
LcdPrint("设定谐波",sizeof("设定谐波")-1);
}
void DisPlayBaseWave()
{
char temp[10];
LcdClear();
SetPos(0,0);
LcdPrint("\xd5\xfd弦波:",sizeof("\xd5\xfd弦波:")-1);
temp[3]=Wave[0].Peak;
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,1);
LcdPrint("方波 : ",sizeof("方波 : ")-1);
temp[3]=Wave[1].Peak;
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,2);
LcdPrint("\xc8\xfd角波:",sizeof("\xc8\xfd角波:")-1);
temp[3]=Wave[2].Peak;
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,3);
LcdPrint("锯齿波:",sizeof("锯齿波:")-1);
temp[3]=Wave[3].Peak;
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
}
void DisPlayHarWave()
{
char temp[10];
LcdClear();
SetPos(0,0);
LcdPrint("一次谐波: ",sizeof("一次谐波: ")-1);
temp[3]=HarPeak[0];
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,1);
LcdPrint("二次谐波: ",sizeof("二次谐波: ")-1);
temp[3]=HarPeak[1];
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,2);
LcdPrint("\xc8\xfd次谐波: ",sizeof("\xc8\xfd次谐波: ")-1);
temp[3]=HarPeak[2];
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
SetPos(0,3);
LcdPrint("四次谐波: ",sizeof("四次谐波: ")-1);
temp[3]=HarPeak[3];
if(temp[3]<0)
{
LcdPrint("-",1);
temp[3]*=-1;
}
temp[0]=temp[3]/10;
temp[2]=temp[3]%10;
temp[0]+=0x30;temp[2]+=0x30;temp[1]='.';
LcdPrint(temp,3);
LcdPrint("V",1);
}
void GetBaseWave()
{
uchar key;
float ftemp;
SetPos(5,3);
ShowCursor();
while(1)
{
key=WaitKey();
switch(key)
{
case 0x00: ftemp=10*GetInputFloatNum(4,0,4);
if (ftemp<=50 && ftemp>=-50)
{
Wave[0].Peak=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x01: ftemp=10*GetInputFloatNum(4,1,4);
if (ftemp<=50 && ftemp>=-50)
{
Wave[1].Peak=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x02: ftemp=10*GetInputFloatNum(4,2,4);
if (ftemp<=50 && ftemp>=-50)
{
Wave[2].Peak=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x03: ftemp=10*GetInputFloatNum(4,3,4);
if (ftemp<=50 && ftemp>=-50)
{
Wave[3].Peak=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x0f: //HideCursor();
return;
break;
default:break;
}
DisPlayBaseWave();
}
}
void GetHarWave()
{
uchar key;
char ftemp;
SetPos(5,3);
ShowCursor();
while(1)
{
key=WaitKey();
switch(key)
{
case 0x00: ftemp=10*GetInputFloatNum(5,0,4);
if (ftemp<=50 && ftemp>=-50)
{
HarPeak[0]=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x01: ftemp=10*GetInputFloatNum(5,1,4);
if (ftemp<=50 && ftemp>=-50)
{
HarPeak[1]=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x02: ftemp=10*GetInputFloatNum(5,2,4);
if (ftemp<=50 && ftemp>=-50)
{
HarPeak[2]=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x03: ftemp=10*GetInputFloatNum(5,3,4);
if (ftemp<=50 && ftemp>=-50)
{
HarPeak[3]=ftemp;
}
SetPos(0,0);
ShowCursor();
break;
case 0x0f: //HideCursor();
return;
break;
default:break;
}
DisPlayHarWave();
}
}
bit ProcessDefInput(void)
{
ulong temp;
uchar i,key;
//char ftemp;
SetPos(5,3);
ShowCursor();
while(1)
{
key=WaitKey();
switch(key)
{
case 0x00: SetPos(3,0);
for(i=0;i<10;i++)
{
LcdPrint(" ",1);
}
temp=GetInputNum(3,0,5);
if(temp>0 && temp<=20000)
{
Wave[CurWaveType].Freq=temp;
}
ShowCursor();
break;
case 0x01: /*ftemp=10*GetInputFloatNum(3,1,4);
if (ftemp<=50 && ftemp>=-50)
{
Wave[CurWaveType].Peak=ftemp;
}
ShowCursor();*/
break;
case 0x02: DisPlayBaseWave();
GetBaseWave();
break;
case 0x03: DisPlayHarWave();
GetHarWave();
break;
case 0x0f: LcdClear();
LcdPrintLine("改变波形配置?",sizeof("改变波形配置?")-1,1,1);
key=WaitKey();
if(key==0x0f)
{
HideCursor();
return 1;
}
default:break;
}
DisplayStateDef();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -