📄 display.c
字号:
}
}
else
{
LCDMEM[LCD_CN_INFO_ADDR_REACTIVE]|=LCD_CN_INFO_REACTIVE;
LCDMEM[LCD_SY_INFO_ADDR_M2]|=LCD_SY_INFO_M2;
LCDMEM[LCD_SY_INFO_ADDR_S]|=(LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S4|LCD_SY_INFO_S5|LCD_SY_INFO_S6|LCD_SY_INFO_S7|LCD_SY_INFO_S8);
if( !(PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
LoadEnergy( (unsigned char *)&temp, 0xFF, 30 );
LoadEnergy( (unsigned char *)&pwrdata, 0xFF, 35 );
pwrdata = __bcd_add_long( temp, pwrdata );
}
else
{
pwrdata = __bcd_add_long( _SysDisplayRam.ReActivePhase1Pwr, _SysDisplayRam.ReActivePhase4Pwr );
}
}
LargeLedDisplay8Bcd( (unsigned char *)&pwrdata );
}
void DisplayPowerReqData(void)
{
unsigned long pwrdata;
unsigned char item;
if( !(PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
LoadMaxDemandInfo( (unsigned char *)&pwrdata, 0x01, 5 );
}
else
{
pwrdata = _SysDisplayRam.ActivePosSumReq;
}
LargeLedDisplay6Bcd( (unsigned char *)&pwrdata );
LCDMEM[_LcdCnExes[0][0]] |= _LcdCnExes[0][1];
LCDMEM[LCD_CN_INFO_ADDR_REQ] |= LCD_CN_INFO_REQ;
LCDMEM[LCD_SY_INFO_ADDR_P8] |= LCD_SY_INFO_P8;
LCDMEM[LCD_CN_INFO_ADDR_ACTIVE] |= LCD_CN_INFO_ACTIVE;
LCDMEM[LCD_CN_INFO_ADDR_POSITIVE] |= LCD_CN_INFO_POSITIVE;
LCDMEM[LCD_SY_INFO_ADDR_S] |= ( LCD_SY_INFO_S1|LCD_SY_INFO_S2|LCD_SY_INFO_S3|LCD_SY_INFO_S4 );
}
void DisplayInstanPower(void)
{
unsigned long instp;
if( DisplayBitLocation == 10 )
{
LCDMEM[LCD_CN_INFO_ADDR_ACTIVE] |= LCD_CN_INFO_ACTIVE;
DISP_UNION_KW();
CalcInstantPower( (unsigned char *)&instp, 0 );
}
else
{
LCDMEM[LCD_CN_INFO_ADDR_REACTIVE] |= LCD_CN_INFO_REACTIVE;
DISP_UNION_KVAR();
CalcInstantPower( (unsigned char *)&instp, 4 );
}
LCDMEM[LCD_SY_INFO_ADDR_P8] |= LCD_SY_INFO_P8;
LargeLedDisplay6Bcd( (unsigned char *)&instp );
}
void DisplayCurrentVi(void)
{
unsigned short temp;
if( DisplayBitLocation <= 14 )
{
LCDMEM[LCD_SY_INFO_ADDR_S] |= LCD_SY_INFO_S2;
LCDMEM[LCD_SY_INFO_ADDR_P11] |= LCD_SY_INFO_P11;
}
else
{
LCDMEM[LCD_SY_INFO_ADDR_S] |= ( LCD_SY_INFO_S4 | LCD_SY_INFO_S5 );
LCDMEM[LCD_SY_INFO_ADDR_P10] |= LCD_SY_INFO_P10;
}
temp = Hex2BcdShort( CurrentVI[DisplayBitLocation-12] );
LargeLedDisplay4Code4Bcd( (DisplayBitLocation-12)*4, (unsigned char *)&temp );
}
void DisplayTimePot(void)
{
unsigned char temp[3], item;
item = DisplayBitLocation-19;
memcpy( (unsigned char *)&temp[0], (unsigned char *)&_SysDisplayRam.TimePot[item*3], 3 );
LargeLedDisplay6BcdSpec( (unsigned char *)&temp[0] );
LCDMEM[LCD_CN_INFO_ADDR_POT] |= LCD_CN_INFO_POT;
}
const PROC_FUNC DisplayProc[]={
DisplayPowerData,
DisplayPowerData,
DisplayPowerData,
DisplayPowerData,
DisplayPowerData,
DisplayDateTime,
DisplayDateTime,
DisplayMeterNum,
DisplayMeterNum,
DisplayPowerReqData,
DisplayInstanPower,
DisplayInstanPower,
DisplayCurrentVi,
DisplayCurrentVi,
DisplayCurrentVi,
DisplayCurrentVi,
DisplayCurrentVi,
DisplayCurrentVi,
DisplayBondrate,
DisplayTimePot,
DisplayTimePot,
DisplayTimePot,
DisplayTimePot,
DisplayTimePot,
DisplayTimePot,
DisplayTimePot,
DisplayTimePot
};
void DisplayProcess(void)
{
unsigned char *_disp_info = (unsigned char *)&_SysPotInfo.dispcontent[0];
unsigned temp1, temp2;
LcdDispFlag &= (unsigned char)(~ LCD_DISP_ALL);
if( IsEqualSpecialData( (unsigned char *)&_SysPotInfo.dispcontent[0], 0, DISPLAY_ITEM_BYTE ) == OK )
{
_SysPotInfo.dispcontent[0] = 0x03;
}
while(1)
{
temp1 = DisplayBitLocation/8;
temp2 = DisplayBitLocation %8;
if( _disp_info[temp1] )
{
if( _disp_info[temp1] & ( BIT0 << temp2 ) )
{
ClearLcd();
LcdDispFlag &=~ LCD_DISP_FLG_REFIND;
(DisplayProc[DisplayBitLocation])();
if( !( LcdDispFlag & LCD_DISP_FLG_REFIND ) )
{
DisplayContentCode();
break;
}
}
}
else
{
if( LcdDispFlag & LCD_DISP_FLG_PAGEDOWN )
{
if( LcdDispFlag & LCD_DISP_FLG_PAGEUP )
{
PageUpNext();
}
}
}
if( LcdDispFlag & LCD_DISP_FLG_PAGEDOWN )
{
if( LcdDispFlag & LCD_DISP_FLG_PAGEUP )
{
PageUpNext();
}
else
{
PageDownNext();
}
}
else
{
DisplayPointerNext();
}
}
}
void DisplayRefresh(void)
{
unsigned short temp;
unsigned char mrs,lvisw;
unsigned char temp1,temp2;
if( LcdDispFlag & LCD_DISP_TIME )
{
if( ( LcdInterval == 0 ) && ( !( LcdDispFlag & LCD_DISP_FLG_PAGEDOWN ) ) )
{
if( !( LcdDispFlag & LCD_DISP_NEXT ) )
{
DisplayBitLocation++;
LcdInterval = _SysPotInfo.disptime;
LcdDispFlag |= LCD_DISP_NEXT;
}
else
{
LcdDispFlag &=~ LCD_DISP_TIME;
goto DISP_PROC;
}
}
ClearLcd();
LCDMEM[LCD_SY_INFO_ADDR_P2] |= LCD_SY_INFO_P2;
LCDMEM[LCD_CODE_ADDR_01] |= _LcdCodeHex[0];
LCDMEM[LCD_CODE_ADDR_02] |= _LcdCodeHex[0];
LCDMEM[LCD_CODE_ADDR_03] |= _LcdCodeHex[0];
if( LcdDispFlag & LCD_DISP_NEXT )
{
LCDMEM[LCD_CODE_ADDR_04] |= _LcdCodeHex[4];
}
else
{
LCDMEM[LCD_CODE_ADDR_04] |= _LcdCodeHex[3];
}
DisplayDateTime();
LcdInterval--;
goto DISP_OTHERS;
}
if( ( LcdDispFlag & 0x0F ) == LCD_DISP_FLG_ACTIVE )
{
if( LcdInterval == 0 )
{
DISP_PROC:
DisplayProcess();
LcdInterval = _SysPotInfo.disptime;
if( LcdDispFlag & LCD_DISP_NEXT )
{
DisplayPointerNext();
}
}
LcdInterval--;
}
if( LcdDispFlag & LCD_DISP_ALL ) return;
DISP_OTHERS:
if( TimerCounter[TIMER_PROC_PROG] )
{
LCDMEM[LCD_CN_INFO_ADDR_PGM] |= LCD_CN_INFO_PGM;
}
else
{
LCDMEM[LCD_CN_INFO_ADDR_PGM] &=(unsigned char)(~ LCD_CN_INFO_PGM);
}
LCDMEM[16] |= _LcdSyExes[Tariff];
if( !( PowerStateFlag & PS_BREAKPOWER_FLAG ) )
{
lvisw = LowVIStateWord & 0x77;
mrs = MeterRunningState & 0xF7;
if( ( mrs & 0x77 ) || ( lvisw ) )
{
temp1 = lvisw & 0x07;
temp2 = ( ( lvisw >> 4 ) & 0x07 );
if( mrs & 0x80 )
{
LCDMEM[2] |= _LcdSyUAlarm[temp1];
LCDMEM[2] |= _LcdSyIAlarm[temp2];
mrs &=(unsigned char)(~ 0x80);
}
else
{
LCDMEM[2] &=~ ( _LcdSyUAlarm[temp1] );
LCDMEM[2] &=~ (_LcdSyIAlarm[temp2] );
mrs |= 0x80;
}
LCDMEM[2] &=~ ( _LcdSyUAlarm[7-temp1] );
LCDMEM[2] &=~ ( _LcdSyIAlarm[7-temp2] );
if( PowerNetStateWord & 0x07 )
{
temp1 = PowerNetStateWord & 0x07;
if( !( DisplayFlashFlag & LCD_FLASH_FLAG ) )
{
DisplayFlashFlag |= LCD_FLASH_FLAG;
LCDMEM[2] |= _LcdSyUAlarm[temp1];
}
else
{
DisplayFlashFlag &=~ LCD_FLASH_FLAG;
LCDMEM[2] &=~ _LcdSyUAlarm[temp1];
}
}
if( mrs & 0x70 )
{
temp1 = ( mrs >> 4 ) & 0x07;
LCDMEM[2] |= _LcdSyIAlarm[temp1];
}
}
else
{
LCDMEM[2] &=~ ( _LcdSyUAlarm[7] | _LcdSyIAlarm[7] );
}
MeterRunningState |= mrs;
}
else
{
LCDMEM[2] &=~ ( _LcdSyUAlarm[7] | _LcdSyIAlarm[7] );
}
LcdPcf8576Operation(0,0,20);
}
void LcdDisplayOpen(void)
{
if( !( DisplayFlashFlag & LCD_DISPLAY_ON_FLAG ) )
{
DisplayFlashFlag &=~ LCD_DISPLAY_OFF_FLAG;
DisplayFlashFlag |= LCD_DISPLAY_ON_FLAG;
LcdOpenOrClose(LCD_DISPLAY_ON);
}
}
void LcdDisplayClose(void)
{
if( ( !( DisplayFlashFlag & LCD_DISPLAY_OFF_FLAG ) ) && ( !TimerCounter[TIMER_PROC_LCD_RESET] ) )
{
DisplayFlashFlag |= LCD_DISPLAY_OFF_FLAG;
DisplayFlashFlag &=~ LCD_DISPLAY_ON_FLAG;
LcdOpenOrClose(LCD_DISPLAY_OFF);
}
}
void LcdDisplayControl(uchar time)
{
if( LcdDispFlag & ( LCD_DISP_FLG_PAGEUP + LCD_DISP_FLG_PAGEDOWN ) )
{
LcdDisplayOpen();
goto DisplayAgain;
}
if( IsPowerOn() )
{
LcdDisplayOpen();
goto DisplayAgain;
}
if( DisplayFlashFlag & LCD_DISPLAY_ON_FLAG )
{
LcdOpenInterval = UsignedCharSub(LcdOpenInterval,time) ;
}
if( DisplayFlashFlag & LCD_DISPLAY_OFF_FLAG )
{
LcdStopInterval = UsignedCharSub(LcdStopInterval,time);
}
if( (DisplayFlashFlag & LCD_DISPLAY_OFF_FLAG) &&(LcdStopInterval == 0))
{
LcdDisplayOpen();
LcdOpenInterval = _SysPotInfo.disptime;
LcdInterval = 0;
}
if( (DisplayFlashFlag & LCD_DISPLAY_ON_FLAG)&&(LcdOpenInterval == 0) )
{
LcdStopInterval = _SysPotInfo.dispstoptime;
LcdDisplayClose();
}
if( !(DisplayFlashFlag & LCD_DISPLAY_ON_FLAG) )
{
return;
}
DisplayAgain:
DisplayRefresh();
}
void InitDisplayPageInfo(void)
{
MemSet0xFF( (unsigned char *)&_SysPotInfo.dispcontent[0], DISPLAY_ITEM_BYTE );
}
void InitDispPage(void)
{
DisplayBitLocation = 0;
LcdInterval = 0;
LcdStopInterval = 0;
LcdOpenInterval = 0;
InitDisplayPageInfo();
_SysPotInfo.chksum = SysDoCheckSum( (unsigned char *)&_SysPotInfo.regv_con[0], sizeof(_sys_potinfo_s)-4 );
}
void OnDisplayPageUp(void)
{
LcdDispPageOn();
if( !( LcdDispFlag & LCD_DISP_FLG_PAGEUP ) )
{
InitDispPage();
}
PageUpNext();
LcdDispFlag |= ( LCD_DISP_FLG_PAGEUP+LCD_DISP_NEXT );
LcdDispFlag &=~ LCD_DISP_TIME;
DisplayProcess();
}
void OnDisplayPageDown(void)
{
LcdDispPageOn();
if( !( LcdDispFlag & LCD_DISP_FLG_PAGEDOWN ) )
{
InitDispPage();
}
PageDownNext();
LcdDispFlag |= ( LCD_DISP_FLG_PAGEDOWN+LCD_DISP_NEXT );
LcdDispFlag &=~ LCD_DISP_TIME;
DisplayProcess();
}
const unsigned char _rc_value[]=
{
0x14,
0x15,
ERROR
};
const PROC_FUNC _rc_proc[]=
{
OnDisplayPageUp,
OnDisplayPageDown
};
void IrKeyDispose(void)
{
unsigned char item;
item = FindCmdItem( _rc_value, RcKeyCode );
if( item != ERROR )
{
(*(_rc_proc+item))();
DisplayRefresh();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -