📄 main.c
字号:
Print_Str(0,0,(unsigned char *)combuf);
Print_Str(8,0," ");
CmdWrite(0x10,0x6e);
Dnop(10);
delayms(100);
key_Scan();
if(key_Status==KEY_ENTER)
{
key_Status=KEY_WAIT;
Clr_Screen();
Dnop(10);
Menu();
break;
}
if(key_Status==KEY_HOLD)
{
CmdWrite(0x10,0x4e);
Dnop(10);
Print_Str(0,0,"Hold On!");
key_Status=KEY_WAIT;
Stop_Time0();
while (1)
{
key_Scan();
if (key_Status==KEY_HOLD)
break;
}
key_Status=KEY_WAIT;
CmdWrite(0x10,0x6e);
Start_Time0();
}
if(key_Status==KEY_RECALL)
{
Stop_Time0();
key_Status=KEY_WAIT;
Wait_Recall();
Clr_Screen();
delayms(50);
Print_Str(0,16,"Pt=");
Print_Str(0,32,"F1=");
Print_Str(0,48,"P1=");
Print_Str(0,64,"F2=");
Print_Str(0,80,"P2=");
Print_Str(0,96,"F3=");
Print_Str(0,112,"P3=");
Print_Str(12,0,"F4=");
Print_Str(12,16,"P4=");
Print_Str(12,32,"F5=");
Print_Str(12,48,"P5=");
Print_Str(12,64,"F6=");
Print_Str(12,80,"P6=");
Print_Str(12,96,"F7=");
Print_Str(12,112,"P7=");
Start_Time0();
}
}
}
void Wait_Recall (void)
{
unsigned char i=0,j=0,flag=0;
unsigned short count=0;
unsigned char temp=0;
char combuf[8];
Clr_Screen();
delayms(50);
Print_Str(0,0,"记录号:");
Print_Str(0,24,"记录号:");
Print_Str(14,0,"存储");
Print_Str(14,24,"回放");
Print_Str(14,48,"返回");
wr_Num(10,0,i);
wr_Num(10,24,j);
curse_x=15;
curse_y=23;
CmdWrite(0x00,0xC5);
CmdWrite(0x60,curse_x);
CmdWrite(0x70,curse_y);
while(!flag){
key_Scan();
switch(key_Status)
{
case KEY_RIGHT:
curse_x-=5;
if(curse_x<=5) curse_x=15;
CmdWrite(0x00,0xC5);
CmdWrite(0x60,curse_x);
CmdWrite(0x70,curse_y);
key_Status=KEY_WAIT;
break;
case KEY_DOWN:
curse_y+=24;
curse_x=15;
CmdWrite(0x00,0xC5);
if(curse_y>=95) curse_y=23;
CmdWrite(0x60,curse_x);
CmdWrite(0x70,curse_y);
key_Status=KEY_WAIT;
break;
case KEY_ENTER:
key_Status=KEY_WAIT;
CmdWrite(0x00,0xC5);
switch (curse_y)
{
case 23:
if(curse_x==10){
i++;
if(i==8)
{
i=0;
}
wr_Num(10,0,i);
CmdWrite(0x00,0xC5);
CmdWrite(0x60,curse_x);
CmdWrite(0x70,curse_y);
}
if(curse_x==15){
Clr_Screen();
delayms(10);
//调用存储数据的函数
if(i<10)
{
F_Char.p_val=Time_Power();
F_Char.p_val*=1000;
Param[i*Record_Length]=F_Char.p_char[0];
Param[i*Record_Length+1]=F_Char.p_char[1];
Param[i*Record_Length+2]=F_Char.p_char[2];
Param[i*Record_Length+3]=F_Char.p_char[3];
temp=0;
for(count=4;count<53;count+=8)
{
F_Char.p_val=pos[temp]/2048.0*FS;
Param[i*Record_Length+count]=F_Char.p_char[0];
Param[i*Record_Length+count+1]=F_Char.p_char[1];
Param[i*Record_Length+count+2]=F_Char.p_char[2];
Param[i*Record_Length+count+3]=F_Char.p_char[3];
F_Char.p_val=2*((fftm[pos[temp]]/N)*(fftm[pos[temp]]/N))/status_R;
F_Char.p_val*=1000;
Param[i*Record_Length+count+4]=F_Char.p_char[0];
Param[i*Record_Length+count+5]=F_Char.p_char[1];
Param[i*Record_Length+count+6]=F_Char.p_char[2];
Param[i*Record_Length+count+7]=F_Char.p_char[3];
temp++;
}
}
temp=Flash();
Print_Str(0,0,"数据已被存储");
while(1){
key_Scan();
if(key_Status==KEY_ENTER)
{
flag=1;
key_Status=KEY_WAIT;
break;
}
}
}
break;
case 47:
if(curse_x==10)
{
//key_Scan();
//if(key_Status==KEY_DOWN) j++;
j++;
if(j==8) j=0;
wr_Num(10,24,j);
CmdWrite(0x00,0xC5);
CmdWrite(0x60,curse_x);
CmdWrite(0x70,curse_y);
}
if(curse_x==15)
{
Clr_Screen();
delayms(10);
wr_Num(0,0,j);
Print_Str(1,0,"组数据"); //调用显示数据函数
if(j<10)
{
for(count=0;count<512;count++)
{
Param[count]=(*(volatile unsigned char *)(DestAddr11+count));
}
Print_Str(0,16,"Pt=");
Print_Str(0,32,"F1=");
Print_Str(0,48,"P1=");
Print_Str(0,64,"F2=");
Print_Str(0,80,"P2=");
Print_Str(0,96,"F3=");
Print_Str(0,112,"P3=");
Print_Str(12,0,"F4=");
Print_Str(12,16,"P4=");
Print_Str(12,32,"F5=");
Print_Str(12,48,"P5=");
Print_Str(12,64,"F6=");
Print_Str(12,80,"P6=");
Print_Str(12,96,"F7=");
Print_Str(12,112,"P7=");
//显示直流功率
F_Char.p_char[0]=Param[j*Record_Length];
F_Char.p_char[1]=Param[j*Record_Length+1];
F_Char.p_char[2]=Param[j*Record_Length+2];
F_Char.p_char[3]=Param[j*Record_Length+3];
sprintf(combuf,"%07f",F_Char.p_val);
combuf[7]='\0';
Print_Str(3,16,(unsigned char *)combuf);
temp=0;
for(count=4;count<53;count+=8)
{
F_Char.p_char[0]=Param[j*Record_Length+count];
F_Char.p_char[1]=Param[j*Record_Length+count+1];
F_Char.p_char[2]=Param[j*Record_Length+count+2];
F_Char.p_char[3]=Param[j*Record_Length+count+3];
sprintf(combuf,"%07f",F_Char.p_val);
combuf[7]='\0';
if(temp<3)
{
Print_Str(3,(temp+1)*32,(unsigned char *)combuf);
}
else
Print_Str(15,(temp-3)*32,(unsigned char *)combuf);
F_Char.p_char[0]=Param[j*Record_Length+count+4];
F_Char.p_char[1]=Param[j*Record_Length+count+5];
F_Char.p_char[2]=Param[j*Record_Length+count+6];
F_Char.p_char[3]=Param[j*Record_Length+count+7];
sprintf(combuf,"%07f",F_Char.p_val);
combuf[7]='\0';
if(temp<3)
{
Print_Str(3,(temp+1)*32+16,(unsigned char *)combuf);
}
else
Print_Str(15,(temp-3)*32+16,(unsigned char *)combuf);
temp++;
}
}
while(1)
{
key_Status=KEY_WAIT;
key_Scan();
if(key_Status==KEY_ENTER)
{
flag=1;
key_Status=KEY_WAIT;
break;
}
}
}
break;
case 71:
flag=1;
break;
default:
break;
}
CmdWrite(0x00,0xC5);
CmdWrite(0x60,curse_x);
CmdWrite(0x70,curse_y);
break;
default:
break;
}
}
}
void display_graph(void)
{
float time_power=0.0;
double fft_power=0;
char combuf[10];
float max;
unsigned short position=0,y=0;
unsigned short i=0,j=0;
unsigned char n;
double fft_freq = 0, cali_val = 1.0;
unsigned char p_val;
int i_val;
Print_Str(0,16,"Pt=");
Print_Str(0,32,"F1=");
Print_Str(0,48,"P1=");
Print_Str(0,64,"F2=");
Print_Str(0,80,"P2=");
Print_Str(0,96,"F3=");
Print_Str(0,112,"P3=");
while(1)
{
Start_Time0();
ADC0IntDone=0;
while(!ADC0IntDone);
ADC0IntDone=0;
Stop_Time0();
if(sec_ctn>=5)
{
sec_ctn=0;
time_power=Time_Power();
Fft();
Sort(N/2);
sprintf(combuf,"%05f",time_power*1000);
combuf[5]='\0';
Print_Str(3,16,(unsigned char *)combuf);
//显示时域波形
for(i=0;i<1024;i++) lcd_data[i]=0x00; //清零
//for(i=0;i<64;i++) lcd_data[i*16]=0x80; //y轴
for(i=496;i<512;i++) lcd_data[i]=0xff; //x轴
for(i=0;i<128;i++)
{
position=(95-(x_Input[i]/32));
position<<=4;
position=(position+(i>>3));
n=i%8;
position&=0x07ff;
lcd_data[position]|=(0x80>>n);
}
CmdWrite(0x00,0xC5);
for(i=0;i<1024;i++)
{
CmdWrite(0x60,i%16+8); // set cursor X location
CmdWrite(0x70,i/16); // set cursor Y location
SdData(lcd_data[i]);
}
//显示频域波形
max=fftm[pos[0]];
for(i=0;i<10;i++)
{
y=fftm[pos[i]]/max*64;
for(j=64;j<128-y;j++)
{
CmdWrite(0x00,0xC5);
CmdWrite(0x60,i*2+10); // set cursor X location
CmdWrite(0x70,j); // set cursor Y location
SdData(0x00);
}
for(j=128-y;j<128;j++)
{
CmdWrite(0x00,0xC5);
CmdWrite(0x60,i*2+10); // set cursor X location
CmdWrite(0x70,j); // set cursor Y location
SdData(0x80);
}
}
for(i=8;i<24;i++){
CmdWrite(0x00,0xC5);
CmdWrite(0x60,i); // set cursor X location
CmdWrite(0x70,127); // set cursor Y location
SdData(0xff);
}
//显示文本区域
for(i=0;i<3;i++)
{
fft_freq=pos[i]/2048.0*FS;
sprintf(combuf,"%05f",fft_freq);
combuf[5]='\0';
Print_Str(3,(i+1)*32,(unsigned char *)combuf);
fft_power=2*((fftm[pos[i]]/N)*(fftm[pos[i]]/N))/status_R;
i_val = (int)fft_freq;
if (i_val>=0 && i_val<10000)
{
p_val = i_val/1000;
cali_val = (coef[p_val+1]-coef[p_val])*(fft_freq/1000.0 - p_val) + coef[p_val];
fft_power *= cali_val;
}
fft_power=(fft_power*1000);
sprintf(combuf,"%05f",fft_power);
combuf[5]='\0';
Print_Str(3,(i+1)*32+16,(unsigned char *)combuf);
}
}
current_time = RTCGetTime();
sprintf(combuf,"%02d:%02d:%02d",current_time.RTC_Hour,current_time.RTC_Min, current_time.RTC_Sec);
Print_Str(0,0,(unsigned char *)combuf);
delayms(100);
key_Scan();
if(key_Status==KEY_ENTER)
{
key_Status=KEY_WAIT;
Clr_Screen();
Dnop(10);
Menu();
break;
}
if(key_Status==KEY_HOLD)
{
CmdWrite(0x10,0x4e);
Dnop(10);
Print_Str(0,0,"Hold On!");
key_Status=KEY_WAIT;
Stop_Time0();
while (1)
{
key_Scan();
if (key_Status==KEY_HOLD)
break;
}
key_Status=KEY_WAIT;
CmdWrite(0x10,0x6e);
Start_Time0();
}
if(key_Status==KEY_RECALL)
{
Stop_Time0();
delayms(100);
key_Status=KEY_WAIT;
Wait_Recall();
Clr_Screen();
delayms(100);
Print_Str(0,16,"Pt=");
Print_Str(0,32,"F1=");
Print_Str(0,48,"P1=");
Print_Str(0,64,"F2=");
Print_Str(0,80,"P2=");
Print_Str(0,96,"F3=");
Print_Str(0,112,"P3=");
Start_Time0();
}
}
}
void display_graph_1(void)
{
float time_power=0.0;
double fft_power=0;
char combuf[10];
float max;
unsigned short position=0,y=0;
unsigned short i=0,j=0;
unsigned char n;
double fft_freq = 0, cali_val = 1.0;
unsigned char p_val;
int i_val;
Print_Str(0,16,"Pt=");
Print_Str(0,32,"F1=");
Print_Str(0,48,"P1=");
Print_Str(0,64,"F2=");
Print_Str(0,80,"P2=");
Print_Str(0,96,"F3=");
Print_Str(0,112,"P3=");
Start_Time0();
while(1)
{
Start_Time0();
ADC0IntDone=0;
while(!ADC0IntDone);
ADC0IntDone=0;
Stop_Time0();
time_power=Time_Power();
Fft();
Sort(N/2);
time_power=(time_power*1000);
sprintf(combuf,"%05f",time_power);
combuf[5]='\0';
Print_Str(3,16,(unsigned char *)combuf);
//显示时域波形
for(i=0;i<1024;i++) lcd_data[i]=0x00; //清零
//for(i=0;i<64;i++) lcd_data[i*16]=0x80; //y轴
for(i=496;i<512;i++) lcd_data[i]=0xff; //x轴
for(i=0;i<128;i++)
{
position=(95-(x_Input[i]/32));
position<<=4;
position=(position+(i>>3));
n=i%8;
position&=0x07ff;
lcd_data[position]|=(0x80>>n);
}
CmdWrite(0x00,0xC5);
for(i=0;i<1024;i++)
{
CmdWrite(0x60,i%16+8); // set cursor X location
CmdWrite(0x70,i/16); // set cursor Y location
SdData(lcd_data[i]);
}
//显示频域波形
max=fftm[pos[0]];
for(i=0;i<10;i++)
{
y=fftm[pos[i]]/max*64;
for(j=64;j<128-y;j++)
{
CmdWrite(0x00,0xC5);
CmdWrite(0x60,i*2+10); // set cursor X location
CmdWrite(0x70,j); // set cursor Y location
SdData(0x00);
}
for(j=128-y;j<128;j++)
{
CmdWrite(0x00,0xC5);
CmdWrite(0x60,i*2+10); // set cursor X location
CmdWrite(0x70,j); // set cursor Y location
SdData(0x80);
}
}
for(i=8;i<24;i++){
CmdWrite(0x00,0xC5);
CmdWrite(0x60,i); // set cursor X location
CmdWrite(0x70,127); // set cursor Y location
SdData(0xff);
}
//显示文本区域
for(i=0;i<3;i++)
{
fft_freq=pos[i]/2048.0*FS;
sprintf(combuf,"%05f",fft_freq);
combuf[5]='\0';
Print_Str(3,(i+1)*32,(unsigned char *)combuf);
fft_power=2*((fftm[pos[i]]/N)*(fftm[pos[i]]/N))/status_R;
i_val = (int)fft_freq;
if (i_val>=0 && i_val<10000)
{
p_val = i_val/1000;
cali_val = (coef[p_val+1]-coef[p_val])*(fft_freq/1000.0 - p_val) + coef[p_val];
fft_power *= cali_val;
}
fft_power=(fft_power*1000);
sprintf(combuf,"%05f",fft_power);
combuf[5]='\0';
Print_Str(3,(i+1)*32+16,(unsigned char *)combuf);
}
current_time = RTCGetTime();
sprintf(combuf,"%02d:%02d:%02d",current_time.RTC_Hour,current_time.RTC_Min, current_time.RTC_Sec);
Print_Str(0,0,(unsigned char *)combuf);
delayms(100);
key_Scan();
if(key_Status==KEY_ENTER)
{
key_Status=KEY_WAIT;
Clr_Screen();
Dnop(10);
Menu();
break;
}
if(key_Status==KEY_HOLD)
{
CmdWrite(0x10,0x4e);
Dnop(10);
Print_Str(0,0,"Hold On!");
key_Status=KEY_WAIT;
Stop_Time0();
while (1)
{
key_Scan();
if (key_Status==KEY_HOLD)
break;
}
key_Status=KEY_WAIT;
CmdWrite(0x10,0x6e);
Start_Time0();
}
if(key_Status==KEY_RECALL)
{
Stop_Time0();
delayms(100);
key_Status=KEY_WAIT;
Wait_Recall();
Clr_Screen();
delayms(100);
Print_Str(0,16,"Pt=");
Print_Str(0,32,"F1=");
Print_Str(0,48,"P1=");
Print_Str(0,64,"F2=");
Print_Str(0,80,"P2=");
Print_Str(0,96,"F3=");
Print_Str(0,112,"P3=");
Start_Time0();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -