基于51单片机编写的六位电子密码锁由LCD1602显示

基于51单片机编写的六位电子密码锁由LCD1602显示

全部内容由本人原创!
从制定计划到焊接调试完成耗时5天!
此程序仅表示完成该项目其中的一个方法,对有兴趣修改,完善的同学表示欢迎!
*注:每个关键的地方都有注释方便理解哈

原理图如下:

原理图部分不难
主程序main:

#include"reg52.h"
#include"key.h"
#include"lcd.h"
#include “beep.h”

char InputPassword=0;
char PassWordNum=9;
char KeyNum=0; //字符0—9的ASCII码是0x30-0x39 。//任何时候输入的按键值
char PassWordBackup[6]; //原密码
char PassWordBackup2[6]; //临时输入密码
//char Errortimes=3; //定义密码输入错误次数

void Password()
{
char i;
if(KeyChange==1)
{
KeyChange=0; //恢复按键判断状态,让密码只变化一次
PassWordBackup[PassWordNum-9]=KeyNum; //将当前按键的值进行备份
KeyNum=KeyNum%10+0x30; //***此步很重要***将变量转换成字符输出,因为液晶只能显示字符
//0x30-0x39是0-9的ASCLL码字符
LcdShowStr(PassWordNum,1,&KeyNum); //显示相应位
for(i=PassWordNum+1;i<16;i++) //作用是将剩余位清零不显示,避免乱码 “清屏”
{
LcdShowStr(i,1," ");
}

	PassWordNum++;  //索引下一位显示输出
	if(PassWordNum>15)
	{
		PassWordNum=9; //变量恢复初始值,方便下次输入
		KeyChange=1; //为下次按键按下作准备,防止确认界面被频繁刷新
		InputPassword=1; //如果输入的密码达到六位,跳转是否确认密码界面
	}
}

}

void Determine_password() //判断密码函数
{
if(KeyChange1)
{
KeyChange=0;
LcdAreaClear(0,0,16); //清屏函数,设置起始位和清屏长度
LcdAreaClear(0,1,16);
LcdShowStr(0,0,“Press 1 OK”);
LcdShowStr(0,1,“Press 2 Cancel”);
if(KeyNum
1)
{
InputPassword=2; //跳转进入密码设置成功界面
KeyChange=1;
}
else if(KeyNum==2)
{
LcdShowStr(0,0,“Please Set Init”);
LcdShowStr(0,1,"Password: ");
InputPassword=0;
}
}
}

void Password_Set_successfully() //密码设置成功显示跳转界面
{

  • 25
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值