电子密码锁的设计与制作 - 图文

更新时间:2024-07-09 16:44:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编号

淮安信息职业技术学院

毕业论文

题 目 电子密码锁的设计与制作 周凯 16111125 电子工程学院 光电子技术(光伏发电)

161111 徐传顺

二〇一四年六月

学生姓名 学 号 系 部 专 业 班 级 指导教师 顾问教师

摘 要

摘 要

随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。

本设计以AT89C51单片机为控制核心,结合矩阵键盘、24C02A存储系统等来完成电子密码锁的设计。单片机接收键入的代码后,与存贮在24C02A的密码进行比较,如果密码输入正确,则锁将打开;如果输入不正确则系统报警,但是允许接着输入密码,直到输入正确,系统开锁,设计达到预期效果。

本设计是基于单片机的密码锁设计方案,根据要求,给出了该单片机密码锁的硬件电路和软件程序,同时给出了单片机型号的选择、硬件设计、软件流程图、单片机存储单元的分配、汇编语言源程序及详细注释等内容。

关键词 4×4矩阵键盘 AT89C51 24C02A存储系统 电子密码锁

I

Abstract

Abstract

With the development of science and technology, SCM is not a strange noun, its appearance is an important milepost of modern computer technology

development history, because the microcontroller marks the birth of computer was officially formed the general computer systems and embedded computer system two branches. Single chip microcontroller tiny size and low cost, can be widely embedded in such as toys, household appliances, robotics, instrumentation, automotive electronics, industrial control unit, office automation equipment, electronic financial systems, ship, personal information terminal and communication products, become the most important intelligent tool in modern electronic systems.

This design USES AT89C51 single chip microcomputer as control core, combined with the matrix keyboard, 24 c04a storage system to complete the design of the electronic combination lock, etc. MCU receives the type in the code, after comparing with storage at 24 c04a password, if the password is correct, the lock will open; If the input is not correct the system alarm, but allow and then enter the password, until the input is correct, system lock, designed to achieve the desired effect.

This design is a microcontroller password lock design, based on the requirements, the microcontroller password lock hardware circuit and software program, it also gives the type selection, hardware design, software flow chart, microcontroller storage unit allocation, assembly language source code and detailed notes.

Keywords: 4*4matriix keyboard AT89C51 24c02a storage system electronic combination lock

II

目 录

目 录

摘 要 ............................................................................................................................. I ABSTRACT .................................................................................................................. II 第一章 绪论 ................................................................................................................... 1 1.1背景 ....................................................................................................................... 1 1.2电子锁 ................................................................................................................... 1 1.3电子密码锁的特点 ............................................................................................... 1 1.4电子密码锁的的发展趋势 ................................................................................... 2 第二章 系统总体方案设计 ......................................................................................... 3 2.1系统结构 ............................................................................................................... 3 2.2总体方案比较与论证 ........................................................................................... 3 2.3各方案试验比较 ................................................................................................... 4 第三章 硬件设计 ......................................................................................................... 7 3.1 单片机AT89C51简介 ......................................................................................... 7 3.1.1 主要特性 ........................................................................................................ 7

3.1.2 管脚的说明 .................................................................................................... 8 3.2输入键盘 ............................................................................................................... 9 3.3显示部分 ............................................................................................................. 10 3.3.1 引脚的功能 .................................................................................................. 10 3.3.2 液晶显示指令 .......................................................................................... 10 3.3.3 液晶显示指令 .............................................................................................. 12 3.4震荡电路 ............................................................................................................. 12 3.5外部存储 ............................................................................................................. 12 3.5.1 24c02引脚说明 ............................................................................................ 13 3.5.2 24c02内部寻址,读/写操作 ....................................................................... 13 第四章 系统软件设计 ................................................................................................. 15 4.1主程序模块 ......................................................................................................... 15 4.2键盘扫描及识别子程序 ..................................................................................... 16 4.3系统模块密码设置子程序 ................................................................................. 17 4.4程序调试 ............................................................................................................. 18 第五章 系统仿真设计 ................................................................................................. 21 5.1 PROTEUS软件介绍 .............................................................................................. 21 5.2 PROTEUS 仿真图 ................................................................................................. 22

