武汉绘芯科技有限公司欢迎您!
10余年经验沉淀展览展示运动控制的专家
全国咨询热线:027-87052087
联系我们
武汉绘芯科技有限公司
电话:027-87052087
手机:13329706647
邮箱:956693667@qq.com
地址:武汉市江夏区藏龙岛谭湖一路8号
联系人:黄先生
您的位置: 滑轨屏|绘芯科技 > 知识库 >
知识库

电子密码锁的设计与制作

日期:2016-07-29 15:14:45 来源:未知 点击

 

电子密码锁的设计与制作

 

 

1  方案选择和总体设计

1.1 国内外现状

目前,最常用的锁是20世纪50年代意大利人设计的机械锁,其机构简单、使用方便、价格便宜。但在使用中暴露了很多缺点:一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。据统计,每4000把锁中就有两把锁的钥匙齿牙相同或类似,故安全性低。二是钥匙一旦丢失,无论谁捡到都可以将锁打开。三是机械锁的材料大多为黄铜,质地较软,容易损坏。四是机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。由于人们对锁的安全性,方便性等性能有更高的要求,许多智能锁(如指纹辨别、IC卡识别)也相继问世,但这类产品的特点是针对特定指纹或有效卡,但能适用于保密要求高且仅供个别人使用的箱、柜、房间,其成本一般较高,在一定程度上限制了这类产品的普及和推广。

随着人们生活水平的提高,电子密码防盗锁作为防盗卫士的作用日趋重要。电子密码防盗锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。根据国外的统计资料显示,装有电子防盗装置的商业区或居民区盗窃犯罪率平均下降30%左右。目前西方发达国家已经大量地应用这种智能门禁系统,但在我国的应用还不广泛,成本还很高。

1.2设计目标

利用51系列单片机为核心,采用矩阵键盘作为数字输入;6位数字密码显示;可重新设置新密码,EPROM存储密码,掉电不丢失;当输入密码与存储密码一致时,开锁,并响音乐,若连续三次输入错误,则报警灯亮并且蜂鸣器响。

 

 

 

 

2章 硬件设计及电路图

2.1设计方案论证与比较

方案一:卡片式电子密码锁。卡片式电子密码锁,它利用光电耦合的方式,将密码信息从打孔的形式做在卡片上 ,只要将卡片插入锁内,就能将锁打开。如果卡片上密码信息不对,密码锁发出报警声。这种方法是需要卡片做成钥匙,容易被盗和被仿制,安全性不高。

方案二:磁卡式电子密码锁,具有功能强、故障率低、可靠性高和工作寿命长等优点,但这种方法的缺点是磁卡容易消磁,对用户造成不必要的麻烦。

方案三:用AT89S51设计的多功能密码锁。以单片机作为微控制器,可以实现基于以上优点,本系统选用该方案作为设计方案。按键有效指示、输入错误、控制开锁、错误报警、密码修改等功能,工作稳定可靠,保密性高,实用性强。

综合考虑上面的几个方案,我们选用第3个来做。

2.2电子密码锁的总体设计









电子密码锁是由以下几个部分组成的,其核心部分是Atmel司生产的8AT89S51单片机作为整个系统的控制中心。包括驱动电路模块,显示电路模块,报警模块和键盘模块。

如图2所示是一种用AT89S51控制的电子密码锁的原理图。其主要功能为:可设定从1位到8位的密码,从键盘键入正确密码才可更改密码或开锁。输入三次错误密码电路就报警。其主要工作原理为:AT89S51P1口为键盘扫描口,接着34列的键盘即“012…设置、确定”,P3.0P3.1AT24C02,对AT24C02读和写数据。P3.2接一个小喇叭,当按键确实被按下时发出一下提示音,P3.3为按了设置键等输入原密码指示LED控制口,P3.5为开锁信号输出口,P3.4为报警输出口,P3.7为输入新密码LED指示控制口。

2.3 电子密码锁的控制芯片选择

    CPU是整个控制部分的核心。在考虑经济性和满足需求的前提下,本系统选用Atmel司生产的8AT89S51单片机作为整个系统的控制中心。

AT89S51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含2K bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89S51单片机可为您提供许多高性价比的应用场合。

在本系统中,AT89S51单片机内部的功能单元已经能够满足系统设计需要,不需要系统扩展。

2-2  密码锁原理图

AT89S51具有以下的特点:                                     

●兼容MCS-51指令系统                                            

   2k字节可重擦写闪速存储器                       

   1000次擦写周期

   2.7-6.V的宽工作电压范围

   ●全静态操作:0-24MHz

                    

2-3AT89S51引脚功能图

   ●两级加密程序存储器

   128*8字节内部RAM

   15个双向I/O口线

   ●两个16位可编程定时/计数器

   6个中断源

   ●可编程串行UARL通道

   ●可直接驱动LED的输出端口

   ●内置一个模拟比较器

   ●低功耗空闲和掉电模式

24电源部分

外界电源通过五脚开关JK与电源电路部分相连,电源经过稳压管7805进行稳压控制后,再经过RC电路的滤波整流就可以直接攻电路使用了,LED发亮表明电源电路部分正常工作。图2-4是电源部分原理图

                    2-4 电源部分原理图

2.5键盘接口部分

 

 
系统的所有密码设置以及在没有用遥控器开锁的情况下密码的输入都需要由键盘输入。同时采用发光二极管来进行提示操作,使用户操作更加直观和方便。AT89S51单片机的I/O口线共有8根,能够满足系统设计的需要。键盘接口电路设计系统中键盘的功能主要用于用户输入和修改密码。键盘需要设计16 个按键,其中09数字键用于密码的输入和修改。功能键两个,一个为“确定”键,用于密码输入结束后确认,一个为“设置”键,用于修改密码。键盘采用行列式设计,16个按键排成4×4矩阵。设计中用单片机P2口的P2.4P2.7接键盘的4根行线,P2.0P2.34根列线。原理图如图2-5

未命名
 

 

 

 

 

 

 

 

 

 

 

 


2-5  键盘部分原理图

2.6液晶显示器

本设计采用的是LED液晶显示器,接口电路如图2-6所示

1620
 

 

 

 

 

 

 

 

 

 


                     2-6 显示器和单片机的连接图

2.7继电器和蜂鸣器部分

由于继电器和蜂鸣器的工作电压大于单片机AT89S51高电平输出的电压,所以继电器与蜂鸣器由电源电压+5VQ驱动,单片机中的P1.1P1.2分别输出一个高电平脉冲送至晶体三极管Q1Q2的基极,使三级管导通。从而驱动继电器及蜂鸣器工作。继电器工作开关K12导通,进而发光二极管发亮。

蜂鸣器和继电器 

 

 

 

 

 

 

 

 

 

 

 

2-7  继电器部分电路原理图

2.8小结

本章详细叙述了电子密码锁系统硬件电路的结构,分析了各个硬件电路的工作原理。在设计硬件电路的同时,充分考虑将软件和硬件结合起来,发挥单片机的智能化优势。简化硬件电路的设计,提高硬件电路的可靠性和稳定性

 

 

 

 

 

 

 

 

 

 

 

 

 

第三章  软件设计和程序清单

软件是整个控制系统设计的核心,它具有充分的灵活性,可以根据系统的要求而变化。在硬件结构一定的情况下,只要改变软件就能实现一些不同的功能。单片机所具有的智能功能要由软件来完成。

3.1  系统软件总体设计

系统上电后首先完成初始化工作,然后按照事先设定好的程序执行。本系己程序是基于单任务机制的。这种机制的应用程序是一个无限的循环,在这循环的过程中调用相应的子程序函数来完成相应的操作。这种机制具有简单直观,易于控制的优点。

在本系统中,软件结构应采用模块化设计方法,主要包括主程序,键盘程序,密码比较模块,密码修改程序等等。上电复位后,初始化各端口,标志位和有关寄存器,接着从AT24C02中读入密码,然后开始检测键盘是否有输入,如没有就不断检测,如果有输入就转到相应处理程序。例如按了设置键,则P3.3输出低电平,等输入原密码指示灯LED亮,接着如果输入了正确的原密码并按了确定键,P3.7输出低电平,可以输入新密码指示LED亮,接着输入新密码按确定键,新密码被写入24C02中,P3.3P3.7输出高电平,等输入原密码指示LED熄灭,可以输入新密码,指示LED熄灭,程序转为复位程序。如果在设置状态,输入了错误的密码,P3.5不断输出高电平报警。上电复位后按数字键6次,或按了小于6次数字键,再按了确定键则比较密码是否对,如果不对,P3.4开锁信号输出口输出低电平,锁不开,这时还可再输入两次,如还不对则P3.5不断输出高电平报警。如果输入对了,P3.4开锁信号输出口输出高电平,锁打开4秒钟后,程序转为复位后。

1.模块介绍

该计程计价系统的软件设计分为以下几个模块:

(1)主程序模块

主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。主程序的流程图如下图3-1所示。

(2)键盘扫描及识别子程序

   键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。其程序流程如图3-1 所示.

(3)调电存储服务程序

当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C02中,其程序流程如图3-2 所示.

(4)显示子程序

由于是分屏显示数据,所以就要用到5个显示子程序,分别是:关闭状态显示子程序(DIS_A)、开锁状态显示子程序(DIS_B)、密码输入及修改状态显示子程序(DIS_C)、密码输入错误后的提示子程序(DIS_D)。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序(DIS_E).

程序流程图如3-13-2所示:

程序

;

          org 0000h;

          ljmp start;

          org 000bh;

          ljmp intermit_t0;

          org 001bh;

程序清单如附录表一所示。

 

 

4章 实物制作及调试说明

根据设计原理图购买所需元器件,然后使用PROTEL99SE画好原理图和PCB图,然后制作PCB板,按照画图----PCB板制作查看板----压板---钻孔---焊接元器件——检查的步骤把实物板制作完整。

调试

根据方案设计的要求,调试过程共分为三大部分:硬件调试、软件调试、和软硬件联调。电路按模块调试,各模块逐个调试后再联调。单片机软件先在最小系统板上调试,确保外部EPROMRAM工作正常以后,再与硬件系统联调。

调试仪器:万用表

1、硬件调试

电源电路:将做好的电路板接上9V直流电源,用万用表测试各点的电压,看电路是否导通,先把电源接到电路板上对应的接口,打开电源开关,结果是电源灯不亮,原因1:电源不通,原因2:灯的正负极接反,原因3:灯是坏的。根据三个原因一一检查,结果发现是灯的正负接反了,换过来以后灯亮了。把万用表调到10V的档位,然后黑表笔接到89S5120脚,红表笔接40脚记录所测得的电压。如果所得电压小于3V或者没有电压则要检查电路是否有虚焊或者线路不连通的情况。相应的红表笔接到31脚看是否有电压,步骤如前面的一样,结果显示电压正常。

显示部分的电路:测试显示器的第1脚和2脚、第2脚和15脚之间看是否有5V电压,没有电压则要检查线路,有电压则正常工作。结果显示正常。

键盘部分:将硬件的键盘和主板连起来,按下按键,看液晶显示器上是否有输出。查看是否有虚焊不通的情况。

经过一步步的检查硬件的问题已经解决,可以正常工作了!

2、软件调试

把编写好的程序写到电脑上,用伟福软件进行编译,看语法是否有错误,把有错误的地方要改正过来。经过参照资料和请教老师,结果软件没有问题。

3、软硬联调

把调试好的程序烧录到单片机上。将硬件接上9V的直流电源,按照操作说明操作了但是没有成功。然后检查硬件电路的问题,结果没有发现什么问题,然后就是软件了,把原来的软件清除了,重新烧录进去。结果显示正常。

 

 

 

5章 电子密码锁使用说明书

本设计采用的是5V的直流电压,在电源输入端的第1脚接正,第2脚接负电,把电源开关拨向右边,电源灯LED1亮和液晶显示器上有显示ASET  BOPEN。则说明电路导通可以工作。注:原始密码是123456.

数字键0—9:做输入密码使用。

A键:功能是重新设置密码,按下以后屏幕会显示INPUT PASSWORD,要先用数字键盘0~~9输入6位数字与原来设的6位密码相同后屏幕会显示RESET PASSWORD并且开锁灯亮才可以重新输入新的6位密码。输入的密码和原来设置好的密码不一样屏幕显示PASSWORD ERROR就不可以重新设置。

B键:功能是开锁,按下以后输入6位数字密码,屏幕显示PASSWORD OK就可以开锁,继电器工作开锁灯LED3亮。错误的话蜂鸣器会响,显示器显示:PASSWORD ERROR。重新输入密码,如果三次输入密码不正确蜂鸣器就会发出报警,并且锁死,报警灯LED2亮。

C键:功能是返回。

注意:1、不能将电源的正负极接反

      2、不能接高于12V的电压,否则会烧坏电路。

      3、不能接交流电。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

结束语

     这次毕业设计收获很多,也学到了很多知识。令我对设计的概念有了一个新的认识。以前做的设计基本都是在书上找别人设计好的方案来做,而且制作简单没有什么很大的技术问题。这次自己亲自查资料做的设计,体会很深,也学到很多在书上学不到的知识。

     首先是方案的确定,综合考察了10个设计题目,初步确定了密码锁这个方案,接下来就是查资料,去图书馆一下借了几本有关单片机的应用的书来查阅,结合自己的设计目标来选择相关的器件和电路的连接方案。经过查阅资料和询问指导老师,把方案确定后接下来的工作就是画原理图,由于很长时间没有用PROTELL99SE画图了,而且有一些元器件是要自己画管脚的,所以在画的时候碰到很多困难,还有元件的封装。最后借助书本和向同学请教才把原理图画出来了,接下来遇到的大问题就是布线,布线中先是有线交叉,重新调节元件的位置以后还是出现同样的问题。最后在同学的帮助下才把PCB画好。 接下来的工作就是做板了,按照流程一下子就把板子做好了,元件都焊好了就开始硬件调试在我们设计和调试的过程中,也发现了一些问题,解决了很多问题。

收获:通过毕业设计,对我来说体会真的很深,感觉从大一到现在第一次忙到连睡觉的时候都想着怎么样才可以把自己的设计做好。从一开始的确定方案到最后测试,每一步的进行自己都花了100分的心思去做了。用自己的话说:真的很辛苦,但是很值得。天天都是往图书馆去查资料,去机房画PCB,跑实验楼做板和调试,一天两趟。但是最大的收获是学到了很多知识,也积累了一些经验,这个过程让我发现自己在学习过程中的很多不足,以前看的书太少了 ,尤其是关于专业类的书籍,没有好好利用现有的资源。

这次设计采用软硬件结果,发挥了89S51的优点,功能强大,操作方便等等。还有很多可扩展功能,希望往后的设计很更加完善,能设计出更加好的成品来。

 

 

 

 

 

 

 

 

 

 

 

 附录

 

附录表一:程序清单

      


   en bit p3.0;

          rw bit p3.1;

          rs bit p3.2;

          display equ p0;

 

          speaker bit p1.0;

          led     bit p1.2;

          open    bit p1.1;

          returnbit bit 20h.1;

 

 

          org 0000h;

          ljmp start;

          org 000bh;

          ljmp intermit_t0;

          org 001bh;

          ljmp intermit_t1;

          org 0030h;

start:

          mov sp,#60h;

          lcall sys_initialization;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序

main0:    lcall strat_display;

main:

          mov 52h,#0; 52h判断输入错误次数储存地址

          setb led;

          setb tr0;

          lcall key;

          cjne a,#'A',next1;

          ljmp  set_password;

next1:    cjne a,#'B',next2;

          ljmp  input_password;

next2:    ajmp main;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;系统初始化

sys_initialization:

         clr led;

         clr open;

         clr speaker;

 

         mov 34h,#'1';

         mov 35h,#'2';

         mov 36h,#'3';

         mov 37h,#'4';

         mov 38h,#'5';

         mov 39h,#'6';

        ;存放初始密码

 

         mov r7,#12;

         mov r0,#40h;

loop:    mov @r0,#00h;

         inc r0;

         djnz r7,loop;

        ;密码键值存放区清零完毕

 

         lcall delay0_1s;

         mov p0,#03h;

         call write_instruction; 液晶软复位

 

         mov p0,#01h;

         call write_instruction;

 

         mov p0,#3fh;

         call write_instruction;

 

         mov p0,#0fh;

         call write_instruction;

 

         mov p0,#06h;

         call write_instruction;

         ;液晶初始化完毕

 

         mov r4,#10;

         mov tmod,#11h;

         mov th0,#3ch;

         mov tl0,#0b0h;

         setb ea;

         setb et0;

         ;定时器T00.5S定时中断初始化完毕

 

         ret;

         ;系统初始化完毕

 

;;;;;;;;;;;;;;;;;;;;;;中断服务程序

intermit_t0:

          push acc;

          push psw;

          mov th0,#3ch;

          mov tl0,#0b0h;

          djnz r4,return;

          cpl led;

          mov r4,#10;

return:   pop psw;

          pop acc;

          reti;

 

intermit_t1:

          push acc;

          push psw;

          mov th1,#9eh;

          mov tl1,#58h;

          djnz r4,return_t1;

          cpl led;

          cpl speaker;

          mov r4,#10;

return_t1:pop psw;

          pop acc;

          reti;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;键盘扫描

key:     call ks;

         jnz k1;

         jmp key;

 

k1:

         call delay;

         call ks;

         jnz k2;

         jmp key;

 

k2:

         clr tr0;

         clr led;

         mov r2,#0feh;

         mov r6,#00h;

 

k3:      mov a,r2;

         mov p2,a;

         mov a,p2;

         jb acc.4,l1;

         mov a,#0;

         ljmp lk;

 

l1:      jb acc.5,l2;

         mov a,#4;

         ljmp lk;

 

l2:      jb acc.6,l3;

         mov a,#8;

         ljmp lk;

 

l3:      jb acc.7,next_key;

         mov a,#12;

 

lk:      add a,r6;

         mov r6,a;

 

k4:      call ks;

         jnz k4;

         mov a,r6;

         mov dptr,#table0;

         movc a,@a+dptr;

         mov 50h,a;    查表取值存入50h,保护键值

 

 

         ret;

 

next_key: inc r6;

          mov a,r2;

          jnb acc.7,key;

          rl a;

          mov r2,a;

          jmp k3;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;

ks:      mov p2,#0f0h;

         mov a,p2;

         xrl a,#0f0h;

         ret;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;设置密码程序

set_password:

         call clear_display;

         mov dptr,#table4;

         call input_hint;

 

         mov r0,#40h;

         call password;

         jbc returnbit,set_password;

         ;先输入原密码完毕

 

         mov r5,#6;

         mov r0,#40h;

         mov r1,#34h;

input_compere:

         mov a,@r0;

         xrl a,@r1;

         jnz input_error;

         inc r0;

         inc r1;

         nop;

         nop;

         djnz r5,input_compere;

         ;验证输入密码完毕

         jmp set_password0;

 

input_error:

         setb speaker;

         setb led;

 

         call clear_display;

         mov dptr,#table5;

         call input_hint;

         call delay1_5s;

 

         clr speaker;

         clr led;

 

         inc 52h;

         mov a,52h;

         cjne a,#3,set_password;

         sjmp $;

         ;输入密码错误次数超过3次,锁死

 

set_password0:

         call clear_display;

         mov dptr,#table2;

         call input_hint;

 

         mov r0,#40h;

         call password;

         jbc returnbit,set_password;

         ;第一次输入新密码完毕

 

         call clear_display;

         mov dptr,#table3;

         call input_hint;

         call delay1_5s;

         ;显示再次输入新密码完毕

 

         call clear_display;

         mov dptr,#table4;

         call input_hint;

 

         mov r0,#46h;

         call password;

         jbc returnbit,set_password;

         ;第二次输入新密码完毕

 

         mov r5,#6;

         mov r0,#40h;

         mov r1,#46h;

set_compere:

         mov a,@r0;

         xrl a,@r1;

         jnz set_error;

         inc r0;

         inc r1;

         djnz r5,set_compere;

 

         mov 34h,40h;

         mov 35h,41h;

         mov 36h,42h;

         mov 37h,43h;

         mov 38h,44h;

         mov 39h,45h;

         ;存入新密码完毕

 

         jmp main0;

         ;设置新密码成功,返回主程序

 

set_error:

         setb speaker;

         setb led;

 

         call clear_display;

         mov dptr,#table5;

         call input_hint;

         call delay1_5s;

 

         clr speaker;

         clr led;

 

         ljmp set_password0;

         ;前后两次输入新密码不一致,返回重设

 

 

 

 

 

;;;;;;;;;;;;;;;;;;输入密码开锁程序

input_password:

         call clear_display;

         mov dptr,#table4;

         call input_hint;

 

         mov r0,#40h;

         call password;

         jbc returnbit,input_password;

         ;输入原密码完毕

 

         mov r5,#6;

         mov r0,#40h;

         mov r1,#34h;

input_compere0:

         mov a,@r0;

         xrl a,@r1;

         jnz input_error22;

         inc r0;

         inc r1;

         nop;

         nop;

         djnz r5,input_compere0;

         ;验证输入密码完毕

         jmp display_right;

 

input_error22:

         setb speaker;

         setb led;

 

         call clear_display;

         mov dptr,#table5;

         call input_hint;

         call delay1_5s;

 

         clr speaker;

         clr led;

 

         inc 52h;

         mov a,52h;

         cjne a,#3,input_password;

         sjmp $;

         ;输入密码错误超过3次,锁死

 

display_right:

         call clear_display;

         mov dptr,#table6;

         call input_hint;

         ;显示输入密码正确提示完毕

 

         setb open;   开锁

next_key1:call key;

          nop;

          nop;

          cjne a,#'F',next_key1;

          clr open;   按下关锁键,关锁

          jmp main0;   返回主程序

 

 

;;;;;;;;;;;;;;;;;;;;;;;;

strat_display:

         mov p0,#80h;

         call write_instruction;

         mov dptr,#table1;

         call input_hint;

         mov p0,#0c0h;

         call write_instruction;

         mov dptr,#table11;

         call input_hint;

         ret;

 

clear_display:

         mov display,#01h;

         call write_instruction;

         mov p0,#06h;

         call write_instruction;

         ret;

 

input_hint:

         mov r5,#16;

         mov a,#00h;

all_or_not:

         movc a,@a+dptr;

         mov display,a;

         call writedata;

         inc dptr;

         clr a;

         nop;

         nop;

         djnz r5,all_or_not;

         ret;

 

password:

         mov r5,#6;

         mov r1,#0c0h;

         mov a,r1;

         mov p0,a;

         call write_instruction;

loop1:   call key;

         nop;

         nop;

         cjne a,#'C',next_to;

         setb returnbit;

         jmp endt;

next_to:

         mov a,50h;

         mov @r0,a;

         mov display,#'*';a;

         call writedata;

         inc r1;

         inc r0;

         djnz r5,loop1;

endt:    ret;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;写数据指令

writedata:   SETB rs;

         CLR  rw;

             clr en;

             setb en;

             nop;

             nop;

             clr en;

             call delay;

             ret;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;写指令

write_instruction:

             CLR rs;

             CLR rw;

             clr en;

             setb en;

             nop;

             nop;

             clr en;

             call delay;

             ret;

 

;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;延时程序

delay1_5s:   push 07h;

             push 02h;

             push 03h;

             mov r7,#15;

del22s:      mov r3,#0;

del11s:      mov r2,#0;

             djnz r2,$;

             djnz r3,del11s;

             djnz r7,del22s;

             pop 03h;

             pop 02h;

             pop 07h;

             ret;

 

delay0_1s:   push 02h;

             push 03h;

             mov r3,#0;

del21s:      mov r2,#0;

             nop;

             nop;

             djnz r2,$;

             djnz r3,del21s;

             pop 03h;

             pop 02h;

             ret;

 

 

delay:   push 07h;

         push 06h;

         mov r7,#10;

d1:      mov r6,#248;

         nop

         nop

         djnz r6,$;

         djnz r7,d1;

         pop 06h;

         pop 07h;

         ret

 

 

;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;

table0:  db  'C','B','0','A';

         db  'D','9','8','7';

         db  'E','6','5','4';

         db  'F','3','2','1';

table1:   db  'PASSWORD: A SET ';

table11:  db  '          B OPEN';

table2:   db  'SET PASSWORD:   ';

table3:   db  'INPUT AGAIN!    ';

table4:   db  'INPUT PASSWROD: ';

table5:   db  'PASSWORD ERROR! ';

table6:   db  'PASSWORD OK!!!  ';


;;;;;;;;;;;;;;;;;;;;;;;;;;

          end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

附录表二:      

 

    

元器件清单表

元器件名称

个数

AT89S51

1

7805稳压管

1

开关

17

蜂鸣器

1

12MHZ晶震

1

6脚继电器

1

910K排阻

1

铜板

1

1K电阻

3

40P2C

1

1×40

1

1620液晶显示器

1

电源线

1

40脚插座

1

200欧姆电阻

1

220欧姆电阻

1

560欧姆电阻

1

10K电阻

4

瓷片电容33PF

2

电极电容100Uf22uF

1

瓷片电容103

1

电位器

2

三极管9014

2

发光二极管

3

 

 

 

 

 

附录表三:电路原理图

 

 

    

 

 

 

 

 

 

PCB

 

 

参考文献

 

[1 ] 李文石,电子锁的发展和设计综述,五金科技,33-61993

[2 ] 王磊,PLC 控制的多功能磁卡式电子密码锁设计,河南大学学报,283):58-611998

[3 ] 宋文阁,李明颖,王学俊, 单片机控制IC卡电子锁,大连轻工业学院学报 182):111-1151999

[4] 曾咭昭, 外遥控电子密码锁应用研究 国外电子元器件,47-82002

[5] 祖龙起,刘仁杰, 一种新型可编程密码锁 大连轻工业学院学报 211):41-432002

[6] 汤荣生,李文石,触摸式电子锁的探头设计,五金科技,286):12-142000

[7] 宁爱民,应用AT89C2051单片机设计电子密码锁 淮海工学院学报 122):28-312003

 

 

 


在线客服
联系方式

热线电话

13329706647

上班时间

周一到周五

公司电话

027-87052087

二维码
线