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

📄 setplay.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 5 页
字号:
//
// File name =DISPLAY.CPP  LCD显示器操作文件
// 设计 何风涛
//#include"class.h"
#include"classext.h"
//线路系数
const unsigned char ccc[8]=
{
 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
};

void SDSETMenu(void)  //系统配置
{
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(34,0,34,3);//JM34+0,Adr34, Type=3 系统配置
     DspMenu(35,pVar->ScfgMenuCount*0x05,35,3);
     DspMenuCur(35,(pVar->ScfgMenuCount+pVar->ScfgCursorCount)*0x05+1,35,(pVar->ScfgCursorCount*10)+2,4, 0x83);
     pVar->action=OPEN;
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(MAIN_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->ScfgMenuCount=pVar->ScfgMenuCount+4;
	if(pVar->ScfgMenuCount>0x05) pVar->ScfgMenuCount=0x05;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ScfgMenuCount>0x03) pVar->ScfgMenuCount=pVar->ScfgMenuCount-4;
	      else		     pVar->ScfgMenuCount=0;
     };
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ScfgCursorCount>=3)
	{
		  pVar->ScfgMenuCount=pVar->ScfgMenuCount+1;
		  pVar->ScfgCursorCount=3;
	}else pVar->ScfgCursorCount++;
	if(pVar->ScfgMenuCount>0x05) pVar->ScfgMenuCount=0x05;
     };
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ScfgCursorCount==0)
	{
	    if(pVar->ScfgMenuCount>0x00) pVar->ScfgMenuCount=pVar->ScfgMenuCount-1;
	    pVar->ScfgCursorCount=0;
	}else pVar->ScfgCursorCount--;
     };
     if(pVar->KeyID==OKKEY)  //确认键
     {
	switch(pVar->ScfgMenuCount+pVar->ScfgCursorCount)
	{
		case 0x00:     pVar->MenuMode=SSET_MENU;    // 系统设置
			       break;
		case 0x01:     pVar->MenuMode=MODESET_MENU; // 模式设置
			       break;
		case 0x02:     pVar->MenuMode=LINESET_MENU; // 线路配置
			       break;
		case 0x03:     pVar->MenuMode=JCSET_MENU;   // 交流系数设置
			       break;
		case 0x04:     pVar->MenuMode=DCSET_MENU;   // 直流系数设置
			       break;
		case 0x05:     pVar->MenuMode=YCSET_MENU;   // 线路系数
			       break;
		case 0x06:     pVar->MenuMode=KRDSET_MENU;  // KR配置
			       break;
		case 0x07:     pVar->MenuMode=COMSET_MENU;  // 通信设置
			       break;
		case 0x08:     pVar->MenuMode=DWSET_MENU;   // 档位设置
			       break;
		case 0x09:     pVar->MenuMode=YMSET_MENU;   // 遥脉设置
			       break;
		case 0x0A:     pVar->MenuMode=YKDSET_MENU;  // 遥控配置
			       break;
		case 0x0B:     pVar->MenuMode=YKSET_MENU;   // 遥控设置
			       break;
		case 0x0C:     pVar->MenuMode=BHCOM_MENU;   // 保护配置
			       break;
		case 0x0D:     pVar->MenuMode=BHSET_MENU;   // 保护设置
			       break;
		default:       break;
	};
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
     };
  };//-------OPEN
}

void SSETMenu(void)  //系统设置
{
  int i,n;
  unsigned ui;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(66,0,66,3);
     pVar->action=OPEN;

     ui=yxnum;//遥信板个数
     if(ui>6) ui=0;
     StrBuf[1]=ui%10;  ui=ui/10;
     StrBuf[0]=ui%10;

     ui=ymnum;//遥脉板个数
     if(ui>12) ui=0;
     StrBuf[3]=ui%10;  ui=ui/10;
     StrBuf[2]=ui%10;

     ui=kcnum;//开出板个数
     if(ui>10) ui=0;
     StrBuf[5]=ui%10;  ui=ui/10;
     StrBuf[4]=ui%10;

     ui=mrnum;//模入板个数
     if(ui>7) ui=0;
     StrBuf[7]=ui%10;  ui=ui/10;
     StrBuf[6]=ui%10;
     OutString(StrBuf,0,SysSet,4);
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(SDSET_MENU);
     if(pVar->KeyID==F1)// 修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=FLASH;
	 pVar->NewCursorOffset=0;
	 pVar->OldCursorOffset=0;
	 CursorGotoXy(StrBuf,SysSet,4);
	 return;
     }
  }
  if(pVar->action==FLASH)
  {//------------------FLASH-----------------------
     FlashESC();
     if(pVar->KeyID==MINUSKEY)//  "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	if(StrBuf[pVar->NewCursorOffset]!=0) StrBuf[pVar->NewCursorOffset]=StrBuf[pVar->NewCursorOffset]-1;
	   else 			     StrBuf[pVar->NewCursorOffset]=9;
	CursorGotoXy(StrBuf,SysSet,4);
     };
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	StrBuf[pVar->NewCursorOffset]++;
	if(StrBuf[pVar->NewCursorOffset]>9)StrBuf[pVar->NewCursorOffset]=0;
	CursorGotoXy(StrBuf,SysSet,4);
     };
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	if(pVar->NewCursorOffset>0) pVar->NewCursorOffset=pVar->NewCursorOffset-1;
	CursorGotoXy(StrBuf,SysSet,4);
     };
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->NewCursorOffset=pVar->NewCursorOffset+1;
	if(pVar->NewCursorOffset>7)   pVar->NewCursorOffset=0;
	CursorGotoXy(StrBuf,SysSet,4);
     };
     if(pVar->KeyID==OKKEY)// " < " + " > "  修改完成
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	flashwrite_h(PSD_FLASH_BASE);
	for(i=0;i<4;i++)
	{
	    n=i*2;
	    ui=StrBuf[n]*10+StrBuf[n+1];
	    switch(i)
	    {
		  case	0x00:if(ui>6) ui=6;  //遥信板个数
			     pVar->flash_dat[((unsigned int)(&yxnum)-PSD_FLASH_BASE)/2]=ui;
			     break;
		  case	0x01:if(ui>4) ui=4; //遥脉板个数
			     pVar->flash_dat[((unsigned int)(&ymnum)-PSD_FLASH_BASE)/2]=ui;
			     break;
		  case	0x02:if(ui>8) ui=0;  //开出板个数
			     pVar->flash_dat[((unsigned int)(&kcnum)-PSD_FLASH_BASE)/2]=ui;
			     break;
		  case	0x03:if(ui>4) ui=0;  //模入板个数
			     pVar->flash_dat[((unsigned int)(&mrnum)-PSD_FLASH_BASE)/2]=ui;
			     break;
	    }
	}
	flashwrite_a(PSD_FLASH_BASE);
	pVar->yxsum=yxnum*20;
	pVar->ymsum=ymnum*20;
	switch(yxnum)
	{
	  case	0x01:yx_num=0x01;
		     break;
	  case	0x02:yx_num=0x03;
		     break;
	  case	0x03:yx_num=0x07;
		     break;
	  case	0x04:yx_num=0x0F;
		     break;
	  case	0x05:yx_num=0x1F;
		     break;
	  case	0x06:yx_num=0x3F;
		     break;
	    default: yx_num=0x00;
		     break;
	}
	switch(ymnum)
	{
	  case	0x01:ym_num=0x01;
		     break;
	  case	0x02:ym_num=0x03;
		     break;
	  case	0x03:ym_num=0x07;
		     break;
	  case	0x04:ym_num=0x0F;
		     break;
	    default: ym_num=0x00;
		     break;
	}
     };
     InitYx();
  };//-------------------FALSH--------------------
}

