密码锁说明书.docx

上传人:b****6 文档编号:6418952 上传时间:2023-01-06 格式:DOCX 页数:29 大小:65.87KB
下载 相关 举报
密码锁说明书.docx_第1页
第1页 / 共29页
密码锁说明书.docx_第2页
第2页 / 共29页
密码锁说明书.docx_第3页
第3页 / 共29页
密码锁说明书.docx_第4页
第4页 / 共29页
密码锁说明书.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

密码锁说明书.docx

《密码锁说明书.docx》由会员分享,可在线阅读,更多相关《密码锁说明书.docx(29页珍藏版)》请在冰豆网上搜索。

密码锁说明书.docx

密码锁说明书

湄洲湾职业技术学院

密码锁说明书

 

系别:

自动化工程系

 

年级:

10级专业:

电气自动化

 

姓名:

张佳佳学号:

1101010139

 

导师姓名:

梁锋林职称:

讲师

 

2013年5月27日

 

 

1前言

 

从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。

键盘式电子密码锁在键盘上输入,操作简单,因而易于掌握,其突出优点是“密码”是存储在被授权人脑子里的数字和字符,既准确又可靠,不会丢失,难以被窃。

但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。

当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。

遥控式电子防盗锁主要有光遥控和无线电遥控两类。

光遥控又分为红外线遥控和可见光遥控,光遥控利用窄角度的光传输密码,优点是传输信息量可以很大、速度极快、人眼识别不出来,又无法在光路径上以仪器捕获信号试图复制,因此保密性极高。

无线电遥控的优点也是传输信息量可以很大、速度快、人眼识别不出来,但发射的信号弥散空间,容易被仪器捕获,因此适合采用变化的密码,如所谓的“跳码”、“滚码”(均是随机变化而无明显规律),这样即使捕获了当时的信号也无利用、复制的价值。

使用遥控式电子防盗锁,需要仔细保管遥控器(即钥匙),而且对某些应用而言,这种钥匙大了一点,可能还要使用特定的电池。

当前最为活跃的产品则是使用各种“卡”作为钥匙的电子防盗锁,无论卡的种类如何多种多样,按照输入卡的操作方式,都可分为接触式卡和非接触式卡两大类。

值得注意的是,由于某些行业的安全要求较高,通常不得使用可靠性差、易被仿制的磁卡。

目前接触式卡的技术成熟、价格较低,应用也较为广泛;非接触式卡使用隐蔽、方便,大有后来居上之势。

储存信息量大是卡的优势,它不仅作为钥匙,还可载入多项个人信息,特别适合金融业注重“验明正身”的行业特点,而且一卡多用(如入门、开锁、存储、付费等)带来持卡人的便利。

使用这类电子防盗锁,需要仔细保管卡(即钥匙),尤其丢失了必须尽快取消该卡的授权。

由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是望尘莫及的。

组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是千挑百选、自得其所。

2系统设计技术参数要求

 

1.本系统是由STC89C52单片机为控制核心。

2.键盘扫描,检测用户输入的密码是否与存储的密码一样,假如一样的话则驱动继电器把门打开,不一样则在液晶屏幕上显示错误。

3.用户成功输入密码之后可以修改密码,密码可以存储在AT24C02上面,掉电保存。

4.用户成功输入密码之后可以设置最多允许输入密码的错误次数,这个次数掉电能保存。

5.电源5V

 

3系统设计

 

3.1系统设计总体框图

图3-1系统设计总体框图

3.2各模块原理说明

1.主控模块

STC89C52单片机最初是由Intel公司开发设计的,但后来Intel公司把51核的设计方案卖给了几家大的电子设计生产商,譬如SST、Philip、Atmel等大公司。

如是市面上出现了各式各样的但均以51为内核的单片机,倒是Intel公司自己的单片机却显得逊色了。

这些各大电子生产商推出的单片机都兼容51指令、并在51的基础上扩展一些功能而内部结构是与51一致的。

2.AT24C02模块(核心部分)

AT24C02是一个2K位串行CMOSE2PROM,内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。

AT24C02有一个16字节页写缓冲器。

该器件通过IC总线接口进行操作,有一个专门的写保护功能。

AT24C02支持IC,总线数据传送协议IC,总线协议规定任何将数据传送到总线的器件作为发送器。

