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

📄 keyboard.c

📁 该模板使用于周立功公司研发的EasyARM2100系列开发板
💻 C
字号:
#include "system.h"
uint8 Key_ID;
char S[10],s[10];
extern uint8 tiaoshi_falg;
extern uint8 Bclear_LCD_screen;
extern uint8 current_screen;
extern uint8 show_ID;
extern uint8 set_ID;
uint8 current_kvalue=0;//当前键值

 uint8 Skey_value;//软键盘返回值
 uint8 exit_falg=0;//退出标志
uint8 valid_falg=0;
float soft_key_value;
uint8 disp_ID;
double get_keyvalue(void)
{
 uint8 i;
 


 for(i=0;i<10;i++)
   {
   S[i]=0;s[i]=0;
   }
  i=0;
 while(1)
   {
            if(exit_falg==1)
              {
               exit_falg=0;
               tiaoshi_falg=0;
               break;
              }
           if((IO0PIN & DOWN)==0)
             {
              delay(200);
              if((IO0PIN & DOWN)==0)
                {
                 while((IO0PIN & DOWN)==0);
                 Key_ID++;
                 if (Key_ID>13)
                 Key_ID=0;
                }
             }
            else if( (IO0PIN & UP ) == 0)
             {
             delay(200);
              if((IO0PIN & UP)==0)
               {
                while((IO0PIN & UP)==0);
                Key_ID--;
                if (Key_ID>13)
                  {
                  Key_ID=13;
                  } 
               }
              }
             else  if((IO0PIN & ENTER)==0)
              {
                 delay(200);
                 if((IO0PIN & ENTER)==0)
                 {
                  while((IO0PIN & ENTER)==0); 
                     //---------------key process----------
                   if(valid_falg==1)
                   {
                    valid_falg=0;  disp_ID=i;//key value is valid.
                    switch(Skey_value)
                       {
                          case  0:
                                 {
                                 current_kvalue=0x30;
                                 S[i]=current_kvalue;
                                 s[i]=0;
                                 i++;
                                 }break;
                         case  1:
                                {
                                current_kvalue=0x31;
                                S[i]=current_kvalue;
                                s[i]=1; 
                                i++;
                                }break;
                        case  2:
                                {
                                current_kvalue=0x32;
                                S[i]=current_kvalue;
                                s[i]=2;
                                i++;
                                }break;
                        case  3:
                                {
                                current_kvalue=0x33;
                                S[i]=current_kvalue;
                                s[i]=3;
                                i++;
                                 }break;
                        case  4:
                                {
                                current_kvalue=0x34;
                                S[i]=current_kvalue;
                                s[i]=4;
                                i++;
                                 }break;
                        case  5:
                                {
                                current_kvalue=0x35;
                                S[i]=current_kvalue;
                                s[i]=5;
                                i++;
                                 }break;
                        case  6:
                                {
                                current_kvalue=0x36;
                                S[i]=current_kvalue;
                                s[i]=6;
                                i++;
                                }break;    
                        case  7:
                                {
                                current_kvalue=0x37;
                                S[i]=current_kvalue;
                                s[i]=7;
                                i++;  
                                }break;
                        case  8:
                                {
                                 current_kvalue=0x38;
                                 S[i]=current_kvalue;
                                 s[i]=8;
                                 i++;   
                                }break;
                        case  9:
                                {
                                current_kvalue=0x39;
                                S[i]=current_kvalue;
                                s[i]=9;
                                i++;
                                }break;
                        case  10:
                                {
                                 current_kvalue=0x2e;
                                 S[i]=current_kvalue;
                                 s[i]=10;
                                 i++;
                                }break;
                        case  11://清除当前的输入值
                                {
                                 soft_key_value=0;
                                 current_kvalue=0;
                                 for(i=0;i<10;i++)
                                    {
                                     S[i]=0;s[i]=0;
                                     }
                                     i=0;   
                                 }break;
                        case  12://保存当前输入值
                                 {
                                 current_kvalue=0;
                                 soft_key_value=atof(S);
                                 disp_ID=disp_ID-1;
                                 set_ID=1;//2008 0909 wu add
                               //   UART0_SendByte(soft_key_value);
                                 }break;
                        case  13://退出软键盘
                                 {
                                  current_kvalue=0;
                                  exit_falg=1;
                                  }break;
                        default:
                              break;
                        }
                     } 
                   //--------------end key process---  
                //   case 0:
                    //    {
                          show_picture(kuang,16,18,92,16); 
                    //     }break;
                   //--------key value display on the screen-----
                  switch(disp_ID)
                  {
                  
                   case 0:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);      
                         }break;
                   case 1:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                         }break;
                   case 2:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                          show_picture(NUM[s[2]],16, 40,10,16);   
                         }break;
                   case 3:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                          show_picture(NUM[s[2]],16, 40,10,16); 
                          show_picture(NUM[s[3]],16, 50,10,16);
                         }break;
                   case 4:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                          show_picture(NUM[s[2]],16, 40,10,16); 
                          show_picture(NUM[s[3]],16, 50,10,16);  
                          show_picture(NUM[s[4]],16, 60,10,16);   
                         }break;
                   case 5:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                          show_picture(NUM[s[2]],16, 40,10,16); 
                          show_picture(NUM[s[3]],16, 50,10,16);  
                          show_picture(NUM[s[4]],16, 60,10,16);  
                          show_picture(NUM[s[5]],16, 70,10,16);    
                         }break;
                   case 6:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                          show_picture(NUM[s[2]],16, 40,10,16); 
                          show_picture(NUM[s[3]],16, 50,10,16);  
                          show_picture(NUM[s[4]],16, 60,10,16);  
                          show_picture(NUM[s[5]],16, 70,10,16); 
                          show_picture(NUM[s[6]],16, 80,10,16);  
                         }break;
                   case 7:
                         {
                          show_picture(kuang,    16, 18,92,16);
                          show_picture(NUM[s[0]],16, 20,10,16);  
                          show_picture(NUM[s[1]],16, 30,10,16); 
                          show_picture(NUM[s[2]],16, 40,10,16); 
                          show_picture(NUM[s[3]],16, 50,10,16);  
                          show_picture(NUM[s[4]],16, 60,10,16);  
                          show_picture(NUM[s[5]],16, 70,10,16); 
                          show_picture(NUM[s[6]],16, 80,10,16); 
                          show_picture(NUM[s[7]],16, 90,10,16); 
                             
                         }break;
                         
                    case 8:
                         {
                          show_picture(err_input,    16, 18,92,16);
                         }break;
                  default:
                          break;
                         
                  }
                 }
               }
            else if ((IO0PIN & CANCEL)==0)  
             {
              delay(200);
              if((IO0PIN & CANCEL)==0)
                {
                 while((IO0PIN & CANCEL)==0);
                 current_screen=DEFAULT_SCREEN;
                 Bclear_LCD_screen=1;
                 show_ID=0;
               /* for(i=0;i<15;i++)
                    {
                    UART0_SendByte(S[i]);
                    }*/
                 break;
                }
             }  
             
           /*  if(exit_falg==1)
              {
               exit_falg=0;
               current_screen=DEFAULT_SCREEN;
               Bclear_LCD_screen=1;
               show_ID=0;
              }*/
          switch(Key_ID)
         {
          case KEY_0:
                {
                 show_picture(key_0,32,18,92,32);
                 Skey_value=0;
                 valid_falg=1;
                }
                 break;
          case KEY_1:
                {
                show_picture(key_1,32,18,92,32);
                Skey_value=1;
                valid_falg=1;
                }
                 break;
           case KEY_2:
                {
                show_picture(key_2,32,18,92,32);
                Skey_value=2;
                valid_falg=1;
                }
                 break;
           case KEY_3:
                {
                show_picture(key_3,32,18,92,32);
                Skey_value=3;
                valid_falg=1;
                }
                 break;
           case KEY_4:
                {
                show_picture(key_4,32,18,92,32);
                Skey_value=4;
                valid_falg=1;
                }
                 break;
           case KEY_5:
                {
                show_picture(key_5,32,18,92,32);
                Skey_value=5;
                valid_falg=1;
                }
                 break;
           case KEY_6:
                {
                show_picture(key_6,32,18,92,32);
                Skey_value=6;
                valid_falg=1;
                }
                 break;
           case KEY_7:
                {
                show_picture(key_7,32,18,92,32);
                Skey_value=7;
                valid_falg=1;
                }
                 break;
           case KEY_8:
                {
                 show_picture(key_8,32,18,92,32);
                Skey_value=8;
                valid_falg=1;
                }
                 break;
           case KEY_9:
                {
                show_picture(key_9,32,18,92,32);
                Skey_value=9;
                valid_falg=1;
                }
                 break;
           case KEY_DIAN:             //输入小数点
                {
                show_picture(key_dian,32,18,92,32);
                Skey_value=10;
                valid_falg=1;
                }
                 break;
           case KEY_CANCEL:           //清除当前的输入值
                {
                show_picture(key_cancel,32,18,92,32);
                Skey_value=11;
                valid_falg=1;
                }
                 break;
           case KEY_OK:                //确认输入
                {
                show_picture(key_ok,32,18,92,32);
                Skey_value=12;
                valid_falg=1;
                }
                 break;
           case KEY_EXIT:            //保存输入值并退出软键盘
                {
                show_picture(key_exit,32,18,92,32);
                Skey_value=13;
                valid_falg=1; 
                }
                 break;
           default:
                break;
    } 
   } 
 return soft_key_value;
}

⌨️ 快捷键说明

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