基于51单片机的密码锁论文

更新时间:2024-05-22 05:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。具有防盗报警等功能的电子密码锁代替密码量少、安全性差的机械式密码锁已是必然趋势。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作、记住密码即可开锁等优点。

目前使用的电子密码锁大部分是基于单片机技术,以单片机为主要器件,其编码器与解码器的生成为软件方式。

本系统由STC89C51单片机系统(主要是STC89C51单片机最小系统)、4×4矩阵键盘、LCD1602显示和报警系统等组成,具有设置、修改六位用户密码、超次报警、超次锁定、密码错误报警等功能。

关键词: STC-89C51、LCD1602、电子密码锁、4×4矩阵键盘

Abstract

In our daily life and work, the security of residential and department, the file of the unit, the financial report and the preservation of some personal data are more and more. If using the traditional mechanical key to unlock, people often need to carry more than the key, the use of extremely inconvenient, and the key is lost after the security is greatly reduced. It is an inevitable trend to have a mechanical cipher lock which has the function of anti theft alarm, less password lock, less security. With the continuous development of science and technology, people's daily life in the safety of the device is increasingly high requirements. In order to meet the requirements of the use of the lock, increase its security, with a password to replace the key to the password lock came into being. The password lock has the advantages of high security, low cost, low power consumption, easy operation, remember password can unlock and so on.

At present, most of the electronic cipher lock is based on SCM technology, with the single chip microcomputer as the main device, the encoder and decoder are generated as the software mode.

This system is composed of STC89C51 microcontroller system (STC89C51), 4 * 4 matrix keyboard, LCD1602 display and alarm system, etc., which has the functions of setting up and modifying six user passwords, super alarm, super lock, password error alarm and so on.

Key words:STC-89C51;LCD1602;Electronic password lock;4×4keyboard

目录

1.引言 ............................................................... 1

1.1.研究背景 ..................................................... 1 1.2.设计内容及要求 ............................................... 1 2.硬件设计 ........................................................... 3

2.1.系统整体设计 ................................................. 3 2.2.子电路设计 ................................................... 4

2.2.1.单片机STC89C51简介 ..................................... 4 2.2.2.AT24C02存储芯片 ........................................ 6 2.2.3.LCD显示模块 ............................................ 8 2.2.4.键盘设计 ............................................... 11 2.2.5.声音提示模块 ........................................... 12 2.2.6.继电器控制模块 ......................................... 13

3.软件设计 .......................................................... 15

3.1.系统整体流程图 .............................................. 15 3.2.键盘扫描子程序 .............................................. 16 3.3.系统模块密码设置子程序 ...................................... 16 3.4.开锁子程序 .................................................. 18 4.调试与测试 ........................................................ 19

4.1.焊接注意事项: .............................................. 19

4.1.1.LCD的注意事项 ......................................... 19 4.1.2.单片机焊接注意事项 ..................................... 19 4.1.3.其他的电子器件焊接须知 ................................. 19 4.2.硬件调试问题及解决方法 ...................................... 20 4.3.测试结果 .................................................... 20 5.总结与展望 ........................................................ 22 参考文献 ............................................................ 23 附录 ................................................................ 24

附录A:仿真图 ................................................... 24 附录B:C语言主要程序 ........................................... 24 附录C:实物图 ................................................... 30 附录D:设计分工 ................................................. 30

1. 引言

1.1. 研究背景

随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加电子元器件实现数据采集和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。

随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。这种锁是通过键盘输入一组密码完成开锁过程。由于电子锁的密钥量极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。

在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用 1.2. 设计内容及要求

(1)本设计为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号。 (2)设计开锁密码位六位密码的电子密码锁。

(3)能够LCD显示在密码正确时显示open,密码错误时显示error,输入密码时显示INPUT。

1

(4)4×4的矩阵键盘其中包括0-9的数字键、*、#和A-D功能键 (5)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。 (6)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作 。

2

图2.2.10 蜂鸣器整体模框图

2.2.6. 继电器控制模块

电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。

13

图2.2.11 继电器整体模框图

电路中继电器室通过PNP型三极管驱动,当阀值超过设定时,单片机会由高电平跳变成低电平,三极管导通继电器吸合,继电器起开关作用,可以驱动负载。

14

3. 软件设计

3.1. 系统整体流程图

本系统软件设计由主程序、初始化程序、LCD显示程序、键盘扫描程序、键功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。主要程序设计流程图如图3.1所示:

开始 旧密码输入 初始化 新密码输入 A 模式选择 B 存入缓存区 N 再次输入密码 重新输入 识别按键 手动清除 N 密码输入 Y 密码比较 设置完毕返回 开门

图3.1 程序设计流程图

15

3.2. 键盘扫描子程序

图3.2 键盘扫描子程序图

3.3. 系统模块密码设置子程序

由于设计是分模块化进行,所以子程序是整体软件系统的组成部分,子程序不但可以使程序化整为零,使其复杂简单化,同时也方便阅读,修改等,每个功能模块都有它自己的子程序,在本设计中是用LCD显示数据,所以就要用到显示子程序,设计中用的是矩阵键盘,所以就用到键盘扫描子程序,例如还有显示初始

16

化子程序、LCD忙检测子程序、关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序等。下图3.3为密码修改子程序流程图

设置程序 初始化 按下设置键 输旧密码 确认程序 所输入旧密码N 正确? 输入次数加1 Y N 输新密码 次数>3? Y 确认程序 报警程序 再次输新密码 返回 确认程序 N 两次新密码输入相同? Y 设置成功

图3.3 设置密码子程序

17

3.4. 开锁子程序

开锁程序 初始化 按开锁键 输入密码 确认程序 N 所输入密码正确? 输入次数加1 N 3次数>3? Y Y 报警程序 开锁成功 返回

图3.4 开锁子程序流程图

18

4. 调试与测试

4.1. 焊接注意事项: 4.1.1. LCD的注意事项

1.采用焊接方法将金属基PIN安装于LCD时,从玻璃末端到PCB的焊接位置的长度至少5mm,焊接温度必须在260℃以下,且焊接时间必须在10秒以内,以免焊接过程中对装置的损坏,确保焊接性能。在230℃,30秒条件下,90%的焊料须紧密附着于PIN上。

2.对LCD基板或基PIN焊接位置的调整必须在安装前完成。严禁猛烈移动基PIN,否则会机械地破坏LCD屏与基PIN之间的连接点。焊接时平放LCD,尽量不让LCD受力。

3.焊接LCD基板时,将其小心、平衡地插入PCB插槽,以避免损坏基PIN或LCD基板。

4.焊接时,LCD基板不应长时间置于焊锡蒸汽中,清洗PCB时,必须避免污染LCD基板,否则可能损坏显示器表面的偏光片及封口胶。

5.显示器表面的保护膜直到焊接完成才可揭掉,禁止手指及其它硬物接触偏光片,禁止水和其他化学物质沾污装置,因为这些物质会污染显示器表面。 4.1.2. 单片机焊接注意事项

80s51单片机与其它单片机,dsp,arm芯片相比较而言是脆弱的,如果焊接时不小心就很可能把芯片损坏!建议用比较好的恒温可调的烙铁,功率在30瓦左右,温度控制在260到300度,建议采用点焊而不用拉焊,焊接时烙铁放在每个引脚的时间不能太长(最好低于3秒)。上边提到的方法还不能确保芯片完好,对芯片有危害的还有带电烙铁的静电感应!烙铁质量不是太好的,焊接时可以把烙铁电源插头拔掉。

4.1.3. 其他的电子器件焊接须知

一般分四步骤进行。①准备焊接:清洁被焊元件处的积尘及油污,再将被焊元器件周围的元器件左右掰一掰,让电烙铁头可以触到被焊元器件的焊锡处,以免烙铁头伸向焊接处时烫坏其他元器件。焊接新的元器件时,应对元器件的引线镀锡。②加热焊接:将沾有少许焊锡和松香的电烙铁头接触被焊元器件约几秒钟。若是要

19

拆下印刷板上的元器件,则待烙铁头加热后,用手或银子轻轻拉动元器件,看是否可以取下。③清理焊接面:若所焊部位焊锡过多,可将烙铁头上的焊锡甩掉(注意不要烫伤皮肤,也不要甩到印刷电路板上!),用光烙锡头\沾\些焊锡出来。若焊点焊锡过少、不圆滑时,可以用电烙铁头\蘸\些焊锡对焊点进行补焊。④检查焊点:看焊点是否圆润、光亮、牢固,是否有与周围元器件连焊的现象。

焊接流程按照附录I所示的电子密码锁的硬件联接原理图按下列顺序依次焊接:

(1)焊接单片机的晶振电路、复位电路等单片机的最小系统的外围电路。 (2)焊接LCD的相应管脚并把LCD的管脚单片机相连接。 (3)焊接键盘的按键电路。

(4)焊接电子密码锁的密码输入错误的报警电路。 (5)焊接密码锁的开锁机构电路。 (6)焊接其他接口及辅助电路。 (7)焊接接地及高电平。 4.2. 硬件调试问题及解决方法

本设计在焊接调试时遇到的问题以及解决方法:

(1)在焊接完成时,插电进行测试,发现LCD1602只在第一行显示小方块,没有显示内容,在经过查阅资料后发现问题所在为排阻第一脚应接Vcc,改正后正常显示。

(2)在调试过程中发现LED灯一直处于点亮状态,经仔细检查发现,在三极管基极(B极)一端引出了一根线接了电源,去掉后即可正常使用。 4.3. 测试结果

图4.3.1 实物运行结果

20

图4.3.2 仿真运行结果

21

5. 总结与展望

本设计从经济实用的角度出发,采用单片机STC89C51低功耗CMOS型E2PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路并用C语言的控制程序,研制了一款可以多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目地。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。可在意外泄密的情况下随时修改密码。保密性强,灵活性高,特别适用于家庭、办公室、学生宿舍及宾馆等场所。