任何从总线接收数据的器件为接收器。

数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。

主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。

3.继电器模块

电磁继电器是有触点电继电器的一种。

它是利用电磁效应实现电路开、关控制作用的元件,广泛应用在电子设备、仪器仪表及自动化设备中。

在各种自动控制设备中,都要求用一个低压电路提控制一个高压的电气电路。

这样不仅可以为电子线路和电气电路提供良好的电隔离,还可以保护电子电路和人员安全。

4.液晶模块

液晶显示器(LCD)英文全称为LiquidCrystalDisplay,它一种是采用了液晶控制透光度技术来实现色彩的显示器。

和CRT显示器相比,LCD的优点是很明显的。

由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。

显示接口用来显示系统的状态,命令或采集的电压数据。

本系统显示部分用的是LCD液晶模块,采用一个16×1的字符型液晶显示模块。

3.3系统总原理图说明

本系统采用STC89C52智能锁的硬件和软件设计及实现方法,利用键盘、单片机最小系统、存储器、显示器等电路来设计一个门禁系统的控制电路。

该系统的工作过程为:

当用户输入预先存储在存储器中的密码(通常为6位数字)时,显示器提示相关信息,按开锁键,发光二极管亮,继电器动作门打开;反之,显示器提示错误信息,继电器不动作。

3.4系统印刷电路板的制作图

印刷电路板如附录2

3.5系统的操作说明

(1)键盘扫描,检测用户输入的密码是否与存储的密码一样,假如一样的话则驱动继电器把门打开,不一样则在液晶屏幕上显示错误。

(2)用户成功输入密码之后可以修改密码,密码可以存储在AT24C02上面,掉电保存。

(3)用户成功输入密码之后可以设置最多允许输入密码的错误次数,这个次数掉电能保存。

3.6系统操作注意事项

1.通电使用前,检查电路板是否有虚焊、漏焊、短路、元器件插错等现象。

2.通电使用要先检查电路板上的电源正负极,不得在接错的情况下通电。

3.通电时应把电路板放在绝缘物体上,避开其他导电物体避免发生短路现象。

4.调试电路时应小心操作,避免万用表笔或其它导电工具造成人为短路。

5.调试时,按操作说明进行操作,检测其是否符合系统预先设计的要求

 

参考文献

 

[1]彭伟.单片机C语言程序设计实训100例.电子工业出版社.2009年[2]吴运昌.模拟电子线路基础.广州:

华南理工大学出版社,2004年

[3]阎石.数字电子技术基础.北京:

高等教育出版社,1997年

[4]张晓丽等.数据结构与算法.北京:

机械工业出版社,2002年

[5]马忠梅等.ARM&Linux嵌入式系统教程.北京:

北京航空航天大学出版社,2004年

[6]李建忠.单片机原理及应用.西安:

西安电子科技大学,2002年

[7]韩志军等.单片机应用系统设计[M].机械工业出版社,2004

[8]周润景等.Proteus在MCS-51&ARM7系统中的应用百例[M].电子工业出版社,2006

[9]马忠梅等.单片机的C语言应用程序设计[M].北京航空航天大学出版社,2006

[10]刘树中,孙书膺,王春平.单片机和液晶显示驱动器串行接口的实现[J].微计算机信息,2007年

致谢语

 

即将毕业了,我的三年大学生涯也即将圈上一个句号。

此刻我的心中却有些怅然若失,因为将和那些熟悉的恩师们和同学们挥手告别了。

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,首先我想感谢父母的养育之恩和对我的支持,感谢我的导师梁锋林老师细心指导和帮助,感谢所有教过我的老师,感谢主任,感谢辅导员,不仅授我以文,而且教我做人,虽历时三载,却给以终身受益无穷之道。

感谢我的舍友同学们在我困难的时候帮助我。

在此,谨致以衷心的感谢和崇高的致意!

祝愿所有老师同学们工作顺利,事业上取得更大成功,你们的健康快乐永远是我最大的心愿。

还有,我想要感谢这个伟大的校园:

师者激情演讲、人文气息的熏陶、同学们风华正茂,条条绿荫、处处泛香。

我明白,正是在他那温润宽厚的胸怀上,让我成长起来的,我心我思永系湄职院。