III

目 录

第六章 总结与展望 .................................................................................................. 23 致 谢........................................................................................................................... 25 参考文献 ...................................................................................................................... 27 附录 程序清单 .......................................................................................................... 29

IV

第一章 绪论

第一章 绪论

电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,特点如下:

1.保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2.密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。

3.误码输入保护。当输入密码多次错误时,报警系统自动启动。 4.电子密码锁操作简单易行,一学即会。 5.干扰码功能 在输入正确密码前可输入任意码。

1.1背景

随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。目前国内,大部分人使用的还是传统的机械锁。然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。所谓互开率,是各种锁具的一个技术质量标准,也就是1把钥匙能开几把锁的比率。经国家工商局、国家内贸局、中国消协等部门对锁具市场的调查,发现个别产品的互开率居然超标26倍。

为何弹子锁的“互开率”会如此之高?据有关专家人士剖析,弹子锁质量好坏主要取决于弹子数量的多少以及弹子的大小,而弹子的多少和大小受一定条件的限制。此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。机械锁的这些弊端为一种新型的锁——电子密码锁,提供了发展的空间。

1.2电子锁

电子锁是采取电子电路控制,以电磁铁或者卫星电机和锁体作为执行装置的机电一体化锁具,相比传统的机械锁具,电子锁不使用金属钥匙,保密性、精度都有很大提高。

电子锁的发明思路,源自古代发明的自动机械,例如古希腊数学家赫伦的液压自动门,中国古代诸葛亮的木牛流马,它们以重力或蒸汽压力驱动,最广泛的用途乃是用在古代墓道的地下机关。电子工业的诞生,使得以微小电量驱动机械成为可能,于是有了电子锁一日千里的跃进。

1.3电子密码锁的特点

电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开

1

淮安信息职业技术学院毕业设计论文

关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,主要特点如下:

1.保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2.密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。

3.误码输入保护。当输入密码多次错误时,报警系统自动启动,防止试探密码。

1.4电子密码锁的的发展趋势

从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。因此,为了发扬优点、克服弱点,键盘式电子密码也在不断发展中,如任意设定密码技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新;而自动更改密码技术使得本次输入的密码将自动更改成下次应输入的密码,更改的规律不为他人所知,因而不怕旁观者窥测;独出心裁的键盘乱序显示技术使得键盘上的固定键位每次显示出的字符不固定,并且显示的窄小角度只能由操作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码;“多重密码设定”技术使得单组密码不一定有效,适合多人分权使用,需要输入两组以上的密码才被认可,大大提高了保密性,如果限定输入这些密码的先后顺序或时间区段,则保密性还可提高。在输入密码的过程中,为了限制试探密码的企图,通常输入错误码若干次或若干时间内输入不正确,即封锁键盘,不再接受输入操作。总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。

2

第二章 系统总体方案设计

第二章 系统总体方案设计

2.1系统结构

本设计主要由单片机、矩阵键盘和数码管等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,并且通过单片开锁机将控制引脚的高低电平送到液晶显示电路或者报警电路控制开锁还是报警,系统整体框图如图2-1所示

键盘输入模块显示模块复位电路AT89C51报警电路失电存储开锁电路 图2-1系统结构框图

2.2总体方案比较与论证

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

方案二:以AT89C51为核心的单片机控制方案,如图2-2所示。利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接显示器,键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标,而且单片机编程设计灵活、I/O端口丰富、控制的准确性高,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制等附加功能,此外单片机方案有较大的活动空间,不但能实现缩要求的功能,还能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。

3

淮安信息职业技术学院毕业设计论文

键盘输入输入错误锁定延时报警AT89C51失电存储开锁控制显示图2-2单片机控制方案

2.3各方案试验比较

方案一:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,因此液晶显示器画质高;同样液晶屏的功率消耗比较小;液晶是平板型结构,由两片玻璃组成的夹层盒,面积可大可小,安装时占用面积小减小了设备的体积;液晶的信息量大相同的面积上与数码管比可以显示更多的信息;且他本身没有老化问题寿命极长;与数码管相比液晶屏显示的更能够看懂,他能将英文细腻的显示出来是数码管做不到的。然而液晶屏也可在阳光下工作,具有防风、防雨、防水功能。这就说明能够使用在室外。但是液晶在阳光强的时候会反光是视角模糊看不清楚,对于这个现象由于屏幕较小可以用手挡住阳光是自己看的清楚一点。

图2-3 液晶显示

方案二:用数码管来显示,与液晶相同也能显示数字和字母,但是在显示字母的时候没有液晶那么细腻很难辨认,而且用数码管显示一个较长的英文就会用到好几个数码管扩大了空间,就显得美观。数码管的优点是在强光下也能看清上面显示的内容。

图2-4 数码管显示

4

第二章 系统总体方案设计

综合两方案的比较用液晶显示比较合适。

5

淮安信息职业技术学院毕业设计论文

6

第三章 硬件设计

第三章 硬件设计

3.1 单片机AT89C51简介

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4K bytes的可反复擦写的只读程序存储器(EPROM)和128bytes的随机存取数据序存器(RAM),器件采用ATMEL公司的高密度/非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和FLASH存储单元,AT89C51单片机为许多嵌入式控制系统提供了一种灵活行高且价廉的方案。

图3-1AT89C51芯片

3.1.1 主要特性

1. 8031 CPU与MCS-51 兼容4K字节可编程FLASH存储器(寿命:1000写/擦循环)

2. 全静态工作:0Hz-24KHz 3. 三级程序存储器保密锁定 4. 128*8位内部RAM 5. 32条可编程I/O线 6. 两个16位定时器/计数器 7. 6个中断源 8. 可编程串行通道

9. 低功耗的闲置和掉电模式 10. 片内振荡器和时钟电路

7

淮安信息职业技术学院毕业设计论文

图3-2 AT89C51引脚图

3.1.2 管脚的说明

VCC:供电电压。 GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

8

第三章 硬件设计

管脚 备选功能:

P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

3.2输入键盘

如图3-2所示,采用4×4触点式键盘,分别有数字键,确定键,清除键和干扰键。

9

淮安信息职业技术学院毕业设计论文

BCD789清除P1_0456S3P1_1123S4P1_2S10S2确认P1_3P1_4P1_5P1_6P1_7 图3-2 按键图 3.3显示部分 为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。只有按下键盘上的开启按键后,显示器才处于开启状态。同理只有按下关闭按键后显示器才处于关闭状态。否则显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下键盘上的开锁按键后利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD子显示“RIGHT”,单片机其中P2.0引角会输出低电平,使三极管T2导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ERROR”,P2.0输出的是高电平,电子密码锁不能被打开。 3.3.1 引脚的功能 表3-1 液晶显示引脚功能 编号 1 2 3 4 5 6 7 符号 VSS VDD VL RS R/W E D0 引脚说明 电源地 电源正极 液晶显示偏压信号 数据/命令选择端(H/L) 读/写选择端(H/L) 使能信号 Data I/O 编号 8 9 10 11 12 13 14 符号 D1 D2 D3 D4 D5 D6 D7 引脚说明 Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O 3.3.2 液晶显示指令

10

第三章 硬件设计

表3-2显示指令代码

控制信号 RS 0 0 0 0 0 0 0 0 0 1 1 RW 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 ADD 0 0 0 0 0 1 ACG 指令代码 D7 D6 D5 D4 D3 0 0 0 0 1 0 0 0 1 D2 0 0 1 D F D1 0 1 C * D0 1 * B * * 清屏 软复位 内部方式设置 显示开关控制 位移控制 系统方式设置 CGRAM地址设置 显示地址设置 忙状态检查 MCU-LCD LCD-MCU 功能 I/D S S/C R/L * DL N BF AC 写数据 读数据 1) 2) 3) 4)

清屏显示。指令码01H,光标复位到地址00H位置 光标复位。光标返回到地址00H

光标和显示模式设置。I/D:光标移动方向,1:右移,0:左移; S:显示开关控制。D:控制整体显示的开与关,1表示开显示,0表示

屏幕上所有文字是否左移或者右移。1有效,0则无效

关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁

5) 标

6) 7) 8) 9)

功能设置命令。 DL:0时为4位总线,1时为8位; N:0时为单字符发生器RAM地址设置 DDRAM地址设置

读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不

行显示,1时双行; F: 0时显示5x7的点阵字符,1时5x10

光标或显示移位。 S/C:高电平时移动显示的文字,低电平时移动光

能接收命令或者数据,如果为低电平表示不忙。

10) 写数据 11)

读数据

11

淮安信息职业技术学院毕业设计论文

3.3.3 液晶显示指令

液晶的读时序图

液晶的写时序图

图3-3 液晶显示的时序图

3.4震荡电路

图3-4震荡电路

本设计晶振选择频率为12MHZ,电容选择30pF。经计算得单片机工作胡机器周期为:

12×(1÷12M)=1us。

3.5外部存储

EPROM(Erasable Programmable Read Only Memory),中文含意为“可擦除可编程只读存储器”。它是一种可重写的存储器芯片,并且其内容在掉电的时候也不会丢失;换句话说,它是非易失性的。它通过EPROM编程 器进行编程,EPROM编程器能够提供比正常工作电压更高的电压对EPROM编程。一旦经过

12

第三章 硬件设计

编程,EPROM只有在强紫外线的照射下才能够进行擦除。 3.5.1 24c02引脚说明

如下图3-6所示:

A0,A1,A2——地址输入引脚,走位硬件寻址的依据,同种芯片可同时连接8片(2^3);

VCC,GND——电源,接地引脚,1.8-5.5v

WP——写保护,当WP接地时,允许对器件的正常读写操作;当WP接高电平时,写保护,只能进行读操作。

SDA——串行地址/数据输入/输出端口,双向传输,漏极开路,需外接上拉电阻到VCC(典型阻值为10k)。

SCL——串行时钟输入,高低电平不同状态与SDA配合,执行不同的命令。

图3-5 24C02的引脚功能图

3.5.2 24c02内部寻址,读/写操作

前八位是地址地址信号,从最高位(MSB)开始,其中前四位是固定值1010,后三位有管脚A0、A1、A2的基地情况确定。最后一位是读写控制信号,0表示写,1表示读。若与SDA线发送过来的地址比较一致,则器件输出应答0,否则将返回等待状态。

器件内部地址寻址是在器件寻址之后,对256个字节进行寻址,直接传送8位地址信号(00-FF)对应于器件内部的地址。

先由主机发送起始命令,再发送送器件地址,当主机接收到器件的ACK应答后,便继续发送内部字节地址,当接收到ACK应答后继续发送数据,当8位数据发送完毕之后,主机接收到器件的ACK应答,在发送停止信号。如图3-6所示:

图3-6 24C02写寻址

13

淮安信息职业技术学院毕业设计论文

内部地址计数器存放着上一次访问时最后一个地址加1的值,只要芯片有电,该值就被保存。当读到最后页的最后字节,该地址变为0;当读到某页的页尾时,该地址转向该页页首。如图3-7所示:

图3-7 24C02读寻址

14

第四章 系统软件设计

第四章 系统软件设计

因设计主要是作用汇编语言来开发的51单片机项目程序,所以首先必须有一个可以在Windows XP或Windows vista操作系统下执行的汇编语言编译器,本设计采用Keil编译器进行编程,因为它可以支持一系列的51单片机。

开始 旧密码输入 初始化 A 模式选择 B 新密码输入 存入缓存区 N 再次输入密码 重新输入 识别按键 手动清除 N 密码输入 Y 密码比较 设置完毕返回 开门

图4-1 主程序的流程图

4.1主程序模块

主程序主要是完成系统初始化、设置中断向量、检查有无键按下、以及调用显示等等。主程序部分如下所示: en bit p3.5 rw bit p3.4 rs bit p3.3

;将lcd的en管脚连接到单片机的p3.5口 ;将lcd的rw管脚连接到单片机的p3.4口 ;将lcd的rs管脚连接到单片机的p3.3口 ;将lcd的显示端口连接到p0口上 ;蜂鸣器连接到p2.6口

;与蜂鸣器共同作用的led灯连到p2.7口 ;开锁电路的控制端连接到p2.0口 ;程序开始地址

display equ p0 speaker bit p2.6 led bit p2.7 open bit p2.0 ORG 0000h LJMP start; ORG 000bh;

returnbit bit 20h.1;

15

淮安信息职业技术学院毕业设计论文

LJMP intermit_t0; ORG 001bh;

LJMP intermit_t1; ORG 0030h; start:

MOV sp,#60h; lcall sys_initialization

;调用子程序sys_initialization

4.2键盘扫描及识别子程序

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

键盘部分程序如下: key:

;键盘程序名称 ;调用子程序ks ;判断是否有键按下 ;跳回键盘程序

call ks jnz k1 jmp key

ks:mov p1,#0f0h; mov a,p1; xrl a,#0f0h; ret;

16

第四章 系统软件设计

图4-2 键盘扫描程序流程图

4.3系统模块密码设置子程序

由于设计是分模块化进行,所以子程序是整体软件系统的组成部分,子程序不但可以使程序化整为零,使其复杂简单化,同时也方便阅读,修改等,每个功能模块都有它自己的子程序,在本设计中是用LCD显示数据,所以就要用到显示子程序,设计中用的是矩阵键盘,所以就用到键盘扫描子程序,例如还有显示初始化子程序、LCD忙检测子程序、关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序等。如下图为密码修改子程序流程图

17

淮安信息职业技术学院毕业设计论文

选择模式 旧密码输入 新密码输入 存入缓存 重新输入 再次输入密码 N 是否大于3次 Y 锁定 N 比较密码 Y 返回

图4-3 设置密码子程序

4.4程序调试

在硬件支持的环境下,用proteus设计好的电路,Keil编好的程序编译成芯片可识别的S51文件,利用PC机写进proteus程序图芯片内进行仿真测试,并对其出现的错误进行修改,由图4-4~图4-7可看出最终调试成功。

图4-4 keil编译程序成功

18

第四章 系统软件设计

图4-5 keil生成hex文件

图4-6 proteus调用keil的hex文件进行仿真

19

LCD2123456VSSVDDVEERSRWELM016L 淮安信息职业技术学院毕业设计论文

图4-7 仿真成功密码正确显示图 20

w17w28w39w410w511w612w713w814D0D1D2D3D4D5D6D7 第五章 系统仿真设计

第五章 系统仿真设计

5.1 Proteus软件介绍

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。

PROTEUS 是单片机课堂教学的先进助手。

PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台

随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。

使用Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进

21

淮安信息职业技术学院毕业设计论文

行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。

5.2 Proteus 仿真图

图5-2系统仿真

22

第六章 总结与展望

第六章 总结与展望

本设计采用美国Atmel公司的单片机AT89C52与低功耗CMOS E2PROM AT24C02作为主控芯片与数据存储器单元,使用LCD1602作为显示器,采用MAX485作为与PC机的通讯接口,结合外围的键盘输入、显示、报警、开锁等电路并用汇编编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目地。该密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所。该设计还有独特的与PC机通讯系统,在没有输入密码的状态下可以强行开锁,这样就避免了忘记密码带来的使用不便。

