4*4键盘输入任何数,通过串口发送出去,出现问题了!!

2020-01-16 18:31发布

4*4键盘输入任何数,通过串口发送出去,出现问题了!!百度上说需要一个变量保存啊!不知道怎么保存,然后发送出去

  void dispaly_number()
{       
                 
         uchar number[]={"000"};                   ////取多少位数
            char i=0;                                                          ////高位在前,低位在后。
         number[0]=datc%1000/100+'0';
         number[1]=datc%100/10+'0';
         number[2]=datc%10/1+'0';       
         for(i=0;i<3;i++)
          {          
             delay(1000);                                                       
             SendData(number[i]);
                 delay(1000);       
          }
                SendString(" ");       
}

void          KeyDown()
{
    uchar bai,shi,ge,ci;
        GPIO_KEY=0x0f;
        if(GPIO_KEY!=0x0f)//读取按键是否按下
        {
           delay(1);

                if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
                {                                       
                        //测试列
                        GPIO_KEY=0X0F;
                        switch(GPIO_KEY)
                         {
                                case(0X07):        KeyValue_l=0;break;
                                case(0X0b):        KeyValue_l=1;break;
                                case(0X0d): KeyValue_l=2;break;
                                 case(0X0e):        KeyValue_l=3;break;
                         }

                   //测试行
                        GPIO_KEY=0XF0;
                        switch(GPIO_KEY)
                         {
                                case(0X70):        KeyValue_h=0;break;
                                case(0Xb0):        KeyValue_h=1;break;
                                case(0Xd0): KeyValue_h=2;break;
                                case(0Xe0):        KeyValue_h=3;break;
                          }               
             a1=KeyValue_h*4+KeyValue_l;                  //得出键值
             a1++;
             if(a1==11)
             a1=0;
             if(a1==10)                                                                                                                                                                      
             datc=datc/10;
         ge=0;
         shi=0;
         bai=0;
             }
         }
////-------------------------------------------------------------------------------
//          switch(a1)
//          {
//                             case(10):        datc=0;break;
//                        case(0):        datc=1;break;
//                        case(1):         datc=2;break;
//                        case(2):        datc=3;break;
//                        case(3):        datc=4;break;
//                        case(4):        datc=5;break;
//                        case(5):        datc=6;break;
//                        case(6):         datc=7;break;
//                        case(7):        datc=8;break;
//                        case(8):        datc=9;break;
//          }
///*****************************************************************************///

   if(a1<12)
   {
         ci++;
        if(ci==4)
        {
        ci=1;
        }
        if(ci==1)
        {
                             
          ge=a1;       
          datc=ge;
//            if((flag==1)&&(key==0))       
//       {
//
//       dispaly_number();
//
//            }        
         }
//--------------------------------------------------------------------------------------------------
          if(ci==2)
           {
            flag=1;       
              shi=ge*10;
              datc=a1+shi;
//    if((flag==1)&&(key==0))       
//       {
//
//       dispaly_number();
//
//            }        
              }
///-------------------------------------------------------------------------------------------

           if(ci==3)
           {
                     
                 if(datc>25)          
                     {
                         datc=0;
                                 }
                 else
                  {
                      if(datc==25&&a1>5)
                      datc=0;
                  else
                      {
                          bai=datc*10;
                          datc=bai+a1;
                                                  
                       }
                    }             
            }         
}
  dispaly_number();
////---------------------------------------------------------------------------------------
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。