最后我想对所有关心我的人、帮助我的人再次说一声“谢谢”。

 

附录

 

附录1系统总原理图

 

附录2系统印刷电路板的制作图

 

附录3程序

 

#include

#include"LCD1602.h"

#include"key.h"

#include"24c02.h"

sbitLED1=P2^7;

sbitLED2=P2^4;

sbitLED3=P2^1;

sbitRELAY=P1^5;//继电器

unsignedcharUserInput[6]={32,30,30,30,30,30};

bitFlagInputPassword=0;

bitFlagNewPassword=0;

bitFlagNumofTime=0;

unsignedcharNumofTime=3;

unsignedcharCountERROR=0;

bitFlagdead=0;

voidmain()

{

unsignedchari=0;

unsignedcharkey=0;

LCDInit();

LED2=0;//密码没有正确输入的时候,第二个LED亮

LED1=1;//第一个LED不亮

LED3=1;

RELAY=0;//继电器关闭

//writearray();

readarray();

while(!

Flagdead)//将数组array2的值依次赋给P0口显示

{

if(matrix_key_scan()==11)//关锁键,直接回到输入密码界面

FlagInputPassword=0;

if(matrix_key_scan()==10)//当需要输入新的密码时

FlagNewPassword=1;

if(matrix_key_scan()==12)//设置输错次数

FlagNumofTime=1;

while(!

FlagInputPassword)//输入密码界面

{

LED2=0;//密码没有正确输入的时候,第二个LED亮

LED1=1;//第一个LED不亮

LED3=1;

RELAY=0;//继电器关闭

for(i=0;i<6;i++)

UserInput[i]=16;

LCDDispString(0,1,"Inputpassword:

");

LCDDispString(0,2,"");

LCDCursor();

LCDDispChar(2,2,'');

while(UserInput[0]>9)//输入第一个数

UserInput[0]=matrix_key_scan();

LCDDispChar(3,2,'-');

delayms(500);//延时消抖用

while(UserInput[1]>9)//输入第2个数

UserInput[1]=matrix_key_scan();

LCDDispChar(4,2,'-');

delayms(500);//延时消抖用

while(UserInput[2]>9)//输入第3个数

UserInput[2]=matrix_key_scan();

LCDDispChar(5,2,'-');

delayms(500);//延时消抖用

while(UserInput[3]>9)//输入第4个数

UserInput[3]=matrix_key_scan();

LCDDispChar(6,2,'-');

delayms(500);//延时消抖用

while(UserInput[4]>9)//输入第5个数

UserInput[4]=matrix_key_scan();

LCDDispChar(7,2,'-');

delayms(500);//延时消抖用

while(UserInput[5]>9)//输入第6个数

UserInput[5]=matrix_key_scan();

LCDDispChar(8,2,'-');

if(UserInput[0]==array2[0]&&UserInput[1]==array2[1]&&UserInput[2]==array2[2]&&

UserInput[3]==array2[3]&&UserInput[4]==array2[4]&&UserInput[5]==array2[5])

{

LCDDispString(1,2,"");

LCDDispString(3,2,"Correct");

LED1=0;//密码输入正确,第一个灯亮

LED2=1;//第二个灯灭

RELAY=1;//继电器导通

FlagInputPassword=1;

LCDNotCursor();

CountERROR=0;

}

elseif(UserInput[0]==6&&UserInput[1]==5&&UserInput[2]==4&&

UserInput[3]==3&&UserInput[4]==2&&UserInput[5]==1)

{

LCDDispString(1,2,"SuperPassword");

LED1=0;//密码输入正确,第一个灯亮

LED2=1;//第二个灯灭

RELAY=1;//继电器导通

FlagInputPassword=1;

LCDNotCursor();

CountERROR=0;

}

else//密码错误

{

CountERROR++;

LCDNotCursor();

LCDDispString(3,2,"ERROR");

delayms(1000);//延时消抖用

LCDDispString(3,2,"");

for(i=0;i<6;i++)

UserInput[i]=16;

if(CountERROR==NumofTime)

{

FlagInputPassword=1;

Flagdead=1;

LCDDispString(3,2,"DEAD!

");

CountERROR=0;

}

}

}

while(FlagNewPassword==1)//修改密码界面

{

LED2=1;//密码没有正确输入的时候,第二个LED亮

LED1=0;//第一个LED不亮

LED3=0;

RELAY=1;//继电器关闭

LCDDispString(0,1,"Newpassword:

");

LCDDispString(1,2,"");

LCDCursor();

for(i=0;i<6;i++)

{

array1[i]=16;

}

LCDDispChar(2,2,'');

while(array1[0]>9)//输入第一个数

array1[0]=matrix_key_scan();

LCDDispNum(3,2,array1[0]);

delayms(500);//延时消抖用

while(array1[1]>9)//输入第2个数

array1[1]=matrix_key_scan();

LCDDispNum(4,2,array1[1]);

delayms(500);//延时消抖用

while(array1[2]>9)//输入第3个数

array1[2]=matrix_key_scan();

LCDDispNum(5,2,array1[2]);

delayms(500);//延时消抖用

while(array1[3]>9)//输入第4个数

array1[3]=matrix_key_scan();

LCDDispNum(6,2,array1[3]);

delayms(500);//延时消抖用

while(array1[4]>9)//输入第5个数

array1[4]=matrix_key_scan();

LCDDispNum(7,2,array1[4]);

delayms(500);//延时消抖用

while(array1[5]>9)//输入第6个数

array1[5]=matrix_key_scan();

LCDDispNum(8,2,array1[5]);

writearray();//将密码存在24c02中

readarray();

LCDNotCursor();

LCDDispString(3,2,"OK!

");

delayms(1000);//延时消抖用

FlagNewPassword=0;

}

while(FlagNumofTime==1)//设置出错次数

{

LED2=1;//密码没有正确输入的时候,第二个LED亮

LED1=0;//第一个LED不亮

LED3=1;

RELAY=1;//继电器关闭

LCDDispString(0,1,"Numoftime:

");

LCDDispString(1,2,"");

LCDDispNum(6,2,NumofTime);

NumofTime=16;

while(NumofTime>9)

{

NumofTime=matrix_key_scan();

}

LCDDispString(3,2,"OK!

");

delayms(1000);//延时消抖用

LCDDispString(3,2,"");

LCDDispNum(6,2,NumofTime);

FlagNumofTime=0;

}

}

while

(1);

}

#include

#include"24c02.h"

unsignedchararray1[6]={1,2,3,4,5,6,};//写入存储区的数组

unsignedchararray2[6]={0,0,0,0,0,0,};//从存储区读出数据的寄存数组

voiddelayus(unsignedchart)//1.1us11.0592MHz0

{

while(t--);

}

voidc02start()//起始信号

{

sda=1;

delayus(5);

scl=1;

delayus(5);

sda=0;

delayus(5);

}

voidc02stop()//终止信号

{

sda=0;

delayus(5);

scl=1;

delayus(5);

sda=1;

delayus(5);

}

voidc02respons()//应答信号

{

unsignedchari=0;

scl=1;

delayus(5);

while((sda==1)&&(i<250))i++;//sda=1或超时一个成立及默认应答

scl=0;

delayus(5);

}

voidc02init()//24c02初始化

{

sda=1;

delayus(5);

scl=1;

delayus(5);

}

voidc02write(unsignedcharbyte)//写一个字节

{

unsignedchari,temp;

temp=byte;

for(i=0;i<8;i++)

{

temp=temp<<1;

scl=0;

delayus(5);

sda=CY;

delayus(5);

scl=1;

delayus(5);

}

scl=0;

delayus(5);

sda=1;

delayus(5);

}

unsignedcharc02read()//读一个字节

{

unsignedchari,k;

scl=0;

delayus(5);

sda=1;

delayus(5);

for(i=0;i<8;i++)

{

scl=1;

delayus(5);

k=(k<<1)|sda;

scl=0;

delayus(5);

}

returnk;

}

voidwritedata(unsignedcharadd,unsignedchardata0)//从地址“add”处,写入“data0”

{

unsignedchart=255;

c02init();

c02start();

c02write(0xa0);//写器件地址和传输方向

c02respons();

c02write(add);//写首地址

c02respons();

c02write(data0);//写数据

c02respons();

c02stop();

while(t)

{

t--;

}

}

unsignedcharreaddata(unsignedcharadd)//读出地址“add”处的数据

{

unsignedchardata1;

c02init();

c02start();

c02write(0xa0);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1