• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

矩阵键盘问题

哇咔YG 2018-07-17 浏览量:773
说明,别扯消抖、换东西这样的RZ回答,谢谢 
按键能得到5-16的键值,只有1-4的没有就是代码注释了未执行的那句,其它都正常,键盘正常,求解决办法
if(P1 != 0xF0)
        {
            P1 = 0xF0;  //扫描行
            switch(P1)
            {
                case (0xE0):
                    key = 1;break;
                case (0xD0):
                    key = 2;break;
                case (0xB0):
                    key = 3;break;
                case (0x70):
                    key = 4;break;
                default:break;
            }
            P1 = 0x0F;  //列预赋值
            DelayMs(10);
            P1 = 0x0F;
            DelayMs(1);
            switch(P1)
            {
                case (0x0E):
                    key = key + 0;break;    //该行未执行
                case (0x0D):
                    key = key + 4;break;
                case (0x0B):
                    key = key + 8;break;
                case (0x07):
                    key = key + 12;break;
                default:break;
            }
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 键盘没毛病,那么MCU上的P1.0有没有测过是否能正常输入和输出高低电平?如果它输入无论高低,取回的都是1,那显然就会导致那行永远不执行了,对不?
    • 发布于 2018-07-17
    • 举报
    • 评论 3
    • 1
    • 0
哇咔YG 回复了 多啦Z梦:兄dei,你才是真的看了题的,其他都是来水回答的水货。我测了是P10的问题 回复
多啦Z梦 回复了 多啦Z梦:对啊,不看题和程序,怎么判断坏的是P10呢。 回复
多啦Z梦 回复了 哇咔YG:对啊,不看题和程序,怎么判断坏的是P10呢。 回复

其他答案 数量:6
  •  P1 = 0xF0;  //扫描行
    这句下面加个延时,如:
    if (P1 != 0xf0)                                                                                         
    {                                                                                                                                                                                    
       delay_ms(5);                                                                               
    }
    • 发布于2018-07-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 一到四搞好是同一排,这说明这一排都么有扫描到,在switch前加个延时看看,或者拿万用表测测第一排是否形成了回路
    • 发布于2018-07-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 单步运行,断点打在你注释那一行,按键按下时看下是否能够进断点,此时再用万用表量一下P1口的电压是否正确。怀疑是硬件问题。
    • 发布于2018-07-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 算法是对的,现在唯一的问题就是P1.0引脚能否正常进行输入输出,如果这个引脚出问题的确是无法检测1-4的输入。

    • 发布于2018-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个还可能需要检查电路接线啊,光看代码怎么排除?

    如果接线错误了呢?!

    • 发布于2018-07-17
    • 举报
    • 评论 1
    • -1
    • 0
哇咔YG 回复了 xdsnet :对对对 你说得对 这么低级的错误在你身上犯太多了 你才这样水回答的吧 回复

  • 程序写的是对的可能硬件个软件管脚不同吧
    • 发布于2018-07-18
    • 举报
    • 评论 0
    • -1
    • 0

相关问题

问题达人换一批

矩阵键盘问题