m0_74062664 2022-12-02 16:09 采纳率: 80%
浏览 10
已结题

这怎么改可以通过按键重设密码(关键词-#include)

兄弟萌,这怎么改可以通过按键重设密码?


#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
#include "Timer0.h"
sbit beep = P2^3;
sbit D3=P1^3;
//
unsigned char KeyNum,CNT,SEC;
unsigned int Password,Count;
unsigned char setime = 10;

//
void main()
{
    LCD_Init();
    Timer0_Init();
    LCD_ShowString(1,1,"Password:");
    while(1)
    {
        KeyNum=MatrixKey();
        if((CNT==0)||(CNT==1)||(CNT==2))
        {
            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==11)    //如果S11按键按下,确认
                {
                    if(Password==1234)    //如果密码等于正确密码
                    {
                        LCD_ShowString(2,7,"correct!");    
                        Password=0;        //密码清零
                        Count=0;        //计次清零
                        D3=0;
                        Delay(1000);
                        D3=1;
                        LCD_ShowNum(2,1,Password,4);    //更新显示
                    
                    }
                    else            
                    {
                        beep = 0;
                        LCD_ShowString(2,7,"error!  ");    
                        Password=0;        //密码清零
                        Count=0;        //计次清零
                        LCD_ShowNum(2,1,Password,4);    //更新显示
                        CNT++;
                        LCD_ShowNum(1,12,CNT%10,1);
                        LCD_ShowChar(2,16,' ');
                        Delay(200);
                        beep = 1;
                    }
                }
                if(KeyNum==12)    //如果S12按键按下,取消
                {
                    Password=0;        //密码清零
                    Count=0;        //计次清零
                    LCD_ShowNum(2,1,Password,4);    //更新显示
                }
            }
        }
        else
        {
            TR0=1;
        }

    }
}
//
void Timer0_Routine() interrupt 1
{
    static unsigned int T0Count;
    
    TL0 = 0x18;        //设置定时初值
    TH0 = 0xFC;        //设置定时初值
    T0Count++;
    if(T0Count>=1000)
    {
        T0Count=0;
        SEC++;
        if(CNT==3){LCD_ShowNum(2,16,(setime-SEC)%10,1);}
        if(SEC==10){LCD_ShowNum(2,16,0,1);TR0=0;CNT=0;SEC=0;LCD_ShowChar(1,12,' ');LCD_ShowString(2,7,"           ");}
        
    }
}


  • 写回答

2条回答 默认 最新

  • qllaoda 2022-12-02 16:25
    关注

    这个就是一个编辑界面的问题了,看起来简单,实际上做起来还有点复杂.
    首先,你要在主界面做一个可以进入修改密码功能的入口,
    进入编辑模式后,要处理新密码的输入,新密码的确认,输入错误的处理,取消操作的处理,输入正确后密码的存储和退出处理。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月10日
  • 已采纳回答 12月2日
  • 创建了问题 12月2日

悬赏问题

  • ¥15 esp32cam串口图传
  • ¥15 C# 用partial定义部分类无法快速预览代码
  • ¥15 fastreport 代码无法设置最后一页横线不显示
  • ¥15 stm32u535芯片usb hid custom类接收数据有问题
  • ¥15 ue5.3 pico打包失败 求帮助
  • ¥15 请教,这是用chatgpt写的CAD LISPD脚本,需求是画一个由双直线组成的矩形
  • ¥50 微信小程序 成功包奶茶啊
  • ¥15 计算机博弈的六子棋代码
  • ¥15 在Fetch API中传送的参数为何不起作用?
  • ¥15 问题遇到的现象和发生背景 360导航页面千次ip是20元,但是我们是刷量的 超过100ip就不算量了,假量超过100就不算了 这是什么逻辑呢 有没有人能懂的 1000元红包感谢费