📄 interface.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 DisplayState(void)
{
char temp[10];
uchar len,j;
ulong phase;
LcdClear();
SetPos(0,0);
LcdPrint("波形: ",sizeof("波形: ")-1);
switch (CurWaveType)
{
case 0: LcdPrint("\xd5\xfd弦波",sizeof("\xd5\xfd弦波")-1);
break;
case 1:LcdPrint("方波 ",sizeof("方波 ")-1);
break;
case 2:LcdPrint("\xc8\xfd角波",sizeof("\xc8\xfd角波")-1);
break;
case 3:LcdPrint("锯齿波",sizeof("锯齿波")-1);
break;
case 4:LcdPrint("自定义",sizeof("自定义")-1);
break;
default:break;
}
/////////////////
SetPos(0,1);
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,2);
LcdPrint("幅度:",sizeof("幅度:")-1);
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,3);
LcdPrint("相位:",sizeof("相位:")-1);
phase=(ulong)Wave[CurWaveType].Phase*(ulong)360;
phase/=256;
temp[2]=phase%10+0x30;
phase/=10;
temp[1]=phase%10+0x30;
phase/=10;
temp[0]=phase%10+0x30;
LcdPrint(temp,3);
LcdPrint(" 度",sizeof(" 度")-1);
}
uchar GetWaveType()
{
uchar temp=CurWaveType,key;
ShowCursor();
while(1)
{
SetPos(3,0);
key=WaitKey();
if(key!=0x0f)
{
temp++;if(temp>3) {temp=0;}
SetPos(3,0);
switch (temp)
{
case 0:LcdPrint("\xd5\xfd弦波",sizeof("\xd5\xfd弦波")-1);
break;
case 1:LcdPrint("方波 ",sizeof("方波 ")-1);
break;
case 2:LcdPrint("\xc8\xfd角波",sizeof("\xc8\xfd角波")-1);
break;
case 3:LcdPrint("锯齿波",sizeof("锯齿波")-1);
break;
default:break;
}
}
else
{
//HideCursor();
return temp;
}
}
}
bit ProcessSingleInput(void)
{
bit change=0;
float ftemp;
ulong temp;
uchar i,key;
SetPos(5,3);
ShowCursor();
while(1)
{
key=WaitKey();
switch(key)
{
case 0x00: temp=GetWaveType();
if(CurWaveType!=temp)
{
CurWaveType=temp;
change=1;
}
SetPos(0,0);
ShowCursor();
break;
case 0x01: SetPos(3,1);
for(i=0;i<10;i++)
{
LcdPrint(" ",1);
}
temp=GetInputNum(3,1,5);
if(temp>0 && temp<=20000 && Wave[CurWaveType].Freq!= temp)
{
Wave[CurWaveType].Freq=temp;
change=1;
}
SetPos(0,0);
ShowCursor();
break;
case 0x02: ftemp=10*GetInputFloatNum(3,2,4);
if (ftemp<=50 && ftemp>=-50)
{
Wave[CurWaveType].Peak=ftemp;
change=1;
}
SetPos(0,0);
ShowCursor();
break;
case 0x03: temp=GetInputNum(3,3,3);
if(temp<360 && Wave[CurWaveType].Phase!=temp)
{
Wave[CurWaveType].Phase=((float)temp*256)/360+0.5;
change=1;
}
SetPos(0,0);
ShowCursor();
break;
case 0x0f: LcdClear();
LcdPrintLine("改变波形配置?",sizeof("改变波形配置?")-1,1,1);
key=WaitKey();
if(key==0x0f)
{
HideCursor();
return change;
}
default:break;
}
DisplayState();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -