基于单片机智能电子密码锁设计(完善)-学习教程笔记

功能:

一个电子密码锁,应该能实现以下功能:

(1)能够从键盘中输入密码,并相应地在显示器上显示‘*’;

(2)能够判断密码是否正确,正确则开锁,错误则输出相应信息;

(3)能够实现密码的修改;

(4)断电或者单片机复位后能够保存之前的操作,比如密码的修改;

(5)在操作错误达到一定次数后能够报警。

根据以上分析,本次电子密码锁设计的主要重点是以下几个部分:4x4矩阵键盘设计、LCD信息显示、密码的掉电存储和密码的比较和处理。当然,除了这几个部分外还有LED指示和报警等功能模块。

 仿真电路:

 

 

#include<reg51.h>    //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include"lcd1602.h"
#include"i2c.h"

sbit LED=P3^3;  //继电器控制引脚
sbit RELAY=P3^4;  //继电器控制引脚
sbit BUZZER=P3^5; //蜂鸣器控制引脚
sbit SET=P0^7;	  //设置
sbit LCK=P0^6;	  //关锁

#define LOCK_TIME_second 10
#define SU 1/256
#define GPIO_KEY P1	//4X4矩阵键盘输入
unsigned char KeyValue; //用来存放读取到的键值
unsigned char saved_Value[4]={6,7,6,7};	  //初始密码
unsigned char input_Value[4];
unsigned char Right_flg=0,Right_flg0=0; 
unsigned char set_flg=0,LOCK_flg=0;
unsigned char temp00;
unsigned int  time_cnt,time_remember,delay_ddll;
long int DECvalue=0;

//存储芯片存储的内容
/*===============================================
地址: 0    1    2     3    4    5      6     
数据:无   密码 密码  密码 密码	 无  错误次数
=================================================*/

void TimerConfiguration(void);  //定时中断
void KeyDown();		            //检测按键函数
void At24c02Write(unsigned char addr,unsigned char dat);
unsigned char At24c02Read(unsigned char addr);

  

 

posted @ 2021-03-11 10:12  MCU创新DIY  阅读(214)  评论(0)    收藏  举报