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

📄 display.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 5 页
字号:
//
// File name =DISPLAY.CPP  LCD显示器操作文件
// 设计 何风涛
#include"class.h"
#include"classext.h"
#include"SETPLAY.C"


void Display(void)
{
   unsigned int i=0,m=0,j=0,k;
   unsigned char  ch;
   ResetTimer(DisplayTaskNo);
   pVar->RunCounts++;
   if(pVar->KeyValue==RESET) SystemReset();


   if(pVar->RunCount>=10) pVar->RunCount=0;
   if(pVar->ComCounts>=6)  pVar->ComCounts=0;
   if(pVar->RunCount==0) setbit(&p6_reg, 0);  /* P6.0=I/O=VCC		 */
   if(pVar->RunCount==5) clrbit(&p6_reg, 0);  /* P6.0=I/O=VCC		 */
   j=0;
   for(i=0;i<8;i++)
   {
      j=j+pVar->can_flag[i];
   }
   if(j!=0)
   {
      if(pVar->ComCounts==0) setbit(&p6_reg, 2);  /* P6.2=I/O=VCC	     */
      if(pVar->ComCounts==3) clrbit(&p6_reg, 2);  /* P6.2=I/O=VCC	     */
   }else
   {
      if(pVar->ComCounts==0) setbit(&p6_reg, 2);  /* P6.2=I/O=VCC	     */
   }

   if(pVar->OldYSCON!=YSCON) pVar->BvLedCount=20;
   if(pVar->BvLedCount>0)
   {
     pVar->BvLedCount--;
     clrbit(&p6_reg, 3);  /* P6.3=I/O=VCC	     */
   }else
   {
      setbit(&p6_reg, 3);  /* P6.3=I/O=VCC	      */
   }
   pVar->OldYSCON=YSCON;

   pVar->RunCount++;
   pVar->ComCounts++;

   if(((TaskStatus(DisplayTaskNo)&0x20)!=0))
   {//接收邮件
      if((TRead(DisplayTaskNo,pVar->Letter))!=0)
      {
	   pVar->Letter_Flag=0xff;
      }
   }

   switch(pVar->MenuMode)
   {
	  case FACE_MENU     :	FaceMenu();    // 封面
				break;
	  case MAIN_MENU     :	MainMenu();    // 主菜单
				break;
	  case ZJ_MENU	     :	ZJMenu();      // 定时巡检
				break;
	  case YC_MENU	     :	YCMenu();      // 遥测显示
				break;
	  case MCDD_MENU     :	MCDDMenu();    // 脉冲电度
				break;
	  case JFDD_MENU     :	JFDDMenu();    // 积分电度
				break;
	  case DCPLAY_MENU   :	DCMenu();      // 直流显示
				break;
	  case JCPLAY_MENU   :	JCMenu();      // 交流显示
				break;
	  case LINEPLAY_MENU :	LINEMenu();    // 线路显示
				break;
	  case TEMPERPLAY_MENU: TEMPERMenu();  // 温度显示
				break;
	  case YX_MENU	 :	YXMenu();      // 遥信显示
				break;
	  case YK_MENU	 :	YKMenu();      // 遥控操作
				break;
	  case YM_MENU	 :	YMMenu();      // 遥脉显示
				break;
	  case FREQ_MENU :	FREQMenu();    // 频率显示
				break;
	  case SDSET_MENU:	if((pVar->passid!=0)||(pVar->passop!=0))
				{
				       SDSETMenu();	//系统配置
				}else  password();
				break;
	  case SSET_MENU :	SSETMenu();    // 系统设置
				break;
	  case BHSET_MENU:	BHSETMenu();   // 保护设置
				break;
	  case BHCOM_MENU:	BHCOMMenu();   // 保护配置
				break;
	  case MEM_MENU  :	MEMMenu();     // 内存显示
				break;
	  case MEMReg1_MENU:	MEMReg1();     // 寄存器Ⅰ
				break;
	  case MEMReg2_MENU:	MEMReg2();     // 寄存器Ⅱ
				break;
	  case MEMRam196_MENU:	MEMRam196();   // RAM(196)
				break;
	  case MEMRamPSD_MENU:	MEMRamPSD();   // RAM(PSD)
				break;
	  case MEMRam256_MENU:	MEMRam256();   // RAM(256)
				break;
	  case MEMFlashPSD_MENU:MEMFlashPSD(); // Flash(PSD)
				break;
	  case MEMX25043_MENU:	MEMX25043();   // X25043
				break;
	  case COM_MENU  :	COMMenu();     // 通信监视
				break;
	  case TIME_MENU :	TIMEMenu();    // 时间显示
				break;
	  case SOE_MENU  :	SOEMenu();     // 历史查询
				break;
	  case COMSET_MENU:	COMSetMenu();  // 通信口选择
				break;
	  case COMCFG_MENU:	ComCfgMenu();  // 通信设置
				break;
	  case NODESET_MENU:	NodeSetMenu(); // 节 点 号
				break;
	  case SETUP_MENU:	SetUpMenu();   // 启动方式
				break;
	  case COMSPEED_MENU:	ComSpeedMenu();// 通信速率
				break;
	  case COMPRO_MENU:	ComProMenu();  // 通信规约
				break;
	  case COMJUST_MENU:	ComJustMenu(); // 奇偶校验
				break;
	  case COMSYN_MENU:	ComSynMenu();  // 传输方式
				break;
	  case COMDATB_MENU:	ComDatbMenu(); // 数 据 位
				break;
	  case COMSTOPB_MENU:	ComStopbMenu();// 停 止 位
				break;
	  case COMFLW_MENU:	ComFlwMenu();  // 流 控 制
				break;
	  case COMREP_MENU:	ComRepMenu();  // 重发帧数
				break;
	  case COMOVW_MENU:	ComOVWMenu();  // 超时等待
				break;
	  case COMWORD_MENU:	ComWordMenu(); // 同 步 字
				break;
	  case LINESET_MENU:	LINESetMenu(); // 线路配置
				break;
	  case MODESET_MENU:	MODESetMenu(); // 模式设置
				break;
	  case JCSET_MENU:	JCSetMenu();   // 交流系数设置
				break;
	  case DCSET_MENU:	DCSetMenu();   // 直流系数设置
				break;
	  case YCSET_MENU :	YCSetMenu();   // 线路系数
				break;
	  case KRDSET_MENU:	KRDSetMenu();  // KR配置
				break;
	  case KRSET_MENU:	KRSetMenu();   // KR设置
				break;
	  case SYXSET_MENU:	SYXSetMenu();  // 软YX设置
				break;
	  case HYXSET_MENU:	HYXSetMenu();  // 硬YX设置
				break;
	  case YMSET_MENU :	YMSetMenu();   // 遥脉设置
				break;
	  case YXSET_MENU :	YXSetMenu();   // 遥信设置
				break;
	  case YMDSET_MENU:	YMDSetMenu();  // 遥脉配置
				break;
	  case YKSET_MENU :	YKSetMenu();   // 遥控设置
				break;
	  case YKDSET_MENU:	YKDSetMenu();  // 遥控配置
				break;
	  case STU_MENU:	StuMenu();     // 系统状态
				break;
	  case YCDEBUG_MENU:	if((pVar->passid!=0)||(pVar->passop!=0))
				{
				   YCDebugMenu();// 遥测调试
				}else password();
				break;
	  case YXDEBUG_MENU:	YXDebugMenu();	 // 遥信调试
				break;
	  case PQJUST_MENU:	PQJustMenu();	 // 功率校对
				break;
	  case COMRXD_MENU:	COMRxdMenu();	 // 通信接收
				break;
	  case COMTXD_MENU:	COMTxdMenu();	 // 通信发送
				break;
	  case DWSET_MENU:	DWSet_Menu();	 // 档位设置
				break;
	  case DWPLAY_MENU:	DWPlay_Menu();	 // 档位显示
				break;
	  case VERSION_MENU:	Version_Menu();  // 版本显示
				break;
	     default:		break;
   }
}

//---------------Next Function	Prototype Define in Lcd.h---------------
void FaceMenu(void)
{
  unsigned int i;
  if(pVar->action==OPEN)
  {
     if(pVar->KeyID!=NULLKEY)
     {
	pVar->MenuMode=MAIN_MENU;
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->MainMenuCount=0;
	pVar->CursorCount=0;
	pVar->passop=0;
     }
     return;
  }
  if(pVar->action==NOUSE)
  {
    MAP(0,0,127,7, PICTURE );
    pVar->action=OPEN;
  };
}

void SelectMenu(unsigned int sel)
{
   switch(sel)
   {
		case 0x00:	pVar->MenuMode=ZJ_MENU;       // 定时巡检
				pVar->ZJMenuCount=0;
				break;
		case 0x01:	pVar->MenuMode=YC_MENU;       // 遥测显示
				pVar->LineNum=0;
				break;
		case 0x02:	pVar->MenuMode=YX_MENU;       // 遥信显示
				break;
		case 0x03:	pVar->MenuMode=YK_MENU;       // 遥控操作
				break;
		case 0x04:	pVar->MenuMode=YM_MENU;       // 遥脉显示
				break;
		case 0x05:	pVar->MenuMode=FREQ_MENU;     // 频率显示
				break;
		case 0x06:	pVar->MenuMode=SDSET_MENU;    // 系统配置
				break;
		case 0x07:	pVar->MenuMode=MEM_MENU;      // 内存显示
				break;
		case 0x08:	pVar->MenuMode= COM_MENU;     // 通信监视
				break;
		case 0x09:	pVar->MenuMode=TIME_MENU;     // 时间显示
				break;
		case 0x0A:	pVar->MenuMode=SOE_MENU ;     // 历史查询
				break;
		case 0x0B:	pVar->MenuMode=DWPLAY_MENU;   // 档位显示
				break;
		case 0x0C:	pVar->MenuMode=VERSION_MENU;  // 版本显示
				break;
		case 0x0D:	pVar->MenuMode=YXDEBUG_MENU;
				break;
		case 0x0E:	pVar->MenuMode=FILE_MENU;
				pVar->ZJMenuCount=0;
				break;
		default:	break;
   };
}

