找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 860|回复: 4
收起左侧

51单片机矩阵键盘密码锁提示错误?附程序

[复制链接]
ID:1077092 发表于 2023-5-12 17:31 | 显示全部楼层 |阅读模式
用51单片机的矩阵键盘结合LCD1602设计密码锁时,输入密码与设置的密码一直但是提示错误,如果四位密码都一样则正确,麻烦各位大佬看看。
详细代码见
51单片机矩阵密码锁问题
问题描述:设置的密码和输入密码一致却显示错误。
程序如下:
#include <REGX52.H>
#include <LCD1602.H>
#include "Delay.H"
#include "MatrixKey.H"
void main()
{
    unsigned char KeyNum=0;
    unsigned char Password_1,Password_2,Password_3,Password_4;
    unsigned char count=0;
    LCD_Init();
    while(1)
    {
        LCD_ShowString(1,1,"Password:");//LCD printf
        KeyNum=MatrixKey();//scanf MatrixKey 把按键的值赋给KeyNum,
        if(KeyNum!=0)//检测按键被按下
        {
            count++;
            if(KeyNum<=10)//s1-s10 Input Password 密码区1-10
            {
                Password_1=KeyNum%10;//按键对应密码数字 第一位密码
                Password_2=KeyNum%10;//第二位密码
                Password_3=KeyNum%10;//第三位密码
                Password_4=KeyNum%10;//第四位密码
            }//四位密码
                switch(count)
                {
                    case 1:LCD_ShowNum(2,1,Password_1,1);break;
                    case 2:LCD_ShowNum(2,2,Password_2,1);break;
                    case 3:LCD_ShowNum(2,3,Password_3,1);break;
                    case 4:LCD_ShowNum(2,4,Password_4,1);break;
                }   
            if(KeyNum==11)//按下第11个键确认输入的密码
            {
                if(Password_1==8&&Password_2==8&&Password_3==8&&Password_4==7)
                {
                LCD_ShowString(2,6,"Right!");
                }
                else
                {
                LCD_ShowString(2,6,"Wrong!");
                }
            }
            /*if(KeyNum==12)//删除已经输入的密码
            {
               
            }*/
        }
    }
}
LCD实物显示如下:
51hei.png
但如果密码设置成8888,输入8888就能显示right

回复

使用道具 举报

ID:213173 发表于 2023-5-12 18:49 | 显示全部楼层
莫不是密码顺序被你颠倒了
回复

使用道具 举报

ID:883242 发表于 2023-5-12 19:10 | 显示全部楼层
  1.                 Password_1=KeyNum%10;//按键对应密码数字 第一位密码
  2.                 Password_2=KeyNum%10;//第二位密码
  3.                 Password_3=KeyNum%10;//第三位密码
  4.                 Password_4=KeyNum%10;//第四位密码
复制代码


错误显然在这里,4位密码只有一位是对的。
回复

使用道具 举报

ID:1077092 发表于 2023-5-16 19:21 | 显示全部楼层
Hephaestus 发表于 2023-5-12 19:10
错误显然在这里,4位密码只有一位是对的。

强啊,大佬,按你的思路我在这些语句前面又加了switch语句,他就好了。
回复

使用道具 举报

ID:1077092 发表于 2023-5-16 19:21 | 显示全部楼层

RE: 51单片机矩阵键盘密码锁提示错误?附程序

Hephaestus 发表于 2023-5-12 19:10
错误显然在这里,4位密码只有一位是对的。

强啊,大佬,按你的思路我在这些语句前面又加了switch语句,他就好了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表