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

📄 keydeal.c.txt

📁 空调控制器中按键功能实现的子程序,包括模式设定,温度湿度设定等.
💻 TXT
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************
**                            键盘处理
******************************************************************************/
void KeyDeal()
{
  KeyValue=PORTB; //0:up(10);  1:fan(20);  2:mode(40)  3:power(80)  4:set(04)   5:dowm(08)//tset
/*//test
 if(AuxFlag.flag2==0)
   {KeyValue=0x80; AuxFlag.flag2=1;} 
   else 
    {
     KeyValue=0x10;
    } */
//test
  KeyValue=KeyValue&0xfc;
  w0=KeySignL;
  w1=KeySignH;
  /*-----------控制POWER OFF状态-------------*/
  if((KeySignH&0x01)==0x00)
  {
    if(KeyValue==KEY_NONE){AuxFlag.power=0; }
    /*  POWER 键处理  */
    if(KeyValue==KEY_POWER)
    {
      if(AuxFlag.power==0)
      {
        AuxFlag.power=1;
        KeySignH=KeySignH|0x01;
        if(CtrlFlagByte.ONAUTO==1)
        {
          CtrlFlagByte.ONAUTODZ=1;
          CtrlFlagByte.OFFAUTODZ=0;
        }
        switch(w0&0x03)                    //刚上电写mode的状态
        {
          case 0x01:
            ClearMode();
            lcdx6.lcd6bits.lc4=1;
            lcdx7.lcd7bits.lc0=1;
            break;
          case 0x02:
            ClearMode();
            lcdx3.lcd3bits.lc4=1;
            lcdx4.lcd4bits.lc4=1;
            lcdx4.lcd4bits.lc0=1;
            break;
          case 0x03:
            ClearMode();
            lcdx7.lcd7bits.lc4=1;
            lcdx12.lcd12bits.lc0=1;
            lcdx12.lcd12bits.lc4=1;
            lcdx13.lcd13bits.lc0=1; 
            break;
          default:
            ClearMode();
            lcdx6.lcd6bits.lc4=1;
            lcdx7.lcd7bits.lc0=1;
            break;
        }
        w0=KeySignL;                         //刚上电写fan状态
        switch(w0&0x0c)
        {
          case 0x00:
            ClearFan();
            lcdx5.lcd5bits.lc0=1; 
            lcdx6.lcd6bits.lc0=1;
            break;
          case 0x04:
            ClearFan();
            lcdx5.lcd5bits.lc0=1; 
            lcdx6.lcd6bits.lc0=1;
            break;
          case 0x08:
            ClearFan();
            lcdx5.lcd5bits.lc0=1;
            lcdx5.lcd5bits.lc4=1;
            lcdx6.lcd6bits.lc0=1;             //大风
            break;
          case 0x0c:
            ClearFan();
            lcdx2.lcd2bits.lc0=1;
            lcdx2.lcd2bits.lc4=1;
            lcdx3.lcd3bits.lc0=1;
            break;
        }
      }
    }
  }                        
  /*---------power键 ON 状态,电源打开--------*/
  else
  {
  	/* ----------键盘锁定状态-------------*/
    if(KeyFlag.lock==1)
    {
      if(KeyValue==KEY_SET)
      {
        if(KeyFlag.setdz==0)
        {
          LockDelay=LockDelay+1;
          if(LockDelay>30){LockDelay=0; KeyFlag.lock=0; KeyFlag.setdz=1; lcdx5.lcd5bits.lc3=0;}
        }
      }
      else
      {
        if(KeyValue==0x00) {KeyFlag.setdz=0;}
      }
    }                              
    /* -------------键盘解锁状态  --------------*/                    
    else
    {
      switch(KeyValue)
      {
      	/* FAN 按键 : 切换风强度 */
        case KEY_FAN:                   
          AuxFlag.exitte=0;
          KeyHoldCount=0;
          nokeyyanshi=0;
          CtrlFlagByte.ONAUTODZ=0;
          switch(w0&0x0c)
          {
            case 0x00://小风->中风
              KeySignL=KeySignL|0x04;
              ClearFan(); 
              lcdx5.lcd5bits.lc0=1; 
              lcdx6.lcd6bits.lc0=1;
              break; 
            case 0x04://中风->大风
              KeySignL=KeySignL&0xfb;
              KeySignL=KeySignL|0x08;
              ClearFan();
              lcdx5.lcd5bits.lc0=1;
              lcdx5.lcd5bits.lc4=1;
              lcdx6.lcd6bits.lc0=1;             
              break;
            case 0x08://大风->自动风
              KeySignL=KeySignL|0x0c; 
              ClearFan();
              lcdx2.lcd2bits.lc0=1;
              lcdx2.lcd2bits.lc4=1;
              lcdx3.lcd3bits.lc0=1;
              break;  
            case 0x0c: //自动风->小风
              KeySignL=KeySignL&0xf3;
              ClearFan();
              lcdx5.lcd5bits.lc0=1; 
              lcdx6.lcd6bits.lc0=1;
              break;  
          }
          break; 
        /* UP按键处理  */
        case KEY_UP:                   //up
          CtrlFlagByte.ONAUTODZ=0;
          nokeyyanshi=0;
          KeyHoldCount=KeyHoldCount+1;
          /* 设定定时开时间 */
          if((KeySignL&0x30)==0x10)
          {
            if(KeyHoldCount>6)
            {
              if(ontimeh==24) {ontimeh=0;}
              else
              {
                if(ontimeh==23) {ontimeh=24; ontimem=0;}
                else {ontimeh=ontimeh+1;}
              }               
            }
            else
            {
              if(KeyHoldCount>3) 
              {
                if(ontimeh==24) {ontimeh=0;}
                if(ontimem>56)
                {
                  ontimem=ontimem+3;
                  ontimem=ontimem-60;
                  if(ontimeh==23) {ontimeh=24; ontimem=0;}
                  else {ontimeh=ontimeh+1;}
                }
                else {ontimem=ontimem+3;}
              }
              else
              {
                if(KeyHoldCount<=3)
                {
                  if(ontimeh==24) {ontimeh=0;}
                  if(ontimem==59)
                  {
                    ontimem=0;
                    if(ontimeh==24) {ontimeh=0;}
                    if(ontimeh==23) {ontimeh=24; ontimem=0;}
                    else {ontimeh=ontimeh+1;}  
                  } 
                  else {ontimem=ontimem+1;}             
                }
              }
            }
            TimeWrite(ontimeh,ontimem);
          }
          /* 设定定时关时间 */
          if((KeySignL&0x30)==0x20)
          {
            if(KeyHoldCount>6)
            {
              if(offtimeh==24) {offtimeh=0;}
              if(offtimeh==23){offtimeh=24;offtimem=0;}
              else {offtimeh=offtimeh+1;}              
            }
            else
            {
              if(KeyHoldCount>3) 
              {
                if(offtimeh==24) {offtimeh=0;}
                if(offtimem>56)
                {
                  offtimem=offtimem+3;
                  offtimem=offtimem-60;
                  if(offtimeh==23) {offtimeh=24;offtimem=0;}
                  else {offtimeh=offtimeh+1;}
                }
                else {offtimem=offtimem+3;}
              }
              else
              {
                if(KeyHoldCount<=3)
                {
                  if(offtimeh==24) {offtimeh=0;}
                  if(offtimem==59)
                  {
                    offtimem=0;
                    if(offtimeh==23) {offtimeh=24;offtimem=0;}
                    else {offtimeh=offtimeh+1;}
                  }
                  else {offtimem=offtimem+1;}
                }
              }
            }
            TimeWrite(offtimeh,offtimem);
          }
          /* 设定当前时间 */
          if((KeySignL&0x30)==0x30)
          {
            if(KeyHoldCount>6)
            {
              if(shenowtimeh==23){shenowtimeh=0; shenowtimem=0;}
              else {shenowtimeh=shenowtimeh+1;}                
            }
            else
            {
              if(KeyHoldCount>3) 
              {
                if(shenowtimem>56)
                {
                  shenowtimem=shenowtimem+3;
                  shenowtimem=shenowtimem-60;
                  if(shenowtimeh==23) {shenowtimeh=0;}
                  else {shenowtimeh=shenowtimeh+1;}
                }
                else {shenowtimem=shenowtimem+3;}                 
              }
              else
              {
                if(KeyHoldCount<=3)
                {
                  if(shenowtimem==59)
                  {
                    shenowtimem=0;
                    if(shenowtimeh==23) {shenowtimeh=0;}
                    else {shenowtimeh=shenowtimeh+1;}
                  }
                  else {shenowtimem=shenowtimem+1;}                 
                }
              }
            } 
            TimeWrite(shenowtimeh,shenowtimem);
            SetTime();
          }
          /* 设定温度设定值 */
          if((KeySignL&0x30)==0x00)
          {
            AuxFlag.exitte=1;
            if(KeyHoldCount>5)
            {
              if(TemperatureSetVal>68){TemperatureSetVal=70;}
              else {TemperatureSetVal=TemperatureSetVal+2;}                
            }
            else 
            {
              if(TemperatureSetVal>69){TemperatureSetVal=70;}
              else {TemperatureSetVal=TemperatureSetVal+1;}                
            }
            TemperatureWrite(TemperatureSetVal);
             
          }
          break; 
        /* DOWN 按键处理 */
        case KEY_DOWN:                   //down
          CtrlFlagByte.ONAUTODZ=0;
          nokeyyanshi=0;
          KeyHoldCount=KeyHoldCount+1;
          /* 定时开时间设定 */
          if((KeySignL&0x30)==0x10)
          {
            if(KeyHoldCount>6)
            {
              if(ontimeh==0) {ontimeh=24; ontimem=0;}
              else {ontimeh=ontimeh-1;}
            }

⌨️ 快捷键说明

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