51单片机,密码锁小案例及实现思路笔记

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

unsigned char KeyNum;
unsigned int Pw,count;

void main(void){
	
	LCD_Init();
	LCD_ShowString(1,1,"Password!");
	while(1){
		// 把获取到的键盘结果赋值给KeyNum
		KeyNum = MatrixKey();
		// 判断按钮是否按下
		if(KeyNum){
			// 判断1-10的按键,做输入密码的操作
			if(KeyNum <= 10){
				// 限制密码只能输入四位
				if(count < 4){
					Pw*=10; //实现密码左移
					/**
					初始数字为0000,Pw初始为0,第一次执行输入Pw不起效果。
						当用户输入1后,则执行Pw*=10也就是0*=10;再执行Pw += KeyNum%10;也就是 0 += 1%10 也就等于1
					第二次用户输入2,则重新走Pw*10,这个时候Pw为1,也就是1*10=10,用户输入值为2,继续往下走,Pw += KeyNum%10;也就是1 += 2%10 -> 1+=2 = 12
					*/
					
					Pw += KeyNum%10;		// 这里对密码数字进行取余为10,是为了把10这个数字变成0
					LCD_ShowNum(2,1,Pw,4);	//把处理好的数字结果通过LCD_ShowNum()这个函数进行显示到LCD屏上
					count++;
				}
			}
			// 确认按钮操作定义
			if(KeyNum == 11){
				// 如果点击确认按钮后,Pw变量里面的值正好等于1234,那么就显示OK!
				if(Pw == 1234){
					LCD_ShowString(1,11,"OK ");
				}else{ // 如果不是的话就显示ERR!
					LCD_ShowString(1,11,"ERR");
				}
			}
			
			// 清除按钮 定义
			if(KeyNum == 12){
				Pw = count = 0;
				LCD_ShowNum(2,1,Pw,4);
			}
		}
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值