4*4键盘多位输出的问题

2019-07-18 09:36发布

本帖最后由 传说熊 于 2017-5-13 17:16 编辑

我用51单片机做了一个4*4按键键盘,现在想通过按三下后输出0 ~999放入x中,x就是一个寄存器,应该怎么编程
uchar key1()
{
         P1=0xef;
        q=P1;
        q=q&0x0f;
        while(q!=0x0f)
        {
                delay(5);
                while(q!=0x0f)
                {        
                q=P1;
                switch(q)
                {
                        case 0xee:w=1;
                        break;
                        case 0xed:w=2;
                        break;
                        case 0xeb:w=3;
                        break;
                        case 0xe7:w=3;
                        break;
                }
                                while(q!=0x0f)
                 {
                 q=P1;
                 q=q&0x0f;
                 }
         }
                }
                delay(10);


        P1=0Xdf;
        q=P1;
        q=q&0x0f;
        while(q!=0x0f)
        {
                delay(5);
                while(q!=0x0f)
                {
                q=P1;
                switch(q)
                {
                        case 0xde:w=4;
                        break;
                        case 0xdd:w=5;
                        break;
                        case 0xdb:w=6;
                        break;
                        case 0xd7:w=6;
                        break;
     }
                 while(q!=0x0f)
                 {
                 q=P1;
                 q=q&0x0f;
                 }
                }
        }
                delay(10);


        P1=0xbf;
        q=P1;
        q=q&0x0f;
        while(q!=0x0f)
        {
                delay(5);
                while(q!=0x0f)
                {
                q=P1;
                switch(q)
                {
                        case 0xbe:w=7;
                        break;
                        case 0xbd:w=8;
                        break;
                        case 0xbb:w=9;
                        break;
                        case 0xb7:w=9;
                        break;
                }
               
                while(q!=0x0f)
                 {
                 q=P1;
                 q=q&0x0f;
                 }
              }
    }
                delay(10);


                P1=0x7f;
                q=P1;
                        q=q&0x0f;
                        while(q!=0x0f)
        {
                delay(5);
                while(q!=0x0f)
                {
                q=P1;
                switch(q)
                {
                        case 0x7e:w=0;
                        break;
                        case 0x7d:w=0;
                        break;
                        case 0x7b:w=0;
                        break;
                        case 0x77:w=0;
                        break;}
                        while(q!=0x0f)
                 {
                 q=P1;
                 q=q&0x0f;
                 }
         }
                }
    delay(10);
        
                return w;
        }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
传说熊
2019-07-18 11:40
本帖最后由 传说熊 于 2017-5-13 17:16 编辑

换句话说及时我想用这个键盘实现多位输出(比如三位),我按键盘1,5,2后,能使a=152,方便我下面计算
123
456
789
  0
键盘按键是这样,其他的随便定义,求大神指点

一周热门 更多>