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

📄 setplay.c

📁 电力变电站RTU监控软件(80C196NT单片机) 遥控
💻 C
📖 第 1 页 / 共 5 页
字号:
  };//-------------------FALSH--------------------
}

void JCSetMenu(void)// 交流系数设置
{
  unsigned int	    j, k, n,it;
  int		    i;
  long		    l,lx;
  unsigned   long   ux;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(89,0,89,3);
     DspMenu(72,0,72,1);
     Line(  0,	 0, 127,   0, 1);
     Line(  0,	 0,   0,  60, 1);
     Line(  0,	60, 127,  60, 1);
     Line(127,	 0, 127,  60, 1);
     Line( 64,	 0,  64,  36, 1);
     Line( 48,	36,  48,  60, 1);
     Line( 96,	36,  96,  60, 1);

     Line( 82,	 0,  82,  36, 1);
     Line( 93,	 0,  93,  20, 1);
     Line(  0,	20, 127,  20, 1);
     Line(  0,	36, 127,  36, 1);

     pVar->action=OPEN;
     pVar->ACWorkMode=pVar->ACWorkMode%2;
     DspMenuCur(89,pVar->ACWorkMode*2,89,pVar->ACWorkMode*4,2,0x83);
     if(pVar->MRCount>=MAXMRNUM) pVar->MRCount=0;
     n=pVar->MRCount+1;
     DatBuf[1]=n%10;n=n/10;
     DatBuf[0]=n%10;
     OutString(DatBuf,0,ACSetNumAdr,1);
  };
  if(pVar->action==OPEN)
  {  //-----OPEN
     HITESC(SDSET_MENU);
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ACWorkMode==0)  pVar->ACWorkMode=1;
		else		 pVar->ACWorkMode=0;
     }
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->ACWorkMode==0)  pVar->ACWorkMode=1;
		else		 pVar->ACWorkMode=0;
     }
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->MRCount=pVar->MRCount+5;
	if(pVar->MRCount>=MAXMRNUM) pVar->MRCount=0;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->MRCount>4) pVar->MRCount=pVar->MRCount-5;
	    else	    pVar->MRCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->MRCount=pVar->MRCount+1;
	if(pVar->MRCount>=MAXMRNUM) pVar->MRCount=0;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->MRCount>0) pVar->MRCount=pVar->MRCount-1;
     };
     if((pVar->KeyID==OKKEY)&&(pVar->ACWorkMode==0))// 手动修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=FLASH;
	 pVar->NewCursorOffset=0;
	 pVar->OldCursorOffset=0;
	 CursorGotoXy(StrBuf,ACSetAdr,1);
	 return;
     }
     if((pVar->KeyID==F1)&&(pVar->ACWorkMode!=0))// 自动修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=ADJUST;
	 pVar->adjust_count=0;
	 return;
     }

     l=(long)ADCLIB[pVar->MRCount].AVALUE;
     if(ACType[pVar->MRCount]!=0)
     {//CT
	 l=l*5;
	 l=l/4;
	 DatBuf[0]=177; //I=
	 DatBuf[6]=10;	//A
     }else
     {//PT
	 l=l*5;
	 l=l/2;
	 DatBuf[0]=176; //U=
	 DatBuf[6]=31;	//V
     }
     DatBuf[5]=l%10; l=l/10;
     DatBuf[4]=l%10; l=l/10;
     DatBuf[3]=l%10; l=l/10;
     DatBuf[2]=l%10; l=l/10;
     DatBuf[1]=l%10;
     switch(ACValueDot[pVar->MRCount])
     {
       case  0x00:DatBuf[5]=DatBuf[5];
		  break;
       case  0x01:DatBuf[4]=DatBuf[4]+150;
		  break;
       case  0x02:DatBuf[3]=DatBuf[3]+150;
		  break;
       case  0x03:DatBuf[2]=DatBuf[2]+150;
		  break;
       case  0x04:DatBuf[1]=DatBuf[1]+150;
		  break;
       default:   break;
     };
     OutString(DatBuf,0,ACValueAdr,1);

     j=ACCoef[pVar->MRCount];
     StrBuf[4]=j%10; j=j/10;
     StrBuf[3]=j%10; j=j/10;
     StrBuf[2]=j%10; j=j/10;
     StrBuf[1]=j%10; j=j/10;
     StrBuf[0]=j%10;
     j=ACType[pVar->MRCount];
     if(j==0)  StrBuf[5]=25;//P
	else   StrBuf[5]=12;//C
     j=ACValueDot[pVar->MRCount];
     if(j>4) j=4;
     StrBuf[6]=j;
     j=ACZeroFlow[pVar->MRCount];
     StrBuf[8]=(j%10);	   j=j/10;
     StrBuf[7]=(j%10)+150;
     j=ACWndValue[pVar->MRCount];
     StrBuf[13]=j%10; j=j/10;
     StrBuf[12]=j%10; j=j/10;
     StrBuf[11]=j%10; j=j/10;
     StrBuf[10]=j%10; j=j/10;
     StrBuf[9]= j%10;
     OutString(StrBuf,0,ACSetAdr,1);
  };//open
  if(pVar->action==FLASH)
  {//------------------FLASH-----------------------
     FlashESC();
     if(pVar->KeyID==MINUSKEY)//  "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	if(pVar->NewCursorOffset==5)
	{
	     if(StrBuf[pVar->NewCursorOffset]==25) StrBuf[pVar->NewCursorOffset]=12;
		   else 			   StrBuf[pVar->NewCursorOffset]=25;
	}else
	{
	     if(StrBuf[pVar->NewCursorOffset]!=0) StrBuf[pVar->NewCursorOffset]=StrBuf[pVar->NewCursorOffset]-1;
		else				  StrBuf[pVar->NewCursorOffset]=9;
	}
	CursorGotoXy(StrBuf,ACSetAdr,1);
     };
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	if(pVar->NewCursorOffset==5)
	{
	  if(StrBuf[pVar->NewCursorOffset]==25) StrBuf[pVar->NewCursorOffset]=12;
		else				StrBuf[pVar->NewCursorOffset]=25;
	}else
	{
	     StrBuf[pVar->NewCursorOffset]++;
	     if(StrBuf[pVar->NewCursorOffset]>9)StrBuf[pVar->NewCursorOffset]=0;
	}
	CursorGotoXy(StrBuf,ACSetAdr,1);
     };
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	if(pVar->NewCursorOffset>0) pVar->NewCursorOffset=pVar->NewCursorOffset-1;
	CursorGotoXy(StrBuf,ACSetAdr,1);
     };
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->NewCursorOffset=pVar->NewCursorOffset+1;
	if(pVar->NewCursorOffset>14)  pVar->NewCursorOffset=0;
	CursorGotoXy(StrBuf,ACSetAdr,1);
     };
     if(pVar->KeyID==OKKEY)// " < " + " > "  修改完成
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	flashwrite_h(PSD_FLASH_BASE);
	n=StrBuf[0]*10000;
	n=n+StrBuf[1]*1000+StrBuf[2]*100+StrBuf[3]*10+StrBuf[4];
	pVar->flash_dat[((unsigned int)(&ACCoef[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	if(StrBuf[5]==25)
	{
	   pVar->flash_dat[((unsigned int)(&ACType[pVar->MRCount])-PSD_FLASH_BASE)/2]=0;
	}else
	{
	   pVar->flash_dat[((unsigned int)(&ACType[pVar->MRCount])-PSD_FLASH_BASE)/2]=1;
	}
	pVar->flash_dat[((unsigned int)(&ACValueDot[pVar->MRCount])-PSD_FLASH_BASE)/2]=StrBuf[6];
	n=(StrBuf[7]-150)*10+StrBuf[8];
	pVar->flash_dat[((unsigned int)(&ACZeroFlow[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	n=StrBuf[9]*10000;
	n=n+StrBuf[10]*1000+StrBuf[11]*100+StrBuf[12]*10+StrBuf[13];
	pVar->flash_dat[((unsigned int)(&ACWndValue[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	flashwrite_a(PSD_FLASH_BASE);
	InitYC();
     };
  };//-------------------FALSH--------------------

  if(pVar->action==ADJUST)
  {//------------------adjust系数校正----------------------

     if(pVar->KeyID==ESCKEY)//ESC
     {
	  pVar->MenuMode=SDSET_MENU;
	  pVar->KeyID=NULLKEY;
	  pVar->action=NOUSE;
	  InitYC();
     };

     l=(long)ADCLIB[pVar->MRCount].AVALUE;
     if(ACType[pVar->MRCount]!=0)
     {//CT
	 l=l*5;
	 l=l/4;
	 DatBuf[0]=177; //I=
	 DatBuf[6]=10;	//A
	 lx=l-5000;
	 if(lx<0) lx=-lx;
	 if(l<5000)
	 {
	    if(lx<60)
	    {
	       if(pVar->Aspeed>=5)
	       {
		  ADCLIB[pVar->MRCount].ACSK++;
		  pVar->Aspeed=0;
	       }
	       pVar->Aspeed++;
	    }else
	    {
	      ADCLIB[pVar->MRCount].ACSK+=10;
	    }
	 }else
	 {
	    if(lx<60)
	    {
	      if(pVar->Aspeed>=5)
	      {
		ADCLIB[pVar->MRCount].ACSK--;
		pVar->Aspeed=0;
	      }
	      pVar->Aspeed++;
	    }else
	    {
	      ADCLIB[pVar->MRCount].ACSK-=10;
	    }
	 }
	 if(lx<3)
	 {
	    pVar->adjust_coef[pVar->adjust_count]=ADCLIB[pVar->MRCount].ACSK;
	    pVar->adjust_count++;
	 }
	 if(pVar->adjust_count>=40)
	 {
	    ux=0;
	    for(i=0;i<40;i++)
	    {
	       ux=ux+pVar->adjust_coef[i];
	    }
	    ux=ux/40;
	    ADCLIB[pVar->MRCount].ACSK=ux;
	    pVar->KeyID=OKKEY;
	 }
     }else
     {//PT
	 l=l*5;
	 l=l/2;
	 DatBuf[0]=176; //U=
	 DatBuf[6]=31;	//V
	 lx=l-10000;
	 if(lx<0) lx=-lx;

	 if(l<10000)
	 {
	    if(lx<60)
	    {
	      ADCLIB[pVar->MRCount].ACSK++;
	    }else
	    {
	      ADCLIB[pVar->MRCount].ACSK+=10;
	    }
	 }else
	 {
	    if(lx<60)
	    {
	      ADCLIB[pVar->MRCount].ACSK--;
	    }else
	    {
	      ADCLIB[pVar->MRCount].ACSK-=10;
	    }
	    if(lx<3)
	    {
	       pVar->adjust_coef[pVar->adjust_count]=ADCLIB[pVar->MRCount].ACSK;
	       pVar->adjust_count++;
	    }
	    if(pVar->adjust_count>=40)
	    {
	       ux=0;
	       for(i=0;i<40;i++)
	       {
		  ux=ux+pVar->adjust_coef[i];
	       }
	       ux=ux/40;
	       ADCLIB[pVar->MRCount].ACSK=ux;
	       pVar->KeyID=OKKEY;
	    }
	 }
     }

     DatBuf[5]=l%10; l=l/10;
     DatBuf[4]=l%10; l=l/10;
     DatBuf[3]=l%10; l=l/10;
     DatBuf[2]=l%10; l=l/10;
     DatBuf[1]=l%10;
     switch(ACValueDot[pVar->MRCount])
     {
       case  0x00:DatBuf[5]=DatBuf[5];
		  break;
       case  0x01:DatBuf[4]=DatBuf[4]+150;
		  break;
       case  0x02:DatBuf[3]=DatBuf[3]+150;
		  break;
       case  0x03:DatBuf[2]=DatBuf[2]+150;
		  break;
       case  0x04:DatBuf[1]=DatBuf[1]+150;
		  break;
       default:   break;
     };
     OutString(DatBuf,0,ACValueAdr,1);

     j=ADCLIB[pVar->MRCount].ACSK; // 斜率
     if(j<10000)
     {
       j=10000;
       ADCLIB[pVar->MRCount].ACSK=10000;
     }
     StrBuf[4]=j%10; j=j/10;
     StrBuf[3]=j%10; j=j/10;
     StrBuf[2]=j%10; j=j/10;
     StrBuf[1]=j%10; j=j/10;
     StrBuf[0]=j%10;
     j=ACType[pVar->MRCount];
     if(j==0)  StrBuf[5]=25;//P
	else   StrBuf[5]=12;//C
     j=ACValueDot[pVar->MRCount];
     if(j>4) j=4;
     StrBuf[6]=j;
     j=ACZeroFlow[pVar->MRCount];
     StrBuf[8]=(j%10);	   j=j/10;
     StrBuf[7]=(j%10)+150;
     j=ACWndValue[pVar->MRCount];
     StrBuf[13]=j%10; j=j/10;
     StrBuf[12]=j%10; j=j/10;
     StrBuf[11]=j%10; j=j/10;
     StrBuf[10]=j%10; j=j/10;
     StrBuf[9]= j%10;
     OutString(StrBuf,0,ACSetAdr,1);

     if(pVar->KeyID==OKKEY)  //  修改完成
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	flashwrite_h(PSD_FLASH_BASE);
	n=StrBuf[0]*10000;
	n=n+StrBuf[1]*1000+StrBuf[2]*100+StrBuf[3]*10+StrBuf[4];
	pVar->flash_dat[((unsigned int)(&ACCoef[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	if(StrBuf[5]==25)
	{
	   pVar->flash_dat[((unsigned int)(&ACType[pVar->MRCount])-PSD_FLASH_BASE)/2]=0;
	}else
	{
	   pVar->flash_dat[((unsigned int)(&ACType[pVar->MRCount])-PSD_FLASH_BASE)/2]=1;
	}
	pVar->flash_dat[((unsigned int)(&ACValueDot[pVar->MRCount])-PSD_FLASH_BASE)/2]=StrBuf[6];
	n=(StrBuf[7]-150)*10+StrBuf[8];
	pVar->flash_dat[((unsigned int)(&ACZeroFlow[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	n=StrBuf[9]*10000;
	n=n+StrBuf[10]*1000+StrBuf[11]*100+StrBuf[12]*10+StrBuf[13];
	pVar->flash_dat[((unsigned int)(&ACWndValue[pVar->MRCount])-PSD_FLASH_BASE)/2]=n;
	flashwrite_a(PSD_FLASH_BASE);
	InitYC();
     }
  }
}



void DCSetMenu(void)// 直流系数设置
{
  unsigned int	    j, k, n,it;
  int		    i;
  if(pVar->action==NOUSE)
  {
     LcdClr();
     DspMenu(73,0,73,3);
     DspMenu(74,0,74,1);
     Line(0,  0, 127, 0, 1);
     Line(0,  0, 0,  60, 1);
     Line(0,  60,127,60, 1);
     Line(127,0, 127,60, 1);
     Line(64,0,64,60,1);
     Line(64,20,127,20,1);
     Line(0,36,127,36,1);
     pVar->action=OPEN;
     pVar->DCWorkMode=pVar->DCWorkMode%2;
     DspMenuCur(73,pVar->DCWorkMode*2,73,pVar->DCWorkMode*4,2,0x83);
     if(pVar->MRCount>=MAXMRNUM) pVar->MRCount=0;
     n=pVar->MRCount+1;
     DatBuf[1]=n%10;n=n/10;
     DatBuf[0]=n%10;
     OutString(DatBuf,0,DCSetNumAdr,1);
  };
  if(pVar->action==OPEN)
  {  //-----OPEN
     HITESC(SDSET_MENU);
     if(pVar->KeyID==LEFTKEY)// " <  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->DCWorkMode==0)  pVar->DCWorkMode=1;
		else		 pVar->DCWorkMode=0;
     }
     if(pVar->KeyID==RIGHTKEY)// " >  " 键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->DCWorkMode==0)  pVar->DCWorkMode=1;
		else		 pVar->DCWorkMode=0;
     }
     if(pVar->KeyID==PLUSKEY)// "+"=PageDown
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->MRCount=pVar->MRCount+5;
	if(pVar->MRCount>=MAXMRNUM) pVar->MRCount=0;
     };
     if(pVar->KeyID==MINUSKEY)// "-"=PageUPKEY
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->MRCount>4) pVar->MRCount=pVar->MRCount-5;
	    else	    pVar->MRCount=0;
     }
     if(pVar->KeyID==DOWNKEY)// " V " 向下键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	pVar->MRCount=pVar->MRCount+1;
	if(pVar->MRCount>=MAXMRNUM) pVar->MRCount=0;
     }
     if(pVar->KeyID==UPKEY)// " ^ " 向上键
     {
	pVar->KeyID=NULLKEY;
	pVar->action=NOUSE;
	if(pVar->MRCount>0) pVar->MRCount=pVar->MRCount-1;
     };
     if((pVar->KeyID==OKKEY)&&(pVar->DCWorkMode==0))// 手动修改状态
     {
	 pVar->KeyID=NULLKEY;
	 pVar->action=FLASH;
	 pVar->NewCursorOffset=0;
	 pVar->OldCursorOffset=0;
	 CursorGotoXy(StrBuf,DCSetAdr,1);
	 return;
     }
     i=ADCLIB[pVar->MRCount].ZVALUE[0];
     if(i>=0)
     {
	 DatBuf[0]=68;//
     }else
     {
	 DatBuf[0]=66;// -
	 i=-i;
     }
     DatBuf[4]=i%10;	   i=i/10;
     DatBuf[3]=i%10;	   i=i/10;
     DatBuf[2]=i%10;	   i=i/10;
     DatBuf[1]=(i%10)+150;
     DatBuf[5]=31;//V
     OutString(DatBuf,0,DCValueAdr,1);

     i=DCCoef[pVar->MRCount];
     if(i>=0)
     {
	 StrBuf[0]=68;//
     }else
     {
	 StrBuf[0]=66;// -
	 i=-i;
     }
     StrBuf[5]=i%10; i=i/10;
     StrBuf[4]=i%10; i=i/10;
     StrBuf[3]=i%10; i=i/10;
     StrBuf[2]=i%10; i=i/10;

⌨️ 快捷键说明

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