LCD 显示密码输入:如何解决第一位密码为 0 的问题
在使用 LCD 显示密码输入时,经常会遇到第一位密码始终为 0 的问题。这是因为程序逻辑中通常会将密码初始化为 0,并在输入密码时将输入的数字左移一位再进行累加,导致第一位始终是 0。
为了解决这个问题,我们可以采用以下两种方法:
-
在初始化时将密码设为 0: 这种方法比较简单直接,直接将密码初始化为 0 即可。
-
在输入密码时进行判断: 在输入密码时,可以判断输入次数是否为 0,如果是 0,则将输入的数字乘以 10 再加上输入的数字。这样第一位就是输入的数字本身,而不是 0。
例如,假设我们想输入密码 1234,以下代码演示了第二种方法:
Count = 0; // 输入次数
Password = 0; // 密码
while(1) {
KeyNum = MatrixKey();
if(KeyNum) {
if(KeyNum <= 10) { // 如果 s1~s10 按键按下,即为输入
if(Count == 0) { // 如果输入次数为 0
Password = KeyNum * 10 + KeyNum; // 将输入的数字乘以 10 再加上输入的数字
} else { // 如果输入次数不为 0
Password = Password * 10 + KeyNum; // 左移一位并累加输入的数字
}
Count++;
LCD_ShowNum(2, 1, Password, 4); // 显示
}
if(KeyNum == 11) { // 设置 s11 按键按下为确认
// ...
}
}
}
通过以上两种方法,可以轻松解决 LCD 显示密码输入时第一位密码为 0 的问题。
原文地址: https://www.cveoy.top/t/topic/jLzU 著作权归作者所有。请勿转载和采集!