通过这次对《基于单片机的数字钟设计》的设计与制作过程,加强了我们动手、思考和解决问题的能力。

在设计过程中我们先后利用keil软件进行编程、Proteus进行仿真、protel进行原理图的绘制,最后再利用仿真进行检查看程序是否能显示其功能。在过程中让我进一步深刻的学习各种软件的利用以及各种软件给我们带来的便利。特别是proteus在没有实物的情况下进行仿真进行程序的检查看是否能现实功能。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。所以还得继续努力,进一步提升自己。

23

淮安信息职业技术学院毕业设计论文

24

致 谢

致 谢

在论文完成之际,我首先向关心帮助和指导我的指导老师徐传顺(工程师)表示衷心的感谢并致以崇高的敬意!

在论文工作中,一直得到徐传顺老师的亲切关怀和悉心指导,徐传顺老师以其渊博的学识、严谨的治学态度、求实的工作作风和他敏捷的思维给我留下了深刻的印象,我将终生难忘。再一次向他表示衷心的感谢,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助! 值此论文完成之际,谨向徐传顺老师致以最崇高的谢意!

在学校的学习生活即将结束,回顾两年多来的学习经历,面对现在的收获,我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表示由衷的感谢!

特别感谢我的师兄、师姐对我的学习和生活所提供的大力支持和关心!还要感谢一直关心帮助我成长的室友们!

在我即将完成学业之际,我深深地感谢我的家人给予我的全力支持! 最后,衷心地感谢在百忙之中评阅论文和参加答辩的各位专家、教授!

25

淮安信息职业技术学院毕业设计论文

26

参考文献

参考文献

[1] 石文轩,宋薇.基于单片机MCS一51的智能密码锁设计[M].武汉工程职业技术学院学报,2004,(01);

[2] 祖龙起,刘仁杰.一种新型可编程密码锁[J].大连轻工业学院学报,2002,(01); [3] 叶启明.单片机制作的新型安全密码锁[J].家庭电子,2005,(10);

[4] 郭海英.基于单片机的电子安全密码锁的设计[M].现代电子技术,2005,(13); [5] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03); [6] 董继成.一种新型安全的单片机密码锁[J].电子技术,2004,(03); [7] 祖龙起,刘仁杰,孙乃凌.一种新颖的电子密码锁[J].电子世界,2001,(10); [8] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03); [9] 杨茂涛.一种电子密码锁的实现[J].福建电脑,2004,(08); [10] 瞿贵荣.实用电子密码锁[J].家庭电子,2000,(07);

[11] 王千.实用电子电路大全[M],电子工业出版社,2001,p101;

[12] 何立民.单片机应用技术选编[M],北京:北京航空大学出版社,1998; [13] 李华.MCS-51系列单片机使用接口技术[M],北京航空航天大学出版社,1993; [14] 彭为.单片机典型系统设计实例精讲[M],北京:电子工业出版社,2006; [15] 潘永雄.新编单片机原理与应用[M],西安:西安电子科技大学出版社,2003; [16] 童诗白,华成英,模拟电子技术基础[M],北京:高等教育出版社,2000; [17] 阎石主.数字电子技术基础[M], 北京:高等教育出版社,1998;

27

淮安信息职业技术学院毕业设计论文

28

附录

附录 程序清单

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,#10h; inc r0; djnz r7,loop;

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

lcall delay0_1s; MOV p0,#03h;

call write_instruction; 液晶软复位

29

淮安信息职业技术学院毕业设计论文

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;

;定时器T0,0.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;

30

附录

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;

31

淮安信息职业技术学院毕业设计论文

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;

32

附录

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 $;

33

淮安信息职业技术学院毕业设计论文

;输入密码错误超过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:

34

本文来源:https://www.bwwdw.com/article/ro2.html

Top