密码锁的研究与设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算机控制技术》
学号: 201172020143 姓名: 张淑英班级: 电子信息工程一班
成绩:
评语:
(考试题目及要求)
密码锁的研究与设计
通过对计算机控制课程的学习,结合课程中对单片机知识的复习以及对计算机控制的基本原理的理解,完成了该设计。

该课程作业主要是对密码锁的研究与设计。

本控制器AT89C51单片机为核心键盘、显示电路,输出控制电路,告警提示电路等构成。

利用目前使用的微处理器AT89C51 作为控制元件设计了一种电子密码锁。

其具有可设置多组密码、多次改写和保存密码的优点,克服了普通锁需要随身携带钥匙且易丢失、保密性差的缺点,在宾馆、办公大楼、
仓库、保险柜和家庭普遍适用。

目录
一、课题背景及意义....................................................................................... - 3 -
二、设计要求................................................................................................... - 4 -
三、设计思路及设计方案............................................................................... - 4 -
(一)设计方案选择............................................................................... - 4 - (二)总体方案思路............................................................................... - 6 - (三)系统硬件设计............................................................................... - 6 -
1.键盘设计........................................................................................ - 6 -
2. LED显示设计.............................................................................. - 7 -
3.开锁电路........................................................................................ - 7 -
4.报警电路........................................................................................ - 8 -
(四)软件设计....................................................................................... - 8 -
1.键盘的读取.................................................................................... - 8 -
2.LED显示程序............................................................................... - 9 -
3.密码比较和报警程序.................................................................... - 9 -
四、程序调试................................................................................................ - 11 -
(一)KEIL C51简介 ........................................................................... - 11 - (二)调试过程..................................................................................... - 11 - 五、设计总结................................................................................................. - 12 - 参考文献......................................................................................................... - 13 - 附录................................................................................................................. - 14 -
摘要
本论文详细地论述了以单片机为处理器的密码锁自动控制器的硬件、软件
设计和系统编程的问题。

本控制器AT89C51单片机为核心键盘、显示电路,输
出控制电路,告警提示电路等构成。

利用目前使用的微处理器AT89C51 作为控
制元件设计了一种电子密码锁。

其具有可设置多组密码、多次改写和保存密码
的优点,克服了普通锁需要随身携带钥匙且易丢失、保密性差的缺点,在宾馆、办公大楼、仓库、保险柜和家庭普遍适用。

关键词:AT89C51 键盘液晶显示电子密码锁
一、课题背景及意义
随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤
其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子锁由于其保密
性高,使用灵活性好,安全系数高,受到了广大用户的青睐。

锁是置于可启闭的器物上,用以关住某个确定的空间范围或某种器具的,必须以钥匙或暗码打开的扣件。

锁具发展到现在已有若干年的历史了,人们对它的
结构、机理也研究得很透彻,因此,不用钥匙就能打开的方法和工具也层出不穷。

现代人类文明社会里,由于社会中各种矛盾冲突十分剧烈,人们的思想道
德观念,价值观念,文化修养水平等差异,群众中良莠不齐,善良的人们能够
自觉规范自已的行为,“非礼不为”,虽无钥匙亦不会乱闯。

然而,那些毫无道
德观念的盗贼却想方设法利用高科技手段撬门开锁,使广大居民防不胜防。

为什么会出现这种情况呢?因为传统锁具都存在致命的弱点:
第一、锁芯采用常见的铜、铝、锌等材料,抵抗不了强力破坏;
第二、锁具制作工艺,技术落后,无法阻止技术手段的开启。

目前,市场上很多国内外的锁具,实际上都不具备真正的防盗功能。

在惯
偷面前,两根钢丝或几件简单的工具就可以把这些锁打开,有的惯偷甚至公开
扬言:“没有我打不开的锁。

”其实,不是他们多高明,而是一般锁具技术原理
太过简单。

面对这一残酷的现状,新时代提出了锁具必须革命的迫切的要求。

因此,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。


是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容
易丢失、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和
推广。

鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产
品的主流。

随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格
比显著提高,技术日趋完善。

由于单片机具有体积小、重量轻、价格便宜、功
耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电
器等各个领域均得到了广泛的应用。

本设计以AT89C51为主控芯片,带有一个密码输入键盘、外围时钟复位电路、电磁阀等实现电子锁的锁闭和打开。

该锁要求结构简单,成本低,安全性高,易于主人随时更新密码,在一定程度上具有较大的市场竞争力。

要求完成
电子锁的控制系统的实物演示模型。

根据51单片机之间的串行通信原理,这便
于对密码信息的随机加密和保护。

而且采用键盘输入的电子密码锁具有较高的
优势。

采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提
高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输
效率高、工作稳定可靠等。

软件设计采用自上而下的模块化设计思想,以使系
统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。

测试
结果表明,本系统各项功能已达到本设计的所有要求。

二、设计要求
(1)密码通过键盘输入,若密码正确,则将锁打开。

(2)报警、锁定键盘功能。

密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过 3 次,蜂鸣器报警并且锁定键盘。

(3)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。

(4)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必
须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。

三、设计思路及设计方案
(一)设计方案选择
方案一:采用数字电路控制。

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,
共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新
输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路
将锁定键盘2分钟,防止他人的非法操作。

电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源
是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

如图1.
图1.采用数字电路控制
方案二:采用一种是用以AT89C51为核心的单片机控制方案。

选用单片机AT89C51 作为本设计的核心元件,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,实现基本的密码锁功能。

在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD1602显示器用于显示作用。

其原理图2所示:
图2.以AT89C51为核心的单片机设计方案
通过比较以上两种方案,采用数字电路设计的方案好处就是设计简单但控
制的准确性和灵活性差。

单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。

(二)总体方案思路
本方案采用一种是用以89C51为核心的单片机控制方案。

利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。

输入密码用矩形键盘,包括数字键和功能键。

LED数码管显示输入密码,用74JS247驱动数码管发光显示数码,用
74LS138控制各位显示器分时进行显示。

用发光二极管代替开锁的电路,发光表示开锁。

输入密码错误次数超过3次,系统报警。

打开电源后,显示器显示“000000”,设原始密码为“123456”,只要输入此密码便了开门。

这样可预防停电后再来电时无密码可用。

按“C”键,清除显示器为“000000”。

欲重新设定密码,先输入密码在案“*”。

输入密码,再按“D”确认键。

若密码与设定密码相同,则开门。

否则显示器清为“000000”。

硬件的设计主要包括键盘的输入,LED显示电路,开锁电路,报警电路。

软件的设计主要包括键盘键值的读取,LED显示程序,密码比较程序和报警程序。

(三)系统硬件设计
1.键盘设计
本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

4×4矩阵键盘的工作原理
在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成
4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别
越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多
出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合
理的。

如图3所示。

图3 .4*4键盘的工作原理
2. LED显示设计
本系统设计的显示电路是为了给使用者以提示而设置的。

本系统的显示采
用串行显示的方式,只使用单片机的一个串行口,利用74LS247驱动数码管发
光显示数码和74LS138控制位选信号,就可以完成单片机的显示功能。

3.开锁电路
在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发
光管亮,表示开锁;灭,表示没有开锁。

当P2.0口输出低电平时,二极管发光,表示开锁。

4.报警电路
报警模块由蜂鸣器和单片机组成。

选择一只压电式蜂鸣器,压电式蜂鸣器
工作时约需要100mA驱动电流。

蜂鸣器电路如图3.4所示。

当89C51的P2.1口输出为低电平时,蜂鸣器产生蜂鸣音,89C51输出为高电平时,蜂鸣器不发声。

(四)软件设计
1.键盘的读取
在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执
行等待按键并确认有无按键按下的程序段。

当确认有按键按下后,下一步就要识别哪一个按键按下。

对键的识别通常
有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。

首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读
入行线状态来判断。

方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。

如果有按键按下,总会有一根行
线电平被拉至低电平从而使行线不全为1。

判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状
态来实现的。

方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在
与零电平行线相交的交点上的那个键。

2.LED显示程序
图4 LED显示程序流程图
3.密码比较和报警程序
电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。

当输入密码连续输入错误3次时,系统报警。

密码的设定,在此程序中密码是固定40H—45H中,假设预设的密码为"123456"共6位密码。

由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。

在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。

进入密码的判断比较处理状态并给出相应的处理过程。

流程图如下所示:
图5 密码比较和报警程序流程图
四、程序调试
调试本程序需要用到KEIL C51,及51开发板一块及其配套的下载烧录软件
(一)KEIL C51简介
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

用过汇编语言后再使用C来开发,体会更加深刻。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面。

另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。

在开发大型软件时更能体现高级语言的优势。

C51工具包的整体结构: uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。

开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。

然后分别由C51及A51编译器编译生成目标文件(.OBJ)。

目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。

ABS 文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

(二)调试过程
首先打开KEIL C51主程序,新建工程,新建文本框写入程序,保存,检查是否有语法错误,经反复检查无误后汇编,生成51单片机可执行的HEX文件。

然后用51开发板相匹配的烧录软件把HEX文件写入单片机。

图6 keil c51调试介面
五、设计总结
通过这学期对计算机控制这门课程的学习,结合以前的单片机知识完成了该设计。

通过这次设计我懂得了实践是检验真理的唯一标准,当然也是检验学习成果的标准。

在经过一段时间的学习之后,我们需要了解自己的所学应该如何应用在实践中,因为任何知识都源于实践,归于实践,所以要将所学的知识在实践中来检验。

在做设计期间,在老师的指导下,通过自身的不断努力,无论是思想上,学习上,都取得了长足的发展和巨大的收获,现将工作总结如下:思想上,学会了用科学的精神去解决问题。

很多事情看起来是很简单的问题,但实际做起来去会发现有许多奥妙!这是因为其中蕴含着许多科学的问题。

运用科学的方法去解决问题,这是我这次实训给我带来的思想上的改变。

学习上,使自已在
大学所以的知识在这次得到实践,学到一些书本上无法学到的经验,对电子元
件有了进一步的认识。

电子锁是信息化时代发展的产物,应时而生,我相信随着科技的不断发展,将来的电子锁一定更加完美,更加人性化,更加便宜,更加安全。

计算机控制发展是自动化技术的热门研究课题,它们的发展与进步将是实
施CIPS的保证。

CIPS利用计算机技术对整个企业的运作和过程进行综合管理和控制,它包
括市场营销、生产计划调度、原料选择、产品分配、成本管理,以及工艺过程
的控制、优化和管理的全过程。

分布式控制系统,先进过程控制以及网络技术,数据库技术是实现CIPS的重要基础。

可以预计,通过广大学者与工程技术人员的努力,今后我国会在过程工业的计算机粲成过程系统中取得更多的进展与成果。

