基于51单片机的指纹红外密码电子锁

1、系统功能介绍

  • 1.采用AT24C02芯片可以实现存储的密码掉电保存。密码为6位,可以随意更改,更改时要输入两遍确认;
  • 2.采用矩阵按键输入、12864液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载
  • 3.有管理员密码,即使望记密码也不怕哈,可以找回;
  • 4.密码输入错误3次,蜂鸣器响,报警锁死;
  • 5.三种开锁方式:红外遥控开锁(红外遥控器)、指纹开锁(指纹模块)和密码开锁(键盘模块)

2、演示视频

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位址计数器调整为00H
 Delay_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、资料下载

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点灯师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值