📄 page3.c
字号:
#include "zimo.h"
#include "data.h"
#include "dataChange.h"
#include "AD.h"
#include "System.h"
#define Wave_Num 3 //
#define MaxY 90
#define MaxX 256
#define HalfY 45
#define HalfX 128
#define CenterY 100
#define VoltageChangeK 32767 //显示所乘系数,为显示最大值与输入电压最大值比
#define CurChangeK 32767 //Q15
#define MaxDispVol 500
#define MaxDispCur 100
int Save_DataY[Wave_Num][N]={0} ; //保存已经显示数据,便于清除
int ShowFlagPage3=1; //Page3显示页面
//Cursor表示显示页面3的第几个子页面
int PAGE_THREE(int Cursor) {
int i,num;
num = 3;
LCDDELAY;
LCDPORTCMD = LCD_CSRFORM;
/* for(i=0;i<2;i++){ //设置块状光标
LCDDELAY;
LCDPORTDATA = PCsrBlock[i];
}*/
LCDDELAY;
LCDPORTCMD = LCD_OVLAY;
LCDDELAY;
// LCDPORTDATA = 9; //设置一、为文本属性,三区为图形属性
LCDPORTDATA = 9;
LCDDELAY;
LCDPORTCMD = LCD_DISPON;
LCDDELAY;
LCDPORTDATA = 0x14; //设置一~四区开显示,三关闭,关标显示关
//*******************************
DisplyCh(32,220,char6,0);
DisplyCh(48,220,char15,0);
DisplyCh(64,220,char2,0);
DisplyCh(80,220,char55,0); //电压波形
//*******************************
DisplyCh(128,220,char1,0);
DisplyCh(144,220,char2,0);
DisplyCh(160,220,char6,0);
DisplyCh(176,220,char16,0); //谐波电流
//*******************************
DisplyCh(224,220,char10,0);
DisplyCh(240,220,char71,0);
DisplyCh(256,220,char70,0);
//******************************* //频谱图
DisplyCh(272,16,char3,0);
DisplyCh(288,16,char68,0);
DisplyCh(304,16,char69,0);
// writechar(39,5,':',0);
//******************************* //有效值
DisplyCh(272,56,char23,0);
DisplyCh(288,56,char25,0);
DisplyCh(304,56,char12,0);
// writechar(39,9,':',0); //畸变率
//****************************
line(28,218,100,218,LCD_SET);
line(28,238,100,238,LCD_SET);
line(28,218,28,238,LCD_SET);
line(100,218,100,238,LCD_SET);
//******************************
line(124,218,196,218,LCD_SET);
line(124,238,196,238,LCD_SET);
line(124,218,124,238,LCD_SET);
line(196,218,196,238,LCD_SET);
//*****************************
line(220,218,292,218,LCD_SET);
line(220,238,292,238,LCD_SET);
line(220,218,220,238,LCD_SET);
line(292,218,292,238,LCD_SET);
//***************************
// DrawAxis(3);
// DrawWave(1);
// CsrFlagPage3=1 ; //默认选中电压波形
// DrawBand();
// Page3_Flash(CsrFlagPage0);
if(Cursor==3)
{
DrawAxis(Cursor);
DrawBand(); //畸变率
// DrawAxis(Cursr);
}
else
{
DrawAxis(Cursor);
DrawWave(Cursor);
}
return(num);
}
int Clear_Now_Wave() // 清除目前波形
{
int i,j,*PDataY;
int tempx,nowY,NextY;
for(i=0;i<Wave_Num;i++)
{
PDataY=Save_DataY[i];
nowY=(long)*PDataY*MaxY>>15;
nowY=CenterY-nowY;
for(j=0;j<N-1;j++)
{
tempx=j*2;
tempx+=10;
NextY=(long)*(PDataY+1)*MaxY>>15;
NextY=CenterY-NextY;
DrawLine(tempx,nowY,tempx+2,NextY,LCD_CLR);
nowY=NextY;
PDataY++;
}
}
return 0;
}
int DrawAxis(int AxisType) //画坐标轴
{
int i;
if(AxisType==3) //频谱图
{
line(10,CenterY+MaxY,10+MaxX,CenterY+MaxY,LCD_SET) ; //画横轴
line(10,CenterY-MaxY,10,CenterY+MaxY,LCD_SET); //画纵轴
for(i=0;i<10;i+=2)
writechar(i*2+3,24,0x30+i+1,LCD_SET);
writechar(i*2+3,24,0x30+1,LCD_SET);
writechar(i*2+4,24,0x30+1,LCD_SET); // '11'
i+=2;
writechar(i*2+3,24,0x30+1,LCD_SET);
writechar(i*2+4,24,0x30+3,LCD_SET); // '13'
}
else
{
line(10,CenterY,10+MaxX,CenterY,LCD_SET) ; //画横轴
line(10,CenterY-MaxY,10,CenterY+MaxY,LCD_SET); //画纵轴
line(10+HalfX,CenterY,10+HalfX,CenterY-5,LCD_SET) ;
writechar(16,13,'1',LCD_SET);
writechar(17,13,'0',LCD_SET);
line(10+MaxX,CenterY,10+MaxX,CenterY-5,LCD_SET) ; //横轴
writechar(32,13,'2',LCD_SET);
writechar(33,13,'0',LCD_SET);
DrawLine(7+MaxX,CenterY+3,10+MaxX,CenterY,LCD_SET); //箭头
DrawLine(7+MaxX,CenterY-3,10+MaxX,CenterY,LCD_SET);
writechar(34,12,'m',LCD_SET);
writechar(35,12,'s',LCD_SET);
line(10,CenterY+HalfY,15,CenterY+HalfY,LCD_SET) ; //纵轴
line(10,CenterY+MaxY,15,CenterY+MaxY,LCD_SET) ;
DrawLine(7,CenterY-MaxY+3,10,CenterY-MaxY,LCD_SET); //箭头
DrawLine(13,CenterY-MaxY+3,10,CenterY-MaxY,LCD_SET);
line(10,CenterY-HalfY,15,CenterY-HalfY,LCD_SET) ;
line(10,CenterY-MaxY,15,CenterY+MaxY,LCD_SET) ;
}
}
int DrawWave(int WaveType)
{
int i,j,*PDataY;
int Chanel[Wave_Num];
int tempx,nowY,NextY;
if (WaveType==1)
{
Chanel[0]=0;
Chanel[1]=0;
Chanel[2]=0;
}
else
{
Chanel[0]=0;
Chanel[1]=1;
Chanel[2]=2;
}
for(i=0;i<Wave_Num;i++)
{
PDataY=AD_DATA_Y; //bug
nowY=(long)*PDataY*MaxY>>15;
nowY=CenterY-nowY;
for(j=0;j<N-1;j++)
{
tempx=j*2;
tempx+=10;
NextY=(long)*(PDataY+1)*MaxY>>15;
// NextY+=CenterY;
NextY=CenterY-NextY;
DrawLine(tempx,nowY,tempx+2,NextY,LCD_SET);
nowY=NextY;
Save_DataY[i][j]=*PDataY;
PDataY++;
}
Save_DataY[i][j]=*PDataY;
}
return 0;
}
int DrawBand() //画频谱图
{
int i,*Hight,Temp;
int Left;
Hight=MagAndPhase[0];
Hight+=2;
for(i=0;i<14;i+=2)
{
Temp=(long)(*Hight*MaxY)>>14;
Left=(i<<4)+18;
FillRect(Left,CenterY+MaxY-Temp,Left+16,CenterY+MaxY,LCD_SET);
FillRect(Left,CenterY-MaxY,Left+16,CenterY+MaxY-Temp-1,LCD_CLR);
Hight+=4;
}
return 0;
}
int Clear_Band()
{
int i,Left;
for(i=0;i<14;i+=2)
{
Left=(i<<4)+18;
FillRect(Left,CenterY-MaxY,Left+16,CenterY+MaxY,LCD_CLR);
}
return 0;
}
int Page3_Flash(int Cursr) //页面3切换刷新
{
// Clear_Now_Wave();
// Clear_Band();
// DrawAxis(Cursr);
if(Cursr==3)
{
DrawAxis(Cursr);
DrawBand(); //畸变率
// DrawAxis(Cursr);
}
else
{
Clear_Now_Wave();
DrawAxis(Cursr);
DrawWave(Cursr);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -