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

📄 display.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 5 页
字号:
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			}
			break;
	     case 0x09: switch(i)
			{
			  case 0x00:
			  case 0x01:
			  case 0x02:
			  case 0x03:if(pVar->can_flag[i+3]==0)// COM2 COM3 COM4 COM5
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			}
			break;
	     case 0x0A: switch(i)
			{
			  case 0x00:
			  case 0x01:
			  case 0x02:
			  case 0x03:if(pVar->can_flag[i+4]==0)//COM3 COM4 COM5 COM6
				    {
				       StrBuf[4*i+0]=82;
				       StrBuf[4*i+1]=83;
				       StrBuf[4*i+2]=84;
				       StrBuf[4*i+3]=85;
				    }
				    break;
			}
			break;
	 }
     }
     OutString(StrBuf,0,ZJAdr,4);
  };//-------OPEN
}


void YCMenu(void)// 遥测显示
{
  int i;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     if(pVar->YCMenuCount>=1)pVar->YCMenuCount=0;
     DspMenu(7, pVar->YCMenuCount*0x05,7,3);
     DspMenuCur(7,(pVar->YCMenuCount+pVar->YCCursorCount)*0x05+1,7, (pVar->YCCursorCount*10)+2,4, 0x83);
     DspMenu(8,0,8,3);//JM8+0,Adr8, Type=3 遥测显示
     pVar->action=OPEN;
  }
  if(pVar->action==OPEN)
  {//-----OPEN
     HITESC(MAIN_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->YCMenuCount=3;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->YCMenuCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->YCCursorCount>=3)
	{
	   pVar->YCMenuCount=pVar->YCMenuCount+1;
	   pVar->YCCursorCount=3;
	}else pVar->YCCursorCount++;
	if(pVar->YCMenuCount>0x03) pVar->YCMenuCount=0x03;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->YCCursorCount==0)
	{
	  if(pVar->YCMenuCount>0x00) pVar->YCMenuCount=pVar->YCMenuCount-1;
	  pVar->YCCursorCount=0;
	}else pVar->YCCursorCount--;
     };
     if(pVar->KeyID==OKKEY)  //确认键
     {
	pVar->KeyID=NULLKEY;
	i=pVar->YCCursorCount+pVar->YCMenuCount;
	switch(i)
	{
	     case 0x00:   pVar->MenuMode=DCPLAY_MENU;	    // 直流显示
			  pVar->KeyID=NULLKEY;
			  pVar->action=NOUSE;
			  break;
	     case 0x01:   pVar->MenuMode=JCPLAY_MENU;	    // 交流显示
			  pVar->KeyID=NULLKEY;
			  pVar->action=NOUSE;
			  break;
	     case 0x02:   pVar->MenuMode=LINEPLAY_MENU;     // 线路显示
			  pVar->KeyID=NULLKEY;
			  pVar->action=NOUSE;
			  break;
	     case 0x03:   pVar->MenuMode=TEMPERPLAY_MENU;     // 温度显示
			  pVar->KeyID=NULLKEY;
			  pVar->action=NOUSE;
			  break;
	     default:	  break;
	};
     };
  };//-------OPEN
}

void   DCMenu(void) // 直流显示
{
  unsigned int	     i,j,k,n;
  int		    it;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(9,0,9,2);
     Line(0,0, 127,0, 1);
     Line(0,15,127,15,1);
     Line(0,60,127,60,1);
     Line(0,0,0,60,1);
     Line(127,0,127,60,1);
     Line(26,0,26,60,1);
     pVar->action=OPEN;
     if(pVar->dcnum<5)
     {
	pVar->DCCount=0;
     }else
     {
	if(pVar->DCCount+5>=pVar->dcnum) pVar->DCCount=pVar->dcnum-5;
     }
     k=pVar->DCCount;
     for(i=0;i<5;i++)
     {
	j=3*i;
	n=k+1;
	DatBuf[j+2]=n%10;n=n/10;
	DatBuf[j+1]=n%10;n=n/10;
	DatBuf[j+0]=n%10;
	k++;
     }
     OutString(DatBuf,0,NumAdr,1);
  };
  if(pVar->action==OPEN)
  {  //-----OPEN
     HITESC(YC_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->DCCount=pVar->DCCount+5;
	if(pVar->DCCount+5>=pVar->dcnum) pVar->DCCount=pVar->dcnum-5;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->DCCount>4) pVar->DCCount=pVar->DCCount-5;
	    else      pVar->DCCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->DCCount=pVar->DCCount+1;
	if(pVar->DCCount+4>=pVar->dcnum) pVar->DCCount=pVar->dcnum-4;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->DCCount>0) pVar->DCCount=pVar->DCCount-1;
     };
     for(i=0;i<5;i++)
     {
	it=ADCLIB[pVar->DCCount+i].ZVALUE[0];
	if(it>=0) StrBuf[i*6+0]=169;
	   else  {StrBuf[i*6+0]=66;it=-it;};
	n=it;
	StrBuf[i*6+5]=31;   //V

	if(pVar->dcnum<5)
	{
	   StrBuf[i*6+4]=66;
	   StrBuf[i*6+3]=66;
	   StrBuf[i*6+2]=66;
	   StrBuf[i*6+1]=66;
	}else
	{
	   StrBuf[i*6+4]=n%10; n=n/10;
	   StrBuf[i*6+3]=n%10; n=n/10;
	   StrBuf[i*6+2]=n%10; n=n/10;
	   StrBuf[i*6+1]=(n%10)+150;
	}
     }
     OutString(StrBuf,0,DatAdr0,1);
  };//open
}

void JCMenu(void) // 交流显示
{
  unsigned int	     i,j,k,n;
  int		     it;
  long		     l;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(10,0,10,2);
     Line(0,0, 127,0, 1);
     Line(0,15,127,15,1);
     Line(0,60,127,60,1);
     Line(0,0,0,60,1);
     Line(53,0,53,60,1);
     Line(127,0,127,60,1);
     Line(26,0,26,60,1);
     pVar->action=OPEN;
     if(pVar->jcnum<5)
     {
	pVar->JCCount=0;
     }else
     {
	if(pVar->JCCount+5>=pVar->jcnum) pVar->JCCount=pVar->jcnum-5;
     }
     k=pVar->JCCount;
     for(i=0;i<5;i++)
     {
	j=5*i;
	n=k+1;
	DatBuf[j+2]=n%10;n=n/10;
	DatBuf[j+1]=n%10;n=n/10;
	DatBuf[j+0]=n%10;
	if(ACType[k]!=0)
	{//CT
	   DatBuf[j+3]=12;//C
	   DatBuf[j+4]=29;//T
	}else
	{//PT
	   DatBuf[j+3]=25;//P
	   DatBuf[j+4]=29;//T
	}
	k++;
     }
     OutString(DatBuf,0,NumJCAdr,1);
  };
  if(pVar->action==OPEN)
  {  //-----OPEN
     HITESC(YC_MENU);
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->JCCount=pVar->JCCount+5;
	if(pVar->JCCount+5>=pVar->jcnum) pVar->JCCount=pVar->jcnum-5;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->JCCount>4) pVar->JCCount=pVar->JCCount-5;
	    else      pVar->JCCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->JCCount=pVar->JCCount+1;
	if(pVar->JCCount+5>=pVar->jcnum) pVar->JCCount=pVar->jcnum-5;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->JCCount>0) pVar->JCCount=pVar->JCCount-1;
     };
     for(i=0;i<5;i++)
     {
	l=(long)ADCLIB[pVar->JCCount+i].AVALUE;
	if(l>=0) StrBuf[i*6+0]=169;
	   else {StrBuf[i*6+0]=66;l=-l;};
	if(ACType[pVar->JCCount+i]!=0)
	{//CT
	   l=l*5;
	   l=l/4;
	   if(pVar->jcnum<5)
	   {
	     StrBuf[i*6+5]=66;
	     StrBuf[i*6+4]=66;
	     StrBuf[i*6+3]=66;
	     StrBuf[i*6+2]=66;
	     StrBuf[i*6+1]=66;
	   }else
	   {
	     StrBuf[i*6+5]=10;	      //A
	     StrBuf[i*6+4]=l%10;      l=l/10;
	     StrBuf[i*6+3]=l%10;      l=l/10;
	     StrBuf[i*6+2]=l%10;      l=l/10;
	     StrBuf[i*6+1]=l%10;
	   }
	   switch(ACValueDot[pVar->JCCount+i])
	   {
	     case  0x00:StrBuf[i*6+4]=StrBuf[i*6+4];
			break;
	     case  0x01:StrBuf[i*6+3]=StrBuf[i*6+3]+150;
			break;
	     case  0x02:StrBuf[i*6+2]=StrBuf[i*6+2]+150;
			break;
	     case  0x03:StrBuf[i*6+1]=StrBuf[i*6+1]+150;
			break;
	     default:	break;
	   };
	}else
	{//PT
	   l=l*5;
	   l=l/20;
	   if(pVar->jcnum<5)
	   {
	     StrBuf[i*6+5]=66;
	     StrBuf[i*6+4]=66;
	     StrBuf[i*6+3]=66;
	     StrBuf[i*6+2]=66;
	     StrBuf[i*6+1]=66;
	   }else
	   {
	     StrBuf[i*6+5]=31;//V
	     StrBuf[i*6+4]=l%10;       l=l/10;
	     StrBuf[i*6+3]=l%10;       l=l/10;
	     StrBuf[i*6+2]=l%10;       l=l/10;
	     StrBuf[i*6+1]=l%10;
	   }
	   switch(ACValueDot[pVar->JCCount+i])
	   {
	     case  0x00:StrBuf[i*6+5]=StrBuf[i*6+5];
			break;
	     case  0x01:StrBuf[i*6+4]=StrBuf[i*6+4]+150;
			break;
	     case  0x02:StrBuf[i*6+3]=StrBuf[i*6+3]+150;
			break;
	     case  0x03:StrBuf[i*6+2]=StrBuf[i*6+2]+150;
			break;
	     case  0x04:StrBuf[i*6+1]=StrBuf[i*6+1]+150;
			break;
	     default:	break;
	   };
	}
     }
     OutString(StrBuf,0,DatAdr1,1);
  };//open
}

void MAXLN(unsigned int num)
{
     unsigned int	i,j,k,m,n,t,nn,s;

     j=0;
     nn=num;
     s=0;
     for(i=0;i<pVar->lnsum;i++)
     {
	 m=LineSetdata[i][0];
	 n=LineSetdata[i][1];
	 if((m!=0)||(n!=0))
	 {

	   if(LINETYPE[i]!=0)
	   {//U=U+I
		  for(t=0;t<3;t++)
		  {
		      if((j>=nn)&&(j<(nn+5)))
		      {
			    switch(t)
			    {
				case  0x00:NumBuf[3*s+0]=30; // U
					   NumBuf[3*s+1]=1;  // 1
					   NumBuf[3*s+2]=68; //
					   ChBuf[s]=i;
					   DatBuf[s]=0;
					   break;
				case  0x01:NumBuf[3*s+0]=30; //U
					   NumBuf[3*s+1]=2;  //2
					   NumBuf[3*s+2]=68; //
					   ChBuf[s]=i;
					   DatBuf[s]=1;
					   break;
				case  0x02:NumBuf[3*s+0]=30;  //U
					   NumBuf[3*s+1]=3;  // 3
					   NumBuf[3*s+2]=68; //
					   ChBuf[s]=i;
					   DatBuf[s]=2;
					   break;
			    }
			    s++;
		      }
		      j++;
		  }
	   }else
	   {//P=U*I
		     for(t=0;t<7;t++)
		     {
			 if((j>=nn)&&(j<(nn+5)))
			 {
			       switch(t)
			       {
				   case  0x00:NumBuf[3*s+0]=30; //U
					      NumBuf[3*s+1]=1;	//1
					      NumBuf[3*s+2]=68; //
					      ChBuf[s]=i;
					      DatBuf[s]=0;
					      break;
				   case  0x01:NumBuf[3*s+0]=30;  //U
					      NumBuf[3*s+1]=2;	 //2
					      NumBuf[3*s+2]=68;  //
					      ChBuf[s]=i;
					      DatBuf[s]=1;
					      break;
				   case  0x02:NumBuf[3*s+0]=18; //I
					      NumBuf[3*s+1]=1;	//1
					      NumBuf[3*s+2]=68; //
					      ChBuf[s]=i;
					      DatBuf[s]=3;
					      break;
				   case  0x03:NumBuf[3*s+0]=18; //I
					      NumBuf[3*s+1]=2;	//2
					      NumBuf[3*s+2]=68; //
					      ChBuf[s]=i;
					      DatBuf[s]=4;
					      break;
				   case  0x04:NumBuf[3*s+0]=175; //P
					      NumBuf[3*s+1]=25; //
					      NumBuf[3*s+2]=68; //
					      ChBuf[s]=i;
					      DatBuf[s]=9;
					      break;
				   case  0x05:NumBuf[3*s+0]=175; //Q
					      NumBuf[3*s+1]=26; //
					      NumBuf[3*s+2]=68; //
					      ChBuf[s]=i;
					      DatBuf[s]=13;
					      break;
				   case  0x06:NumBuf[3*s+0]=12; //C
					      NumBuf[3*s+1]=24; //O
					      NumBuf[3*s+2]=28; //S
					      ChBuf[s]=i;
					      DatBuf[s]=14;
					      break;
			       }
			       s++;
			 }
			 j++;
		     }
	   }
	 }else { LNLIB[i].SampleType=0; break;};
     }
     pVar->maxlnnum=j;
}

void LINEMenu(void)  // 线路显示
{
  unsigned int	     i,j,k,n,m,t,s,DBuf[20];
  int		    it,jj;
  long		     l;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(11,0,11,2);
     Line(0,0, 127,0, 1);
     Line(0,15,127,15,1);
     Line(0,60,127,60,1);
     Line(127,0,127,60,1);
     Line(0,0,0,60,1);
     Line(26,0,26,60,1);
     Line(49,0,49,60,1);
     Line(75,0,75,60,1);
     pVar->action=OPEN;
     MAXLN(pVar->LNCount);
     if(pVar->maxlnnum<5)
     {//-----------------------------------------------------------------------
	   for(i=0;i<5;i++)
	   {
		  s=7*i;
		  DatBuf[s+0]=66;
		  DatBuf[s+1]=66;
		  DatBuf[s+2]=66;
		  DatBuf[s+3]=66;
		  DatBuf[s+4]=66;
		  DatBuf[s+5]=66;
		  DatBuf[s+6]=66;
	   }
	   pVar->LNCount=0;
	   OutString(DatBuf,0,NumLNAdr,1);
     }else
     {//----------------------------------------------------------------------
	   if(pVar->LNCount+5>=pVar->maxlnnum) pVar->LNCount=pVar->maxlnnum-5; //  12 条 线 路
	   OutString(NumBuf,0,NameAdr, 1);
	   for(i=0;i<5;i++)
	   {
	       n=pVar->LNCount+1+i;
	       StrBuf[i*3+2]=n%10; n=n/10;
	       StrBuf[i*3+1]=n%10; n=n/10;
	       StrBuf[i*3+0]=n%10;
	   }
	   OutString(StrBuf,0,NumLNAdr, 1);
	   for(i=0;i<5;i++)
	   {
	       n=ChBuf[i] +1;
	       StrBuf[i*2+1]=n%10; n=n/10;
	       StrBuf[i*2+0]=n%10;
	   }
	   OutString(StrBuf,0,NumLNNAdr, 1);
     }//----------------------------------------------------------------------
  };
  if(pVar->action==OPEN)
  {  //-----OPEN
     HITESC(YC_MENU);
     if(pVar->KeyID==PLUSKEY)// PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;

⌨️ 快捷键说明

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