毕业设计(论文)基于单片机的数字式电子密码锁设计.doc

上传人:laozhun 文档编号:3980604 上传时间:2023-03-30 格式:DOC 页数:41 大小:524KB
返回 下载 相关 举报
毕业设计(论文)基于单片机的数字式电子密码锁设计.doc_第1页
第1页 / 共41页
毕业设计(论文)基于单片机的数字式电子密码锁设计.doc_第2页
第2页 / 共41页
毕业设计(论文)基于单片机的数字式电子密码锁设计.doc_第3页
第3页 / 共41页
毕业设计(论文)基于单片机的数字式电子密码锁设计.doc_第4页
第4页 / 共41页
毕业设计(论文)基于单片机的数字式电子密码锁设计.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《毕业设计(论文)基于单片机的数字式电子密码锁设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的数字式电子密码锁设计.doc(41页珍藏版)》请在三一办公上搜索。

1、基于单片机的数字式电子密码锁学生姓名:班级:04041234指导老师:摘要:当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。本次设计以电磁继电器模拟密码锁,由单片机8051来控制锁的打开与闭合,由HD7279来管理器键盘及显示,密码从键盘输入,用8051来控制7279显示当前锁的状态信息及报警。本次设计的核心是软件部分,通过编程来控制输出高低电平,再加上硬件电路来实现开锁和报警的功能,密码为46位,且设计的电子密码系统稳定性能好,安全系数高, 其方法和技术可广泛用于仓管、防盗门、密码箱

2、等安全系统。关键词:单片机开发系统 密码锁 串口通信目录第一章 前言411 课题的背景及意义412 国内外发展现状413 本文的主要研究内容4第二章 系统的组成及工作原理521 需求分析5211设计内容与要求5212系统框图522系统组成523系统工作原理介绍5第三章 硬件电路设计731单片机最小系统设计73.1.1 时钟电路73.1.2 复位电路832 HD7279键盘显示模块1033 开锁电路1334 报警电路14第四章 软件设计1541 软件设计分析1542 系统资源分配1543 程序设计16431主程序设计16432 数字键处理程序(SKEY)17433 确认键处理子程序(MKEY_2

3、)18434 密码判断子程序(COMP)18435 密码修改子程序(GMM)19436 显示处理子程序21437 键盘扫描子程序2244 程序清单及注释22第五章 实验调试及测试结果2351 硬件调试2352 软件调试2353 总体调试24第六章 总结2561 实现功能2562 不足之处和改进意见2563 心得体会2564 致谢26参考文献27附录一 源程序及注释28附录二 电路总图40附录三 元器件清单41 第一章 前言11 课题的背景及意义随着现代化工业生产过程复杂性与集成化程度的增加,自动控制系统在工业过程中已成为不可缺少的重要组成部分,是电子技术与自动控制理论的紧密结合,并广泛应用于工

4、业、农业、医学、国防和军事等等领域。自动控制系统应用于工业控制有各种各样的结构和形式,实现各自不同的功能,此次设中用到的ATC89C51就是一种新型的价格便宜而性能优良的单片机系统,结构简单,布局合理,功能齐全,用途广泛。用单片机开发系统来做这次课程设计,使得更进一步掌握如何利用接口电路进行硬件系统的设计,以及如何进行软件设计的方法和技术。且设计的电子密码锁安全系数高,性能稳定, 面向应用,设计的系统具有很强的现实意义。12 国内外发展现状一直以来,市场上的密码锁产品都是基于机械原理的机械密码锁,这种密码锁最大的缺点就是结构简单,安全系数低,且不具有报警功能。但着当今社会对家庭财产,公共隐私等

5、保密性要求提高,使得对密码锁系统的安全性提出了更高的要求, 而随着微电子技术的发展,微处理器与微型计算机得到迅速的发展,单片微型计算机功能强,结构紧凑,体积小,功耗低,抗干扰能力强,稍加一定的外围设备就方便地构成一个应用系统,这正好符合密码锁系统的要求,国内外市场上的相关产品也越来越多地使用单片机来加强密码锁的安全性稳定性。13 本文的主要研究内容本文的主要研究基于单片机8051为核心控制的电子密码锁安全系统,本次设计以电磁继电器模拟密码锁,由单片机8051来控制锁的打开与闭合,由HD7279来管理器键盘及显示,密码从键盘输入,用8051来控制7279显示当前锁的状态信息及报警。本次设计用单片