参考文献
[1] 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,1998
[2] 李全利.单片机原理及接口技术.高等教育出版社,2003
[3] 何宏主编. 单片机原理与接口技术. 北京:国防工业出版社. 2006.07
[4] 杨将新,李华军,刘到骏等.单片机程序设计及应用.电子工业出版社,2006
[5] 黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社,2005
附录
本设计的程序:
hc0 equ 4ah ;延时缓存区
hc1 equ 4bh
hc2 equ 4ch
hc3 equ 4dh
hc4 equ 4eh
xs_0 equ 50h ;显示缓存区
xs_1 equ 51h
xs_2 equ 52h
xs_3 equ 53h
xs_4 equ 54h
xs_5 equ 55h
xs_6 equ 56h
xs_7 equ 57h
xs_8 equ 58h
xs_9 equ 59h
ps1 equ 5ah ;设置密码缓存区
ps2 equ 5bh
ps3 equ 5ch
ps4 equ 5dh
mmbz equ 5fh ;密码输入次数
at1 equ 60h ;输入密码缓存区
at2 equ 61h
at3 equ 62h
at4 equ 63h ;初始化
org 00h
ajmp main1
org 30h
main1: mov ps1 ,#00h
mov ps2 ,#00h
mov ps3 ,#00h
mov ps4 ,#00h
mov at1 ,#00h
mov at2 ,#00h
mov at3 ,#00h
mov at4 ,#00h
main:mov xs_0 ,#1fh ;显示0的摩斯值
mov xs_1 ,#0fh ;显示1的摩斯值mov xs_2 ,#07h ;显示2的摩斯值mov xs_3 ,#03h ;显示3的摩斯值mov xs_4 ,#01h ;显示4的摩斯值mov xs_5 ,#00h ;显示5的摩斯值mov xs_6 ,#10h ;显示6的摩斯值mov xs_7 ,#18h ;显示7的摩斯值mov xs_8 ,#1ch ;显示8的摩斯值mov xs_9 ,#1eh ;显示9的摩斯值clr p3.0 ;RXD置0
mov a ,#00h ;密码缓存
mov r2 ,#04h ;四位密码
mov r1 ,#00h
mov r0 ,#ps1
mov r7 ,#05h ;摩斯次数,由于数字为5次
clr p2.7
start:mov p0 ,#0ffh
mov p1 ,#0ffh
setb p2.4 ;按键位
jb p2.4 ,start ;2.4为1转start
lcall delay500ms
jb p2.4 ,start
ok: ;嘀的音
clr p0.0
lcall delay500ms
jnb p2.4 ,daa ;是否去嗒音
cun: ;
setb p0.2
setb p0.0
rl a
add a ,r1 ;存入一位摩斯码
djnz r7 ,yanshi ;是否够五位摩斯码ajmp xianshi
yanshi: ;输入一位摩斯码停顿1t lcall delay500ms
jb p2.4 ,main
ajmp ok
daa: ;嗒的音
lcall delay500ms
jb p2.4 ,stop
setb p0.0
clr p0.2
lcall delay500ms
setb p0.2
jnb p2.4 ,stop
mov r1 ,#01h
ajmp cun
stop: ;摩斯输入错误
clr p0.4
lcall delay2s
setb p0.4
ajmp main
cunchu:mov @r0 ,a
inc r0
mov a ,#00h
mov r1 ,#00h
mov r7 ,#05h
djnz r2 ,yanshi
clr p0.6
lcall delay2s
setb p0.6
ajmp shuru
xianshi:cjne a ,xs_0 ,next1 ;够五位摩斯码显示0
mov p1 ,#0c0h
clr p3.2 ;报警器
lcall delay1s
setb p3.2 ;报警器
mov p1 ,#0ffh
ajmp cunchu
next1:cjne a ,xs_1 ,next2 ;够五位摩斯码显示1
mov p1 ,#0f9h
clr p3.2
lcall delay1s
setb p3.2
mov p0 ,#0ffh
ajmp cunchu
next2:cjne a ,xs_2 ,next3 ;够五位摩斯码显示2
mov p1 ,#0a4h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu next3:
cjne a ,xs_3 ,next4 ;够五位摩斯码显示3
mov p1 ,#0b0h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
next4:
cjne a ,xs_4 ,next5 ;够五位摩斯码显示4
mov p1 ,#99h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
next5:
cjne a ,xs_5 ,next6 ;够五位摩斯码显示5
mov p1 ,#92h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
next6:
cjne a ,xs_6 ,next7 ;够五位摩斯码显示6
mov p1 ,#7dh
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
next7:
cjne a ,xs_7 ,next8 ;够五位摩斯码显示7
mov p1 ,#0f8h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
next8:
cjne a ,xs_8 ,next9 ;够五位
摩斯码显示8
mov p1 ,#080h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
next9:
cjne a ,xs_9 ,cw ;够五位摩斯码显示9 mov p1 ,#90h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu
cw:
clr p3.2
clr p0.4
lcall delay5s
clr p0.4
setb p3.2
ajmp main1
shuru: ;开门复位
mov mmbz ,#03 ;错误密码次数
mov at1 ,#00h
mov at2 ,#00h
mov at3 ,#00h
mov at4 ,#00h
shuru2:
clr p0.6
mov a ,#00h ;密码缓存
mov r2 ,#04h ;四位密码
mov r1 ,#00h
mov r0 ,#at1
mov r7 ,#05h
start1:
jb p2.4 ,start1
lcall delay500ms
jb p2.4 ,start1
ok1: ;滴音
setb p3.0 ;开门后再按键1t setb p0.6
clr p0.0
lcall delay500ms
jnb p2.4 ,daaa
cun1:
setb p0.2
setb p0.0
rl a
add a ,r1
djnz r7 ,yanshi1
ajmp xianshi1
yanshi1: ;每个摩斯码之间延时1t lcall delay500ms
jb p2.4 ,stop1
ajmp ok1
daaa: ;嗒音
lcall delay500ms
jb p2.4 ,stop1
setb p0.0
clr p0.2
lcall delay500ms
setb p0.2
jnb p2.4 ,stop1
mov r1 ,#01h
ajmp cun1
stop1: ;摩斯码错误处理 clr p0.4
lcall delay2s
setb p0.4
ajmp shuru2
cunchu2:
mov @r0 ,a
inc r0
mov a ,#00h
mov r1 ,#00h
mov r7 ,#05h
djnz r2 ,yanshi1
ajmp bijiao
xianshi1: ;显示处理
cjne a ,xs_0 ,next1_1
mov p1 ,#0c0h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next1_1:
cjne a ,xs_1 ,next2_2
mov p1 ,#0f9h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next2_2:
cjne a ,xs_2 ,next3_3
mov p1 ,#0a4h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next3_3:
cjne a ,xs_3 ,next4_4
mov p1 ,#0b0h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next4_4:
cjne a ,xs_4 ,next5_5
mov p1 ,#99h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next5_5:
cjne a ,xs_5 ,next6_6
mov p1 ,#92h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next6_6:
cjne a ,xs_6 ,next7_7
mov p1 ,#82h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next7_7:
cjne a ,xs_7 ,next8_8
mov p1 ,#0f8h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next8_8:
cjne a ,xs_8 ,next9_9
mov p1 ,#80h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
next9_9:
cjne a ,xs_9 ,cw2
mov p1 ,#90h
clr p3.2
lcall delay1s
setb p3.2
mov p1 ,#0ffh
ajmp cunchu2
bijiao: ;比较密码
mov r6 ,#04
mov r1 ,#ps1
mov r0 ,#at1
bj2:
clr c
mov a ,@r0
subb a ,@r1
cjne a ,#00h ,cw2
inc r1
inc r0
djnz r6 ,bj2
clr p3.2 ;密码正确
clr p3.0
lcall delay5s
setb p3.2
ajmp shuru
cw2: ;密码错误处理
djnz mmbz ,bjd
mov p0 ,#00h
clr p3.2
lcall delay5min
setb p3.2
mov p0 ,#0ffh
ajmp shuru2
bjd:
mov p0 ,#00h
clr p3.2
lcall delay5s
setb p3.2
mov p0 ,#0ffh
ajmp shuru2
delay500ms:
mov hc0 ,#05
ff1:mov hc1 ,#200
fff1:mov hc2,#250
djnz hc2 ,$
djnz hc1 ,fff1
djnz hc0 ,ff1
ret
delay1s:
mov hc0 ,#10
ff2:
mov hc1 ,#200
ff3:
mov hc2 ,#250
djnz hc2 ,$
djnz hc1 ,ff3
djnz hc0 ,ff2
ret
delay2s:
mov hc0 ,#20
ff4:
mov hc1 ,#200
ff5:
mov hc2 ,#250
djnz hc2 ,$
djnz hc1 ,ff5
djnz hc0 ,ff4
ret
delay5s:
mov hc0 ,#50
ff6:
mov hc1 ,#200
ff7:
mov hc2 ,#250
djnz hc2 ,$
djnz hc1 ,ff7
djnz hc0 ,ff6
ret
delay5min:
mov hc0 ,#12
qq1:
mov hc1 ,#200
qq2:
mov hc2 ,#250
qq3:
mov hc3 ,#250
djnz hc3 ,$
djnz hc2,qq3
djnz hc1 ,qq2
djnz hc0 ,qq1
ret
end。

相关文档
最新文档