单片机密码锁设计
单片机 电子密码锁设计(全)

《单片机原理及应用》课程设计报告课题名称电子密码锁学院自动控制与机械工程专业电气工程及其自动化班级x x x x学号x x x x x姓名x x x x x时间x x x x x x x x x x x x x x x目录摘要 (2)一、设计任务及要求............... 错误!未定义书签。
1.1、设计任务 ....................... 错误!未定义书签。
1.2、设计要求 ....................... 错误!未定义书签。
二、系统总体结构及工作原理....... 错误!未定义书签。
2.1系统总体结构..................... 错误!未定义书签。
2.2 系统总体结构及电路图............. 错误!未定义书签。
三、各模块电路设计............... 错误!未定义书签。
3.1 AT89C51简介..................... 错误!未定义书签。
3.2 模块电路 ........................ 错误!未定义书签。
四、软件设计..................... 错误!未定义书签。
4.1 主程序流程图 .................... 错误!未定义书签。
4.2、子程序代码 ..................... 错误!未定义书签。
五、调试说明..................... 错误!未定义书签。
六、总结......................... 错误!未定义书签。
七、参考文献..................... 错误!未定义书签。
八、附录源程序源代码清单…………………………错误!未定义书签。
摘要本次设计介绍了基于单片机电子密码锁的设计,该设计硬件主要由AT89C51最小系统、矩阵电路、LCD显示电路、电源电路和报警电路等几部分组成。
软件主要由C语言编程。
该密码锁由单片机技术,通过矩阵电路设置、修改密码、保护密码,并由LCD显示密码输入,从而实现对密码的设置、保护。
基于单片机的智能密码锁的设计

基于单片机的智能密码锁的设计基于单片机的智能密码锁设计随着科技的发展和人们安全意识的提高,密码锁在保护个人和家庭安全方面扮演着越来越重要的角色。
传统的机械密码锁由于易受破解和安全性较低的限制,已经无法满足现代安全需求。
基于单片机的智能密码锁作为一种新型的安全产品,具有更高的可靠性和安全性,逐渐得到了广泛关注。
本文将介绍基于单片机的智能密码锁的设计,包括其工作原理、设计思路、实验验证和总结。
一、密码锁概念与原理密码锁是一种通过输入正确的密码来控制锁的开启和关闭的装置。
它主要由密码输入装置、控制装置和执行机构三部分组成。
其工作原理是:用户输入正确的密码后,控制装置将与预设的密码进行比较,如果一致,则发送信号给执行机构,打开锁;如果不一致,则发出警报或拒绝操作。
二、基于单片机的智能密码锁设计1、选择合适的单片机基于单片机的智能密码锁设计第一步是选择合适的单片机。
考虑到性能、价格和易用性等因素,我们选择了常用的8051单片机。
该单片机功能强大、价格适中,且易于编程和调试。
2、设计密码锁的功能模块根据需求分析,我们需要设计以下功能模块:键盘输入、密码比较、LED显示、电机驱动和报警模块。
键盘输入用于用户输入密码;密码比较用于将输入的密码与预设的密码进行比较;LED显示用于显示当前状态和输入的密码;电机驱动用于控制电机的运转;报警模块用于在密码错误时发出警报。
3、编写程序代码根据设计的功能模块,我们需要编写程序代码来实现各个模块的功能。
程序主要包括初始化、键盘输入处理、密码比较、LED显示、电机驱动和报警模块等部分。
其中,密码比较是关键部分,需要编写相应的算法来实现。
4、实现密码锁的具体功能在完成程序编写后,我们需要将程序下载到单片机中,并通过调试来确保各个模块能够正常工作。
在实现密码锁的具体功能时,需要注意以下几点:1、确保输入的密码与预设的密码一致才能打开锁;2、当连续输入错误密码超过设定次数时,应自动锁定密码锁,防止恶意破解;3、应设置一个复位按钮,以便在忘记密码或出现其他异常情况时进行重置;4、可以根据需求增加其他功能,如语音提示、网络控制等。
单片机密码锁设计

单片机密码锁设计工作过程1.按键设置6位密码,输入密码,通过单片机判断,若密码正确,通过则锁打开,显示open!2.首次使用时输入:131420,对密码进行初始化,当显示:initpassword,证明密码初始化完成,此时的密码为:000000。
设计思想(1)本设计为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号。
(2)设计开锁密码位六位密码的电子密码锁。
(3)能够LCD显示在密码正确时显示open!,密码错误时显示ERROR,输入密码时显示initpassword。
(4)实现输入密码错误超过限定的三次电子密码锁定。
(5)4×4的矩阵键盘其中包括0-9的数字键和A-D的功能键(6)本产品具备报警功能,当输入密码错误时蜂鸣器响并且LED灯亮。
(7)密码可以由用户自己修改设定(只支持6位密码),修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作自锁开关说明自锁开关电路中起到电源的开关作用,常开的其中一脚接DC电源插口电源脚,常开的另一脚接电路的VCC自锁开关原理图自锁开关硬件图上拉电阻介绍其实排阻就是由8个电阻组成的,其中一端全部接在一起,103为8个10K电阻,102为8个1K电阻,他们在电路中起到“上拉”的作用,又称上拉电阻。
上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,下拉同理.上拉是对器件注入电流,下拉是输出电流,弱强只是上拉电阻的阻值不同,没有什么严格区分,对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
上拉,就是把电位拉高,比如拉到VCC下拉,就是把电压拉低,拉到GND一般就是刚上电的时候,端口电压不稳定,为了让他稳定为高或低,就会用到上拉或下拉电阻。
有些芯片内部集成了上拉电阻(如单片机的P1、2、3口),所以外部就不用上拉电阻了。
但是有一些开漏的(如单片机的P0口),外部必须加上拉电阻。
单片机指纹密码锁毕业设计

单片机指纹密码锁毕业设计1. 什么是单片机指纹密码锁单片机指纹密码锁是一种电子门锁系统,它使用集成在单片机芯片上的指纹识别技术和密码输入功能,实现对门锁的访问控制。
用户可以通过输入正确的密码或者将指纹与已注册的指纹进行比对来解锁门锁。
这种锁具有高安全性和方便性,适用于各种需要保护的场所,如家庭、办公室和商店等。
2. 单片机指纹密码锁的工作原理是什么单片机指纹密码锁的工作原理主要分为三个部分:指纹模块、密码输入模块和控制模块。
指纹模块负责采集和存储用户的指纹信息。
当用户将手指放在指纹传感器上时,指纹模块会对指纹进行扫描并提取关键特征信息。
然后,它会将提取的特征信息与已存储的指纹模板进行比对,以确定是否匹配。
如果匹配成功,指纹模块会发送信号给控制模块,表示门锁可以解锁。
密码输入模块负责接收用户输入的密码。
用户可以通过键盘或者其他输入设备输入密码。
密码输入模块将接收到的密码与事先存储的正确密码进行比对,如果匹配成功,则发送信号给控制模块。
控制模块是单片机芯片,它负责整个单片机指纹密码锁系统的逻辑控制。
当控制模块接收到指纹模块或者密码输入模块发送的解锁信号后,它会打开电磁锁或者其他解锁机制,让用户能够进入被保护的区域。
3. 单片机指纹密码锁的优点是什么单片机指纹密码锁具有以下几个优点:首先,安全性高。
通过指纹识别技术,单片机指纹密码锁可以准确地识别用户的指纹,大大降低了被非法进入的风险。
同时,密码输入模块也可以提供备用的解锁方式,增加了安全性。
其次,方便性高。
用户只需要将手指放在指纹传感器上或者输入正确的密码,即可快速解锁门锁。
相比传统的钥匙锁,单片机指纹密码锁更加方便快捷。
另外,可靠性强。
单片机指纹密码锁采用先进的技术和稳定的电子元件,具有较高的可靠性和耐用性。
它可以抵御一些常见的攻击手段,如暴力破解密码等。
最后,可扩展性好。
单片机指纹密码锁可以通过与其他安全系统集成,如门禁系统或监控系统,提供更全面的安全保障。
基于单片机电子密码锁设计论文

第1节引言1.1 电子密码锁概述随着社会物质财富的日益增长和人们生活水平的提高,安全成为现代居民最关心的问题之一。
而锁自古以来就是把守门的铁将军,人们对它要求甚高,即要求可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。
传统的门锁既要备有大量的钥匙,又要担心钥匙丢失后的麻烦。
另外,如:宾馆、办公大楼、仓库、保险柜等,由于装修施工等人住时也要把原有的锁胆更换,况且钥匙随身携带也诸多便。
随着单片机的问世,出现了带微处理器的密码锁,它除具有电子密码锁的功能外,还引入了智能化、科技化等功能。
从而使密码锁具有很高的安全性、可靠性。
目前西方发达国家已经大量应用智能门禁系统,可以通过多种的更加安全更加方便可靠的方法来实现大门的管理。
但电子密码锁在我国的应用还不广泛,成本还很高,希望通过不断地努力使电子密码锁能够在我国及居民日常生活中得到广泛应用,这也是一个国家生活水平的体现。
很多行业的许多地方都要用到密码锁,随着人们生活水平的提高,如何实现家庭或公司的防盗这一问题也变的尤其突出,传统的机械锁由于其构造简单,被撬的事件屡见不鲜,再者,普通密码锁的密码容易被多次试探而破译,所以,考虑到单片机的优越性,一种基于单片机的电子密码锁应运而生。
电子密码锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲睐。
设计本课题时构思的方案:采用以AT89C2051为核心的单片机控制方案;能防止多次试探而不被破译,从而有效地克服了现实生活中存在的许多缺点。
1.2 本设计主要任务(1)共8位密码,每位的取值范围为1~8。
(2)用户可以自行设定和修改密码。
(3)按每个密码键时都有声、光提示。
(4)若键入的8位开锁密码不完全正确,则报警5秒钟,以提醒他人注意。
(5)开锁密码错3次要报警10分钟,报警期间输入密码无效,以防窃贼多次试探密码。
(6)键入的8位开锁密码完全正确才能开锁,开锁时要有1秒的提示音。
(7)密码键盘上只允许有8个密码按键和1个发光管。
基于单片机的指纹密码锁的设计

基于单片机的指纹密码锁的设计1. 本文概述随着科技的进步和社会的发展,安全性已成为现代社会关注的焦点。
在众多安全措施中,指纹密码锁作为一种高安全性的识别技术,逐渐成为人们生活的重要组成部分。
本文旨在设计一种基于单片机的指纹密码锁系统,该系统利用先进的指纹识别技术,结合单片机的数据处理能力,实现对个人财产和隐私的有效保护。
本文首先对指纹密码锁的原理和工作流程进行详细阐述,分析其在实际应用中的优势。
随后,本文将重点介绍系统的硬件设计和软件编程。
硬件设计包括指纹模块、单片机控制模块、锁控模块等关键部分的选型和连接软件编程则涵盖指纹识别算法的实现、用户信息管理、安全策略等方面的内容。
本文还将对系统的性能进行测试与分析,评估其安全性、稳定性和实用性。
本文将总结设计过程中的关键点和创新之处,并对未来指纹密码锁的发展趋势进行展望。
通过本文的研究,我们期望为指纹密码锁的设计和应用提供有益的参考,推动其在智能家居、金融安全等领域的广泛应用。
2. 系统设计原理与方案指纹密码锁的设计基于单片机技术,其核心原理在于将指纹识别技术与密码验证功能集成于一个紧凑、安全的系统中。
单片机作为控制核心,负责处理指纹识别模块采集的指纹信息,并与预设的指纹数据库进行比对,同时管理密码输入与验证过程。
系统设计方案包括硬件设计和软件设计两部分。
硬件设计主要涉及单片机的选型、指纹识别模块的集成、密码输入界面的设计以及锁体控制模块的搭建。
单片机应选用性能稳定、功耗低、具有足够处理能力的型号,以满足系统实时性和安全性的要求。
指纹识别模块需选用高精度、高识别率的型号,以确保指纹信息的准确采集与比对。
密码输入界面应设计简洁、易操作,方便用户输入密码。
锁体控制模块则负责控制锁的开关状态,确保在验证通过后才能解锁。
软件设计方面,主要包括指纹识别算法的实现、密码验证逻辑的设计以及单片机控制程序的编写。
指纹识别算法需考虑算法的准确性、速度和稳定性,以应对不同环境和用户的使用需求。
基于52单片机电子密码锁的设计

1、电阻和电容的选择:为了确保电路的稳定性和可靠性,我们选用了常见 的贴片电阻和电容,并根据实际需求进行合理布局。
2、单片机的连接方式:将STC89C52单片机与输入键盘、LED显示和开锁机构 通过合适的接口进行连接,实现密码的输入、显示和开锁功能。
软件编程
本设计的软件编程采用C语言,主要包括以下几个部分:
二、基于STC89C52单片机的电 子密码锁
1、材料和方法实现基于STC89C52单片机的电子密码锁需要准备以下材料和 设备:
1、STC89C52单片机
2、液晶显示屏(LCD)
3、键盘输入模块
4、报警模块
5、电源模块
6、门禁系统主板
实验设计方法主要包括以下步骤:
1、电路连接:根据设计要求,将单片机、液晶显示屏、键盘输入模块、报 警模块等连接起来。
1、密码设定:用户可以通过键盘输入模块设定6位数字密码,密码可随时修 改。
2、密码验证:当用户输入密码时,系统会自动验证密码是否正确。如果密 码正确,则单片机控制门禁系统主板打开门锁;如果密码错误,系统会发出报警 提示,同时锁定键盘输入和开锁功能,保护系统不被恶意攻击。
3、开锁功能:当密码验证通过后,门锁会自动打开,同时液晶显示屏会显 示“开锁成功”字样。如果需要记录开锁信息,可以通过扩展串口将开锁信息传 输到计算机或云平台进行存储和分析。实验结果表明,基于STC89C52单片机的电 子密码锁具有较高的安全性和便利性。
基于52单片机电子密码锁的设 计
01 设计思路
002 软件设计 04 调试与优化 06 参考内容
随着社会的进步和科技的发展,人们越来越注重生活的安全性和便捷性。电 子密码锁作为一种新型的安全防护设备,具有高安全性、使用方便等优点,逐渐 被广泛应用于家庭、办公室等领域。本次演示将基于52单片机设计一款电子密码 锁,以实现输入密码的安全保护功能。
单片机密码锁设计带原理图电路图

单片机密码锁设计(汇编语言-)带原理图电路图-2016(总14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--单片机密码锁设计(汇编语言)带原理图电路图什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。
本设计能完成开锁,修改密码,密码错误报警,LCD显示密码等基本的密码锁功能。
设计的电路框如图1。
电路的功能单元设计1.单片机AT89C51组成基本框图单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O口。
在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。
当不接片外存储器或不扩展I/O口时,P0可作为一个通用输入/输出口。
P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。
P1:P1口是一个内部提供上拉电阻的8位双向I/O口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。
P2:P2口也是一个内部提供上拉电阻的8位双向I/O口,在访问片外存储器时,输出高8位地址。
P3:P3口除了一般的准双向通用I/O口外,还有第二功能。
VCC:+5V电源VSS:接地 ALE:地址锁存器控制信号。
在系统扩展时,ALE用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
/PSEN:外部程序存储器读选通信号。
在读外部ROM时,/PSEN有效(低电平),以实现外部ROM单元的读操作。
/EA:访问程序存储控制信号。
当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;当/EA信号为高电平时,对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机密码锁设计什么是密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。
硬件设计基于AT89C51为核心的单片机控制的电子密码锁设计。
本设计能完成开锁,修改密码,密码错误报警,LCD 显示密码等基本的密码锁功能。
设计的电路框如图1。
图一电路的功能单元设计1.单片机AT89C51组成基本框图开锁控制电路AT89C51单片机矩阵 键盘 控制指示电路LCD 显示电路报警控制电路单片机引脚介绍P0:P0口是一个漏极开路的8位双向I/O 口。
在访问片外存储器时P0分时提供低8位地址线和8位双向数据线。
当不接片外存储器或不扩展I/O 口时,P0可作为一个通用输入/输出口。
P0口作输入口使用时,应先向口锁存器写“1”,P0口作输出口时,需接上拉电阻。
P1:P1口是一个内部提供上拉电阻的8位双向I/O 口,因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”。
P2:P2口也是一个内部提供上拉电阻的8位双向I/O 口,在访问片外存储器时,输出高8位地址。
P3:P3口除了一般的准双向通用I/O 口外,还有第二功能。
VCC :+5V 电源 VSS :接地ALE :地址锁存器控制信号。
在系统扩展时,ALE 用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。
此外,由于ALE 是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。
/PSEN :外部程序存储器读选通信号。
在读外部ROM 时,/PSEN 有效(低电平),以实现外部ROM 单元的读操作。
/EA :访问程序存储控制信号。
当/EA 信号为低电平时,对ROM 的读操作限定在外部程序存储器;当/EA 信号为高电平时,对ROM 的读操作是从内部程序存储器开始,并可延至外部程序存储器。
RST :复位信号。
当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。
XTAL1和XTAL2:外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
P0 AT89C51 CPU程序存储器 ROM并行接口串行接口 数据存储器 RAM中断系统定时器/计数器时钟电路 P3P1 P2TxD INT0 RxDINT1T0 T1外中断内中断2.单片机外围电路设计(1)单片机复位电路:采用按键手动复位方式中的电平复位方式,复位电平是通过使RST 端经电阻与VCC电源接通而实现的。
(2)单片机时钟电路:AT89C51内部有时钟电路,需外接石英晶体和微调电容,本设计的晶振频率为11.0592MHz。
3.矩阵键盘的设计本设计中用到4*4的键盘。
键盘扫描方式,键盘的列线与P1口的低4位相接,行线与P1口的高3位相接。
首先使P1.0为低电平“0”,其余三根列线为高电平“1”,读行线状态。
如果行线都为高电平状态,则P1.0这列上没键按下,如果读出的行线不全为高电平状态,则为低电平的行线与P1.0相交的键处于闭合状态。
如果P1.0上没有键闭合,接着使P1.1为低电平,其余列线为高电平,用同样的方法检查P1.1这列上有没有按键闭合。
一直到使P1.3为低电平扫描完成。
这一过程称为一次扫描过程。
由于按键是利用机械触电的合、断原理,存在弹性的影响,机械触点在闭合及断开瞬间均有抖动过程,从而使电压信号波动,为了保证CPU对键的稳定闭合仅作一次键输入处理,必须采用消除抖动影响。
本设计采用软件办法,在检测到有键按下时,执行一个延时程序后,确认该键是否保持闭合状态电平。
若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动影响。
若有按键被按下时,就将该按键译码出来,本设计采用双重循环做计数编号,当某一按键按下时,其按键编号便是计数编号,有关按键编号,扫描信号及读取按键数据返回码整理如表1。
编号按键数据输入码P1.7 P1.6 P1.5 P1.4 扫描输出信号P1.3 P1.2 P1.1 P1.0所侦测的按键0 1 1 1 0 1 1 1 0 K0 键1 1 1 0 1 1 1 1 0 K1 键2 1 0 1 1 1 1 1 0 K2 键3 0 1 1 1 1 1 1 0 K3 键4 1 1 1 0 1 1 0 1 K4 键5 1 1 0 1 1 1 0 1 K5 键6 1 0 1 1 1 1 0 1 K6 键7 0 1 1 1 1 1 0 1 K7 键8 1 1 1 0 1 0 1 1 K8 键9 1 1 0 1 1 0 1 1 K9 键10 1 0 1 1 1 0 1 1 K10 键11 0 1 1 1 1 0 1 1 K11 键表14.电路总体设计下面是本次实验的程序;******************************************************* ;以下8个字节存放8位数码管的段码LED_BIT_1 EQU 30HLED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35HLED_BIT_7 EQU 36HLED_BIT_8 EQU 37H;以下6个字节存放初始密码WORD_1 EQU 38HWORD_2 EQU 39HWORD_3 EQU 3AHWORD_4 EQU 3BHWORD_5 EQU 3CHWORD_6 EQU 3DH;以下6个字节存放用户输入的6位密码KEY_1 EQU 3EHKEY_2 EQU 3FHKEY_3 EQU 40HKEY_4 EQU 41HKEY_5 EQU 42HKEY_6 EQU 43H;****************************************************** CNT_A EQU 44HCNT_B EQU 45HKEY_CNT EQU 46H ;已输出的密码位数LINE EQU 47H ;按键行号ROW EQU 48H ;按键列号VAL EQU 49H ;键值;****************************************************** ;以下为初始化程序,包括数据存储空间初始化,设置初始密码ORG 00HSJMP STARTORG 0BHLJMP INT_T0START: MOV CNT_A,#00H ;程序初始化MOV CNT_B,#00HMOV KEY_CNT,#00HMOV LINE,#00HMOV ROW,#00HMOV VAL,#00HSETB P1.0MOV LED_BIT_1,#00H ;段码存储区清0MOV LED_BIT_2,#00HMOV LED_BIT_3,#00HMOV LED_BIT_4,#00HMOV LED_BIT_5,#00HMOV LED_BIT_6,#00HMOV LED_BIT_7,#79HMOV LED_BIT_8,#73HMOV KEY_1,#00H ;输入密码存储区清0MOV KEY_2,#00HMOV KEY_3,#00HMOV KEY_4,#00HMOV KEY_5,#00HMOV KEY_6,#00HMOV WORD_1,#6 ;设置初始密码为"123456"MOV WORD_2,#5MOV WORD_3,#4MOV WORD_4,#3MOV WORD_5,#2MOV WORD_6,#1MOV TMOD,#01HMOV TH0,#(65536-700)/256MOV TL0,#(65536-700)/256MOV IE,#82HA0: LCALL DISP;*********************************************************** ;以下为键盘扫描程序,计算键值并存入VALLSCAN: MOV P3,#0F0H ;扫描行码L1: JNB P3.0,L2LCALL DLY_SJNB P3.0,L2MOV LINE,#00HLJMP RSCANL2: JNB P3.1,L3LCALL DLY_SJNB P3.1,L3MOV LINE,#01HLJMP RSCANL3: JNB P3.2,L4LCALL DLY_SJNB P3.2,L4MOV LINE,#02HLJMP RSCANL4: JNB P3.3,A0LCALL DLY_SJNB P3.3,A0MOV LINE,#03HRSCAN: MOV P3,#0FH ;扫描列码C1: JNB P3.4,C2MOV ROW,#00HLJMP CALCUC2: JNB P3.5,C3MOV ROW,#01HLJMP CALCUC3: JNB P3.6,C1MOV ROW,#02HCALCU: MOV A,LINE ;计算键值MOV B,#03HMUL ABADD A,ROWMOV VAL,A;************************************************** ;以下为按键处理程序,对不同的按键作出响应CJNE A,#0AH,J1 ;是否为"CLR"键MOV R1,KEY_CNTCJNE R1,#00H,J2LCALL ALARM_1LJMP STARTJ2: LCALL SHIFTRDEC KEY_CNTW00:LCALL DISP ;等待按键抬起MOV A,P3CJNE A,#0FH,W01LJMP A0W01:MOV A,P3CJNE A,#0F0H,W02LJMP A0W02:SJMP W00J1: MOV A,VALCJNE A,#0BH,J3 ;判断是否为"ENTER"键MOV R1,KEY_CNTCJNE R1,#06H,J4MOV A,WORD_1 ;比较密码CJNE A,3EH,J5MOV A,WORD_2CJNE A,3FH,J5MOV A,WORD_3CJNE A,40H,J5MOV A,WORD_4CJNE A,41H,J5MOV A,WORD_5CJNE A,42H,J5MOV A,WORD_6CJNE A,43H,J5CLR P1.0LCALL DLY_LLJMP FINIJ5: LCALL ALARM_2LJMP STARTJ4: LCALL ALARM_1LJMP STARTJ3: INC KEY_CNT ;按下数字键MOV A,KEY_CNTCJNE A,#07H,K1LCALL ALARM_1W10:LCALL DISP ;等待按键抬起MOV A,P3CJNE A,#0FH,W11LJMP STARTW11:MOV A,P3CJNE A,#0F0H,W12LJMP STARTW12:SJMP W10LJMP STARTLJMP STARTK1: LCALL SHIFTLW20:LCALL DISP ;等待按键抬起MOV A,P3CJNE A,#0FH,W21LJMP A0W21:MOV A,P3CJNE A,#0F0H,W22LJMP A0W22:SJMP W20LJMP A0ALARM_1:SETB TR0 ;操作错误报警JB TR0,$RETALARM_2:SETB TR0 ;密码错误报警JB TR0,$LCALL DLY_LRET;************************************************** ;定时器中断服务程序,用于声音报警INT_T0:CPL P1.7MOV TH0,#(65536-700)/256MOV TL0,#(65536-700)/256INC CNT_AMOV R1,CNT_ACJNE R1,#30,RETUNEMOV CNT_A,#00HINC CNT_BMOV R1,CNT_BCJNE R1,#20,RETUNEMOV CNT_A,#00HMOV CNT_B,#00HCLR TR0RETUNE: RETI;************************************************** ;段码,输入密码左移子程序SHIFTL: MOV LED_BIT_6,LED_BIT_5MOV LED_BIT_5,LED_BIT_4MOV LED_BIT_4,LED_BIT_3MOV LED_BIT_3,LED_BIT_2MOV LED_BIT_2,LED_BIT_1MOV LED_BIT_1,#40HMOV KEY_6,KEY_5MOV KEY_5,KEY_4MOV KEY_4,KEY_3MOV KEY_3,KEY_2MOV KEY_2,KEY_1MOV KEY_1,VALRET;************************************************** ;段码,输入密码右移子程序SHIFTR: MOV LED_BIT_1,LED_BIT_2MOV LED_BIT_2,LED_BIT_3MOV LED_BIT_3,LED_BIT_4MOV LED_BIT_4,LED_BIT_5MOV LED_BIT_5,LED_BIT_6MOV LED_BIT_6,#00HMOV KEY_1,KEY_2MOV KEY_2,KEY_3MOV KEY_3,KEY_4MOV KEY_4,KEY_5MOV KEY_5,KEY_6MOV KEY_6,#00HRET;************************************************** ;以下为数码显示子程序DISP: CLR P2.7MOV P0,LED_BIT_8LCALL DLY_SSETB P2.7CLR P2.6MOV P0,LED_BIT_7LCALL DLY_SSETB P2.6CLR P2.5MOV P0,LED_BIT_6LCALL DLY_SSETB P2.5CLR P2.4MOV P0,LED_BIT_5LCALL DLY_SSETB P2.4CLR P2.3MOV P0,LED_BIT_4LCALL DLY_SSETB P2.3CLR P2.2MOV P0,LED_BIT_3LCALL DLY_SSETB P2.2CLR P2.1MOV P0,LED_BIT_2LCALL DLY_SSETB P2.1CLR P2.0MOV P0,LED_BIT_1LCALL DLY_SSETB P2.0RET;********************************************** DLY_S: MOV R6,#10D1: MOV R7,#250DJNZ R7,$DJNZ R6,D1RETDLY_L: MOV R5,#100D2: MOV R6,#100D3: MOV R7,#248DJNZ R7,$DJNZ R6,D3DJNZ R5,D2RETFINI: NOPEND程序流程图主程序开始正确密码正确与否I/O口初始化,LCD初始化执行主控循环LCD显示错误消息;蜂鸣器产生响警示。