功能:本实例是基于51单片机的电子密码锁,主要硬件由51单片机最小系统,LCD1602液晶屏电路,继电器控制电路,AT24C02存储电路,LED指示灯电路,矩阵按键电路构成。
1.系统采用LCD1602液晶屏作为显示屏,第一行电子锁的状态,第二行显示输入密码的状态。
2.系统采用AT24C02芯片用于存储设置的密码,具有掉电保存功能。密码为6个数字,初始密码为123123;
3.当输入密码成功后,单片机开启继电器,电子锁打开;如果输入密码错误,系统记录一次错误的次数;当输入密码累计错误三次后,蜂鸣器报警,电子锁进入锁死的状态,用户无法再输入密码。
原理图:
Protues仿真:
程序:
/******************主程序**********************/
void main()
{
static uint value ;
password_chushifa();
init_1602();
UartInit();
time_init(); //定时器初始化
read_24c02_8(6,0,password);
beiguan = 0;
while(1)
{
if(flag_password_cichu1 < 3) //错误三次按键不能用了
{
key(); //按键函数
if(key_can < 20)
{
beep =0;
if(beiguan == 0)
{
if(menu_1 == 0)
key_with(); //按键处理函数
xiugai_password(); //修改密码
}
else
beiguan = 0;
flag_time = 0;
delay_1ms(300);
beep =1;
}
}
if(flag_200ms == 1)
{
flag_200ms = 0;
if(beiguan == 0) //延时关闭锁20秒关闭背光
{
flag_time ++;
if(flag_time >= 5 * 30) //30秒
{
flag_time = 0;
beiguan = 1; //关闭背光
}
}
if(relay == 0) //延时关闭锁
{
flag_guan++;
if(flag_guan >= 5 * 10) //10秒
{
flag_guan = 0;
relay = 1; //关闭密码锁
}
}else
flag_guan = 0;
if(flag_password_cichu1 >= 3)
{
value ++; //200ms
beep = ~beep; //蜂鸣器报警
if(value >= 5 * 60) //1分钟
{
value = 0;
beep = 1;
flag_password_cichu1 = 0;
}
}
}
delay_1ms(1);
}
}
关注公众号-电子应用学习馆,首页回复密码锁获取。