6、机开发系统来模拟密码锁的多种功能,密码由4-6位数字组成,当输入密码相符时开锁,输入三次不符报警,同时密码可以修改。开锁单片机开发出开关量,通过光电耦合器控制,打开密码锁。报警则由单片机发出报警信号,控制音频放大电路发出报警声音。第二章 系统的组成及工作原理21 需求分析 211设计内容与要求 (1)设计一个数字式密码锁; (2)密码由46位数字组成; (3)密码相符则开锁,三次不符则报警; (4)密码可以更新; (5)采用7279芯片管理键盘显示。 212系统框图图1.1为本次密码锁设计的总框图:单片机开发系统放大电路扬声器报警 键盘电磁继电器隔离开关量输出 图1.1.1 系统框图22系统组

7、成本次设计的基于单片机的电子密码锁系统主要由三个模块组成,核心是89C51单片机,键盘及数码管显示由HD7279模块电路完成,报警电路由放大电路接扬声器组成,而开锁电路则由光电耦合器及电磁继电器组成。23系统工作原理介绍通电复位,电路进入就绪状态,等待用户输入密码,7279显示00000000,表示锁闭合。当用户按下“输入/离开”键后,8个数码管显示_ _ _ _ _ _ _ _,等待用户输入密码,输完密码后显示- - - - - - - - ,按下“确认”键,如输入密码正确则由P1.1输出开锁控制信号且绿灯亮,7279显示PLEASE.,且控制电磁继电器打开锁。如输入密码错误,则显示ERRO

8、RX,X为输入错误密码的次数,若连续三次输入错误,则由P1.5输出报警控制信号,并控制音频放大电路,发出报警声音,并且必须等待解出报警后即输入正确密码后方可重新开锁。输入密码正确后,按下“改密”键,输入46位密码后再按下“确认”键,则完成了密码更新,7279重新显示PLEASE。在锁打开的状态下,按下“输入/离开”键,则将锁关闭,指示灯熄灭,7279重新显示00000000,表示锁已闭合,用户可以离开。第三章 硬件电路设计31单片机最小系统设计本次设计中使用的微处理系统是以AT89C52为核心的超想3000单片机应用开发系统。超想-3000TB开放式综合实验仿真系统由仿真器、综合实验仪、软件、

9、电源组成。选配51CPU适配板可在超想-3000TB开放式综合实验仪上完成MCS51单片机实验。89C51附带的两种典型的电路是时钟电路和复位电路。主控机系统采用了Atmel 公司生产的89C51 单片机,它含有128 字节数据存储器,内置4K 的电可擦除FLASH ROM,可重复编程,大小满足主控机软件系统设计,所以不必再扩展程序存储器。复位电路和晶振电路是89C52 工作所需的最简外围电路。 3.1.1 时钟电路 时钟电路是计算机的心脏,89C52芯片内部有一个由反向放大器所构成的振荡电路。XTAL1、XTAL2分别为反向放大器的输入和输出端。通常晶振频率为1.2MHz12MHz。89C5

10、1的时钟电路有内部和外部两种,如图3.1和图3.2所示。内部时钟由晶振控制,一般典型值为6MHz、12MHz。 图3.1 内部时钟电路 外部时钟电路由外接时钟来控制。 图3.2 外部时钟电路本次设计采用的是内部时钟方式,使得电路更更加简化,也减小系统的生产成本。 3.1.2 复位电路89C52的复位电路有上电复位和系统复位电路。上电复位电路如图3.3所示,图3.3 上电复位电路本次采用的是系统复位电路。如图3.4所示图3.4 系统复位电路综上所述,单片机最小系统电路图如图3.5所示。89C52 的复位端是一个史密特触发输入,高电平有效,而系统中的时钟接口复位信号都是低电平有效。在复位电路中,按

11、一下复位开关就使在RS端出现一段时间的高电平,经过74LS14 的一次反相整形,提供给单片机复位端。再经过一次反相整形,通过I/ORST 端提供给外部接口电路。外接12M 晶振和两个20P 电容组成系统的内部时钟电路。图3.5 单片机最小系统电路图32 HD7279键盘显示模块HD7279A是一种管理键盘和LED显示器的专用智能控制芯片,其管脚图如图3.6所示。DIG0DIG7和SASG同时还分别是64键盘的列线和行线端口,完成对键盘的监视,译码和键值的识别。在88阵列中每个键的键码是用十六进制表示的,可用读键盘数据指令读出,其范围是00H3FH。 HD7279与微处理器仅需4条接口线,其中C

12、S为片选信号(低电平有效)。当微处理器访问HD7279A(读键号或写指令)时,应将片选端置为低电平。DATA为串行数据端,当向HD7279A发送数据时,DATA为输入端;当HD7279A输出键盘代码时,DATA为输出端。CLK为数据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。KEY为按键信号输出端,在无键按下时为高电平;而有键按下时此引脚变为低电平并且一直保持到键释放为止。图3.6 HD7279A管脚图RC引脚用于连接HD7279A的外接振荡元件,其典型值R=1.5k,C=15pF。RESET为复位端。该端口由低电平变成高电平并保持25ms即复位结束。通常,该端口接+5V即可。DIG0

13、DIG7分别为8个LED管的位驱动输出端。SASG分别为LED数码管的A段G段的输出端。DP为小数点的驱动输出端。HD7279A片内具有驱动电路,它可以直接驱动1英寸及以下的LED数码管,使外围电路变得简单可靠。A-G和DP为显示数据,分别对应7段LED数码管的各段。当对应的数据位为1时,该段点亮,为0时则不亮。此指令灵活,通过造字形表,可以显示用户所需的字符。字形码表如表3-1所示:表3-1 7279字形码表显示字符显示码显示字符显示码07EH 87FH130H 97BH26DH g5FH379H o1DH433H d3DH55BHp67H 65FHL 16H770H 熄灭码00HHD727

14、9键盘显示模块电路如图3.7所示图3.7 7279键盘显示模块电路33 开锁电路开锁控制电路由单片机P1.4控制,P1.4接光电耦合器和电磁继电器,开锁电路如图3.8所示当单片机发出开锁信号时,P1.4口为低电平,通过具有功率放大作用的74LS07,驱动光电耦合器的发光二极管导通发光,接收三极管吸收光而导通,从而使与三极管集电极相连的电磁继电器的中心抽头由“常闭”接到“常开”,从而将锁打开。图3.8 开锁电路控制电路 参数设计:R1为限流电阻,与VCC和光耦内的发光二极管相连,由于发光二极管当流过的电流在510mA时正常发光,所以,当P1.4为低电平(0.3v)时,二极管电流为:Vcc=5v,

15、i=510mA,0.7v为二极管本身的管压降,0.3v为低电平电压,则R1为4701K,本设计中取510欧。同理R3取1K欧。34 报警电路报警电路模块如图3.9 所示。此报警电路由74LS00的与非门和两个三极管构的功率放大电路组成,当P1.5输入低电平的,驱动喇叭发出特定频率的报警声音,频率为f=1/2.2RC,声音非常响亮,很适合做报警用。图3.9 报警模块电路参数设计:设定报警声音的频率为1000Hz,则由f=1/2.2RC,选择R1=R2=R=1K,则通过计算C应取0.47uF。用于功率放大的两个级联三极管中,第一级就选择9014,其放大倍数可达1000,且工作频率高,适用于放大功率

16、。而第二级应选择9013,其良好的噪声系数可可改善电路的信噪比。第四章 软件设计41 软件设计分析软件是系统的指挥中心,由它来配合控制完成各种预定功能。为了充分发挥AT89C51优越的性能价格比,在设计上尽量做到硬件“软化”,使系统硬件设计得到简化。系统软件采用MCS-51汇编语言编写,采用了模块化结构设计。为增强系统的实时性,对那些偶发事件采用中断方式处理,主程序主要用于系统的控制和管理。42 系统资源分配 (1)、键盘及显示安排 数字键: 09 个 命令键: 输入(0AH) 、确认(0BH)、改密(0CH) 数码管: 8 个(2)、内存单元及P1口安排: 标志位: 00H 键标志 P1口:

17、 P1.0 CS 01H 输入标志 P1.1 CLK 02H 锁状态标志 P1.2 DATA 03H 改密标志 P1.3 KEY显缓区: 40H-47H (7279) P1.4 光耦 P1.5 报警电路 显示指针: 22H 密码暂存指针:23H 原始密码区: 30H37H 密码暂存区:38H3FH原始密码位数: 50H 输入密码位数:51H 堆栈区: 68H7FH 错误密码次数:52H43 程序设计431主程序设计程序主要完成初始化、显示处理、送7279显示、键盘扫描以及键处理等功能,其中初始化又涉及内存单元,显缓区,堆栈,及各寄存器的初始化,其流程框图见图4.1初始化显示处理键扫、求键号键处

18、理有键按下否?输入键处理确认键处理修改密码键处理数字键处理开始NY图4.1 主程序流程框图 系统加电后,开始运行主程序,开始对各存储单元以及中断初始化,还要对密码初始化,等待键按下,若为某个功能键,如为“输入”键,则输入4-6位数字,再按“确认”键,转入密码判断子程序,若输入与密码相符,则将P1.1置为高电平,否则密码错误记数单元加一,如果连续三次错误就将P1.0置为高电平;如果需要修改密码,先输入正确密码并确认后,相应的标志位置一后,入新密码按“密码修改”键后才有效,并保存新密码。432 数字键处理程序(SKEY)数字键处理程序(SKEY)先判断此时是输入密码准备开锁还是修改密码,若输入新密

19、码则将数字存放到原始密码区,若要校验密码,则将数字存放至密码暂存区。数字键处理程序(SKEY)框图如图4.2所示 输入标志是否为1?改密标志为1?输入48位密码保存至383FH,输入密码的位数保存到51H输入48位密码保存至3037H,输入密码的位数保存到50H返回YNYN图4.2数字键处理子程序框图433 确认键处理子程序(MKEY_2)确认键处理子程序功能是,判断前面按的数字键是输入密码还是修改密码,若是输入密码则调用密码比较子程序,比较完毕再采取相应的动作;若是修改密码则将密码从暂存区送至原始密码存储区。确认键处理子程序(MKEY_2) 框图如图4.3所示输入标志是否为1?改密标志为1?

20、调用密码比较子程序清输入标志清改密标志返回YNYN图4.3 确认键处理子程序框图434 密码判断子程序(COMP)COMP子程序的功能是将输入值与密码相比较,输入与密码一致则亮灯, 并将锁打开,三次输入错误则报警,其中一个重要环节是密码位数的比较,当每按下1-9数字时,计数器30H加一,即30H单元内容存放输入位数,首先将其与密码位数比较,不相同则密码错误,这样就避免了当密码位数大于输入值位数时出现的问题。若位数一致再逐位比较数值是否相同。比较子程序流程图如图4.4密码判断程序入口输入位数51H=密码位数50H?原始密码指针R0、输入密码指针R1、比较次数R7初始化输入值R1=密码0?R7-1

21、=0?开锁,点亮指示灯,置锁状态标志位02H返回错误次数53H加1,置锁状态02H为0错误次数大于3否?报警,显示出错,延时5分钟后使系统复位YYYNNNNY修改指针 图4.4密码判断子程序流程图435 密码修改子程序(GMM)此子程序涉及到判断子程序中设置的标志位,当密码输入正确时,标志位置1,否则置0,标志位为1才可修改密码,这样就保证了密码是在输入正确密码后才能被修改。密码修改完成后,按下确认键,锁重新回到打开的状态,并且清除改密标志。密码修改子程序流程图如图4.5所示:改密程序入口改密标志=1?锁状态标志=1?输入48位新密码存入以38H为首址的单元中N输入密码位数送R7、指针初始化新

22、密码R1覆盖原始密码R0修改指针循环次数R7-1=0?返回NNYYY 图4.5 密码修改子程序流程图436 显示处理子程序显示处理主要完成将要显示的字符查表得到其字形码后送到7279显示模块显示出来。7279采用串行接口,每发送一位都要延时,且要对其初始化后才可能正确地显示。显示处理子程序流程框图如图4.6所示显示程序入口显缓指针R0、显示码R1、循环次数R7初始化置CS为低电平,并延时50us延时8us,去除片选信号,修改R0和R1发显示码到7279,并延时25usR0单元内容查表,将得到的字形码发送至7279R7-1=0?返回YN图4.6 显示处理子程序流程框图437 键盘扫描子程序键盘处

23、理主要是不断的扫描7279模块中的键盘,若有键按下时,则根据得到的键值查表求出其键号,将键号存放于寄存器ACC中供主程序处理。其流程图如图4.6所示。 键盘处理入口置7279的CS有效,并延时30us发送读键指令码15H到7279,并延时12us接收键值存于A中,CS信号置键标志00HA为FFH否清键标志00H由键值查键号返回NY图4.7 流程图键盘处理子程序44 程序清单及注释 见附录第五章 实验调试及测试结果51 硬件调试(1) 在得到正确的理论依据后,便开始了组装调试过程。首先从基本要求部分开始连接,并且每连接一级电路检测一下以保证在无误的前提下再去连接其他电路;通过设计的电路图的帮助,

24、依次将其余部分连接好,用电压表检测各级输出无误后确定整个电路连接正确再进行下面的操作,看是否实现了我们所期望的要求效果,从而实现硬件方面的连接。(2) 本系统主要检测7279键盘显示模块,因为通过键盘显示,可以直观的知道程序是否基本运行正常,是否按时预定的显示。调试中发现,没有用到的两个数码显示管显示乱码,于是在字形表中增加两项,将两个显示乱码的数码管熄灭。(3) 测试中发现P1.6置1后,与P1.6相连的发光二极管不亮,在排除二极工作正常的情况下,确定是P1.6工作不正常,于是将发光二极管改连接到P1.7,并修改程序,将P1.6换成P1.7。52 软件调试 (1)排除硬件故障后开始对程序进行

25、调试,调试软件时采取的是分步测试后再集成测试的原则,将键扫程序输入单片机开发系统,运行后按开发系统上的键盘,看显示数码管能否显示所按键的键号。在此基础上,将完整的程序输入单片机开发系统,运行后用示波器观察8031的P1.0端的信号是否会随按键而发生由高电平向低电平的跳变,若有跳变说明软件调试成功。(2)将硬件部分连接上检查二极管以及喇叭是否能正常发光及发声,起初,二极管不发光,我们首先对硬件检查无误,再对程序进行分析,发现调用的延时时间太短,以至二极管发光时肉眼无法变出,将延时时间加长后即可观察出发光二极管的变化;接着再输入数字位数与密码不符时,二极管也会发光,比如密码是1234,若输入为12

26、3456或12345时,标志开锁的二极管会亮,不和要求,于是在判断密码子程序中加了先判断输入位数与密码位数的比较指令,这样就能达到设计要求了。(3). 调试中发现密码修改后第一输入新密码校验时,显示密码错误,而在第二次输入新密码时才显示密码正确,并将锁打开。检查程序发现是由于程序设计中,在“确认”键处理子程序中,没有重新将输入密码的位数清零,导致修改密码后,再次输入新密码校验时,由于密码位数不正确,导致显示密码错误。(4). 调试中输入三次错误密码后,并没有报警,只是显示00000000密码错误而已,再次回到程序,报警处理由原来的“确认”键处理子程序移到密码校验子程序中进行,主要是因为回到“确

27、认”键处理中,标志已经改变,导致无法报警,移动后,报警正常。53 总体调试经过了对硬件和软件的调试后,所有的功能都得以实现。在锁闭合的状态下,数码管显示0000 0000,当输入与密码相符时,开锁发光二极管正常发光,且驱动电磁继电器开锁,此时数码管显示PLEASE.欢迎信息。第一次输入密码错误后显示ERROR1,第二次则显示ERROR2,第三次则显示ERROR3,闪烁10秒钟,并驱动报警电路发出十分响亮的警报。当通过了密码校验后,按下改密键,相应输入46 位密码后,回到开锁的状态,密码更新成功。本系统还设计了一个小功能,在锁打开的状态下,按下“输入”键后,锁重新闭合,数码管显示0000 000

28、0,表示锁已闭合,用户可以离开。调试至此,设计要求的功能都已全部实现,而且在此基础上还造出字形表,使数码管显示良好用户停息。第六章 总结61 实现功能经过查阅资资料设计方案,电路连接后进行实验调试,所设计的基于单片机8051的电子密码锁安全系统已经实现了所要求的基本功能。主要功能如下:1、具有友好便捷的键盘、显示接口;2、单片机控制密码锁的开关;3、报警功能;4、修改密码功能。62 不足之处和改进意见本系统不足之处在于密码掉电后不能存储,重新加电后密码为恢复为原始密码,应该加入存储芯片如2402作为密码存储器,使得系统掉电后也能存储密码,增强系统的安全性。此处主控机部分没有加上看门狗,如果系统

29、在环境比较恶劣的情况下可能会导致系统工作不稳定,如果加上将提升系统的抗干扰能力。63 心得体会1审题,就是认真分析设计课题的要求,分析每一个要求实现的功能需要用到哪些硬件模块,应该与哪些电路进行连接,各模块之间有哪些联系,通过查资料、请教老师得出设计的方案,仔细考虑及比较各方案,选择出最合理可行的,并进一步理解原理,这样在调试和查错时,就可以更快找出错误和解决问题, 2在设计程序之前一定要清楚地分析出系统各资源的分配,如内存单元的分配,显示缓冲区、密码暂存区等的分配,还有P口的分配,只有完全掌握了系统资源才能在程序设计中很好地进行调配,从而完成预定的功能。3在调试电路时,发现所设计的电路出现问

30、题,应认真分析其问题发生的种种可能因素,再分别有针对性的进行跟踪检查。而之前模拟设计电路所得到的各个分电路的参数,信号波形等正是我们判断电路故障的依据。4在整个课设中,我认为是否能充分运用资料是很重要的,尤其是各芯片的功能及其测试方法,设计方案的确定需要查找资料,在组装与调试时,若出现了问题则常常要考虑到芯片的问题,所以要了解芯片的连接与功能,这对排除电路故障有很大帮助。5通过这次的课程设计,在增强动手能力的同时,我也加深了对所学知识的理解和掌握,而且也进一步掌握了PROTEL等计算机模拟电路设计辅助软件。也初步形成了逐级设计电路的思想和分级检查电路的思路。由于本次课程设计是两人一组,因此与同

31、组人的合作也是非常关键的,这也锻炼了自己的团结合作精神,这对以后我的学习和工作是很有利的。64 致谢在本课题的整个研究设计过程中,得到了许多老师和同学的鼎力相助,借此机会向他们表示诚挚的谢意。首先感谢我的指导老师张永亮老师。在整个的设计过程中,张老师对我们热心指导、严格要求,在选题、系统总体设计与技术方案上,给予宝贵的建议,帮助我建立了正确的设计思想,保证了课题的研究和开发工作的顺利完成。我从他那里学到的不仅仅是学术方面的知识,更重要的是严谨的治学态度。感谢电子系的各位老师,正是因为他们一丝不苟,任劳任怨的教学,我们才能具有扎实的基本功来进行设计工作。还要感谢老师们为我们的毕业设计提供了良好的

32、环境和仪器设备。有了这些,我们才能够高效率的完成任务。参考文献1 .沈美明、温冬婵.IMB PC 汇编语言程序设计.北京:清华大学出版社出版. 1991.6(1) 2 .张友德、赵志英、涂时亮.单片微型机原理、应用与实验.上海:复旦大学出版社出版. 2000.11(3)3 .白英彩.微型计算机常用芯片手册. 上海:上海科学出版社出版. 1984.12(1)4 .周明德等.微型计算机接口电路及应用.北京:清华大学出版社. 1987.4(1)5 .吴金戍、沈庆阳、郭庭吉.8051单片机实践与应用.北京:清华大学出版社出版. 2002.9(1)6 .潘新民、王燕芳.单片微型计算机实用系统设计.人民邮

33、电出版社出版. 1992.77 .何立民. 单片机应用技术选编 (1-8). 北京:北京航空航天大学出版社. 20018 . 王福瑞. 单片微机测控系统设计大全. 北京:北京航空航天大学出版社. 1998.49 .雷霖. 现场总线控制网络技术. 北京:电子工业出版社. 2004附录一 源程序及注释程序清单ORG 0000HLJMP MAIN MAIN:MOV SP,#67H ;堆栈初始化 LCALL INITH ;7279显示初始化 MOV R7,#35H ;循环次数 MOV R0,#20H;建立指针M_0:CLR A;目标单元清零 MOV R0,A INC R0;修改指针 DJNZ R7,M

34、_0 MOV 50H,#08H ;密码位数初始化 MOV 53H,#00H ;密码错误次数初始化 CLR 01H ;输入标志 CLR 02H ;锁的状态,闭合还是打开 CLR 03H ;改密标志 CLR P1.6 ;改密过程中亮灯 CLR P1.4 ;接发光二极管 CLR P1.5 ;接报警电路 LCALL MMINTI ;密码初始化DD: LCALL DIR ;显示子程序,将显缓区数据查表后送显 LCALL KEY;健盘处理,扫描键盘后查键号 CJNE A,#0FFH,M_1 ;判断是否有键按下 SJMP DDM_1:CJNE A,#0AH,M_2 M_2:JNC M_3 ACALL SKE