void MainMenu(void)
{
  int i;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(0,0,0,3);//JM0+0,Adr0, Type=2 主菜单
     DspMenu(1,pVar->MainMenuCount*0x05,1,3);
     pVar->action=OPEN;
     pVar->LineNum=0;
     pVar->passop=0;
     DspMenuCur(1,(pVar->MainMenuCount+pVar->CursorCount)*0x05+1,1, (pVar->CursorCount*10)+2,4, 0x83);
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(FACE_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->MainMenuCount=pVar->MainMenuCount+4;
	if(pVar->MainMenuCount>0x08) pVar->MainMenuCount=0x08;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->MainMenuCount>0x03) pVar->MainMenuCount=pVar->MainMenuCount-4;
	      else	       pVar->MainMenuCount=0;
     };
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->CursorCount>=3)
	{
		  pVar->MainMenuCount=pVar->MainMenuCount+1;
		  pVar->CursorCount=3;
	}else pVar->CursorCount++;
	if(pVar->MainMenuCount>0x09) pVar->MainMenuCount=0x09;
     };
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->CursorCount==0)
	{
	    if(pVar->MainMenuCount>0x00) pVar->MainMenuCount=pVar->MainMenuCount-1;
	    pVar->CursorCount=0;
	}else pVar->CursorCount--;
     };
     if(pVar->KeyID==OKKEY)  //确认键
     {
	SelectMenu(pVar->MainMenuCount+pVar->CursorCount);
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
     };
  };//-------OPEN
}

void ZJMenu(void)    // 定时巡检
{
  unsigned int i,j;
  union WTEMP_ST  wtmp;

  if(pVar->action==NOUSE)
  {
     LcdClr();
     if(pVar->ZJMenuCount>10) pVar->ZJMenuCount=10;
     DspMenu(6,pVar->ZJMenuCount*0x07,6,4);
     pVar->action=OPEN;
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(MAIN_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->ZJMenuCount=pVar->ZJMenuCount+4;
	if(pVar->ZJMenuCount>0x0A) pVar->ZJMenuCount=0x0A;
     }
     if(pVar->KeyID==MINUSKEY)// "-"=PageUp
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ZJMenuCount>0x03) pVar->ZJMenuCount=pVar->ZJMenuCount-4;
	   else 	     pVar->ZJMenuCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->ZJMenuCount=pVar->ZJMenuCount+1;
	if(pVar->ZJMenuCount>0x0A) pVar->ZJMenuCount=0x0A;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ZJMenuCount>0x00) pVar->ZJMenuCount=pVar->ZJMenuCount-1;
     }

     if(pVar->KeyID==F1)
     {
	pVar->KeyID=NULLKEY;
	Wren_Cmd(); //写允许命令
	Byte_Write(0,0);
	Wren_Cmd(); //写允许命令
	Byte_Write(1,0);
	wtmp.B.Low=Byte_Read(0);
	wtmp.B.High=Byte_Read(1);
	pVar->ResetSum=wtmp.Word;
     }

     for(i=0;i<4;i++)
     {
	 StrBuf[4*i+0]=74;
	 StrBuf[4*i+1]=75;
	 StrBuf[4*i+2]=76;
	 StrBuf[4*i+3]=77;
	 switch(pVar->ZJMenuCount)
	 {
	     case  0x00:if(i==1)
			{
			   j=pVar->ResetSum;
			   StrBuf[4*i+3]=j%10; j=j/10;
			   StrBuf[4*i+2]=j%10; j=j/10;
			   StrBuf[4*i+1]=j%10; j=j/10;
			   StrBuf[4*i+0]=j%10;
			}
			break;
	     case  0x01:if(i==0)
			{
			   j=pVar->ResetSum;
			   StrBuf[4*i+3]=j%10; j=j/10;
			   StrBuf[4*i+2]=j%10; j=j/10;
			   StrBuf[4*i+1]=j%10; j=j/10;
			   StrBuf[4*i+0]=j%10;
			}
			break;
	     case 0x03: if(i==3)
			{
			  if(pVar->can_flag[0]==0)
			  {
			     StrBuf[4*i+0]=82;
			     StrBuf[4*i+1]=83;
			     StrBuf[4*i+2]=84;
			     StrBuf[4*i+3]=85;
			  }
			}
			break;
	     case 0x04: if(i==2)
			{
			  if(pVar->can_flag[0]==0)
			  {
			     StrBuf[4*i+0]=82;
			     StrBuf[4*i+1]=83;
			     StrBuf[4*i+2]=84;
			     StrBuf[4*i+3]=85;
			  }
			}
			if(i==3)
			{
			  if(pVar->can_flag[1]==0)
			  {
			     StrBuf[4*i+0]=82;
			     StrBuf[4*i+1]=83;
			     StrBuf[4*i+2]=84;
			     StrBuf[4*i+3]=85;
			  }
			}
			break;
	     case 0x05: switch(i)
			{
			  case 0x01:if(pVar->can_flag[0]==0)//CAN1
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			  case 0x02:if(pVar->can_flag[1]==0)//CAN2
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			  case 0x03:if(pVar->can_flag[2]==0)//COM1
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			}
			break;
	     case 0x06: switch(i)
			{
			  case 0x00:if(pVar->can_flag[0]==0)//CAN1
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			  case 0x01:if(pVar->can_flag[1]==0)//CAN2
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			  case 0x02:
			  case 0x03:if(pVar->can_flag[i]==0)//COM1 COM2
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			}
			break;
	     case 0x07: switch(i)
			{
			  case 0x00:if(pVar->can_flag[1]==0)//CAN2
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			  case 0x01:
			  case 0x02:
			  case 0x03:if(pVar->can_flag[i+1]==0)//COM1 COM2 COM3
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			}
			break;
	     case 0x08: switch(i)
			{
			  case 0x00:
			  case 0x01:
			  case 0x02:
			  case 0x03:if(pVar->can_flag[i+2]==0)//COM1 COM2 COM3 COM4
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;

⌨️ 快捷键说明

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