基于单片机智能电子密码锁设计(完善)-学习教程笔记
功能:
一个电子密码锁,应该能实现以下功能:
(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);

浙公网安备 33010602011771号