为啥用那个51单片机完成四位数字密码锁时,那个首位始终显示为0.
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
unsigned char Password,Count;
void main()
{
LCD_Init(); //LCD上电后就要初始化
LCD_ShowString(1,1,"Password:");
//LCD_ShowChar(unsigned char Line,unsigned char Column,char Char)
//Line(行位置,范围:1~2) Column(列位置,范围:1~16) Char(要显示的字符)
//LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
//Line (起始行位置,范围:1~2) Colum(列位置,范围:1~16) Number(要显示的数字,范围:0~65535) Lenghth(要显示数字的长度,范围:1~5)
while(1)
{
KeyNum=MatrixKey();
if(KeyNum)
{
if(KeyNum<=10) //如果s1~s10按键按下,输入密码
{
if(Count<4) //检测密码的位数
{
Password*=10; //密码向左移一位
Password+=KeyNum%10; //获取一位密码
Count++; //计次加1
}
LCD_ShowNum(2,1,Password,4);
}
if(KeyNum==11) //如果s11按下,则为确定键
{
if(Password==2345) //如果密码=2345为正确
{
LCD_ShowString(1,14,"OK!");
Password=0; //密码清零
Count=0; //计次清零
LCD_ShowNum(2,1,Password,4); //更新显示
}
else
{
LCD_ShowString(1,14,"ERR!");
Password=0; //密码清零
Count=0; //计次清零
LCD_ShowNum(2,1,Password,4); //更新显示
}
}
if(KeyNum==12) //如果s12按下则为取消键
{
Password=0; //密码清零
Count=0; //计次清零
LCD_ShowNum(2,1,Password,4); //更新显示
}
}
}
}
更多回帖