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

📄 vfd.c

📁 vfd屏C语言驱动程序
💻 C
📖 第 1 页 / 共 2 页
字号:
                  break;
            case  EDIT_SECOND:
            case  EDIT_DAY:
            case  EDIT_BG_MINUTE:
            case  EDIT_END_MINUTE:
                  if(COUNT2)
                  {     DISP_ARRAY[VFD_SEC_N2_ADDR]=0;
                        DISP_ARRAY[VFD_SEC_N1_ADDR]=0;
                  };
                  break;

     };     //END OF switch(TIME_EDIT)
  };//IF
}

void KEY_PROCESS(void)
{     BYTE bKEY; 
      VFD_STB=0;
      WR_PANEL(0X42);
      KEY_ARRAY[0]=RD_PANEL();
      KEY_ARRAY[1]=RD_PANEL();
      KEY_ARRAY[2]=RD_PANEL();
      VFD_STB=1;
      if(KEY_ARRAY[0]||KEY_ARRAY[1]||KEY_ARRAY[2])
      {
            if(NO_1_SWIP)
            {     NO_2_SWIP=1;
                  NO_1_SWIP=0;
            }
            else
            {     NO_1_SWIP=1;
                  NO_2_SWIP=0;
                  DELAY_TIME(COUNT_150mS);
            };
      }
      else
      {     NO_1_SWIP=0;
            NO_2_SWIP=0;
      };
      if(NO_2_SWIP)
      {     bKEY=GET_KEY_VAL();
            switch(bKEY)
                  {
                  case KEY_N1:
                  case KEY_N2:
                  case KEY_N3:
                  case KEY_N4:
                  case KEY_N5:
                  case KEY_N6:
                  case KEY_N7:
                  case KEY_N8:
                  case KEY_N9:
                  case KEY_N10:
                        KEY_TEMP=bKEY;
                        DISP_SW=bKEY+DISP_DATE;
                        TIME_EDIT=EDIT_NONE;
                        break;
                  case KEY_N10_PLUS:
                        if((KEY_TEMP<=6)&&(KEY_TEMP>=1))  DISP_SW=KEY_TEMP+DISP_ALARM10;
                        TIME_EDIT=EDIT_NONE;
                        KEY_TEMP=0;
                        break;
                  case KEY_MODE:
                        if(DISP_SW==DISP_TIME)
                              DISP_SW=DISP_DATE;
                        else if(DISP_SW==DISP_DATE)
                                    DISP_SW=DISP_TIME;
                        if((DISP_SW!=DISP_TIME)&&(DISP_SW!=DISP_DATE))
                              DISP_SW=DISP_TIME;
                        TIME_EDIT=EDIT_NONE;
                        break;
                  case KEY_SET:
                        if(DISP_SW==DISP_TIME)
                        {     if((TIME_EDIT>=EDIT_HOUR)&&(TIME_EDIT<=EDIT_SECOND))
                              {     TIME_EDIT++;
                                    if(TIME_EDIT>EDIT_SECOND)
                                          TIME_EDIT=EDIT_NONE;
                              }
                              else
                                    TIME_EDIT=EDIT_HOUR;
                        };
                        if(DISP_SW==DISP_DATE)
                        {     if((TIME_EDIT>=EDIT_YEAR)&&(TIME_EDIT<=EDIT_DAY))
                              {     TIME_EDIT++;
                                    if(TIME_EDIT>EDIT_DAY)
                                    {     TIME_EDIT=EDIT_NONE;
                                          DISP_SW=DISP_TIME;
                                     };
                              }
                              else
                                    TIME_EDIT=EDIT_YEAR;
                        };
                        if((DISP_SW>=DISP_ALARM1)&&(DISP_SW<=DISP_ALARM16))
                        {     if((TIME_EDIT>=EDIT_SWITCH)&&(TIME_EDIT<EDIT_END_MINUTE))
                              {     TIME_EDIT++;
                                    if(TIME_EDIT>EDIT_END_MINUTE)
                                    {     TIME_EDIT=EDIT_NONE;
                                          DISP_SW=DISP_TIME;
                                     };
                              }
                              else
                                    TIME_EDIT=EDIT_SWITCH;
                        };
                        if(TIME_EDIT<=EDIT_BG_MINUTE)
                              DISP_BG_END=1;
                        else
                              DISP_BG_END=0;
                        break;
                  case KEY_CHANGE:
                        COUNT2=0;
                        switch(TIME_EDIT)
                        {
                              case EDIT_YEAR:
                                    YEAR++;
                                    if(YEAR>10)
                                          YEAR=0;
                                    break;
                              case EDIT_MONTH:
                                    MONTH++;
                                    if(MONTH>12)
                                          MONTH=0;
                                    break;
                              case EDIT_DAY:
                                    DAY++;
                                    if((DAY==29)&&(MONTH==2)&&(!LEAP_YEAR()))
                                          DAY=0;
                                    if((DAY==30)&&(MONTH==2))
                                          if(LEAP_YEAR())
                                                DAY=0;
                                    if((DAY==31)&&(!LEAP_MONTH()))
                                          DAY=0;
                                    if(DAY>=32)
                                          DAY=0;
                              case EDIT_HOUR:
                                    HOUR++;
                                    if(HOUR>24)
                                          HOUR=0;
                                    break;
                              case EDIT_MINUTE:
                                    MINUTE++;
                                    if(MINUTE>60)
                                          MINUTE=0;
                                    break;
                              case EDIT_SECOND:
                                    SECOND=0;
                                    break;
                              case EDIT_SWITCH:
                                    if((DISP_SW<=9)&&(DISP_SW>1))
                                    {     ALARM_ON_OFF=ALARM_ON_OFF_1;
                                          ALARM_ON_OFF>>=(DISP_SW-2);
                                          if(ALARM_ON_OFF^0)
                                          {     ALARM_ON_OFF=1;
                                                ALARM_ON_OFF<<=(DISP_SW-2);
                                                ALARM_ON_OFF=~ALARM_ON_OFF;
                                                ALARM_ON_OFF_1&=ALARM_ON_OFF;
                                          }
                                          else
                                          {     ALARM_ON_OFF=1;
                                                ALARM_ON_OFF<<=(DISP_SW-2);
                                                ALARM_ON_OFF_1|=ALARM_ON_OFF;
                                          }

                                    }
                                    if(DISP_SW>9)
                                    {     ALARM_ON_OFF=ALARM_ON_OFF_2;
                                          ALARM_ON_OFF>>=(DISP_SW-10);
                                          if(ALARM_ON_OFF^0)
                                          {     ALARM_ON_OFF=1;
                                                ALARM_ON_OFF<<=(DISP_SW-10);
                                                ALARM_ON_OFF=~ALARM_ON_OFF;
                                                ALARM_ON_OFF_2&=ALARM_ON_OFF;
                                          }
                                          else
                                          {     ALARM_ON_OFF=1;
                                                ALARM_ON_OFF<<=(DISP_SW-10);
                                                ALARM_ON_OFF_2|=ALARM_ON_OFF;
                                          }
                                     }
                                   break;
                              case EDIT_BG_HOUR:
                                    BG_HOUR=ALARM_ARRAY[DISP_SW-2][0];
                                    BG_HOUR++;
                                    if(BG_HOUR>=24)
                                          BG_HOUR=0;
                                    ALARM_ARRAY[DISP_SW-2][0]=BG_HOUR;
                                    break;
                              case EDIT_BG_MINUTE:
                                    BG_MINUTE=ALARM_ARRAY[DISP_SW-2][1];
                                    BG_MINUTE++;
                                    if(BG_MINUTE>60)
                                          BG_MINUTE=0;
                                    ALARM_ARRAY[DISP_SW-2][1]=BG_MINUTE;
                                    break;
                              case EDIT_END_HOUR:
                                    END_HOUR=ALARM_ARRAY[DISP_SW-2][2];
                                    END_HOUR++;
                                    if(END_HOUR>=24)
                                          END_HOUR=0;
                                    ALARM_ARRAY[DISP_SW-2][2]=END_HOUR;
                                    break;
                              case EDIT_END_MINUTE:
                                    END_MINUTE=ALARM_ARRAY[DISP_SW-2][3];
                                    END_MINUTE++;
                                    if(END_MINUTE>60)
                                          END_MINUTE=0;
                                    ALARM_ARRAY[DISP_SW-2][3]=END_MINUTE;
                                    break;
                        };//END SWITCH(TIME_EDIT)
                        break;
                  case KEY_EN_ALARM:
                        ALARM_ENABLE=~ALARM_ENABLE;
                        break;
                  case KEY_ALARM_STOP:
                        ALARM_ON=0;
                        break;
                  default:
                        break;
            };//END OF SWITCH(bKEY)
      };//END IF(NO_2_SWIP)
}//END OF KEY PROCESS
void ALARM_MAKE(void)
{     BYTE TEMP99;
      if(ALARM_ENABLE)
            if(ALARM_ON)
            {     ALARM_OUT1=1;
                  TEMP99=SECOND&0X01;
                  if(TEMP99)
                        if(COUNT1)
                              ALARM_OUT2=1;
                  else  ALARM_OUT2=0;
            }
            else
            {     ALARM_OUT1=0;
                  ALARM_OUT2=0;
            };
}//END OF ALARM_MAKE

