基于单片机电子密码锁的设计
摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用(毕业设计网 )
关键词:AT89S51,AT24C02, 电子密码锁,矩阵键盘
数字密码锁电路方案
采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。
电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。
密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。
方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。
[资料来源:Doc163.com]
显示电路设计(毕业设计网 )
本系统设计的显示电路是为了给使用者以提示而设置的。考虑到为了节约单片机的口资源,本系统的显示采用串行显示的方式,只使用单片机的两个串行口,就可以完成单片机的显示功能,显示电路的电路原理图如图2-5所示。
电路设定:当程序检测在5分钟内没有按键操作的时候,就关闭显示。这个功能使用程序来实现的,一旦没有按键动作就启动一个定时器,检测在5分钟内没有按键动作的时候,启动一个程序,关闭显示,这样可以达到节省电能的目的。
从单片机串口输出的信号先送到左边的移位寄存器(74HC164),由于移位脉冲的作用,使数据向右移,达到显示的目的。移位寄存器74HC164还兼作数码管的驱动,插头1(header1)接电源,插头2(header2)接数据和脉冲输出端。电路中的三个整流管D1~D3的作用是降低数码管的工作电压,增加其使用寿命。
目 录
摘要。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
一、引言。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
二、方案论证。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
三、电路的功能单元设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
1.开锁机构。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2.按键电路设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
3.显示电路设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
4.AT24C02掉电存储单元的设计。。。。。。。。。。。。。。。。。。。。。。。
5.密码锁的电源电路设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
6.设计总框图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
7.设计总体电路图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
[资料来源:https://www.doc163.com]
四、程序设
计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
(毕业设计网 )
1.模块介绍。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2.程序流程图。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
五、总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
六、程序编码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 [资料来源:Doc163.com]
参考文献 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
源程序
部分源程序如下:
#include <AT89X52.H>
unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9;
unsigned char templen;
unsigned char digit;
unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%256;
TR0=1;
ET0=1;
EA=1;