?? display.c
字號:
#define Dis_GLOBALS
#include "includes.h"
const uchar GACH_char_tbl[]={Char_0,Char_1,Char_2,Char_3,Char_4,
Char_5,Char_6,Char_7,Char_8,Char_9,
Char_space,String_DianYan,String_DianLiu,
String_Yougon,String_Wugong,Char_Minus
};
const uchar GACH_pis_tbl[]={Lgc0_to_phsc_dn,Lgc0_to_phsc_up,
Lgc1_to_phsc_dn,Lgc1_to_phsc_up,
Lgc2_to_phsc_dn,Lgc2_to_phsc_up,
Lgc3_to_phsc_dn,Lgc3_to_phsc_up,
Lgc4_to_phsc_dn,Lgc4_to_phsc_up,
Lgc5_to_phsc_dn,Lgc5_to_phsc_up,
Lgc6_to_phsc_dn,Lgc6_to_phsc_up,
Lgc7_to_phsc_dn,Lgc7_to_phsc_up,
Lgc8_to_phsc_dn,Lgc8_to_phsc_up,
LgPQY_To_Phsc_Dn,LgPQY_To_Phsc_Up,
};
const uchar GACH_signpis_tbl[]={Sign_Point0_PhscAddr,Sign_Point1_PhscAddr,
Sign_A2_PhscAddr,Sign_A1_PhscAddr,
Sign_B_PhscAddr,Sign_C_PhscAddr,
Sign_V0_PhscAddr,Sign_V1_PhscAddr,
Sign_k_PhscAddr,Sign_ar_PhscAddr,
Sign_h_PhscAddr,Sign_ChineseYou_PhscAddr,
Sign_ChineseWu_PhscAddr,Sign_ChineseGong_PhscAddr,
Sign_ChineseLu_PhscAddr,Sign_ChineseQian_PhscAddr,
Sign_ChineseDian_PhscAddr,Sign_ChineseYa_PhscAddr,
Sign_ChineseLiu_PhscAddr
};
const uchar GACH_signdata_tbl[]={Sign_Point0_Data, Sign_Point1_Data,
Sign_A2_data,Sign_A1_data,
Sign_B_data,Sign_C_data,
Sign_V0_data,Sign_V1_data,
Sign_k_data,Sign_ar_data,
Sign_h_data,Sign_ChineseYou_data,
Sign_ChineseWu_data,Sign_ChineseGong_data,
Sign_ChineseLu_data,Sign_ChineseQian_data,
Sign_ChineseDian_data,Sign_ChineseYa_data,
Sign_ChineseLiu_data
};
const uchar GACH_signClr_tbl[]={Sign_Point0_Clr,Sign_Point1_Clr,
Sign_A2_Clr,Sign_A1_Clr,
Sign_B_Clr,Sign_C_Clr,
Sign_V0_Clr,Sign_V1_Clr,
Sign_k_Clr,Sign_ar_Clr,
Sign_h_Clr,Sign_ChineseYou_Clr,
Sign_ChineseWu_Clr,Sign_ChineseGong_Clr,
Sign_ChineseLu_Clr,Sign_ChineseQian_Clr,
Sign_ChineseDian_Clr,Sign_ChineseYa_Clr,
Sign_ChineseLiu_Clr
};
void Lcd_ini(void)
{
uchar i;
HB_LPCR=CST_LPCR_INI;
HB_LCR=CST_LCR_INI;
HB_LCR2=CST_LCR2_INI;
HB_CKSTPR2|=0x01;
GPch_LCD_pointer=(uchar *)0x0000F740;
for(i=0;i!=16;i++)
{
*(GPch_LCD_pointer+i)=0;
}
}
/****************************************************************/
/*description: this function display a char on the lcd by the given position */
/* and the spicified char */
/* */
/*input argument: PB_position: the given logic position of the char */
/* PB_data : the specified char */
/* */
/*output argument: none */
/*relative globe variables:GPch_LCD_pointer, */
/**/
/**/
/***************************************************************/
void Dis_1char(uchar PB_position,uchar PB_data)
{
uchar LB_data,LB_Phsc_rltpis_up,LB_Phsc_rltpis_dn;
PB_data=GACH_char_tbl[PB_data];
LB_Phsc_rltpis_dn=GACH_pis_tbl[PB_position*2];
LB_Phsc_rltpis_up=GACH_pis_tbl[PB_position*2+1];
if((LB_Phsc_rltpis_dn&0x01)==0)
{
LB_Phsc_rltpis_dn/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)&=0xf8;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)|=(PB_data&0x0f);
}
else
{
LB_Phsc_rltpis_dn/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)&=0x8f;
LB_data=PB_data<<4;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)|=LB_data;
}
if((LB_Phsc_rltpis_up&0x01)==0)
{
LB_Phsc_rltpis_up/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)&=0x0f0;
LB_data=PB_data>>4;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)|=LB_data;
}
else
{
LB_Phsc_rltpis_up/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)&=0x0f;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)|=(PB_data&0xf0);
}
}
void Dis_1string(uchar PB_position,uchar PB_data)
{
uchar LB_data,LB_Phsc_rltpis_up,LB_Phsc_rltpis_dn;
PB_data=GACH_char_tbl[PB_data];
LB_Phsc_rltpis_dn=GACH_pis_tbl[PB_position*2];
LB_Phsc_rltpis_up=GACH_pis_tbl[PB_position*2+1];
if((LB_Phsc_rltpis_dn&0x01)==0)
{
LB_Phsc_rltpis_dn/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)&=0xf0;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)|=(PB_data&0x0f);
}
else
{
LB_Phsc_rltpis_dn/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)&=0x0f;
LB_data=PB_data<<4;
*(GPch_LCD_pointer+LB_Phsc_rltpis_dn)|=LB_data;
}
if((LB_Phsc_rltpis_up&0x01)==0)
{
LB_Phsc_rltpis_up/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)&=0x0f0;
LB_data=PB_data>>4;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)|=LB_data;
}
else
{
LB_Phsc_rltpis_up/=2;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)&=0x0f;
*(GPch_LCD_pointer+LB_Phsc_rltpis_up)|=(PB_data&0xf0);
}
}
void Dis_1sign(uchar PB_data)
{
uchar LB_sign_rltpis;
LB_sign_rltpis=GACH_signpis_tbl[PB_data];
PB_data=GACH_signdata_tbl[PB_data];
*(GPch_LCD_pointer+LB_sign_rltpis)|=PB_data;
}
void Clr_1sign(uchar PB_data)
{
uchar LB_sign_rltpis;
LB_sign_rltpis=GACH_signpis_tbl[PB_data];
PB_data=GACH_signClr_tbl[PB_data];
*(GPch_LCD_pointer+LB_sign_rltpis)&=PB_data;
}
/*
void Dis_voltage(uchar PB_phase)
{
uint PW_data;
switch(PB_phase)
{
case Phase_A_vol:
PW_data=GST_58data.U_av.AVRMS;
PW_data/=GU_7758scl.Str_58scl.avscale;
Dis_data(PW_data);
break;
case Phase_B_vol:
PW_data=GST_58data.U_bv.BVRMS;
PW_data/=GU_7758scl.Str_58scl.bvscale;
Dis_data(PW_data);
break;
case Phase_C_vol:
PW_data=GST_58data.U_cv.CVRMS;
PW_data/=GU_7758scl.Str_58scl.cvscale;
Dis_data(PW_data);
break;
default:
break;
}
}
*/
void Disp_ActEng_ReEng(long PDW_data)
{
Dis_data(PDW_data);
if(PDW_data<10)Dis_1char(1, 0);
if(PDW_data<100)Dis_1char(2, 0);
Dis_1sign(Sign_Point1);
Clr_1sign(Sign_Point0);
}
void Dis_vol_cur(uint PW_data,uchar PB_scal,uchar PB_VorI)
{
PW_data/=PB_scal;
Dis_data(PW_data);
if(PB_VorI==0)
{
if(PW_data<10)
{
Dis_1char(1, 0);
}
Dis_1sign(Sign_Point0);
Clr_1sign(Sign_Point1);
}
else
{
if(PW_data<10)
{
Dis_1char(1, 0);
}
if(PW_data<100)
{
Dis_1char(2, 0);
}
Dis_1sign(Sign_Point1);
Clr_1sign(Sign_Point0);
}
}
void Dis_data(ulong PW_data)
{
uchar i,LB_data,LB_sign;
i=0;LB_sign=0;
if(PW_data>0x7fffffff)
{
LB_sign=1;
PW_data=~PW_data;
PW_data++;
}
do
{
LB_data=PW_data%10;
Dis_1char(i,LB_data);
i++;
PW_data=PW_data/10;
}while(PW_data!=0);
if(LB_sign)Dis_1char(i, DatPis_SignMinus);
while(i!=8)
{
Dis_1char(i,DatPis_space);
i++;
}
}
void Disp_circle(uchar PB_iterm)
{
switch(PB_iterm)
{
case Phase_A_vol:
Dis_vol_cur(GST_58data.U_av.AVRMS,GU_7758scl.Str_58scl.avscale,0);
Dis_1sign(Sign_A1);Clr_1sign(Sign_B);Clr_1sign(Sign_C);
Disp_UnitV();
break;
case Phase_A_i:
Dis_vol_cur(GST_58data.U_ai.AIRMS,GU_7758scl.Str_58scl.aiscale,1);
Disp_UnitA();
break;
case Phase_A_watt:
Disp_ActEng_ReEng(GST_MeterData.A_WattHr);
Disp_UnitKwh();
break;
case Phase_A_var:
Disp_ActEng_ReEng(GST_MeterData.A_VarHr);
Disp_UnitKarh();
break;
case Phase_B_vol:
Dis_vol_cur(GST_58data.U_bv.BVRMS,GU_7758scl.Str_58scl.bvscale,0);
Clr_1sign(Sign_A1);Dis_1sign(Sign_B);Clr_1sign(Sign_C);
Disp_UnitV();
break;
case Phase_B_i:
Dis_vol_cur(GST_58data.U_bi.BIRMS,GU_7758scl.Str_58scl.biscale,1);
Disp_UnitA();
break;
case Phase_B_watt:
Disp_ActEng_ReEng(GST_MeterData.B_WattHr);
Disp_UnitKwh();
break;
case Phase_B_var:
Disp_ActEng_ReEng(GST_MeterData.B_VarHr);
Disp_UnitKarh();
break;
case Phase_C_vol:
Dis_vol_cur(GST_58data.U_cv.CVRMS,GU_7758scl.Str_58scl.cvscale,0);
Clr_1sign(Sign_A1);Clr_1sign(Sign_B);Dis_1sign(Sign_C);
Disp_UnitV();
break;
case Phase_C_i:
Dis_vol_cur(GST_58data.U_ci.CIRMS,GU_7758scl.Str_58scl.ciscale,1);
Disp_UnitA();
break;
case Phase_C_watt:
Disp_ActEng_ReEng(GST_MeterData.C_WattHr);
Disp_UnitKwh();
break;
case Phase_C_var:
Disp_ActEng_ReEng(GST_MeterData.C_VarHr);
Disp_UnitKarh();
break;
default:
break;
}
}
void Disp_UnitV(void)
{
Clr_1sign(Sign_k);Clr_1sign(Sign_V1);Dis_1sign(Sign_V0);
Clr_1sign(Sign_A2);Clr_1sign(Sign_ar);Clr_1sign(Sign_h);
Dis_1string(LogPis_QianYou,DatPis_DianYan);
}
void Disp_UnitA(void)
{
Clr_1sign(Sign_k);Clr_1sign(Sign_V1);Clr_1sign(Sign_V0);
Dis_1sign(Sign_A2);Clr_1sign(Sign_ar);Clr_1sign(Sign_h);
Dis_1string(LogPis_QianYou, DatPis_DianLiu);
}
void Disp_UnitKwh(void)
{
Dis_1sign(Sign_k);Dis_1sign(Sign_V1);Dis_1sign(Sign_V0);
Clr_1sign(Sign_A2);Clr_1sign(Sign_ar);Dis_1sign(Sign_h);
Dis_1string(LogPis_QianYou, DatPis_Yougong);
}
void Disp_UnitKarh(void)
{
Dis_1sign(Sign_k);Clr_1sign(Sign_V1);Clr_1sign(Sign_V0);
Clr_1sign(Sign_A2);Dis_1sign(Sign_ar);Dis_1sign(Sign_h);
Dis_1string(LogPis_QianYou,DatPis_Wugong);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -