单片机/MCU论坛
直播中

jf_47690483

2年用户 3经验值
擅长:嵌入式技术
私信 关注
[讨论]

51普中单片机

VID_20230309_210739

为啥用那个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);  //更新显示
			}
		}
	}
}	

更多回帖

发帖
×
20
完善资料,
赚取积分