35、Y ;数字键处理子程序 SJMP DD1M_3:CJNE A,#0AH,M_4 ACALL MKEY_1 ;输入键处理子程序 SJMP DD1M_4:CJNE A,#0BH,M_5 ACALL MKEY_2 ;确认键处理子程序 SJMP DD1M_5:CJNE A,#0CH,DD1 ACALL MKEY_3 ;改密键处理子程序DD1:SJMP DD;显缓区初始化,显示00000000DIS_INITI:MOV R7,#08H;循环次数 MOV R0,#40H;建立指针 DIS_1:MOV R0,#00H;清零 INC R0;修改指针 DJNZ R7,DIS_1 RET;原始密码初如化,原始密码

36、为04041234MMINTI:MOV R0,#30H;原始密码存放区指针 MOV R7,#08H;循环次数 MOV A,#00H MOV R6,#00H MM_1:MOV A,R6 ADD A,#06H;距离 MOVC A,A+PC;查表 MOV R0,A INC R0;修改指针 INC R6 DJNZ R7,MM_1 RETTAB:DB 00H,04H,00H,04H,01H,02H,03H,04H;键盘处理KEY:ACALL KEY1;键盘扫描 CJNE A,#0FFH,LPP1;判断是否有键按下 CLR 00H;清标志 RETLPP1:JB 00H,LPP2;是否有键按下 SETB 0

37、0H;标志置1 ACALL KEYNUM;根据键值查键号 RETLPP2:MOV A,#0FFH RETKEY1:CLR P1.0;使P1.0置0,使7279片选有效 MOV R6,#0CH;延时50uS DJNZ R6,$ MOV A,#15H; 读键盘命令 ACALL STFS;将命令发送至7279 MOV R6,#6;延时24uS DJNZ R6,$ ACALL STJS;输入键值 SETB P1.0;清片选信号 RET;查键号KEYNUM:MOV B,A;将键值保存至B MOV R2,#00H;键号初始化 MOV R7,#0CH;循环次数KEY_0:MOV A,R2 ADD A,#0A

38、H;表的距离 MOVC A,A+PC;查表 CJNE A,B,KEY_1;判断是否为此键 SJMP KEY_2KEY_1:INC R2;修改键号 DJNZ R7,KEY_0KEY_2:MOV A,R2;将查得的键号送A RETTAB0:DB 1CH,1DH,1EH,1FH;键值表 DB 14H,15H,16H,17H DB 0CH,0DH,0EH,0FH DB 04H,05H,06H,07H;7279显示模块初始化INITH:CLR P1.0;使7279片选有效 MOV R6,#0CH ;延时50us DJNZ R6,$ ACALL STFS;发送 MOV R6,#2;延时 DJNZ R6,$

39、 SETB P1.0;清片选信号 RET STFS:MOV R7,#08H;循环次数,一次发送8位LL1:RLC A;A的高位送CY MOV P1.2,C;发送一位 SETB P1.1;使CLK有效 MOV R6,#2;延时8usLL2:DJNZ R6,LL2 CLR P1.1;清CLK MOV R6,#2 DJNZ R6,$;延时8us DJNZ R7,LL1RETSTJS:MOV R7,#8;7279键盘接收子程序S_00:SETB P1.1;片选有效 SETB P1.2;置口锁存器为1 MOV R6,#2;延时8us DJNZ R6,$ MOV C,P1.2;将读到的第一位送C RLC

40、A;将C送最高位 CLR P1.1;清CLK MOV R6,#1;延时8US DJNZ R6,$ DJNZ R7,S_00 RET;数字键处理子程序SKEY:JNB 01H,S_2;判断是否输入密码,准备校验密码 MOV R3,22H ;显缓区指针送R3 CJNE R3,#48H,S_0 ;8个数码管S_0: JNC S_1 ;若大于则转S_1 MOV R0,22H;显缓区指针送R2 MOV R1,23H;密码暂存区指针送R1 MOV R0,#0AH ;使输入密码时显示“_” MOV R1,A;密码送暂存区 INC 22H ;指向下一个数码管 INC 23H ;指向下一个密码暂存区 INC 51H ;输入密码位数加1S_1: RET S_2:JNB 03H,S_4 ;判断是否是修改密码 M

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号