Dubnium. 2023-01-26 10:08 采纳率: 0%
浏览 26

电子密码锁修改密码代码有问题,求指正

######在写关于电子密码锁的代码时,修改密码那一部分的代码遇到了问题。
编译是没有问题的,但是修改密码那一块的代码没有反应,感觉是跳转不到修改密码的函数上,求指正

#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"


unsigned char KeyNum;
unsigned int Password,Count,Count2,NewPassword;
int mima = 1234;
int cuowu = 0;
int cw = 0;
int i=1;
int xunhuan=65536;

void error_bug()
{if(cuowu==3)  
    {
        LCD_ShowString(2,13,"lock");   //禁止登陆
        while(i--)
        {
            Delay(10000);
        }            //程序卡死10s
        cuowu=0;
    }
}

void xiugai()
{
    while(xunhuan--)
    {
    KeyNum=MatrixKey();
            if(KeyNum)
        {
            if(KeyNum<=10)    //如果S1~S10按键按下,输入密码
            {
    if(Count2<4)    //如果输入次数小于4
                {
                    NewPassword*=10;                //密码左移一位
                    NewPassword+=KeyNum%10;        //获取一位密码
                    Count++;    //计次加一
                }
                LCD_ShowNum(2,1,Password,4);    //更新显示
            }
    if(KeyNum==15)
    {
        mima = NewPassword;
        xunhuan = 1;
        LCD_ShowString(1,14,"yes ");
    }
}
}    
}

void main()
{
    LCD_Init();
    LCD_ShowString(1,1,"Password:");
    while(1)
    {
        
        KeyNum=MatrixKey();
        if(KeyNum)
        {
            if(KeyNum<=10)    //如果S1~S10按键按下,输入密码
            {
                if(Count<4)    //如果输入次数小于4
                {
                    Password*=10;                //密码左移一位
                    Password+=KeyNum%10;        //获取一位密码
                    Count++;    //计次加一
                }
                LCD_ShowNum(2,1,Password,4);    //更新显示
            }
            if(KeyNum==16)//如果s16按键按下,退格
            {
                Password/=10;    
                LCD_ShowNum(2,1,Password,4);    //更新显示
            }
            if(KeyNum==11)    //如果S11按键按下,确认
            {
                if(Password==mima)    //如果密码等于正确密码
                {
                    LCD_ShowString(1,14,"OK ");    //显示OK
                    P2_0=0;
                    Password=0;        //密码清零
                    Count=0;        //计次清零
                    LCD_ShowNum(2,1,Password,4);    //更新显示
                }
                else                
                {
                    LCD_ShowString(1,14,"ER");    //显示ERR
                    Password=0;        //密码清零
                    Count=0;        //计次清零
                    LCD_ShowNum(2,1,Password,4);    //更新显示
                    P2_0=1;
                    cuowu++;
                }
            }
            if(KeyNum==12)    //如果S12按键按下,取消
            {
                Password=0;        //密码清零
                Count=0;        //计次清零
                LCD_ShowNum(2,1,Password,4);    //更新显示
            }
            if(KeyNum==13)//如果s13按下,修改密码
            {
                xiugai();
                LCD_ShowNum(2,1,Password,4);    //更新显示
            }
        error_bug();
        }
}
}

  • 写回答

2条回答 默认 最新

  • 佛大深夜学习 2023-01-28 12:35
    关注

    以下是我的回答,希望能点击一下采纳,让我有继续回答下去的动力
    https://blog.csdn.net/weixin_63568691/article/details/128771284

    评论

报告相同问题?

问题事件

  • 创建了问题 1月26日

悬赏问题

  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 MATLAB四叉树处理长方形tif文件
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了