基于51单片机的指纹红外密码电子锁
- 1、系统功能介绍
- 2、演示视频
- 3、系统框图
- 4、系统电路介绍
- 4.1、STC89C52单片机最小系统设计
- 4.2、LCD12864显示屏电路设计
- 4.3、矩阵键盘按键控制部分电路设计
- 4.4、AS608指纹模块电路设计
- 5、程序设计
- 5.1、LCD12864屏幕初始化
- 5.2、AT24C02存储芯片读写操作
- 6、资料下载
1、系统功能介绍
- 1.采用AT24C02芯片可以实现存储的密码掉电保存。密码为6位,可以随意更改,更改时要输入两遍确认;
- 2.采用矩阵按键输入、12864液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载
- 3.有管理员密码,即使望记密码也不怕哈,可以找回;
- 4.密码输入错误3次,蜂鸣器响,报警锁死;
- 5.三种开锁方式:红外遥控开锁(红外遥控器)、指纹开锁(指纹模块)和密码开锁(键盘模块)
2、演示视频
- 演示视频:https://www.bilibili.com/video/BV1jM4m1674i
- 资料在视频简介中获取
3、系统框图
4、系统电路介绍
4.1、STC89C52单片机最小系统设计
- 单片机,亦称单片微电脑或单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。现在可以说单片机是百花齐放的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,它们各具特色,互成互补,为单片机的应用提供广阔的天地[6]。纵观单片机的发展过程,可以预示单片机的发展趋势。
- STC89C52RC单片机是宏晶科技推出的新一代高速、低功耗、超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
- 51单片机最小系统电路图如下图所示
4.2、LCD12864显示屏电路设计
-
灰尘传感器可以对1微米以上的灰尘进行检测并通过输出电压的方式对数据进行采集。本系统使用灰尘传感器对室内PM2.5进行监测。
-
LCD12864共有20个引脚,各引脚说明如下面表格所示:
-
电路原理图如下图所示:
4.3、矩阵键盘按键控制部分电路设计
-
按键的闭合与否反应在电压上就是呈现出高电平或低电平,如果高电平表示断开,那么低电平则表示闭合,通过电平的高低状态的检测可确认键按下与否。为了确保CPU对一次按键动作只确认一次,并且防止干扰信号的影响,必需加入消除电平抖动的措施,下图2-5为按键抖动示意。消除抖动通常有硬、软硬两种方法,硬件消除抖动可采取双稳态电路或滤波消抖电路;软件消抖是在第一次检测到有键按下时,执行一段延时程序再确认该键是否仍闭合,如果还是闭合状态则确认该键按下,从而消除抖动和干扰影响。
-
矩阵键盘按键电路设计如下图所示:
4.4、AS608指纹模块电路设计
- 本设计选择的指纹模块型号是AS608,指纹模块里面主要是DSP芯片,型号为AS606,加上外面的CMOS芯片,CMOS芯片主要是对指纹进行“照相”,生成指纹特征,如下图所示就是一个指纹模板,录入两次这样的指纹特征就能生成一个指纹模板。
- 具体的工作过程是:扫描指纹(录入图像)、生成特征、合成模板(建立一个指纹库文件,成功录入一个指纹)。
- 电路原理图如下图所示:
- 实物图:
5、程序设计
5.1、LCD12864屏幕初始化
void LCD_init(void)
{ LCD_write_com(0x30); //选择基本指令集 LCD_write_com(0x0c); //开显示,无游标,不反白LCD_write_com(0x01); //清除显示屏幕,把DDRAM位址计数器调整为00HDelay_nms(5); //清屏操作时间较长1.6ms 因此加此延时LCD_write_com(0x02); //清DDRAM位址归位,此处貌似与清屏重复LCD_write_com(0x06); //设定光标右移,整体显示不移动
}
5.2、AT24C02存储芯片读写操作
/********************************************************************
* 名称 : x24c02_read()
* 功能 : 从24c02中读出值
* 输入 : address(要在这个地址读取值)
* 输出 : 从24c02中读出的值
***********************************************************************/
uchar x24c02_read(uchar address)
{uchar i;start();writex(0xc0);ack();writex(address);ack();start();writex(0xc1);ack();i = readx();stop();return(i);
}/********************************************************************
* 名称 : x24c02_write()
* 功能 : 想24c02中写入数据
* 输入 : address(地址) , info(值)
* 输出 : 无
***********************************************************************/
void x24c02_write(uchar address, uchar info)
{start();writex(0xa0);ack();writex(address);ack();writex(info);ack();stop();
}
6、资料下载
- 演示视频:https://www.bilibili.com/video/BV1jM4m1674i