BYTE GET_KEY_VAL(void)
{     BYTE TEMP66=0;
      if(KEY_ARRAY[0])
      {     while(KEY_ARRAY[0])
            {     TEMP66++;
                  KEY_ARRAY[0]>>=1;
            };
      };       
      if(KEY_ARRAY[1])
      {     TEMP66=8;
            while(KEY_ARRAY[1])
            {     TEMP66++;
                  KEY_ARRAY[1]>>=1;
            };
      };       
      if(KEY_ARRAY[2])
      {     TEMP66=16;
            while(KEY_ARRAY[2])
            {     TEMP66++;
                  KEY_ARRAY[2]>>=1;
            };
      };       
return(TEMP66);
}
void DELAY_TIME(BYTE TEMP44)
{
      BYTE TEMP45;
      for(TEMP44=0;TEMP44<120;TEMP44++)
            for(TEMP45=0;TEMP45<249;TEMP45++);
}
void DELAY_100uS(void)
{
      BYTE X;
      X = 0;
      X = 0;
      for(X=0;X<30;X++)
      { ;    ; }
}
BYTE GET_IR_KEY(void)
{     BYTE data I,J,bCOUNT;
      BYTE K;
       //9mS low 4.5mS high (NEC FORMATER)
      for ( bCOUNT = 0 ; !IR ; bCOUNT++ )  DELAY_100uS();
      if ( ( bCOUNT > 93 ) || ( bCOUNT < 87) )      return(KEY_NO_KEY);

      for ( bCOUNT = 0 ; IR  ; bCOUNT++ )  DELAY_100uS();
      if ( bCOUNT > 48 )                 return(KEY_NO_KEY);

      //contiun key  9mS low  2.25mS high  0.56mS low
      if ( ( bCOUNT > 19 ) && ( bCOUNT<24) )
      {     for ( bCOUNT = 0 ; !IR ; bCOUNT++ )  DELAY_100uS();
            if(bCOUNT>4||bCOUNT<2)
                  if ( ( mSECOND - PRE_mSECOND ) < 21)//IF TIME > 180mS KEY invalid
                        return(PRE_KEY);
      }
      //a new key 0 is low 0.56 high 0.56
      //          1 is low 0.56 high 1.69  

      for ( bCOUNT = 0 ; !IR  ; bCOUNT++ )  DELAY_100uS(); //TIME VALUE IS VALID
      //READ IR KEY VALUE
 for(K=0;K<4;K++)
 {
      J=0;
      for(I=0;I<8;I++)
      {     for ( bCOUNT=0 ; (!IR)&&(bCOUNT<8) ; bCOUNT++ )  DELAY_100uS(); //BYPASS LOW SIGNAL
            if(bCOUNT==0) //IT MAYBE CAUSE BY NOISE
            {
                  I--;
                  continue;
            }
            for ( bCOUNT=0 ; IR && (bCOUNT<20); bCOUNT++ )  DELAY_100uS();
            if(bCOUNT==0) //IT MAYBE CAUSE BY NOISE
            {
                  I--;
                  continue;
            }
            J>>=1;
            if(bCOUNT>=9)      //bCOUNT>9 IS '1'  bCOUNT<9 IS '0'
            {
                  J|=0x80;
                  if(bCOUNT>20)     return(KEY_NO_KEY);
            }
      }
      IR_KEY_ARRAY[K]=J;
  }

    #ifdef       CUSTOMER_CODE
      if(IR_KEY_ARRAY[0]!=CUSTOMER_CODE1)
            return(KEY_NO_KEY);
      if(IR_KEY_ARRAY[1]^CUSTOMER_CODE1)
            return(KEY_NO_KEY);
    #endif
      if(!(IR_KEY_ARRAY[3]^IR_KEY_ARRAY[4]))
            return(KEY_NO_KEY);

    switch(IR_KEY_ARRAY[3])
    {
      case  IR_N1:
            IR_KEY=KEY_N1;
            break;
      case  IR_N2:
            IR_KEY=KEY_N2;
            break;
      case  IR_N3:
            IR_KEY=KEY_N3;
            break;
      case  IR_N4:
            IR_KEY=KEY_N4;
            break;
      case  IR_N5:
            IR_KEY=KEY_N5;
            break;
      case  IR_N6:
            IR_KEY=KEY_N6;
            break;
      case  IR_N7:
            IR_KEY=KEY_N7;
            break;
      case  IR_N8:
            IR_KEY=KEY_N8;
            break;
      case  IR_N9:
            IR_KEY=KEY_N9;
            break;
      case  IR_N10:
            IR_KEY=KEY_N10;
            break;
      case  IR_N10_PLUS:
            IR_KEY=KEY_N10_PLUS;
            break;
      case  IR_MODE:
            IR_KEY=KEY_MODE;
            break;
      case  IR_SET:
            IR_KEY=KEY_SET;
            break;
      case  IR_CHANGE:
            IR_KEY=KEY_CHANGE;
            break;
      case  IR_EN_ALARM:
            IR_KEY=KEY_EN_ALARM;
            break;
      case  IR_ALARM_STOP:
            IR_KEY=KEY_ALARM_STOP;
            break;
      default:
            IR_KEY=KEY_NO_KEY;
            break;
    };//END OF SWITCH(IR[3])
    EX0=1;
    PRE_KEY=IR_KEY;
    IR_MARK=1;//IR DO NOT PROCESS
    PRE_mSECOND=mSECOND;
}

⌨️ 快捷键说明

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