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

📄 keyboard4.c

📁 基于STC12C5410AD单片机的智能冷库控制器的按键操作C语言程序,功能丰富,四级菜单操作.组合键,延时按键操作
💻 C
📖 第 1 页 / 共 4 页
字号:
                                break;
                                case 0x08:
                                     Key_Value=0x00;   //抬起按键后清零键值(不执行按键处理)**(关键)
                                     KC2_Cnt++;
                                break;
                                case 0x09:
                                     dec_showbuf((int)(ExTempWarn*10));  //F7的参数处理后放入显存(超温限报警)
                                     KSC2Set();
                                break;
                                case 0x0a:
                                     Key_Value=0x00;   //抬起按键后清零键值(不执行按键处理)**(关键)
                                     KC2_Cnt++;
                                break;
                                case 0x0b:
                                     dec_showbuf((int)(TempRevise*10));  //F8的参数处理后放入显存(温度校正)
                                     led_show_buf[0]=0x0c;              //清除显存最后一位
                                     Dip=0x05;                          //不显示小数点
                                     Key_Value=0x00;    //抬起按键后清零键值(不执行按键处理)**(关键)                      //
                                     KC2_Cnt=0;         //(KC1_Cnt=0)
                                break;
                              }

                           }               //****************按键抬起***********************

          }                    //************************如果键SET被按下*************************

         else
         if(UpDown_Value==KEY_K2)
         {                     //**********************如果UP键被按下**************************
            if((UpDown_Delay==1)&&(UpDown_Level==0x00))
              {                //************按下时间在0-2秒内************
                switch(KC2_Cnt)
                {              //*****执行某项*****
                   case 0x00:        //菜单项F8的参数(温度校正)
                        KSC2U0();
                   break;
                   case 0x01:        //菜单项F3(压缩机延时) (在此状态下有按键显示F4)
                        led_show_buf[1]=0x04;  //F4
                        KSC2U();
                   break;
                   case 0x02:        //菜单项F3的参数(压缩机延时)
                        KSC2U2();
                   break;
                   case 0x03:        //菜单项F4(化霜周期)(在此状态下有按键显示F5)
                        led_show_buf[1]=0x05;    //F5
                        KSC2U();
                   break;
                   case 0x04:        //菜单项F4的参数(化霜周期)
                        KSC2U4();
                   break;
                   case 0x05:        //菜单项F5(化霜时间)(在此状态下有按键显示F6)
                        led_show_buf[1]=0x06;    //F6
                        KSC2U();
                   break;
                   case 0x06:        //菜单项F5的参数(化霜时间)
                        KSC2U6();
                   break;
                   case 0x07:        //菜单项F6(化霜终止温度)(在此状态下有按键显示F7)
                        led_show_buf[1]=0x07;    //F7
                        KSC2U();
                   break;
                   case 0x08:        //菜单项F6的参数(化霜终止温度)
                        KSC2U8();
                   break;
                   case 0x09:        //菜单项F7(超温限报警)(在此状态下有按键显示F8)
                        led_show_buf[1]=0x08;    //F8
                        KSC2U();
                   break;
                   case 0x0a:        //菜单项F7的参数(超温限报警)
                        KSC2Ua();
                   break;
                   case 0x0b:        //菜单项F8(温度校正)(在此状态下有按键显示F3)
                        led_show_buf[1]=0x03;    //F3
                        KSC2U();
                   break;
                   default:
                   break;
                }            //*****执行某项*****
              }              //************按下时间在0-2秒内************
              else if((UpDown_Delay==2)&&(UpDown_Level==0x00))
                     {       //************按下时间大于2秒**************
                       switch(KC2_Cnt)  //*****执行某项*****
                       {
                         case 0x00:         //菜单项F8的参数(温度校正)
                              KSC2U0();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x01:         //菜单项F3(压缩机延时) (在此状态下有按键显示F4)
                              led_show_buf[1]=0x04;  //F4
                              KSC2U();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x02:         //菜单项F3的参数(压缩机延时)
                              KSC2U2();
                              UpDown_Old=KEYLOOP;                      //连加由此值开始计数至400
                         break;
                         case 0x03:         //菜单项F4(化霜周期)(在此状态下有按键显示F5)
                              led_show_buf[1]=0x05;    //F5
                              KSC2U();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x04:         //菜单项F4的参数(化霜周期)
                              KSC2U4();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x05:         //菜单项F5(化霜时间)(在此状态下有按键显示F6)
                              led_show_buf[1]=0x06;    //F6
                              KSC2U();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x06:         //菜单项F5的参数(化霜时间)
                              KSC2U6();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x07:         //菜单项F6(化霜终止温度)(在此状态下有按键显示F7)
                              led_show_buf[1]=0x07;    //F7
                              KSC2U();
                              Key_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x08:         //菜单项F6的参数(化霜终止温度)
                              KSC2U8();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x09:         //菜单项F7(超温限报警)(在此状态下有按键显示F8)
                              led_show_buf[1]=0x08;    //F8
                              KSC2U();
                              UpDown_Old=KEYLOOP;   //连加由此值开始计数至400
                         break;
                         case 0x0a:          //菜单项F7的参数(超温限报警)
                              KSC2Ua();
                              UpDown_Old=KEYLOOP;                      //连加由此值开始计数至400
                         break;
                         case 0x0b:                 //菜单项F8(温度校正)(在此状态下有按键显示F3)
                              led_show_buf[1]=0x03;    //F3
                              KSC2U();
                              UpDown_Old=KEYLOOP;                     //连加由此值开始计数至400
                         break;
                         default:
                         break;
                       }
                     }       //************按下时间大于2秒**************
                   else if(UpDown_Level==0x01)
                          { UpDown_Old=0x00;                  //以Key_Old位按键周期
                            UpDown_Value=0;
                          }
         }                     //**********************如果UP键被按下**************************

         else
         if(UpDown_Value==KEY_K1)
         {                     //**********************如果down键被按下**************************
           if((UpDown_Delay==1)&&(UpDown_Level==0x00))
              {                //************按下时间在0-2秒内************
                switch(KC2_Cnt)
                {              //*****执行某项*****
                  case 0x00:   //菜单项F8的参数(温度校正)
                       KSC2D0();
                  break;
                  case 0x01:   //菜单项F3(压缩机延时) (在此状态下有按键显示F8)
                       led_show_buf[1]=0x08;  //F8
                       KSC2D();
                  break;
                  case 0x02:   //菜单项F3的参数(压缩机延时)
                       KSC2D2();
                  break;
                  case 0x03:   //菜单项F4(化霜周期)(在此状态下有按键显示F3)
                       led_show_buf[1]=0x03;    //F3
                       KSC2D();
                  break;
                  case 0x04:
                       KSC2D4();
                  break;
                  case 0x05:   //菜单项F5(化霜周期)(在此状态下有按键显示F4)
                       led_show_buf[1]=0x04;    //F4
                       KSC2D();
                  break;
                  case 0x06:
                       KSC2D6();
                  break;
                  case 0x07:   //菜单项F6(化霜周期)(在此状态下有按键显示F5)
                       led_show_buf[1]=0x05;    //F5
                       KSC2D();
                  break;
                  case 0x08:
                       KSC2D8();
                  break;
                  case 0x09:   //菜单项F7(化霜周期)(在此状态下有按键显示F6)
                       led_show_buf[1]=0x06;    //F6
                       KSC2D();
                  break;
                  case 0x0a:
                       KSC2Da();
                  break;
                  case 0x0b:   //菜单项F8(化霜周期)(在此状态下有按键显示F7)
                       led_show_buf[1]=0x07;    //F3
                       KSC2D();
                  break;
                }              //*****执行某项*****
              }                //************按下时间在0-2秒内************
              else if((UpDown_Delay==2)&&(UpDown_Level==0x00))
                     {         //************按下时间大于2秒**************
                       switch(KC2_Cnt)
                       {              //*****执行某项*****
                         case 0x00:    //菜单项F8的参数(温度校正)
                              KSC2D0();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x01:    //菜单项F3(压缩机延时) (在此状态下有按键显示F8)
                              led_show_buf[1]=0x08;  //F8
                              KSC2D();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x02:    //菜单项F3的参数(压缩机延时)
                              KSC2D2();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x03:    //菜单项F4(化霜周期)(在此状态下有按键显示F3)
                              led_show_buf[1]=0x03;    //F3
                              KSC2D();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x04:    //菜单项F4的参数(化霜周期)
                              KSC2D4();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x05:    //菜单项F5(化霜周期)(在此状态下有按键显示F4)
                              led_show_buf[1]=0x04;    //F4
                              KSC2D();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x06:    //菜单项F5的参数(化霜时间)
                              KSC2D6();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x07:    //菜单项F6(化霜周期)(在此状态下有按键显示F5)
                              led_show_buf[1]=0x05;    //F5
                              KSC2D();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x08:    //菜单项F6的参数(化霜终止温度)
                              KSC2D8();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x09:    //菜单项F7(化霜周期)(在此状态下有按键显示F6)
                              led_show_buf[1]=0x06;    //F6
                              KSC2D();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x0a:    //菜单项F7的参数(超温限报警)
                              KSC2Da();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                         case 0x0b:    //菜单项F8(温度校正)(在此状态下有按键显示F7)
                              led_show_buf[1]=0x07;    //F7
                              KSC2D();
                              UpDown_Old=KEYLOOP;  //连加由此值开始计数至400
                         break;
                       }              //*****执行某项*****
                     }       //************按下时间大于2秒**************
                   else if(UpDown_Level==0x01)
                          { UpDown_Old=0x00;
                            UpDown_Value=0;
                          }
                                           //以Key_Old位按键周期
         }                     //**********************如果down键被按下**************************
   break;
   }

  if(ParaCheckCnt>=128)      //参数查看计时时间超过4秒
    { ParaCheckCnt=128;      //计数值维持最高值
      ParaCheckVal=0;        //退出参数查看状态
    }

  if(NoKey_time>=10)         //30秒无按键按下,恢复寄存器初始状态
    { NoKey_time=10;         //
      Key_Ceng=0;            //
      Key_Value=NO_KEY;      //
      Set_Ok=0;              //退出参数设置状态
      zhishi_flag|=SET_FLAG; //取消设置标志
    }
}

void ReadSysPara(void)
{
  read_EEPROM1(0xa0,0x00,8,eep_rcvbuf);
  YsjDelay=eep_rcvbuf[0];
  FreshCycl=eep_rcvbuf[1];
  FreshTime=eep_rcvbuf[2];
  FrStopTemp=eep_rcvbuf[3];
  ExTempWarn=eep_rcvbuf[4];
  TempRevise=eep_rcvbuf[5];
  TempSet=eep_rcvbuf[6];
  Huicha=eep_rcvbuf[7];
}

⌨️ 快捷键说明

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