22

参考文献

[1]何宏主编.单片机原理与接口技术[M]. 北京:国防工业出版社. 2006.07 [2] 杨西明,朱骐主编.单片机编程与应用入门[M].北京:机械工业出版社.2004.06

[3] 先锋工作室编著. 单片机程序设计实例[M]. 北京:清华大学出版社.2003.01 [4] 王宽仁. 可靠安全的智能密码锁[J]. 电子技术应用,2001

[5] 李捷,陈典涛,陈建华,等. 一种基于单片机的电子密码锁的设计[J]. 农机化研究,2004.05

[6] 董继成. 能防止多次试探密码的单片机密码锁[D].国外电子元器件,2004.03 [7]赵益丹,徐晓林,周振峰编著.电子密码锁的系统原理、设计程序及流程图[J].嘉兴学院学报,2003,15

[8] 张培仁.基于C语言编程 MCS- 51单片机原理与应用[M]. 北京:清华大学出版社,2002.12

[9] 范风强兰婵丽.单片机语言C51应用实战集锦[M].电子工业出版社,2003.03 [10] 王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.08

23

附录

附录A:仿真图

附录B:C语言主要程序

void ResetPassword() //更改密码 {

unsigned char i; unsigned char j; if(pass==0) {

pass=0;

DisplayChar(); ThreeAlam(); } else

24

{

if(ReInputEn==1) {

if(N==6) {

ReInputCont++; if(ReInputCont==2) {

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

if(TempPassword[i]==InputData[i]) //将两次输入的新密码作对比 i++; else {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(Error[j]); }

ThreeAlam(); //错误提示 pass=0;

ReInputEn=0; //关闭重置功能, ReInputCont=0; DisplayChar(); break; } }

if(i==6) {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(ResetOK[j]); }

TwoAlam(); //操作成功提示

WrToROM(TempPassword,0,6); //将新密码写入24C02存储 ReInputEn=0; }

ReInputCont=0; CorrectCont=0; } else {

25

OneAlam();

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(again[j]); }

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

TempPassword[i]=InputData[i]; //将第一次输入的数据暂存起来 } }

N=0; //输入数据位数计数器清零 } } } }

void Cancel()//取消键 {

unsigned char i; unsigned char j; write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(start_line[j]); }

TwoAlam(); //提示音 for(i=0;i<6;i++) {

InputData[i]=0; }

KEY=1; //关闭锁 ALAM=1; //报警关

pass=0; //密码正确标志清零

ReInputEn=0; //重置输入充许标志清零 CorrectCont=0; //密码正确输入次数清零 ReInputCont=0; //重置密码输入次数清零 open_led=1; key_disable=0;

N=0; //输入位数计数器清零 }

26

void Ensure()//确定键 {

unsigned char i,j;

RdFromROM(CurrentPassword,0,6); //从24C02里读出存储密码 if(N==6) {

if(ReInputEn==0) //重置密码功能未开启 {

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

if(CurrentPassword[i]==InputData[i]) { i++; }

else { i=7;

ErrorCont++;

if(ErrorCont>=3&&KEY==1) //错误输入计数达三次时,报警并锁定键盘 {

write_1602com(er); for(i=0;i<16;i++) {

write_1602dat(Error[i]); }

Alam_KeyUnable(); pass=0; break; } } }

if(i==6) {

CorrectCont++;

if(CorrectCont==1) //正确输入计数,当只有一次正确输入时,开锁, {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(LockOpen[j]); }

TwoAlam(); //操作成功提示音 ErrorCont=0;

27

KEY=0; //开锁

pass=1; //置正确标志位 TR0=1; //开启定时

open_led=0; //开锁指示灯亮 for(j=0;j<6;j++) //将输入清除 {

InputData[i]=0; } }

else //当两次正确输入时,开启重置密码功能 {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(SetNew[j]); }

TwoAlam(); //操作成功提示 ReInputEn=1; //允许重置密码输入 CorrectCont=0; //正确计数器清零 }

}

else {

if((InputData[0]==1)&&(InputData[1]==2)&&(InputData[2]==3)&&(InputData[3]==6)&&(InputData[4]==6)&&(InputData[5]==6)) {

WrToROM(initpassword,0,6); //将初始密码写入24C02存储 write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(initword[j]); }

TwoAlam(); delay(400); TwoAlam(); N=0; } else {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(Error[j]);

28

}

ThreeAlam(); //错误提示音 pass=0; } } }

else //当已经开启重置密码功能时,而按下开锁键, {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(Er_try[j]); }

ThreeAlam(); } } else {

write_1602com(er); for(j=0;j<16;j++) {

write_1602dat(Error[j]); }

ThreeAlam(); //错误提示音 pass=0; }

N=0; //将输入数据计数器清零,为下一次输入作准备

29

附录C:实物图

附录D:设计分工

30

本文来源:https://www.bwwdw.com/article/gu27.html

Top