📄 display.c
字号:
//
// File name =DISPLAY.CPP LCD显示器操作文件
// 设计 何风涛
#include"class.h"
#include"classext.h"
#include"SETPLAY.C"
void Display(void)
{
unsigned int i=0,m=0,j=0,k;
unsigned char ch;
ResetTimer(DisplayTaskNo);
pVar->RunCounts++;
if(pVar->KeyValue==RESET) SystemReset();
if(pVar->RunCount>=10) pVar->RunCount=0;
if(pVar->ComCounts>=6) pVar->ComCounts=0;
if(pVar->RunCount==0) setbit(&p6_reg, 0); /* P6.0=I/O=VCC */
if(pVar->RunCount==5) clrbit(&p6_reg, 0); /* P6.0=I/O=VCC */
j=0;
for(i=0;i<8;i++)
{
j=j+pVar->can_flag[i];
}
if(j!=0)
{
if(pVar->ComCounts==0) setbit(&p6_reg, 2); /* P6.2=I/O=VCC */
if(pVar->ComCounts==3) clrbit(&p6_reg, 2); /* P6.2=I/O=VCC */
}else
{
if(pVar->ComCounts==0) setbit(&p6_reg, 2); /* P6.2=I/O=VCC */
}
if(pVar->OldYSCON!=YSCON) pVar->BvLedCount=20;
if(pVar->BvLedCount>0)
{
pVar->BvLedCount--;
clrbit(&p6_reg, 3); /* P6.3=I/O=VCC */
}else
{
setbit(&p6_reg, 3); /* P6.3=I/O=VCC */
}
pVar->OldYSCON=YSCON;
pVar->RunCount++;
pVar->ComCounts++;
if(((TaskStatus(DisplayTaskNo)&0x20)!=0))
{//接收邮件
if((TRead(DisplayTaskNo,pVar->Letter))!=0)
{
pVar->Letter_Flag=0xff;
}
}
switch(pVar->MenuMode)
{
case FACE_MENU : FaceMenu(); // 封面
break;
case MAIN_MENU : MainMenu(); // 主菜单
break;
case ZJ_MENU : ZJMenu(); // 定时巡检
break;
case YC_MENU : YCMenu(); // 遥测显示
break;
case MCDD_MENU : MCDDMenu(); // 脉冲电度
break;
case JFDD_MENU : JFDDMenu(); // 积分电度
break;
case DCPLAY_MENU : DCMenu(); // 直流显示
break;
case JCPLAY_MENU : JCMenu(); // 交流显示
break;
case LINEPLAY_MENU : LINEMenu(); // 线路显示
break;
case TEMPERPLAY_MENU: TEMPERMenu(); // 温度显示
break;
case YX_MENU : YXMenu(); // 遥信显示
break;
case YK_MENU : YKMenu(); // 遥控操作
break;
case YM_MENU : YMMenu(); // 遥脉显示
break;
case FREQ_MENU : FREQMenu(); // 频率显示
break;
case SDSET_MENU: if((pVar->passid!=0)||(pVar->passop!=0))
{
SDSETMenu(); //系统配置
}else password();
break;
case SSET_MENU : SSETMenu(); // 系统设置
break;
case BHSET_MENU: BHSETMenu(); // 保护设置
break;
case BHCOM_MENU: BHCOMMenu(); // 保护配置
break;
case MEM_MENU : MEMMenu(); // 内存显示
break;
case MEMReg1_MENU: MEMReg1(); // 寄存器Ⅰ
break;
case MEMReg2_MENU: MEMReg2(); // 寄存器Ⅱ
break;
case MEMRam196_MENU: MEMRam196(); // RAM(196)
break;
case MEMRamPSD_MENU: MEMRamPSD(); // RAM(PSD)
break;
case MEMRam256_MENU: MEMRam256(); // RAM(256)
break;
case MEMFlashPSD_MENU:MEMFlashPSD(); // Flash(PSD)
break;
case MEMX25043_MENU: MEMX25043(); // X25043
break;
case COM_MENU : COMMenu(); // 通信监视
break;
case TIME_MENU : TIMEMenu(); // 时间显示
break;
case SOE_MENU : SOEMenu(); // 历史查询
break;
case COMSET_MENU: COMSetMenu(); // 通信口选择
break;
case COMCFG_MENU: ComCfgMenu(); // 通信设置
break;
case NODESET_MENU: NodeSetMenu(); // 节 点 号
break;
case SETUP_MENU: SetUpMenu(); // 启动方式
break;
case COMSPEED_MENU: ComSpeedMenu();// 通信速率
break;
case COMPRO_MENU: ComProMenu(); // 通信规约
break;
case COMJUST_MENU: ComJustMenu(); // 奇偶校验
break;
case COMSYN_MENU: ComSynMenu(); // 传输方式
break;
case COMDATB_MENU: ComDatbMenu(); // 数 据 位
break;
case COMSTOPB_MENU: ComStopbMenu();// 停 止 位
break;
case COMFLW_MENU: ComFlwMenu(); // 流 控 制
break;
case COMREP_MENU: ComRepMenu(); // 重发帧数
break;
case COMOVW_MENU: ComOVWMenu(); // 超时等待
break;
case COMWORD_MENU: ComWordMenu(); // 同 步 字
break;
case LINESET_MENU: LINESetMenu(); // 线路配置
break;
case MODESET_MENU: MODESetMenu(); // 模式设置
break;
case JCSET_MENU: JCSetMenu(); // 交流系数设置
break;
case DCSET_MENU: DCSetMenu(); // 直流系数设置
break;
case YCSET_MENU : YCSetMenu(); // 线路系数
break;
case KRDSET_MENU: KRDSetMenu(); // KR配置
break;
case KRSET_MENU: KRSetMenu(); // KR设置
break;
case SYXSET_MENU: SYXSetMenu(); // 软YX设置
break;
case HYXSET_MENU: HYXSetMenu(); // 硬YX设置
break;
case YMSET_MENU : YMSetMenu(); // 遥脉设置
break;
case YXSET_MENU : YXSetMenu(); // 遥信设置
break;
case YMDSET_MENU: YMDSetMenu(); // 遥脉配置
break;
case YKSET_MENU : YKSetMenu(); // 遥控设置
break;
case YKDSET_MENU: YKDSetMenu(); // 遥控配置
break;
case STU_MENU: StuMenu(); // 系统状态
break;
case YCDEBUG_MENU: if((pVar->passid!=0)||(pVar->passop!=0))
{
YCDebugMenu();// 遥测调试
}else password();
break;
case YXDEBUG_MENU: YXDebugMenu(); // 遥信调试
break;
case PQJUST_MENU: PQJustMenu(); // 功率校对
break;
case COMRXD_MENU: COMRxdMenu(); // 通信接收
break;
case COMTXD_MENU: COMTxdMenu(); // 通信发送
break;
case DWSET_MENU: DWSet_Menu(); // 档位设置
break;
case DWPLAY_MENU: DWPlay_Menu(); // 档位显示
break;
case VERSION_MENU: Version_Menu(); // 版本显示
break;
default: break;
}
}
//---------------Next Function Prototype Define in Lcd.h---------------
void FaceMenu(void)
{
unsigned int i;
if(pVar->action==OPEN)
{
if(pVar->KeyID!=NULLKEY)
{
pVar->MenuMode=MAIN_MENU;
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
pVar->MainMenuCount=0;
pVar->CursorCount=0;
pVar->passop=0;
}
return;
}
if(pVar->action==NOUSE)
{
MAP(0,0,127,7, PICTURE );
pVar->action=OPEN;
};
}
void SelectMenu(unsigned int sel)
{
switch(sel)
{
case 0x00: pVar->MenuMode=ZJ_MENU; // 定时巡检
pVar->ZJMenuCount=0;
break;
case 0x01: pVar->MenuMode=YC_MENU; // 遥测显示
pVar->LineNum=0;
break;
case 0x02: pVar->MenuMode=YX_MENU; // 遥信显示
break;
case 0x03: pVar->MenuMode=YK_MENU; // 遥控操作
break;
case 0x04: pVar->MenuMode=YM_MENU; // 遥脉显示
break;
case 0x05: pVar->MenuMode=FREQ_MENU; // 频率显示
break;
case 0x06: pVar->MenuMode=SDSET_MENU; // 系统配置
break;
case 0x07: pVar->MenuMode=MEM_MENU; // 内存显示
break;
case 0x08: pVar->MenuMode= COM_MENU; // 通信监视
break;
case 0x09: pVar->MenuMode=TIME_MENU; // 时间显示
break;
case 0x0A: pVar->MenuMode=SOE_MENU ; // 历史查询
break;
case 0x0B: pVar->MenuMode=DWPLAY_MENU; // 档位显示
break;
case 0x0C: pVar->MenuMode=VERSION_MENU; // 版本显示
break;
case 0x0D: pVar->MenuMode=YXDEBUG_MENU;
break;
case 0x0E: pVar->MenuMode=FILE_MENU;
pVar->ZJMenuCount=0;
break;
default: break;
};
}
void MainMenu(void)
{
int i;
if(pVar->action==NOUSE)
{
LcdClr();
DspMenu(0,0,0,3);//JM0+0,Adr0, Type=2 主菜单
DspMenu(1,pVar->MainMenuCount*0x05,1,3);
pVar->action=OPEN;
pVar->LineNum=0;
pVar->passop=0;
DspMenuCur(1,(pVar->MainMenuCount+pVar->CursorCount)*0x05+1,1, (pVar->CursorCount*10)+2,4, 0x83);
}
if(pVar->action==OPEN)
{//-----OPEN
HITESC(FACE_MENU);
if(pVar->KeyID==PLUSKEY)// "+"=PageDown
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
pVar->MainMenuCount=pVar->MainMenuCount+4;
if(pVar->MainMenuCount>0x08) pVar->MainMenuCount=0x08;
};
if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
if(pVar->MainMenuCount>0x03) pVar->MainMenuCount=pVar->MainMenuCount-4;
else pVar->MainMenuCount=0;
};
if(pVar->KeyID==DOWNKEY)// " V " 向下键
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
if(pVar->CursorCount>=3)
{
pVar->MainMenuCount=pVar->MainMenuCount+1;
pVar->CursorCount=3;
}else pVar->CursorCount++;
if(pVar->MainMenuCount>0x09) pVar->MainMenuCount=0x09;
};
if(pVar->KeyID==UPKEY)// " ^ " 向上键
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
if(pVar->CursorCount==0)
{
if(pVar->MainMenuCount>0x00) pVar->MainMenuCount=pVar->MainMenuCount-1;
pVar->CursorCount=0;
}else pVar->CursorCount--;
};
if(pVar->KeyID==OKKEY) //确认键
{
SelectMenu(pVar->MainMenuCount+pVar->CursorCount);
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
};
};//-------OPEN
}
void ZJMenu(void) // 定时巡检
{
unsigned int i,j;
union WTEMP_ST wtmp;
if(pVar->action==NOUSE)
{
LcdClr();
if(pVar->ZJMenuCount>10) pVar->ZJMenuCount=10;
DspMenu(6,pVar->ZJMenuCount*0x07,6,4);
pVar->action=OPEN;
}
if(pVar->action==OPEN)
{//-----OPEN
HITESC(MAIN_MENU);
if(pVar->KeyID==PLUSKEY)// "+"=PageDown
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
pVar->ZJMenuCount=pVar->ZJMenuCount+4;
if(pVar->ZJMenuCount>0x0A) pVar->ZJMenuCount=0x0A;
}
if(pVar->KeyID==MINUSKEY)// "-"=PageUp
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
if(pVar->ZJMenuCount>0x03) pVar->ZJMenuCount=pVar->ZJMenuCount-4;
else pVar->ZJMenuCount=0;
}
if(pVar->KeyID==DOWNKEY)// " V " 向下键
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
pVar->ZJMenuCount=pVar->ZJMenuCount+1;
if(pVar->ZJMenuCount>0x0A) pVar->ZJMenuCount=0x0A;
}
if(pVar->KeyID==UPKEY)// " ^ " 向上键
{
pVar->KeyID=NULLKEY;
pVar->action=NOUSE;
if(pVar->ZJMenuCount>0x00) pVar->ZJMenuCount=pVar->ZJMenuCount-1;
}
if(pVar->KeyID==F1)
{
pVar->KeyID=NULLKEY;
Wren_Cmd(); //写允许命令
Byte_Write(0,0);
Wren_Cmd(); //写允许命令
Byte_Write(1,0);
wtmp.B.Low=Byte_Read(0);
wtmp.B.High=Byte_Read(1);
pVar->ResetSum=wtmp.Word;
}
for(i=0;i<4;i++)
{
StrBuf[4*i+0]=74;
StrBuf[4*i+1]=75;
StrBuf[4*i+2]=76;
StrBuf[4*i+3]=77;
switch(pVar->ZJMenuCount)
{
case 0x00:if(i==1)
{
j=pVar->ResetSum;
StrBuf[4*i+3]=j%10; j=j/10;
StrBuf[4*i+2]=j%10; j=j/10;
StrBuf[4*i+1]=j%10; j=j/10;
StrBuf[4*i+0]=j%10;
}
break;
case 0x01:if(i==0)
{
j=pVar->ResetSum;
StrBuf[4*i+3]=j%10; j=j/10;
StrBuf[4*i+2]=j%10; j=j/10;
StrBuf[4*i+1]=j%10; j=j/10;
StrBuf[4*i+0]=j%10;
}
break;
case 0x03: if(i==3)
{
if(pVar->can_flag[0]==0)
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
}
break;
case 0x04: if(i==2)
{
if(pVar->can_flag[0]==0)
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
}
if(i==3)
{
if(pVar->can_flag[1]==0)
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
}
break;
case 0x05: switch(i)
{
case 0x01:if(pVar->can_flag[0]==0)//CAN1
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
case 0x02:if(pVar->can_flag[1]==0)//CAN2
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
case 0x03:if(pVar->can_flag[2]==0)//COM1
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
}
break;
case 0x06: switch(i)
{
case 0x00:if(pVar->can_flag[0]==0)//CAN1
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
case 0x01:if(pVar->can_flag[1]==0)//CAN2
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
case 0x02:
case 0x03:if(pVar->can_flag[i]==0)//COM1 COM2
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
}
break;
case 0x07: switch(i)
{
case 0x00:if(pVar->can_flag[1]==0)//CAN2
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
case 0x01:
case 0x02:
case 0x03:if(pVar->can_flag[i+1]==0)//COM1 COM2 COM3
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
StrBuf[4*i+2]=84;
StrBuf[4*i+3]=85;
}
break;
}
break;
case 0x08: switch(i)
{
case 0x00:
case 0x01:
case 0x02:
case 0x03:if(pVar->can_flag[i+2]==0)//COM1 COM2 COM3 COM4
{
StrBuf[4*i+0]=82;
StrBuf[4*i+1]=83;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -