写点什么

基于 51 单片机的 6 位密码锁设计

作者:智趣匠
  • 2024-05-16
    四川
  • 本文字数:1236 字

    阅读完需:约 4 分钟

基于51单片机的6位密码锁设计

一、概要

多功能电子密码锁系统由 AT89C52 单片机最小系统、4×4 矩阵键盘、LCD1602 显示、AT24C02 存储模块以及报警系统等组成,具有设置、修改六位用户密码、超次报警、超次锁定、密码错误报警等功能。

二、设计要求

(1)本设计为了防止密码被窃取要求在输入密码时在 LCD 屏幕上显示*号;

(2)设计开锁密码位六位密码的电子密码锁;

(3)能够 LCD 显示在密码正确时显示 OPEN,密码错误时显示 ERROR,输入密码时显示 INPUT PASSWORD;

(4)实现输入密码错误超过限定的三次电子密码锁定;

(5)4×4 的矩阵键盘其中包括 0-9 的数字键和确认、重设、清除以及关锁功能键;

(6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且 LED 灯亮;

(7)密码可以由用户自己修改设定(只支持 6 位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作;

Proteus 仿真

原理图


仿真分析

(1)51 单片机加载 Lock 程序的 Hex 文件,进行仿真运行,此时 LCD 显示初始密码输入界面。



(2)输入初始密码 6 个 0 后,点击“确认”键,LCD 显示 Open 状态,密码锁打开,继电器动作,绿色 LED 灯点亮,开锁成功。



(3)重设密码过程为:在密码锁开锁成功的状态下,即 LCD 显示 Open 时,再次输入 6 位旧密码,点击“确认”键,此时 LCD 显示 Set NewWord Enable,重设密码进程激活。



(4)此时,输入 6 位新密码,点击“重设”键,LCD 显示“inputagain”,再次输入 6 位新密码,点击“重设”键,密码重设成功,此时 LCD 显示“ResetPassword OK”,新密码被写入 AT24C02 存储器。即使仿真结束,或单片机复位,AT24C02 存储的密码都不会丢失。



(5)如果忘记密码,可输入管理员密码:131420,点击“确认”键后,LCD 显示“Init Password”,密码锁密码被重置为:000000。

(6)密码输入过程中,均会产生提示音。一声提示音,表示按键每次的有效输入;两声提示音,表示开锁或密码重设重置成功;三声提示音,表示输入错误等。密码输入错误 3 次,键盘被锁死,提示音长鸣报警。



(7)开锁成功后,可以点击“关锁”键,模拟锁密码关锁,此时继电器失电,绿色 LED 灯熄灭,LCD 显示密码输入界面。当密码输入过程中输入错误时,可以通过“清除”清除错误的某位密码数字,重新输入即可。

三、部分 C 程序

oidStop(void)
{
Sda=0;
Scl=1;
Nop();
Sda=1;
Nop();
}
voidAck(void)
{
Sda=0;
Nop();
Scl=1;
Nop();
Scl=0;
}
voidNoAck(void)
{
Sda=1;
Nop();
Scl=1;
Nop();
Scl=0;
}
voidSend(uchar Data)
{
ucharBitCounter=8;
uchartemp;
do
{
temp=Data;
Scl=0;
Nop();
if((temp&0x80)==0x80)
Sda=1;
else
Sda=0;
Scl=1;
temp=Data<<1;
Data=temp;
BitCounter--;
}
while(BitCounter);
Scl=0;
}
ucharRead(void)
{
uchar temp=0;
uchar temp1=0;
uchar BitCounter=8;
Sda=1;
do
{
Scl=0;
Nop();
Scl=1;
Nop();
if(Sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(BitCounter-1)
{
temp1=temp<<1;
temp=temp1;
}
BitCounter--;
}
while(BitCounter);
return(temp);
}
复制代码


发布于: 刚刚阅读数: 5
用户头像

智趣匠

关注

凡事预则立,不预则废! 2022-06-01 加入

某公司芯片AE工程师,嵌入式开发工程师,InfoQ签约作者,阿里云专家博主,华为云·云享专家,51CTO专家博主,腾讯云社区优秀共创官。

评论

发布
暂无评论
基于51单片机的6位密码锁设计_系统_智趣匠_InfoQ写作社区