void COMSetMenu(void)// 通信设置
{
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(36,0,36,3);//JM36+0,Adr36, Type=3 通信设置
     DspMenu(37,pVar->ComMenuCount*0x05,37,3);
     DspMenuCur(37,(pVar->ComMenuCount+pVar->ComSetCursorCount)*0x05+1,37,(pVar->ComSetCursorCount*10)+2,4, 0x83);
     pVar->action=OPEN;
  };
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(SDSET_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->ComMenuCount=pVar->ComMenuCount+4;
	if(pVar->ComMenuCount>0x04) pVar->ComMenuCount=0x04;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ComMenuCount>0x03) pVar->ComMenuCount=pVar->ComMenuCount-4;
	      else		    pVar->ComMenuCount=0;
     };
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ComSetCursorCount>=3)
	{
	   pVar->ComMenuCount=pVar->ComMenuCount+1;
	   pVar->ComSetCursorCount=3;
	}else pVar->ComSetCursorCount++;
	if(pVar->ComMenuCount>0x04) pVar->ComMenuCount=0x04;
     };
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ComSetCursorCount==0)
	{
	   if(pVar->ComMenuCount>0x00) pVar->ComMenuCount=pVar->ComMenuCount-1;
	   pVar->ComSetCursorCount=0;
	}else pVar->ComSetCursorCount--;
     };
     if(pVar->KeyID==OKKEY)  //确认键
     {
	pVar->MenuMode=COMCFG_MENU;
	pVar->COMID=pVar->ComMenuCount+pVar->ComSetCursorCount;
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
     };
  };//-------OPEN
}

void  ComCfgMenu(void)	 //通信设置
{
  unsigned int	ui;
  int  i;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     for(i=0;i<4;i++)
     {
	     ui=pVar->ComCount+i;
	     DspMenuCurxy(38,ui*0x05,38,(ui*10),pVar->ComCount*2,5, 0x03);
     }
     ui=pVar->ComCount+pVar->ComCursorCount;
     DspMenuCurxy(38,ui*0x05+1,38,(ui*10)+2,pVar->ComCount*2,4, 0x83);
     DspMenu(39,pVar->COMID*0x04,39,3);
     pVar->action=OPEN;
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(COMSET_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->ComCount=pVar->ComCount+4;
	if(pVar->ComCount>0x08) pVar->ComCount=0x08;
     }
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ComCount>0x03) pVar->ComCount=pVar->ComCount-4;
	      else		pVar->ComCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ComCursorCount>=3)
	{
	   pVar->ComCount=pVar->ComCount+1;
	   pVar->ComCursorCount=3;
	}else pVar->ComCursorCount++;
	if(pVar->ComCount>0x08) pVar->ComCount=0x08;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ComCursorCount==0)
	{
	   if(pVar->ComCount>0x00) pVar->ComCount=pVar->ComCount-1;
	   pVar->ComCursorCount=0;
	}else pVar->ComCursorCount--;
     }
     if(pVar->KeyID==OKKEY)  //确认键
     {
	switch(pVar->ComCount+pVar->ComCursorCount)
	{
		case 0x00:     pVar->MenuMode=NODESET_MENU; // 节 点 号
			       break;
		case 0x01:     pVar->MenuMode=SETUP_MENU;   // 启动方式
			       break;
		case 0x02:     pVar->MenuMode=COMSPEED_MENU;// 通信速率
			       break;
		case 0x03:     pVar->MenuMode=COMPRO_MENU;  // 通信规约
			       break;
		case 0x04:     pVar->MenuMode=COMJUST_MENU; // 奇偶校验
			       break;
		case 0x05:     pVar->MenuMode=COMSYN_MENU;  // 传输方式
			       break;
		case 0x06:     pVar->MenuMode=COMDATB_MENU; // 数 据 位
			       break;
		case 0x07:     pVar->MenuMode=COMSTOPB_MENU;// 停 止 位
			       break;
		case 0x08:     pVar->MenuMode=COMFLW_MENU;  // 流 控 制
			       break;
		case 0x09:     pVar->MenuMode=COMREP_MENU;  // 重发帧数
			       break;
		case 0x0A:     pVar->MenuMode=COMOVW_MENU;  // 超时等待
			       break;
		case 0x0B:     pVar->MenuMode=COMWORD_MENU; // 同 步 字
			       break;
		default:       break;
	}
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
     }
  }//-------OPEN
}

void NodeSetMenu(void)// 节 点 号
{
  int i;
  unsigned ui;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(40,0,40,3);
     pVar->action=OPEN;
     ui=comset[pVar->COMID].node;
     ui=ui  & 0x00ff;
     StrBuf[2]=ui%10;ui=ui/10;
     StrBuf[1]=ui%10;ui=ui/10;
     StrBuf[0]=ui%10;
     OutString(StrBuf,0,NodeSet,4);
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(COMCFG_MENU);
     if(pVar->KeyID==F1)// 修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=FLASH;
	 pVar->NewCursorOffset=0;
	 pVar->OldCursorOffset=0;
	 CursorGotoXy(StrBuf,NodeSet,4);
	 return;
     }
  }
  if(pVar->action==FLASH)
  {//------------------FLASH-----------------------
     FlashESC();
     if(pVar->KeyID==MINUSKEY)//  "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	if(StrBuf[pVar->NewCursorOffset]!=0) StrBuf[pVar->NewCursorOffset]=StrBuf[pVar->NewCursorOffset]-1;
	   else  StrBuf[pVar->NewCursorOffset]=9;
	if(StrBuf[0]>2)
	{
		    StrBuf[0]=2;
	}else
	{
		    if(StrBuf[0]==2)
		    {
			 if(StrBuf[1]>=5)
			 {
			    StrBuf[1]=5;
			    if(StrBuf[2]>=5)  StrBuf[2]=5;
			 }
		    }
	}
	CursorGotoXy(StrBuf,NodeSet,4);

     };
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	StrBuf[pVar->NewCursorOffset]++;
	if(StrBuf[pVar->NewCursorOffset]>9)StrBuf[pVar->NewCursorOffset]=0;
	if(StrBuf[0]>2)
	{
	   StrBuf[0]=2;
	}else
	{
	   if(StrBuf[0]==2)
	   {
		if(StrBuf[1]>=5)
		{
		   StrBuf[1]=5;
		   if(StrBuf[2]>=5)  StrBuf[2]=5;
		}
	   }
	}
	CursorGotoXy(StrBuf,NodeSet,4);
     };
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	if(pVar->NewCursorOffset>0) pVar->NewCursorOffset=pVar->NewCursorOffset-1;
	CursorGotoXy(StrBuf,NodeSet,4);
     };
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->NewCursorOffset=pVar->NewCursorOffset+1;
	if(pVar->NewCursorOffset>2)   pVar->NewCursorOffset=0;
	CursorGotoXy(StrBuf,NodeSet,4);
     };
     if(pVar->KeyID==OKKEY)// " < " + " > "  修改完成
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	ui=StrBuf[0]*100+StrBuf[1]*10+StrBuf[2];
	flashwrite((unsigned int)(&(comset[pVar->COMID].node)),ui);
     };
  };//-------------------FALSH--------------------
}

void SetUpMenu(void)  // 启动方式
{
  int i;
  unsigned ui;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(41,0,41,3);
     pVar->action=OPEN;
     if(comset[pVar->COMID].setup==0)
     {
       DspMenu(42,0,42,3);
     }else
     {
       DspMenu(43,0,43,3);
     }
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(COMCFG_MENU);
     if(pVar->KeyID==F1)// 修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=FLASH;
	 if(comset[pVar->COMID].setup==0)
	 {
	    DspMenuCurxy(42,0,42,0,0,2, 0x83);
	    StrBuf[0]=0;
	 }else
	 {
	    DspMenuCurxy(43,0,43,0,0,2, 0x83);
	    StrBuf[0]=1;
	 }
	 return;
     }
  }
  if(pVar->action==FLASH)
  {//------------------FLASH-----------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -