⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dis_xl.c

📁 很好的51显示程序!做为一个人机对话,HAO
💻 C
📖 第 1 页 / 共 5 页
字号:
 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 + -