电子密码锁的设计.doc_第1页
电子密码锁的设计.doc_第2页
电子密码锁的设计.doc_第3页
电子密码锁的设计.doc_第4页
电子密码锁的设计.doc_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要 单片机技术是智能化检测与控制领域应用非常普及并且具有很大潜力的技 术。论文阐述一个基于单片机的液晶显示电子密码锁的设计与实现。系统采用 美国 Atmel 公司的 AT89S52 单片机作为系统核心,液晶显示器 LCD1602 作为 输出设备显示系统提示信息,4*4 矩阵薄膜键盘作为输入设备,配合蜂鸣器、 继电器等电路构成整个系统硬件;系统软件采用汇编语言编写。设计的系统液 晶显示,密码修改方便,具有报警、锁定等功能,使用便捷简单,符合住宅、 办公用锁需求,具有一定的实用价值。 关键词:密码锁;单片机;STC89S52;LCD1602;矩阵键盘 Abstract SCM technology is very popular and has great potential in application of intelligent detection and control field. This thesis describes the design and implementation of LCD electronic password-lock system based on SCM. The system uses the product of America Atmel corporation AT89S52 as the core of system, liquid crystal monitor 1602 as the output device displaying the prompt information of system, 4*4 matrix membrane keyboard as the input device, with buzzer, relay, and other circuits together constitute the system hardware. The software of the system is written in assembly language. The designed system display in LCD, change password easily, has the function of alarming, locking, and so on. This system is simple and easy to use, meets the demand of residential, office lock needs, has some practical value. Key words: Password-Lock; SCM; STC89C52; LCD1602; 44 keypad 目 录 1 1 引言引言1 1 2 2 总体设计方案总体设计方案2 2 2.1 设计思路2 2.2 方案确立2 2.3 总体设计方框图2 3 3 设计原理分析设计原理分析4 4 3.1 单片机及其外围电路.4 3.1.1 复位电路的设计.4 3.1.2 时钟电路的设计.5 3.2 密码锁控制电路6 3.2.1 矩阵键盘电路的设计.6 3.2.2 报警控制电路的设计.8 3.2.3 液晶显示电路.9 4 4 系统软件设计系统软件设计1111 4.1 系统主程序11 4.2 初始化及按键识别12 4.3 开锁处理12 4.4 改密处理13 4.5 液晶显示子程序14 5 5 仿真调试与测试仿真调试与测试1515 总总 结结1717 致致 谢谢1818 参考文献参考文献1919 附附 录录2020 1 引言 在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务 报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥 匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折 扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来 越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁 应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。 在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机 械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无 论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展, 特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁 的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很 高的安全性、可靠性,应用日益广泛。 设计本课题时构思的方案是用以 AT89S52 为核心的单片机控制方案。 2 总体设计方案 2.1 设计思路 该电路是一种采用以 AT89S51 为核心的单片机控制方案。 利用单片机灵活的编程设计和丰富的 IO 端口,及其控制的准确性,不但能 实现基本的密码锁功能,还要根据实际需要添加调电存储、声光提示甚至增加 遥控控制功能。 2.2 方案确立 为了实现密码的保密性,采用一个 44 的矩阵式键盘可以任意设置用户密 码(1-16 位长度),从而提高了密码的保密性。 设计采用一个超级密码,送电开机时,只要输入超级密码便可开门,这样 可预防停电后再送电时无密码可用。 采用了 1602 液晶显示器来作为显示单元,提高了可读性,使用户对密码锁 的运行情况一目了然。 2.3 总体设计方框图 本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其 中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机 的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行 对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报 警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子 密码锁的电磁铁吸合线圈即可。系统整体框图如图 2.1 所示。 图2.1 系统结构框图 各模块功能如下:各模块功能如下: 1键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功 能。 2密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存。 3蜂鸣器报警电路:用于完成输错密码时候的警报功能。 4.晶振电路:用于单片机的起振。 5复位电路:完成系统的复位。 6显示模块:用于完成对系统状态显示及操作提示功能。 7. LED 显示模块:用于辅助报警与输入提示。 8开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。 复位电路 键盘输入 模块 开锁电路 密码存储模块 晶振电路 S T C 8 9 S 5 2 LCD 显示模块 蜂鸣器报警电路 3 设计原理分析 本系统外围电路包括键盘输入部分、密码存储部分、复位部分、显示部分、 报警部分、开锁部分组成,根据实际情况键盘输入部分选择 44 矩阵键盘,显 示部分选择字符型液晶显示 LCD1602,密码存储部分选用内部存储器来完成。 其原理图如图 3.1 所示。 图3.1 电路原理图 3.1 单片机及其外围电路 3.1.1复位电路的设计 复位是单片机的初始化操作。单片机启运运行时,都需要先复位,其作用 是使 CPU 和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。 因而,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的, 必须配合相应的外部电路才能实现。该复位电路采用按键电平复位式复位电路。 当单片机已在运行当中时,按下复位键 S 后松开,在复位引脚 RET(9 脚)脚 持续出现 24 个振荡器脉冲周期(即 2 个机器周期)的高电平信号将使单片机复 位。也能使 RST 为一段时间的高电平,从而实现上电或开关复位的操作。如图 3.2 所示。 图 3.2 复位电路 3.1.2 时钟电路的设计 时钟电路为单片机产生时序脉冲,单片机所有运算与控制过程都是在统一 的时序脉冲的驱动下的进行的,如果单片机的时钟电路停止工作(晶振停振), 那么单片机也就停止运行了。当采用内部时钟时,连接方法如下图所示,在晶 振引脚 XTAL1(19 脚)和 XTAL2(18 脚)引脚之间接入一个 12MHZ 晶振, 两个引脚对地分别再接入一个电容即可产生所需的时钟信号,电容的容量一般 在几十皮法,如 30PF。如图 3.3 所示。 C1 C2 Y1 XTA L1 XTA L2 图3.3 时钟电路 3.2 密码锁控制电路 3.2.1矩阵键盘电路的设计 为了加强密码的保密性,采用一个 44 的矩阵式键盘可以任意设置用户密 码(1-16 位长度),从而提高了密码的保密性,同时也能减少与单片机接口时 所占用的 I/O 口线的数目,节省了单片机的宝贵资源,在按键比较多的时候, 通常采用这种方法。其原理图如图 3.4 所示。 图3.4 矩阵键盘电路 每一行与每一列的交叉处不相同,而是通过一个按键来连通,利用这种行 列式矩阵结构只需要 N 根行线与 M 根列线,即可组成具有 N M 个按键的矩 阵键盘。 在这种行列式矩阵键盘编码的单片机系统中,键盘处理程序首先执行等待 按键并确认有无按键按下的程序段。 当确认有按键按下后,下一步就是要识别哪一个按键被按下。对键的识别 方法通常有两种:一种是通用的组行扫描查询法;另一种是速度较快的线反转 法。 此系统中,我们采用线反转法。首先辨别键盘中有无按键被按下,在单片 机 I/O 口向键盘送全扫描字,然后读入行线状态来判断。具体方法是:向行线 输出全扫描字 00H,把全部列线置成低电平,然后将列线的电平状态读入累加 器 A 中。如果有按键被按下,总会有一根行线电瓶被拉至低电平从而使行线不 全为 1。 判断键盘中哪一个按键被按下通常是通过将列线逐列至低电平后,检查行 输入状态来实现的。方法是:依次给列线送低电平,然后检查所有行线状态, 如果全为 1,则所按下的按键不在此列;如果不全为 1,则所按下的按键必在此 列,而且是在与零电平行线相交的交点上的那个按键。 按键的操作面板如图 3.5 所示,共计 10 个数字键和 6 个功能键,键盘侧面 还有一个微型蜂鸣器。键盘侧面还有一个蜂鸣器,每操作一次,它便发出声音, 提示操作成功。 0321 4765 8BA9 CFED 图3.5操作面板 10 个数字键用来输入密码,另外 6 个功能键分别是:A 查看键、B 设置新 密码键、C 退格键、D 返回键、E 确认/退出键和 F 开启键。其中退格键的功能 是当输入密码错误的时候,清除前面已经输入的数据,重新输入。确认键的功 能是确认输入的密码。开启键是切换到密码输入状态,输密码前需按该键才能 开始输入密码。按“F”键启动进入输入密码程序,按住“F”键不放 3 秒以后 进入输入密码状态。在输入密码状态下,0-9 数字键为有效键,有时间和次数限 制功能:只有三次输入密码机会,每次限制在 10 秒内完成,输入密码有误或每 次输入密码超时,则被认为是密码输入错误。当 3 次输入都错误时,程序将返 回起始状态。密码输入正确后,继电器吸合,表示锁被打开。在密码输入正确 的情况下,程序进入查看密码和修改密码状态,按“E” 键退出查看密码状态。 按“B”键进入重新设置密码状态,在输入密码时,如发现输入有误,可按 “C”删除后,重新输入,按“E”确认后,程序退出修改密码状态。按“D” 键或等待 10 秒后程序退出修改密码和查看密码状态,回到起始状态。程序内定 密码为:987654,送电开机时,只要输入内定密码便可开门,这样可预防停电 后再送电时无密码可用。当密码输入错误或密码输入时间超过规定的时间时, 蜂鸣器报警。 表3.1 按键功能表 按键键名功能说明 0-9 键数字键输入密码 A 键查看键查看密码 B 键设置新密码键设置新密码 C 键退格键退格删除 D 键返回键返回到开始界面 E 键确认/退出键确认/退出 F 键开启键开启密码输入 3.2.2报警控制电路的设计 该电路采用单频音报警电路,实现单频音报警的接口电路比较简单,其发 音元件通常可采用压电蜂鸣器,当在蜂鸣器两引脚上加 315V 直流工作电压, 就能产生 3kHZ 左右的蜂鸣振荡音响。压电式蜂鸣器结构简单、耗电少,更适 于在单片机系统中应用。压电式蜂鸣器,约需 10mA 的驱动电流,可在某端口 接上一只三极管和电阻组成的驱动电路来驱动,P.3.1 接三极管基极输入端,当 P3.7 输出高电平“1”时,三极管导通,蜂鸣器的通电而发音,当 P3.1 输出低电 平“0”时,三极管截止,蜂鸣器停止发音。如图 3.6 所示 图3.6 报警控制电路 3.2.3液晶显示电路 本系统设计的显示电路是为了给使用者以提示而设置的为了达到界面友好 的目的,显示部分由液晶显示器 LCD1602 取代普通的数码管完成。开锁时,按 下键盘上的开锁按键后,利用键盘上的数字键 09 输入密码,每按下一个数字 键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时, 按下确认键,如果输入的密码正确的话, LCD 显示“IUPUT RIGHT”,单片 机其中 P3.0 引脚会输出低电平,使三极管 T2 导通,电磁铁吸合,继电器开关 跳转,电子密码锁被打开,如果密码不正确,LCD 显示屏会显示“IUPUT ERROR”,P3.0 输出的是高电平,电子密码锁不能打开。通过 LCD 显示屏, 可以清楚地判断出密码锁所处的状态。电路图如图 3.7 所示。 图3.7 显示器电路 显示器主要用于显示以下几个字符,指示如图 3.8 所示。 图3.8(a) 开机状态 图3.8(b) 等待输入状态 ASWORDCONTROLPS AWORD D -PS 图3.8(c) 密码输入正确状态 图3.8(d) 密码输入错误及输入密码超时的提示 ITRIGHN IPUTERRORN PU 4 系统软件设计 系统的软件设计采用汇编语言编码。设计方法是先用文本编辑器编写源码, 然后用软件 Keil C51 编译,如果没有错误,可连接生成.HEX 格式的文件(需事 先在 Keil C51 中设置)。如果有错误则无法连接,但可在生成的.OBJ 文件中找 到代码错误的地方,便于修改。当然也可以直接在 Keil 中编码。生成的 HEX 文件是记录文本行的 ASCII 文本文件,在 HEX 文件中,每一行是一个 HEX 记 录,由十六进制数组成的机器码或者数据常量。HEX 文件经常被用于将程序或 数据传输存储到 ROM、EPROM,大多数编程器和模拟器使用 HEX 文件。 4.1 系统主程序 系统的主程序如图 4-1 所示。由于用户在使用系统的过程中,可能在任何 时刻按下任何按键,而程序都必须对此作出正确响应。 开始 系统初始化 密码输入 显示菜单二 键盘扫描 显示菜单一 启动密码输入? (F键按下) 锁定 密码比较 关锁 延时1s 开锁 提示正确 密码正确? 密码正确标志=1? 存新密码提示错误 错误 次数加1 查看密码 修改密码? 错误了3次? D键按下? N Y N Y N Y Y N Y N Y N 图4.1 主程序流程图 4.2 初始化及按键识别 如图 4.2,系统的初始化包括堆栈起始地址的设定,两个定时/计数器 的设定,液晶显示模式的设定,密码缓冲区的初始化,一些自定义数据空间的 初始化,蜂鸣器初始化发声等操作。 系统初始化并读取密码完成后,液晶显示“PASSWORD CONTROL“, 提示用户可以输入密码。此时程序即不断测试按键,检查是否有按键被按下。 如果有,则进行按键识别;如果没有按键按下,或者按下的按键没有被识别, R3 赋值 0FFH,并跳转至按键测试。实际程序运行时,绝大部分时间都在测试 按键,等待用户输入。 载入 初始密码 读取成功? 读取密码 系统初始化 开始 提示输入密码 按键测试子程序 有按键按下? 按键识别子程序 识别成功? 按键重定位 延时0.5S 否 是 是 是 否 否 图4.2 初始化及按键识别流程图 4.3 开锁处理 首先 LCD 初始化,输入密码,密码正确则使开锁电路动作,继电器得电, 开锁指示灯亮。开锁程序流程图如图 4.3 所示。 开锁 LCD初始化 按开锁键 输入密码 LCD初始化 确认程序 输入密码正确? 开锁成功 报警程序 返回 是 否 图4.3 开锁流程图 4.4 改密处理 如图 4.4,可以看出,改密键的处理流程跟开锁键类似,都需检查密码是否 正确,错误的话,提示重新输入,只有输入密码正确才可以进行改密。然后再 按更改键,密码更改程序被调用,进而更改密码,此过程,LCD 都会显示信息。 开始 密码正确? 提示 输入新密码 密码错误重新输入 再次 输入新密码 对比两次 输入相同 更改成功 否 否 是 图4.4 改密流程图 4.5 液晶显示子程序 液晶显示子程序在每次更新显示内容时都会被调用,其流程如图 4.5 所示。 开始 清显示 写指令入IR 字符地址入DPTR 字符=00H? 写结束 字符代码送入P0口写数据入DR 地址+1 返回 图4.5 液晶显示子程序流程图 每次更新显示内容前,需清显示清空 LCD 原先的显示内容,清屏指令的指 令码为 01H,即将 P0 口赋值 01H,然后写入指令寄存器 IR。 LCD1602 要显示的内容是根据其控制器内置的字符码表,事先列出要显示 的 ASCII 字符串。每次送一个字符的 ASCII 码入 P0 口,然后写入数据寄存器 DR,最后将字符地址加一,LCD1602 会将写入的 ASCII 码对应的字符依次显 示出来。由于显示字符串的长度不尽相同,约定每串字符以 00H 结尾;程序检 测到字符码为 00H 时,即停止写入,返回。LCD 显示的内容在下次更新前会一 直保持。 5 仿真调试与测试 开机后,LCD1602 显示如图 5.1 所示,等待按键输入 图 5.1 起始状态 输入密码分两个过程:首先必须开启密码输入功能才能输入密码,按住 “F”键 3 秒以上才能启动进入输入密码程序,进入输入密码状态,LCD1602 显示如图 5.2 所示: 图 5.2 输入密码状态 此时使用矩阵键盘输入密码,在输入密码状态下,0-9 为有效数字键。本系 统有时间、次数限制功能,不给别人试探机会:三次输入密码机会,每次限制 在 10 秒内完成。 输入密码正确后,继电器吸合,密码锁打开,LCD1602 显示如图 5.3 所示。 图 5.3 输入正确提示 键入密码有误或每次输入密码时间超过 10 秒,则被认为是密码输入错误。 假如密码输入错误,则 LCD1602 显示如图 5.4 所示: 图 5.4 输入错误提示 当 3 次输入密码都错误时,程序将返回起始状态,并锁定。 在密码输入正确的情况下,程序进入查看密码和修改密码状态。 按“A”键进入查看密码状态,LCD1602 显示: 按“E”键退出看密码状态。 按“B”键进入重新设置状态,LCD1602 显示: 在输入新密码时,如果输入有误,可按“C”删除后,重新输入。 按“E”确认后,程序退出修改密码状态。 按“D”键或等待 10 秒后,程序退出修改密码和查看密码状态,回到起始 状态。 设计采用一个超级密码,送电开机时,只要输入超级密码便可开门,这样 可预防停电后再送电时无密码可用。超级密码为:987654 总 结 在着手本次课程设计时,通过查阅网络与图书馆搜集到的资料,再加上指 导老师指点,结合生活中对密码锁的功能特性要求,设计出了这一套电子密码 锁系统的主要硬件结构和软件结构,基本完成了课题的要求。不过由于了解的 专业知识尚浅,对课题的研究经验的不足,使得在技术的解决与运用上显得粗 糙了一些,特别是功能按键的设定。所幸该系统能基本上完成一个电子密码锁 应有的功能特性:开锁提示,输错报警,密码修改,掉电存储。本系统用的是 6 位密码输入,有 106 种密码输入方案,相较于机械锁具,防盗能力已经相当不 俗。这个系统软硬件设计简单,易于开发,成本较低,安全可靠,操作方便。 本次设计的电子密码锁是以手动键盘输入密码的,通过这两个星期对电子 密码锁的研究学习,发觉这种密码输入方式可以进行改革。在越来越高科技化 的今天,遥控控制显的愈发重要,今后的电子密码锁应该具有以红外技术或无 线电技术为辅助的密码按键输入远程交互技术,这样就能远程输入密码完成操 作。也可以放弃传统的按键输入密码模式,借助传感器技术运用声控来实现密 码输入,又或者人脸识别技术,还有一种就是用户指纹输入方式,这些都可以 使开锁的时间更短更方便。电子密码锁产业将向静态功耗更低,外围电路更简化, 可提供的功能或控制口更多,更人性化高科技化的方向发展。 通过本次课程设计的锻炼,我学到了很多有关电子密码锁的设计方法与工 作原理,巩固了单片机知识。期间也碰到不少问题,比如如何去模拟实现开锁这一 功能,解决办法是找了个微型电磁继电器作为锁具,其内部电磁开关特性符合开锁 的现象。再到后来的焊接工作,由于粗心大意,焊接出错的情况不在少数,往 往在调试的时候才得以发现,特别是 44 矩阵键盘的焊接,改了不下 10 次。系 统调试时碰到过按键不灵敏的问题。后来增加了键盘列位置上的电阻,增加了电 平,效果得到改善。慢工出细活,过程是很重要的,只有耐心细心努力地去把握 过程,才能得到可喜的结果。 致 谢 在本课程设计进行过程中得到 XX 老师的悉心指导,还有很多同学的帮助。 XX 老师严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。在此, 谨向老师和帮助我的同学致以诚挚的谢意和崇高的敬意。 参考文献 1 孙涵芳,徐爱卿。MCS-51/96 系列单片机原理及应用M。北京:北京航空 航天大学出版社,1996 2 李广弟,朱月秀,冷祖祁。单片机基础M。北京:北京航空航天大学出版 社,2007 3 董继成。一种新型安全的单片机密码锁J。电子技术,2004,(03) 4 石文轩,宋薇。基于单片机 MSC-51 的智能密码锁设计S。武汉工程职业 技术学院学报,2004,(01) 5 吴春国,李文石。单片机控制电子锁技术剖析S。东北林业大学学报, 2002,(05) 6 李景宏,马学文。电子技术实验教程M。沈阳:东北大学出版社,2004 7 贾正松。单片机系统复位电路设计J。科技资讯,2007,(36) 8 袁新燕。浅谈单片机应用系统的调试J。自动化与仪器仪表,2000,(03) 9 王晖,薛永存。基于 MCS-51 单片机的复位电路抗干扰分析与设计J。现 代电子技术,2006,(08) 10 datasheet of Microcontroller AT89S52.Atmel,Inc. 11 datasheet of Serial EEPROM 2K(256*8) AT24C02.Amel,Inc. 12 通用 LCD1602 液晶显示模块使用手册(J/OL)。伟纳电子 . 13 51 单片机综合学习系统蜂鸣器、继电器篇(J/OL)。维普资讯 . 14 单片机控制继电器实验(J/OL)。电子驿站 . 15 9012,9013,9014,9015,9018 晶体三极管技术手册(J/OL)。电子爱好者 . 16 蔡金生。SUPERPRO 编程器使用指南(J/OL)。沪生电子 . 附 录 附录一 总电路原理图 1234 A B C D 4321 D C B A Title NumberRevisionSize A Date:5-Jan-2011 Sheet of File:D:PROG RAM FIL ESDE SIGN EXPLOR ER 99 SEE XAM PLE SPRE VIO 11.D DBDrawn B y: 1 2 J3 US B R1 1K D1 LE D DY KG 下下 VC C S1 SW -PB R3 200 R2 1K +C3 22uF VC C 下下下下 C1 33pF C2 33pF Y1 12M Hz X1 X2 下下下下 1 2 JX2 CO N2 R4 1K Q9PN P LS1 SPE AKE R VC CB21 B21 P31 下下下下 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 U3 ISP VC C P15 P16 P17 RE T 下下下 RE T P10 1 P11 2 P12 3 P13 4 P14 5 P15 6 P16 7 P17 8 AT 89S52 RST 9 P30 10 P31 11 P32 12 P33 13 P34 14 P35 15 P36 16 P37 17 XT AL2 18 XT AL1 19 GN D 20 P20 21 P21 22 P22 23 P23 24 P24 25 P25 26 P26 27 P27 28 PSE N 29 AL E/PR OG 30 EA /VPP 31 P07 32 P06 33 P05 34 P04 35 P03 36 P02 37 P01 38 P00 39 VC C 40 U1 AT 89S52 P10 P11 P12 P13 P14 P15 P16 P17 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 VC C VC C RE T X1 X2 AL E/P PSE NP32 P33 P34 P35 P36 P37 P30 P31 下下下 D0 D1 D2 D3 D4 D5 D6 D7 RS RW EN VSS VDD VEE U2 LC D1602 P10 P11 P12 P13 P14 P15 P16 P17 P20 P21 P22 VC C 下下下下下下 S00S01S02S03 S04S05S06S07 S08S09SASB SCSDSESF P10 P11 P12 P13 P14 P15 P16 P17 1 2 3 4 5 6 7 8 JP1 CO N8 1 2 3 4 5 6 7 8 JP2 CO N8 1 2 3 4 5 6 7 8 JP3 CO N8 1 2 3 4 5 6 7 8 JP4 CO N8 P00 P01 P02 P03 P04 P05 P06 P07 P10 P11 P12 P13 P14 P15 P16 P17 P20 P21 P22 P23 P24 P25 P26 P27 P30 P31 P32 P33 P34 P35 P36 P37 下下下下 1 2 3 4 5 6 7 8 9 J5 10k VC C P00 P01 P02 P03 P04 P05 P06 P07 附录二 原器件清单 名称型号数量备注 单片机AT89S521含双列直插插座 电阻1K3 电阻2001 排阻8x10k1 液晶显示器LM16021 瓷片电容33pF2 电解电容22uF1 按键轻触按键17 晶振12MHz1 单排插针1x84 发光二极管1 直流插座1 下载口1 蜂鸣器1 继电器1 附录三 PCB 图 顶层图: 底层图: 元件布局图: 附录四 源程序清单 ;* BEEP BIT P3.1 RELAY BIT P3.6 SEC10 BIT 20H.1 SEC3 BIT 20H.2 PASS_OK BIT 20H.3 PASS_OLD EQU 30H PASS_NEW EQU 37H PASS_DIS EQU 40H ;密码显存单元 COUNT EQU 47H ;50ms 计数单元 SEC EQU 48H ;秒单元 POS EQU 49H ;* BUSY BIT P0.7 LCD_RS BIT P2.0 ;LCD 控制管脚定义 LCD_RW BIT P2.1 LCD_EN BIT P2.2 DATAPORT EQU P0 ;定义 LCD 的数据端口 LCD_X EQU 29H TIMES EQU 2AH BUSY_CHECK BIT 20H.0 ;* ;* ORG 0000H AJMP MAIN ORG 000BH LJMP TIMER0 ORG 0050H ;* MAIN: MOV SP,#60H ;设置堆栈指针 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV TMOD,#01H ;工作于方式 1 MOV TH0,#4CH ;50ms 定时常数 MOV TL0,#00H SETB ET0 SETB EA MOV PASS_OLD,#09H ;内定密码值 MOV PASS_OLD+1,#08H MOV PASS_OLD+2,#07H MOV PASS_OLD+3,#06H MOV PASS_OLD+4,#05H MOV PASS_OLD+5,#04H ACALL LCD_INIT ;LCD 初始化 MAIN1: CLR TR0 CLR SEC3 CLR SEC10 CLR PASS_OK MOV COUNT,#00H MOV SEC,#00H SETB RELAY ;继电器释放 ACALL MENU1 ACALL START_IN MOV R4,#03H ;3 次输入密码机会 MAIN2: ACALL PASS_IN ACALL PASS_COMP MOV R5,#100 ;延时 1s ACALL DELAY JB PASS_OK,MAIN3 DJNZ R4,MAIN2 AJMP MAIN1 MAIN3: ACALL PASS_LOOK ACALL CHANGE_PASS JB SEC10,MAIN4 ACALL KEY_SCAN CJNE A,#0DH,MAIN3 ;判是否“D”按下? MAIN4: ACALL BEEP_BL AJMP MAIN1 ;* ; 菜单 1 显示子程序 (PASSWORD CONTROL) ; (LEARN BY HEART) ;* MENU1: MOV B,#00H MOV DPTR,#INFO1 ;指针指到信息 1 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO4 ;指针指到信息 4 ACALL W_STRING2 RET ;* ; 菜单 2 显示子程序 (INPUT PASSWORD) ; (PASSWORD -) ;* MENU2: MOV B,#00H MOV DPTR,#INFO3 ;指针指到信息 3 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO2 ;指针指到信息 2 ACALL W_STRING2 RET ;* ; 菜单 3 显示子程序 (LOOK PASSWORD) ; (PASSWORD -) ;* MENU3: MOV B,#00H MOV DPTR,#INFO7 ;指针指到信息 7 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO2 ;指针指到信息 2 ACALL W_STRING2 RET ;* ; 菜单 4 显示子程序 (CHANGE PASSWORD) ; (PASSWORD -) ;* MENU4: MOV B,#00H MOV DPTR,#INFO8 ;指针指到信息 1 ACALL W_STRING1 MOV B,#00H MOV DPTR,#INFO2 ;指针指到信息 2 ACALL W_STRING2 RET ;* ; 信息字符串表 ;* INFO1: DB “PASSWORD CONTROL“,0 INFO2: DB “PASSWORD - “,0 INFO3: DB “ INPUT PASSWORD “,0 INFO4: DB “ LEARN BY HEART “,0 INFO5: DB “ IUPUT RIGHT “,0 INFO6: DB “ IUPUT ERROR “,0 INFO7: DB “ LOOK PASSWORD “,0 INFO8: DB “ RESET PASSWORD “,0 ;* ; 矩阵键盘键值查找程序 ; 键值存入 R3 ;* KEY_SCAN: MOV P1,#0F0H ;置列线为 0,行线为 1 NOP MOV A,P1 ;读入 P1 口状态 ANL A,#0F0H ;保留高 4 位 MOV B,A ;保存数据 MOV P1,#0FH ;置列线为 1,行线为 0 NOP MOV A,P1 ;读入 P1 口状态 ANL A,#0FH ;保留低 4 位 ORL A,B ;高四位与低四位重新组合 CJNE A,#0FFH,KEY_IN1 ;0FFH 为末按键 AJMP KEY_END KEY_IN1: MOV B,A ;保存键值 MOV DPTR,#KEYTABLE ;置键编码表首址 MOV R3,#0FFH ; KEY_IN2: INC R3 ;查表次数加 1 MOV A,R3 MOVC A,A+DPTR ;取出键码 CJNE A,B,KEY_IN3 ;比较 MOV A,R3 ;找到,取次数值 AJMP KEY_END KEY_IN3: CJNE A,#00H,KEY_IN2 ;继续查 ;00H 为结束码 KEY_END: RET ;* ; 键编码表 ;* KEYTABLE: DB 0EEH,0EDH,0EBH,0E7H,0DEH DB 0DDH,0DBH,0D7H,0BEH,0BDH DB 0BBH,0B7H,07EH,07DH,07BH DB 077H,00H ;00H 为结束码 ;* ; 密码显示子程序 ;* PASS_PLAY: MOV R0,#PASS_OLD ;存放数据首地址 MOV R2,#06H ;显示 6 组数据 MOV LCD_X,#09H ;第 9 列 ACALL SET_X2 ;第二行 P_PLAY: MOV A,R0 ;取显示数据 ADD A,#30H ;转换为 ASCII 码 ACALL WDATA ;写数据,显示 INC R0 ;修改存放数据地址 DJNZ R2,P_PLAY RET ;* ; 启动输入子程序 ; 按 F 键大于 3 秒,方可退出此程序 ;* START_IN: CLR SEC3 ;清 3s 标志位 MOV COUNT,#00H ;清中断计数单元 MOV SEC,#00H S_IN1: ACALL KEY_SCAN CJNE A,#0FH,S_IN1 ;“F”键 SETB TR0 ;启动 TIMER0 中断 S_IN2: ACALL KEY_SCAN CJNE A,#0FH,S_IN3 ;“F”键 JNB SEC3,S_IN2 ;没有达到 3s,转移 CLR TR0 ;停止 TIMER0 中断 CLR SEC3 ;清 3s 标志位 MOV SEC,#00H MOV COUNT,#00H ;清中断计数单元 ACALL MENU2 ACALL BEEP_BL AJMP S_END S_IN3: CLR TR0 ;停止 TIMER0 中断 CLR SEC3 ;清 3s 标志位 MOV COUNT,#00H ;清中断计数单元 MOV SEC,#00H AJMP S_IN1 S_END: RET ;* ; 密码输入子程序 ;* PASS_IN: ACALL MENU2 MOV R0,#PASS_NEW ;存放输入密码单元首地址 MOV R2,#06H ;6 位密码 MOV LCD_X,#09H ;确定显示首位置 ACALL SET_X2 CLR SEC10 ;清 10s 标志位 MOV SEC,#00H ;清秒计数单元 MOV COUNT,#00H ;清中断计数单元 SETB TR0 P_IN1: JB SEC10,P_END ACALL KEY_SCAN CJNE A,#0FFH,P_IN2 ;判是否有键按下? AJMP P_IN1 P_IN2: ACALL KEY_SCAN CJNE A,#0AH,P_IN3 ;数字键 0-9 有效 P_IN3: JNC P_IN1 ;=时,C=0 MOV A,R3 ;取键值 MOV R0,A ;保存输入密码值 INC R0 ADD A,#30H ;转换为 ASCII 码 ACALL WDATA ;显示输入密码值 ACALL BEEP_BL ;蜂鸣器响一声 DJNZ R2,P_IN1 P_END: CLR TR0 MOV SEC,#00H ;清秒计数单元 CLR SEC10 ;清 10s 标志位 MOV COUNT,#00H ;清中断计数单元 RET ;* ; 修改密码子程序 ;* CHANGE_PASS: ACALL KEY_SCAN CJNE A,#0BH,CH_END ;判“B”键是否按下? CLR TR0 ACALL MENU4 MOV R0,#PASS_OLD ;存放输入密码单元首地址 MOV R2,#06H ;6 位密码 MOV POS,#09H ;确定显示首位置 ACALL BEEP_BL CH_IN1: ACALL KEY_SCAN CJNE A,#0FFH,CH_IN2 ;判是否有键按下? AJMP CH_IN1 CH_IN2: ACALL KEY_SCAN CJNE A,#0AH,CH_IN3 ;数字键 0-9 有效 CH_IN3: JNC CH_IN4 ;=时,C=0 MOV LCD_X,POS ;确定显示位置 ACALL SET_X2 M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论