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

📄 lzkfunc.c

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 C
📖 第 1 页 / 共 4 页
字号:
   LCD_Reset();               // LCM硬件复位.
   LCD_Initialize();          // LCM初始化设置,图形模式.               
   LCD_ClearAll();            // LCM清屏.
//   LCD_SelfTest();


   LED_OnOff(RunLED,1);

   SYNC_DispEN = 0;

   SYNCa_CurrVal = 1;     // 
   DUx_CurrVal = 1;       // 
   TrigOutEN = 1;         //

   EA = 1;                // Enable T0_

   while(1)
   {
      if( SecFlag )                 // Second TimOut flag.
      {
         SecCNT++; 
		   if( SecCNT >= 60 )         // Minute flag.
		   {
			   MinFlag = 1;            // Set minute flag.
		      SecCNT = 0;             // RST secong counter.
		   }
		   if( BLED_ON_Flag == 1 )    // LCM Back LED OFF Control.
		   {
		      BLED_ON_CNT++;
            if( BLED_ON_CNT >= 10 ) // Lighting 10S.
            {
			      LED_OnOff(BLED,1);
               BLED_ON_Flag = 0;
			      BLED_ON_CNT = 0;
			   }  
		   }
         LED_OnOff(SetLED,1);
         DmS(50);
         LED_OnOff(SetLED,0);

         /********************************************************************
         ** 显示菜单光标,每秒钟位置下移一行. 
         ********************************************************************/
         if( ArrowY == 0 )
           LCD_DisASCII16_8(0, 128 - 16, Blank);
         else		   
           LCD_DisASCII16_8(0, ArrowY - 16, Blank);
         LCD_DisASCII16_8(0, ArrowY,      Arrow);
	      ArrowY = ArrowY + 16;
	      if( ArrowY >= 128 )
	       ArrowY = 0;

		    SecFlag = 0;
      }

      /***********************************************************************
      ** (1)电流环法功率因数计算; 
      ** (2)相差法功率因数计算; 
      ** (3)计算法功率因数计算; 
      ***********************************************************************/
      /*
		PwrFact_CurLoopMsrRSUT;    //功率因数电流环法测量结果。
		PwrFact_CalcMsrRSUT;       //功率因数计算法测量结果。
		PwrFact_PhaDiffMsrRSUT;    //功率因数相差法测量结果。
      */
      /***********************************************************************
      ** 分别由电流环、相位差和电压电流测量数据计算功率因数. 
      ***********************************************************************/
      if( PwrFact_CurrRingSamOVER )   // 电流环法计算功率因数.
	   {
         PwrFact_CurrRingRSUT = PwrFact_CurrRingCalc( PwrFact_CurrRingSamDATA );
			PwrFact_CurrRingSamOVER = 0;        
			PwrFact_CurrRingSamEN = 1;

         if( PwrFact_CalcMode == 0 )
			{
				PwrFact_CalcRSUT = PwrFact_CurrRingRSUT;		        
				PwrFact_CalcRsutOVER = 1;		        
         }
	   }

      if( PwrFact_PhaDiffMsrOVER )     // 相差法计算功率因数.
	   {
         PwrFact_PhaDiffRSUT = PwrFact_PhaDiffCalc( PwrFact_PhaDiffMsrDATA );
         PwrFact_PhaDiffMsrOVER = 0;
         PwrFact_PhaDiffMsrEN = 1;

         if( PwrFact_CalcMode == 1 )
			{
				PwrFact_CalcRSUT = PwrFact_PhaDiffRSUT;		        
				PwrFact_CalcRsutOVER = 1;		        
         }
 	   }

      if( PwrFact_DUxDIxSamOVER )   // 计算法计算功率因数.
	   {
         PwrFact_CalcMsrRSUT = PwrFact_CalcMsrCalc(DUxSamDATA, DIxSamDATA);
         PwrFact_DUxDIxSamOVER = 0;
         PwrFact_DUxDIxSamEN = 1;

         if( PwrFact_CalcMode == 2 )
			{
				PwrFact_CalcRSUT = PwrFact_CalcMsrRSUT;		        
				PwrFact_CalcRsutOVER = 1;		        
         }
	   }

      /***********************************************************************
      ** 由UF测量数据计算UF. 
      ***********************************************************************/
      if( )
		{
		}
       
      /***********************************************************************
      ** 由UI测量数据计算UI. 
      ***********************************************************************/
      if( )
		{
		}

      /***********************************************************************
      ** 由CurrRingEI测量数据计算UI. 
      ***********************************************************************/
      if( )
		{
		}


      /***********************************************************************
      ** 分别为恒电压、恒电流、恒功率因数控制方式下可控硅控制触发角的计算. 
      ***********************************************************************/
      if()   // 目标输出电压--控制触发角换算.
	   {

	   }

	   if()   // 目标输出电流--控制触发角换算.
	   {

	   }

      if()   // 目标功率因数--控制触发角换算.
	   {

	   }

 
      /****************************************************************************
      ** 控制器人机界面,功能菜单,参数设置. 
      ****************************************************************************/
      if( MenuKeyEvt == 1 )
	  if( MenuKey_CNT > 80 )   // 100mS.
	  {
//       Menu Key Continue Mode. 
		 MenuKey_CNT = MenuKey_CNT - 80;
	  }
	  if( MenuKeyRels == 1 )
	  {
	     if( MenuKey_CNT >= 8 )
	     {  
//          Menu Key Single Mode. 
         }
         MenuKey_CNT = 0;
		 MenuKeyEvt  = 0;
	     MenuKeyRels = 0;
	  }

      if( UpKeyEvt == 1 )
	  if( UpKey_CNT > 20 )   // 100mS.
	  {
//       Up Key Continue Mode. 
         TrigAngPara++;
		 if( TrigAngPara >= TrigOutFullAngleMAX )
           TrigAngPara = TrigOutFullAngleMAX;

         TrigOutParaCalc(TrigAngPara);

		 LCD_DispBuff[0] = TrigAngPara % 10;
		 LCD_DispBuff[1] = TrigAngPara / 10 % 10;
		 LCD_DispBuff[2] = TrigAngPara / 100;

         LCD_DisASCII8_8(64, 80, 0 + ASCII_OFFSET);
         LCD_DisASCII8_8(72, 80, 0 + ASCII_OFFSET);
         LCD_DisASCII8_8(80, 80, 7 + ASCII_OFFSET);
        
		 if( LCD_DispBuff[2] == 0 )
           ucTMP = 0;
         else
		   ucTMP = LCD_DispBuff[2] + ASCII_OFFSET;
         LCD_DisASCII8_8(16, 64, ucTMP);

		 if( LCD_DispBuff[2] == 0 )
		 {
		    if( LCD_DispBuff[1] == 0 )
              ucTMP = 0;
            else
              ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
         }
         else
		   ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
         LCD_DisASCII8_8(24, 64, ucTMP);

  	     ucTMP = LCD_DispBuff[0] + ASCII_OFFSET;
         LCD_DisASCII8_8(32, 64, ucTMP);

		 UpKey_CNT = UpKey_CNT - 20;
	  }
	  if( UpKeyRels == 1 )
	  {
	     if( UpKey_CNT >= 8 )
	     {  
//          Up Key Single Mode. 
            TrigAngPara++;
		    if( TrigAngPara >= TrigOutFullAngleMAX )
              TrigAngPara = TrigOutFullAngleMAX;

            TrigOutParaCalc(TrigAngPara);

		    LCD_DispBuff[0] = TrigAngPara % 10;
		    LCD_DispBuff[1] = TrigAngPara / 10 % 10;
		    LCD_DispBuff[2] = TrigAngPara / 100;
        
		    if( LCD_DispBuff[2] == 0 )
              ucTMP = 0;
            else
		      ucTMP = LCD_DispBuff[2] + ASCII_OFFSET;
            LCD_DisASCII8_8(16, 64, ucTMP);

    	    if( LCD_DispBuff[2] == 0 )
			{
    	       if( LCD_DispBuff[1] == 0 )
                 ucTMP = 0;
               else
		         ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
		    }
            else
		      ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
            LCD_DisASCII8_8(24, 64, ucTMP);

    	    ucTMP = LCD_DispBuff[0] + ASCII_OFFSET;
            LCD_DisASCII8_8(32, 64, ucTMP);
         }
         UpKey_CNT = 0;
		 UpKeyEvt  = 0;
	     UpKeyRels = 0;
	  }

      if( DownKeyEvt == 1 )
	  if( DownKey_CNT > 20 )   // 100mS.
	  {
//       Down Key Continue Mode. 
         TrigAngPara--;      
		 if( TrigAngPara <= TrigOutAngleMIN )
           TrigAngPara = TrigOutAngleMIN;

         TrigOutParaCalc(TrigAngPara);

		 LCD_DispBuff[0] = TrigAngPara % 10;
		 LCD_DispBuff[1] = TrigAngPara / 10 % 10;
		 LCD_DispBuff[2] = TrigAngPara / 100;
       
		 if( LCD_DispBuff[2] == 0 )
           ucTMP = 0;
         else
		   ucTMP = LCD_DispBuff[2] + ASCII_OFFSET;
         LCD_DisASCII8_8(16, 64, ucTMP);

		 if( LCD_DispBuff[2] == 0 )
		 {
		    if( LCD_DispBuff[1] == 0 )
              ucTMP = 0;
            else
		      ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
         }
         else
		   ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
         LCD_DisASCII8_8(24, 64, ucTMP);

  	     ucTMP = LCD_DispBuff[0] + ASCII_OFFSET;
         LCD_DisASCII8_8(32, 64, ucTMP);

		 DownKey_CNT = DownKey_CNT - 20;
	  }
	  if( DownKeyRels == 1 )
	  {
	     if( DownKey_CNT >= 8 )
	     {  
//          Down Key Single Mode. 
            TrigAngPara--;
		    if( TrigAngPara <= TrigOutAngleMIN )
              TrigAngPara = TrigOutAngleMIN;

            TrigOutParaCalc(TrigAngPara);

		    LCD_DispBuff[0] = TrigAngPara % 10;
		    LCD_DispBuff[1] = TrigAngPara / 10 % 10;
		    LCD_DispBuff[2] = TrigAngPara / 100;
        
		    if( LCD_DispBuff[2] == 0 )
              ucTMP = 0;
            else
		      ucTMP = LCD_DispBuff[2] + ASCII_OFFSET;
            LCD_DisASCII8_8(16, 64, ucTMP);

    	    if( LCD_DispBuff[2] == 0 )
			{
    	       if( LCD_DispBuff[1] == 0 )
                 ucTMP = 0;
               else
		         ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
		    }
            else
		      ucTMP = LCD_DispBuff[1] + ASCII_OFFSET;
            LCD_DisASCII8_8(24, 64, ucTMP);

    	    ucTMP = LCD_DispBuff[0] + ASCII_OFFSET;
            LCD_DisASCII8_8(32, 64, ucTMP);
         }
         DownKey_CNT = 0;
		 DownKeyEvt  = 0;
	     DownKeyRels = 0;
	  }

      if( EnterKeyEvt == 1 )
	  if( EnterKey_CNT > 80 )   // 100mS.
	  {
//       Enter Key Continue Mode. 
		 EnterKey_CNT = UpKey_CNT - 80;
//		 SYNC_DispEN = ~SYNC_DispEN;
	  }
	  if( EnterKeyRels == 1 )
	  {
	     if( EnterKey_CNT >= 8 )
	     {  
//          Enter Key Single Mode. 
//		    SYNC_DispEN = ~SYNC_DispEN;
         }
         EnterKey_CNT = 0;
		 EnterKeyEvt  = 0;
	     EnterKeyRels = 0;
	  }
   }
}




⌨️ 快捷键说明

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