📄 lcddriver.#3
字号:
/********************************************************************************/
void LCD_Coordinate(void)
{
uint8 i,j;
for(i=30;i<234;i++)
LCD_WByte(i,2,0x03);
for(i=30;i<234;i++)
LCD_WByte(i,15,0xc0);
for(j=2;j<16;j++)
{
LCD_WByte(30,j,0xff);
LCD_WByte(31,j,0xff);
}
for(j=2;j<16;j++)
{
LCD_WByte(232,j,0xff);
LCD_WByte(233,j,0xff);
}
if(EN_ch1<=4&&EN_ch2<=4)
{
temp=1;
LCD_CAstr(4,5,"CH1",0,0);
LCD_CAstr(4,11,"CH2",0,0);
}
else if(EN_ch1<=4&&EN_ch2>4)
{
temp=1;
LCD_CAstr(4,8,"CH1",0,0);
}
else if(EN_ch1>4&&EN_ch2<=4)
{
temp=2;
LCD_CAstr(4,8,"CH2",0,0);
}
else if(EN_ch1>4&&EN_ch2>4)
{
temp=5;
LCD_CAstr(4,8,"N",0,0);
}
LCD_WaveData(temp,1);
LCD_CAstr(178,0,"暂停 X0",0,0);
EM_k1=1;
EM_k2=1;
EM_b1=70;
EM_b2=110;
EM_speed=4;
Em_PtData=0;
ExSramWrRdAdr=0;
ExSramTempAdr=0;
}
void LCD_Draw(uint8 i,uint8 y)
{
uint8 t;
if(y<24&&y>17)
{
switch(y)
{
case 18:t=7;break;
case 19:t=11;break;
case 20:t=19;break;
case 21:t=35;break;
case 22:t=67;break;
case 23:t=131;break;
default:break;
}
LCD_WByte(i+32,2,t);
}
else if(y<18)
LCD_WByte(i+32,2,0x07);
else if(y>119&&y<126)
{
switch(y)
{
case 120:t=0xc1;break;
case 121:t=0xc2;break;
case 122:t=0xc4;break;
case 123:t=0xc8;break;
case 124:t=0xd0;break;
case 125:t=0xe0;break;
default:break;
}
LCD_WByte(i+32,15,t);
}
else if(y>125)
LCD_WByte(i+32,15,0xe0);
else
LCD_WPoint(i+32,y,1);
}
void LCD_ShowWave(void)
{
uint8 i,j,y;
for(j=3;j<15;j++)
for(i=32;i<232;i++)LCD_WByte(i,j,0x00);
for(i=32;i<232;i++)LCD_WByte(i,2,0x03);
for(i=32;i<232;i++)LCD_WByte(i,15,0xc0);
for(i=0;i<200;i++)
{
if(EN_ch1<5)
{
y=EM_b1-(unsigned char)(EM_k1*CH1[199-i]);
LCD_Draw(i,y);
}
if(EN_ch2<5)
{
y=EM_b2-(unsigned char)(EM_k2*CH2[199-i]);
LCD_Draw(i,y);
}
}
}
void LCD_Wave(void)
{
switch(EN_ch1)
{
case 1:CH1[Em_PtData]=AD_DataBuff[2];
break;
case 2:CH1[Em_PtData]=AD_DataBuff[3];
break;
case 3:CH1[Em_PtData]=AD_DataBuff[0];
break;
case 4:CH1[Em_PtData]=AD_DataBuff[1];
break;
case 5:break;
default:break;
}
switch(EN_ch2)
{
case 1:CH2[Em_PtData]=AD_DataBuff[2];
break;
case 2:CH2[Em_PtData]=AD_DataBuff[3];
break;
case 3:CH2[Em_PtData]=AD_DataBuff[0];
break;
case 4:CH2[Em_PtData]=AD_DataBuff[1];
break;
case 5:break;
default:break;
}
Em_PtData++;
if(Em_PtData>199)
{
Em_PtData=0;
LCD_ShowWave();
if(EM_speed<4 && ExSramTempAdr > 199)
{
ExSramTempAdr -= 200;
}
else
{
ExSramTempAdr=65531;
ExSramWrRdPag--;
}
if(EM_speed>3 && ExSramTempAdr < 65332)
{
ExSramTempAdr += 200;
}
else
{
ExSramTempAdr=0;
ExSramWrRdPag++;
}
ExSramWrRdAdr = ExSramTempAdr;
if(ExSramWrRdPag>ExSramEndPag||ExSramWrRdPag<ExSramStarPag)
{
ExSramWrRdPag=ExSramStarPag;
ExSramWrRdAdr=0;
LCD_ClearAll();
LCD_Coordinate();
hunt=72;
}
}
DisWave_En=1;
}
/******************************************************************************************/
void LCD_RunError(void)
{
uint8 i=4;
if(ErrorRege&0x0001)
{
LCD_CAstr(16,i,"缺相A",0,0);
i=i+2;
HisFlash(1);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=3;
}
if(ErrorRege&0x0002)
{
LCD_CAstr(16,i,"缺相B",0,0);
i=i+2;
HisFlash(2);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=3;
}
if(ErrorRege&0x0004)
{
LCD_CAstr(16,i,"缺相C",0,0);
i=i+2;
HisFlash(3);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=3;
}
if(ErrorRege&0x0008)
{
LCD_CAstr(16,i,"投励失败",0,0);
i=i+2;
HisFlash(4);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=4;
}
if(ErrorRege&0x0010)
{
LCD_CAstr(16,i,"失控",0,0);
i=i+2;
HisFlash(5);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=5;
}
if(ErrorRege&0x0020)
{
LCD_CAstr(16,i,"失步",0,0);
i=i+2;
HisFlash(6);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=6;
}
if(ErrorRege&0x0040)
{
LCD_CAstr(16,i,"失步再整步",0,0);
i=i+2;
HisFlash(7);
}
if(ErrorRege&0x0080)
{
LCD_CAstr(16,i,"再整步失败",0,0);
i=i+2;
HisFlash(8);
}
if(ErrorRege&0x0100)
{
LCD_CAstr(16,i,"遥调失败",0,0);
i=i+2;
HisFlash(9);
}
if(ErrorRege&0x0200)
{
LCD_CAstr(16,i,"通信失败",0,0);
i=i+2;
HisFlash(10);
}
if(ErrorRege&0x0400)
{
LCD_CAstr(16,i,"PT断线",0,0);
i=i+2;
HisFlash(11);
if(EN_ErrorRec == 1 && Star_EN == 1)
RecType=7;
}
if(ErrorRege&0x0800)
{
LCD_CAstr(16,i,"CT断线",0,0);
i=i+2;
HisFlash(12);
}
if(ErrorRege&0x1000)
{
LCD_CAstr(16,i,"切换失败",0,0);
i=i+2;
HisFlash(13);
}
if(ErrorRege&0x2000)
{
LCD_CAstr(16,i,"机柜很热",0,0);
HisFlash(14);
}
if(ErrorRege&0x4000)
{
LCD_CAstr(16,i,"快熔熔断",0,0);
HisFlash(15);
}
}
/////////////////////////////////////////////////////////////////////////////
void LCD_RunPage(void)
{
uint8 i,j;
for(i=0;i<240;i++)
{
LCD_WByte(i,0,0x40);
LCD_WByte(i,3,0x02);
}
LCD_CAstr(2,1,"``",0,0);
LCD_CAstr(22,1,"LZK-3G",0,1);
LCD_CAstr(74,1,"同步电动机励磁装置",0,0);
LCD_CAstr(222,1,"<<",0,0);
for(i=167;i<233;i++)
{
LCD_WByte(i,3,0x82);
LCD_WByte(i,12,0x01);
}
for(i=4;i<12;i++)
{
LCD_WByte(167,i,0xff);
LCD_WByte(232,i,0xff);
}
switch(PictrRege)
{
case 0x00:
case 0x01:
for(j=4;j<12;j++)
for(i=168;i<232;i++)
LCD_WByte(i,j,Static[(j-4)*64+i-168]);
break;
case 0x03:
for(j=4;j<11;j++)
for(i=168;i<232;i++)
LCD_WByte(i,j,Swave[(j-4)*64+i-168]);
break;
default:break;
}
LCD_Clock();
switch(page)
{
case 1:
LCD_CAstr(16,4,"励磁电压:",0,0);
LCD_CAstr(16,6,"励磁电流:",0,0);
LCD_CAstr(16,8,"触发角度:",0,0);
LCD_CAstr(16,10,"功率因树:",0,0);
LCD_CAstr(16,12,"运行模式:",0,0);
break;
case 2:
LCD_CAstr(16,4,"视在功率:",0,0);
LCD_CAstr(16,6,"有功功率:",0,0);
LCD_CAstr(16,8,"无功功率:",0,0);
LCD_CAstr(16,10,"定子电压:",0,0);
LCD_CAstr(16,12,"定子电流:",0,0);
break;
case 3:
LCD_RunError();
break;
default:break;
}
}
/////////////////////////////////////////////////////////////////////////////
void LCD_RunData(void)
{
if(page==1)
{
switch(Data_Num)
{
case 1:
LCD_Num(96,4,EM_ExcVoltData,0,"V ");
break;
case 2:
LCD_Num(96,6,EM_ExcCurrData,0,"A ");
break;
case 3:
LCD_Num(96,8,EM_AngleData,0,"^ ");
break;
case 4:
LCD_CAstr(96,10,"0.",0,0);
LCD_Num(112,10,EM_PowFacData,0," ");
break;
case 5:
switch(EM_ModeCMD)
{
case 0:LCD_CAstr(96,12,"恒压",0,0);
break;
case 1:LCD_CAstr(96,12,"恒流",0,0);
break;
case 2:LCD_CAstr(96,12,"恒角度",0,0);
break;
case 3:LCD_CAstr(96,12,"功率因树",0,0);
break;
case 4:LCD_CAstr(96,12,"恒无功",0,0);
break;
default:break;
}
break;
case 6:
switch(RTU_MaOrSlave)
{
case 0:LCD_CAstr(168,13,"主",0,0);
break;
case 1:LCD_CAstr(168,13,"从",0,0);
break;
default:break;
}
break;
default:break;
}
}
else if(page==2)
{
switch(Data_Num)
{
case 1:
LCD_Num(96,4,EM_SumPowData,0,"KVA ");
break;
case 2:
LCD_Num(96,6,EM_EffPowData,0,"KW ");
break;
case 3:
LCD_Num(96,8,EM_NulPowData,0,"Kvar ");
break;
case 4:
LCD_Num(96,10,EM_StaVoltData,0,"V ");
break;
case 5:
LCD_Num(96,12,EM_StaCurrData,0,"A ");
break;
case 6:
switch(RTU_MaOrSlave)
{
case 0:LCD_CAstr(168,13,"主",0,0);
break;
case 1:LCD_CAstr(168,13,"从",0,0);
break;
default:break;
}
break;
default:break;
}
}
Data_Num+=1;
if(Data_Num>6)
Data_Num=1;
}
/////////////////////////////////////////////////////////////////////////////
void LCD_RunPictr(void)
{
/*************电机运行及录波动画****************/
switch(PictrTemp)
{
case 0x01:
if(Mov1Up==0x00 && Mov2Up==0x00)
head=0;
if(Mov1Up==0xff && Mov2Up==0xff)
head=1;
if(head==0)
{
if(Mov1Up!=0xff)
Mov1Up=(Mov1Up>>1)+0x80;
if(Mov2Up!=0xff)
Mov2Up=(Mov2Up<<1)+0x01;
}
else
{
if(Mov1Up!=0x00)
Mov1Up=Mov1Up<<1;
if(Mov2Up!=0x00)
Mov2Up=Mov2Up>>1;
}
for(hunt=199;hunt<207;hunt++)
{
LCD_WByte(hunt,7,Mov1Up);
LCD_WByte(hunt,8,Mov2Up);
}
break;
case 0x03:
head++;
if(head>16)
{
head=1;
if(Mov1Up==0)
{
Mov1Up=1;
Mov2Up=0x00;
}
else
{
Mov1Up=0;
Mov2Up=0xff;
}
}
LCD_WByte(167+2*(17-head),11,Mov2Up);
LCD_WByte(198+2*head,11,Mov2Up);
break;
default:break;
}
/***********上位机通信动画*******************/
if(Com_EN)
{
Shf2UP++;
if(Shf2UP>10)
Shf2UP=1;
LCD_WByte(226,4,0x3f);
for(Shf1UP=0;Shf1UP<5;Shf1UP++)
{
if(Shf1UP<Shf2UP && Shf2UP<6)
LCD_WByte(Shf1UP+227,4,0x3f);
else if(Shf1UP>=Shf2UP && Shf2UP<6)
LCD_WByte(Shf1UP+227,4,0x20);
else if(Shf1UP<(Shf2UP-5) && Shf2UP>5)
LCD_WByte(Shf1UP+227,4,0x20);
else
LCD_WByte(Shf1UP+227,4,0x3f);
}
}
else
{
for(Shf1UP=226;Shf1UP<232;Shf1UP++)
LCD_WByte(Shf1UP,4,0x00);
}
/*******************双机热备图标*******************/
if(EM_BackUp)
{
for(Shf1UP=0;Shf1UP<5;Shf1UP++)
LCD_WByte(Shf1UP+168,4,0x1f>>Shf1UP);
}
else
{
for(Shf1UP=0;Shf1UP<5;Shf1UP++)
LCD_WByte(Shf1UP+168,4,0x00);
}
}
/********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -