📄 dis_xl.c
字号:
unsigned char code soe_bzt[4]={3,120,132,76}; //备自投
unsigned char code soe_glhjs1[7]={6,25,27,67,78,79,35}; //过流1后加速
unsigned char code soe_glhjs2[7]={6,25,27,68,78,79,35}; //过流2后加速
unsigned char code fs_sd[7]={6,35,65,129,130,76,77}; //速断方向投入
unsigned char code fs_gl1[8]={7,25,27,67,129,130,76,77}; //过流1方向投入
unsigned char code fs_gl2[8]={7,25,27,68,129,130,76,77}; //过流2方向投入
unsigned char code bzttr[6]={5,120,132,76,76,77}; //备自投投入
//---信号量------------------------------------------------------------------------
unsigned char code kb_kg[5]={4,38,39,15,16}; //开关状态
unsigned char code kb_sch[5]={4,133,134,86,12}; //手车位置
unsigned char code kb_cn[5]={4,135,136,137,138}; //弹簧储能
unsigned char code kb_wcn[6]={5,135,136,148,137,138}; //弹簧未能储
unsigned char code kb_ycn[6]={5,135,136,149,137,138}; //弹簧已能储
unsigned char code kb_dz[4]={3,61,62,40}; //接地刀
unsigned char code kb_jx[5]={4,140,141,38,39}; //对侧开关
unsigned char code kb_gz[3]={2,139,29}; //工作
unsigned char code kb_sy[3]={2,63,64}; //试验
unsigned char code kb_bw[3]={2,98,86}; //变位
unsigned char code kb_xs[3]={2,127,147}; //消失
//---定值--------------------------------------------------------------------------
unsigned char code dz_i[5]={4,28,29,26,27}; //动作电流
unsigned char code dz_z[4]={3,28,29,18}; //动作值
unsigned char code dz_t[5]={2,30,31}; //延时
unsigned char code dz_cs[3]={2,59,13}; //参数
unsigned char code dz_kzz[4]={3,7,8,109}; //控制字
unsigned char code bs_u[5]={4,74,75,26,34}; //闭锁电压
unsigned char code bs_i[5]={4,74,75,26,27}; //闭锁电流
unsigned char code dz_wu[5]={4,49,34,17,18}; //无压定值
unsigned char code dz_pt[4]={3,128,98,99}; //PT变比
unsigned char code dz_ct[4]={3,131,98,99}; //CT变比
unsigned char code dz_ju[4]={3,108,49,34}; //检无压
unsigned char code dz_bh[5]={4,9,10,76,77}; //保护投入
unsigned char code dz_tz[5]={4,100,41,76,77}; //跳闸投入
unsigned char code dz_tr[3]={2,76,77}; //投入
unsigned char code bs_i1[8]={7,25,27,67,26,34,74,75}; //过流1电压闭锁
unsigned char code bs_i2[8]={7,25,27,68,26,34,74,75}; //过流2电压闭锁
unsigned char code bs_fu[7]={6,70,71,26,34,74,75}; //低周电压闭锁
unsigned char code bs_fi[7]={6,70,71,26,27,74,75}; //低周电流闭锁
//---菜单--------------------------------------------------------------------------
unsigned char code m_sj[3]={2,13,14}; //数据
unsigned char code m_zt[3]={2,15,16}; //状态
unsigned char code m_dz[3]={2,17,18}; //定值
unsigned char code m_kz[3]={2,7,8}; //控制
unsigned char code m_se[3]={2,83,84}; //事件
unsigned char code m_fg[3]={2,85,106}; //复归
unsigned char code m_bb[3]={2,94,95}; //版本
//-----------------------------------------------------------------------------
unsigned char code hz[3]={2,53,41}; //合闸
unsigned char code fz[3]={2,54,41}; //分闸
unsigned char code kr[3]={2,38,77}; //开入
unsigned char code reback[7]={6,88,89,90,91,92,93}; //按任意键返回
unsigned char code besure[7]={6,88,119,125,91,123,124}; //按确认键继续
unsigned char code goback[7]={6,126,127,90,91,92,93}; //按取消键返回
unsigned char code dzcx[5]={4,17,18,19,20}; //定值查询
unsigned char code dzxg[5]={4,17,18,21,22}; //定值修改
unsigned char code dzgh[5]={4,17,18,23,24}; //定值固化
unsigned char code mmxg[5]={4,96,97,21,22}; //密码修改
unsigned char code ghcg[5]={4,23,24,32,33}; //固化成功
unsigned char code xhfg[5]={4,115,3,85,106}; //信号复归
unsigned char code bbh[4]={3,94,95,3}; //版本号
unsigned char code version[4]={3,'3','.','1'}; //version_num
unsigned char code nsoe[4]={3,49,83,84}; //无事件
unsigned char code xmm[4]={3,116,96,97}; //新密码
unsigned char code lmm[3]={2,96,97}; //密码
unsigned char code mmwr[5]={4,96,97,117,118}; //密码错误
unsigned char code callerr[5]={4,142,143,117,118}; //召唤错误
unsigned char code gherr[5]={4,23,24,117,118}; //固化错误
unsigned char code ghno[5]={4,49,121,23,24}; //无用固化
unsigned char code callup[4]={3,142,143,144}; //召唤中
unsigned char code dsolid[4]={3,23,24,144}; //固化中
unsigned char code addr[3]={2,145,146}; //地址
unsigned char code nop[3] = {2,' ',' '}; //空
unsigned char code rdata[16][5]=
{ {3,'I','A','='},{3,'I','B','='},{3,'I','C','='},{3,'I','0','='},
{3,'U','a','='},{3,'U','b','='},{3,'U','c','='},{3,'U','0','='},
{2,'P','='},{2,'Q','='},{2,'f','='}
};
unsigned char code unit[10][5]=
{ {1,'A'},{1,'V'},{1,'S'},{2,'k','V'},{2,'H','z'},{2,'k','W'},{4,'k','V','a','r'},{0},{0},{0} };
/*******************************************************************************************
soe参数:b7b6--00 无效soe, 01 信号量soe 无动作属性,10 信号量soe 有合分动作属性, 11 保护soe,
b5b4--动作值小数点位数,b3b2b1b0--动作值单位或开入序号,
*******************************************************************************************/
unsigned char code soepara[32]=
{
0x80,0x80,0x80,0x81,0x80,0x80,0x82,0x83,
0x84,0x80,0x80,0x40,0x40,0x40,0x40,0x40,
0x40,0xe0,0xe0,0xe0,0xe0,0xe4,0x40,0x40,
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40
};
unsigned char code *soe_disp[32]=
{ soe_sch,soe_sch,kb_dz,kr,soe_kg,soe_kg,kr,kr,
kr,kr,kr,kb_wcn,kr,kr,kr,kr,
hz,soe_sd,soe_gl1,soe_gl2,soe_lx,soe_dz,soe_chz,kr,
soe_glhjs1,soe_glhjs2,kr,soe_ptdx,soe_kzdx,soe_bzt,kr,kr
};
// ------------写命令到LCD---------
void write_com(unsigned char cmdcode)
{
unsigned char ii ;
LCDC = 0 ; LCDR = 0 ;
LCDD = cmdcode;//latchP7E = 0 ;//latchP7E = 1 ;
for ( ii = 0x00 ; ii < 18 ; ii ++ ) ;
LCDE = 1 ;
for ( ii = 0x00 ; ii < 18 ; ii ++ ) ;
LCDE = 0 ;
}
// ------------写数据到LCD-----------
void write_data(unsigned char Dispdata)
{
unsigned char ii ;
LCDC = 1 ; LCDR = 0 ;
LCDD = Dispdata;//latchP7E = 0 ;//latchP7E = 1 ;
for ( ii = 0x00 ; ii < 18 ; ii ++ ) ;
LCDE = 1 ;
for ( ii = 0x00 ; ii < 18 ; ii ++ ) ;
LCDE = 0 ;
}
// ------------读LCD数据-----------
/*unsigned char read_data()
{
unsigned char ii ;
unsigned char dispdata;
LCDC = 1 ; LCDR = 1 ;
dispdata = LCDD; //latchP7E = 0 ;//latchP7E = 1 ;
for ( ii = 0x00 ; ii < 18 ; ii ++ ) ;
LCDE = 1 ;
for ( ii = 0x00 ; ii < 18 ; ii ++ ) ;
LCDE = 0 ;
return dispdata;
}*/
// ------------初始化LCD屏-------------
void init_lcd ( void )
{
unsigned char ii , jj ;
LCD1 = 1 ; LCD2 = 1 ;
for ( jj = 0x00 ; jj < 100 ; jj ++ )
for ( ii = 0x00 ; ii < 10 ; ii ++ ); // ;
write_com ( DISP_OFF ) ;
write_com ( PAGE_ADD + 0x00 ) ;
write_com ( START_LINE + 0x00 );
write_com ( COL_ADD + 0x00 ) ;
write_com ( DISP_ON ) ;
}
/***********************************************************************************
显示字符程序:
指定坐标显示8*16(字符)
x-(字符列坐标0=< x <=15),y-(字符行坐标0=< y <=7),
************************************************************************************/
void disp816(unsigned char x , unsigned char y , unsigned char asc )
{
unsigned char ii,k;
unsigned int jj ;
if ( x < 64 ) { LCD1 = 1 ; LCD2 = 0 ; } // 左半屏幕
else { LCD1 = 0 ; LCD2 = 1 ; x = x - 64 ; } // 右半屏幕
jj = ( asc - 0x20 ) * 16 ; // 取字库
for(k=0;k<2;k++)
{
write_com( PAGE_ADD + y + k);
write_com( COL_ADD + x ) ;
for( ii = 0x00 ; ii < 0x08 ; ii ++ )
{ write_data( asc16[ jj ] );
jj++;
}
}
}
/***********************************************************************************
显示字符程序:(反显)
指定坐标显示8*16(字符)
x-(字符列坐标0=< x <=15),y-(字符行坐标0=< y <=7),
************************************************************************************/
void disp816n(unsigned char x , unsigned char y , unsigned char asc )
{
unsigned char ii,k ;
unsigned int jj ;
if ( x < 64 ) { LCD1 = 1 ; LCD2 = 0 ; } // 左半屏幕
else { LCD1 = 0 ; LCD2 = 1 ; x = x - 64 ; } // 右半屏幕
jj = ( asc - 0x20 ) * 16 ; // 取字库
for(k=0;k<2;k++)
{
write_com( PAGE_ADD + y + k);
write_com( COL_ADD + x ) ;
for( ii = 0x00 ; ii < 0x08 ; ii ++ )
{ write_data( asc16 [ jj ] ^ 0xff );
jj++ ;
}
}
}
/***********************************************************************************
显示多字符程序:
指定坐标显示8*16(字符),首字符坐标(x,y)
x-(字符列坐标0=< x <=15),y-(字符行坐标0=< y <=7),
face为1字符正显, face为0字符反显
************************************************************************************/
void displ_asc( unsigned char x , unsigned char y , unsigned char *asc , unsigned char face)
{
unsigned char n,length;
length = *asc++;
for( n=0; n<length; n++)
{
if(face) { disp816(x,y,*asc++); }
else { disp816n(x,y,*asc++);}
x+=8;
}
}
/***********************************************************************************
显示汉字程序:
指定坐标显示16*16(字符)
x-(汉字列坐标0=< x <= 7),y-(字符行坐标0=< y <=7),
************************************************************************************/
void disp_chn( unsigned char x , unsigned char y , unsigned char chn )
{
unsigned char ii, k;
unsigned int jj ;
if( x < 64 ) { LCD1 = 1 ; LCD2 = 0 ; } // 左半屏幕
else { LCD1 = 0 ; LCD2 = 1 ; x -= 64 ; } // 右半屏幕
for( k=0; k<2; k++)
{
write_com( PAGE_ADD + y +k) ;
write_com( COL_ADD + x ) ;
jj =( chn ) * 32 + 1 -k ; // 取字库
for( ii = 0x00 ; ii < 0x10 ; ii ++ )
{ write_data ( chn16 [ jj ] ) ;
jj += 0x02 ;
}
}
}
/***********************************************************************************
显示汉字程序:(反显)
指定坐标显示16*16(字符)
x-(汉字列坐标0=< x <= 7),y-(字符行坐标0=< y <=7),
************************************************************************************/
void disp_chnn( unsigned char x , unsigned char y , unsigned char chn )
{
unsigned char ii, k;
unsigned int jj ;
if( x < 64 ) { LCD1 = 1 ; LCD2 = 0 ; } // 左半屏幕
else { LCD1 = 0 ; LCD2 = 1 ; x -= 64 ; } // 右半屏幕
for( k=0; k<2; k++)
{
write_com( PAGE_ADD + y +k) ;
write_com( COL_ADD + x ) ;
jj =( chn ) * 32 + 1 - k ; // 取字库
for( ii = 0x00 ; ii < 0x10 ; ii ++ )
{ write_data ( chn16 [ jj ]^0xff );
jj += 0x02 ;
}
}
}
/******************************************************************************************
显示多字程序:
指定坐标显示16*16(字符),首字坐标(x,y),
x-(字符列坐标0=< x <=7),y-(字符行坐标0=< y <=7),
face为1字符正显, face为0字符反显
*******************************************************************************************/
void displ_chn( unsigned char x , unsigned char y , unsigned char *chn , unsigned char face)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -