找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 61051|回复: 23
打印 上一主题 下一主题
收起左侧

基于单片机的电子密码锁设计与实现 论文下载

  [复制链接]
跳转到指定楼层
楼主
介绍比较完整的

毕 业 设 计
题目:基于单片机的电子密码锁设计与实现
姓       名:       王x雪      
学       号:2010080403204
学        院:      信息学院     
专        业:    电子信息工程   
指 导  教 师:张x杰
协助指导教师:



摘    要
近年来,随着改革开放的深入发展,电子电器的飞速发展。人民的生活水平有了很大提高。各种高档家电产品和贵重物品为许多家庭所拥有。然而不法分子也是越来越多,原因在于大部分人防盗意识还不够强,造成偷盗现象屡见不鲜。越来越多的居民家庭对财产安全问题十分担忧。因此,出于安全方便等方面的需求,电子密码锁相继问世。
本设计是以单片机AT89S51为主控芯片,并结合外围液晶显示LCD1602、存储芯片AT24C02、红外遥控HS0038,以及键盘输入、复位、电源等电路组合而成。系统能够完成开锁、报警、修改密码等基本功能,还能够通过红外来控制单片机的开锁,以及掉电储存密码的功能。整个设计在Keil开发环境下,用C语言编写主控芯片的控制程序来实现具有多功能的电子密码锁。

目  录
摘    要
Abstract
引   言
1 概述
1.1 课题背景和意义
1.2电子密码锁的发展趋势
2 系统总体设计思路
2.1 系统设计要求
2.2系统设计方案
3 系统硬件设计与实现
3.1主控芯片AT89S51
3.2 存储模块AT24C02
3.3红外模块HS0038
3.4 显示模块LCD1602
3.5 电源电路模块
3.6 键盘输入模块
3.7 报警电路
3.8 开锁电路
3.9 复位电路
3.10串行通信电路
3.11 系统整体原理图
4系统软件设计
4.1 主程序设计
4.2键值判断设计
4.3开锁设计
4.4密码修改设计
4.5 红外遥控设计
4.6 Keil编程软件介绍
5 仿真设计
5.1 Protues仿真软件概述
5.2 Protues与Keil的连调
5.3 Protues与Keil的连调的仿真结果
5.4问题及解决办法
结   论
致    谢

引   言
随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到冶金、电力、建材、化工、机械、石油、食品等各个行业。单片机控制无疑是人们追求的目标之一,它所给人们带来的方便也是不可否认的其中单片机控制就是一个典型的例子。MCS-51系列单片机应用广泛,是学习单片机技术较好的系统平台,同时也是单片机微型计算机应用系统开发的一个重要系列。目前,单片机原理与应用教材大都采用汇编语言讲解和设计程序实例,但汇编语言学习困难。在实际应用系统开发调试中,特别是开发比较复杂的应用系统时,为了提高开发效率和使程序便于移植,现在多用C语言。
在信息产业飞速发展的今天,我们生活中必不可需的设备都向着小型化、便携化、智能化、自动化的方向发展。所以电子密码锁随着快节奏的生活应运而生。在我国六七十年代还是传统的一把钥匙配一把锁,不管是单位还是个人每天都要认真检查是否锁上了门,而且钥匙还不能随便乱放,一旦不小心忘记放在哪里很可能就打不开门了。传统的锁也相当的不安全,会有一些不法分子想尽办法打开你的房锁去偷盗东西。电子密码锁的产生使得这些问题都不再是问题,我们只需简单的记住六位密码即可。
1 概述
1.1 课题背景和意义
人们从前使用的锁不但不方便,而且安全系数也比较低。随着社会的进步和人们生活水平的提高,老式的锁已经跟不上人们的要求,况且人们对防盗的要求越来越高,特别是对使用的便捷性也有了更高的需求。因此近几年一种新型的电子密码锁应运而生,受到了人们的青睐。有报警功能的密码锁这时正为人们解决了不少问题。但是市场上的密码锁大部分都是用于一些大公司财政机构、价格高昂,一般人们难以接受。如果再设计和生产一种价格低廉、性能灵敏可靠的密码锁,必将在防盗和保证财政安全方面发挥更加有效的作用。
密码锁是现代生活中经常用到的工具之一,广泛应用于保险柜、房门、宾馆、车库等。电子密码锁克服了机械式密码锁量少、安全性能差的缺点,特别是使用单片机控制的智能电子密码锁,不但功能全,而且具有更高的安全性和可靠性。并且电子密码锁只需记住一组密码,无需携带钥匙,免除了人们携带钥匙的烦恼,被越来越多的人所喜欢。随着我国第三产业的飞速发展,电子密码锁会在不久的将来得到广泛的应用,方便社会和个人。
1.2电子密码锁的发展趋势
20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,同时可靠性提高,成本也相对提高,所以只适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对密码锁的研究一直没有明显进展。到了90年代,美国、意大利、德国、日本、加拿大、韩国以及我国的台湾、香港等地的微电子技术的进步和通信技术的发展为密码锁提供了技术上的支持,从而推动密码锁走向实际应用的阶段。目前,在西方国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,使之更加安全更加可靠实现大门的管理。我国于90年代初期开始对密码锁进行初步的探索。到目前为止,随着电子技术和信息技术的发展,电子密码锁的技术领域已发展的十分成熟。从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。在其他技术领域还有遥控式电子密码锁以及卡片式密码锁等。


2 系统总体设计思路
2.1 系统设计要求
单片机密码锁主要内容:用户可以自由设定密码、具有报警提示功能、可设置万用密码、具有掉电存储密码功能。
2.2系统设计方案
本系统采用以单片机为核心元件的控制方案。由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些方面外,还有一些最基本的条件,比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中还要考虑开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等因素。基于以上因素本设计选用单片机AT89S51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。其原理如下图1所示。






                            AT89S51






1单片机控制方案

3 系统硬件设计与实现
3.1主控芯片AT89S51
在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯片。它是一款低功耗,AT89S51就是一款广泛应用的,高性能CMOS 8位单片机,由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯片。主控模块采用单片机最小系统是由于 AT89S51芯片内含有8 B的 E2PROM ,无需外扩存储器,电路简单可靠,其时钟频率为 0~24 MHz,并且价格低廉,批量价在 10元以内。AT89S51是一款功能强大的微型计算机,它可为许多嵌入式控制应用系统提供高性价比。
单片机的最小系统是由复位电路、时钟电路和电源组成。复位操作有上电自动复位、按键复位和外部脉冲复位3种方法。本文采用的是上电复位它是通过系统外部的复位电路来实现的。根据电路原理可知电容两极板间的电压不能突变当单片机电源接通电源的瞬间单片机的9管脚会产生一个阶跃信号,所以RTS端维持高电平由于这个充电时间远远大于1ms,一般就可以实现对单片机的上电自动复位,即接通电源就完成了系统的初始化。
初始化是为了让单片机从地址0000H开始执行, 除此之外单片机要想正常工作还必须有时钟电路,时钟电路是产生时序的基础,单片机每执行一条指令都是建立在时序电路上的,为了能保证单片机执行指令的同步,电路就要在唯一的时钟信号控制下按时序的先后进行工作。它分为内部时钟电路和外部时钟电路。本文采用的是内部时钟电路,在MCS—51单片机的内部有一个高增益的反向放大器,其输入端为引脚XTAL1,输出端为XTAL2,只要在外部接上两个电容和一个晶振,就能够成一个稳定的自激振荡器。
这里主要看一下电容和晶振的选择,晶振的大小与单片机的振荡频率有关,电容的大小影响着振荡器振荡的稳定性和起振的快速性,通常选择10~30pF的瓷片电容。本系统电容选择为33pF,晶振为12MHz之所以选择这一频率的晶振是为了在进行单片机与电脑进行串口通信时容易产生和电脑时钟同步的波特率,另外在设计电路时,晶振和电容应尽可能的靠近芯片,这样可以提高系统的抗干扰能力,电源部分,电源与地之间可以接一个0.1uF的电容,它用来滤除电源的纹波,使单片机稳定工作,单片机最小系统如图3-1所示。



                       3-1 单片机最小系统

    单片机引脚说明:

VCC:电源电压输入端。

GND:电源地。

P0口:P0口是一个8位漏极开路双向I/O端口,每个引脚可以吸收8TTL门电流。P0口当作数据输出时需要加上拉电阻,当P0口的I/O口被写“1”后,被定义为高阻抗输入状态。P0可以用于外部程序数据存储器,P0口可以是地址的低八位以及数据输出口。
P1口:P1口是一个8位双向的I/O端口单片机内部加上了上拉电阻的端口,P1口缓冲器可接收的4TTL栅极电流输出。P1口的I/O口被写 “1”后,内部上拉的是高的,可以作为输入,P1口外部下拉低时输出电流,这是因为有内部上拉的缘故。
P2口:P2口是一个8位双向的I/O端口单片机内部加上了上拉电阻的端口,P2口缓冲器可接收的4TTL栅极电流输出。当P2口的I/O口被写“1”后,内部上拉的是高的,可以作为输入,P2口外部下拉低时输出电流,这是因为有内部上拉的缘故。当P2口用于外部程序存储器或外部数据存储器时P2口是地址高八位输出。

P3口:P3口是一个8位双向的I/O端口单片机内部加上了上拉电阻的端口,P3口缓冲器可接收的4TTL栅极电流输出。P3口的I/O口被写“1”后,内部上拉的是高的,可以作为输入,P3口外部下拉低时输出电流,这是因为有内部上拉的缘故。P3口除了普通I/O口功能,还有其第二功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(T0定时器的外部计数输入)

P3.5 T1(T1定时器的外部计数输入)

P3.6 /WR(外部数据存储器的写选通)

P3.7 /RD(外部数据存储器的读选通)

RST:复位引脚高电平时MCU复位,复位信号输入端口,当MCU要复位时,给与此引脚高电平,高电平持续时间是不少于两个机器周期的时间。
ALE/PROG:地址锁存使能以及编程脉冲信号端口。当单片机访问外部的存储器时,地址锁存使能锁存地址低八位。通常情况下,ALE引脚输出单片机外部振荡器的频率的1/6的频率输出。应该注意到的是:当用于单片机扩展外部的数据存储器时,它会少一个ALE脉冲。如果你想禁止ALE输出可以设置为0在SFR8EH地址。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。此外,ALE引脚倍稍微拉高。如果微处理器在外部执行状态ALE的禁令,设置无效。
PSEN:程序存储器允许输出控制端,在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作。
EA/VPP:外部程序存储器访问允许。当/EA接高电平时,单片机读取内部程序序存储器,当扩展有外部ROM时,当读完内部ROM后自动读取外部ROM,当/EA接低电平时,单片机直接读取外部程序存储器。
XTAL1:片内振荡器反相放大器和时钟发生器的输入端。
XTAL2:片内振荡器反相放大器的输出端。


3.2 存储模块AT24C02
存储模块的设计是把WP引脚接到GND上因为要让器件进行正常的读/写操作,把SDA串行数据/地址与单片机的P3.7引脚使AT24C02与单片机进行所有数据的发送或接收,把SCK串行时钟引脚与单片机的P3.6引脚相连接,让单片机产生一个AT24C02工作的时钟,使其正常的工作。存储模块电路如图3-2所示。








3-2存储模块 AT24C02硬件结构
AT24C02的特点:数据线看门狗定时器;可编程复位门级;高数据传输速率400kHz速率和I2C总线;2.7V至7V电压;低功耗CMOS工艺兼容;16 bespate写缓冲区;反撇写保护芯片;高低电平复位信号输出;100万擦除周期;保存长达100年。
定义如下的总线状态,见图3-3。

3-3 总线时序
  • 总线空闲(状态A)
   数据线和时钟线都保持高电平状态。
  • 起始信号(状态B)
    时钟线保持高电平期间,数据线从高电平到低电平的跳变作为I2C总线的起始信号。所有操作都必须以起始信号为前提。
  • 停止信号(状态C)
    时钟线保持高电平期间,数据线从低电平到高电平的跳变作为I2C总线的停止信号。所有操作都必须以停止信号结尾。
  • 数据有效(状态D)
    起始信号之后,在时钟信号保持高电平期间,数据线传送的数据有效。
    数据线上的数据必须在时钟信号为低电平时改变,以传输下一字节的数据。每传输一字节的数据,就会有一个时钟信号的暂停。
数据传输都必须以起始信号开头,以停止信号结尾。在起始信号和停止信号期间传输数据的总量大小由主器件决定,理论上是没有限制的。但是在写状态下只有最后16个周期传送的数据会被写入。如果待写入的数据超出了这个限制,会根据先入先出的原则覆盖掉前面的数据。










    每一个被寻址到的从设备,在成功接收一个字节的数据后,都必须产生一个应答信号。主设备必须增加一个额外的时钟信号,接收从器件对收到数据的响应。器件应答的方式是在响应时钟周期时将SDA线拉低,表示其已收到一个8位数据。如图3-4。当然,调整时间和保持时间都必须计算在内。主器件在传送完最后一个字节的数据之后,不传送应答信号,从而向从器件标明数据传送结束。在这种情况下,从器件必须保持SDA高电平,使主器件可以产生停止信号。当AT24C02在内部读写周期内是不会产生任何响应信号的。

3.3红外模块HS0038
红外数据传输的特点:成本廉价、建设工程期短、适应性好、扩展性好、设备维护上更容易实现。使用红外模块进行传输,丰富了系统的功能,提高了系统的可操作性,因而达到了交互式与智能化。红外数据传输广泛地运用在红外遥控系统和车辆的监控、门禁系统、小区的安全防火系统和传呼系统、身份的识别、非接触RF的智能卡等。工业设备中,在高压,辐射、有毒气体、粉尘等环境下,采用红外遥控不仅完全可靠而且能有效地隔离电气干扰。
一体化红外线接收头三个管脚分别是地、+5 V电源、解调信号输出端接在单片机P3.3引脚上。利用外部中断进行数据的接收。下图3-5为红外模块硬件结构。

3-5 红外模块硬件结构
红外线接收器大都将信号的接受、放大、检波等集于一身,而且可以经过编码解码时单片机收到可识别的信号源。这样一来便会减少硬件设计过程中的麻烦,使电路简单化,且应用起来比较方便。下图为红外一体化接受头HS0038,外观图如图所示。



                      3-6红外接收元器件
3.4 显示模块LCD1602
如果想要了解系统的运行与工作状态显示器是不可缺少的,显示器是一个典型的输出设备并且它的实际应用也是极为广泛的,几乎所有的电子产品都会使用到显示器其差别仅在于显示器的结构类型不同而已。最简单的显示器可以是LED发光二极管或者数码管,它可以给出一个简单的开关信息或者数字显示,而需要显示复杂的完整的信息上述的器件就不能胜任,而液晶的出现就很好的解决了这一问题,它不仅显示内容丰富而且好节约了单片机的管脚资源。本设计采用的是液晶显示LCD1602。LCD1602内部的字符已经储存了不同的字符形式,每一个字符都有一个固定的代码,其代码与标准的ASCII字符代码一致。因此只要写入显示字符的ASCII码即可,这种标准化的设计给使用带来很大的方便。比如英文字母“C”的ASCII代码是01000011(43H),显示时单片机往液晶模块写入显示指令,模块就会把地址为43H中的点阵字符图形识别出,并会在液晶屏相应位置上看到字母“C”。
LCD1602液晶显示与单片机的连接可以分为两种方式:总线方式和模拟口线方式。在实验中,我们常采用模拟口线连接方式。如图3-7所示。                           



3-7 显示模块硬件结构
目前市场字符液晶绝大多数是基于HD44780的液晶芯片,控制原理是完全相同的,因此基于HD44780的写控制程序可以很容易地应用到市场上大部分的字符液晶。LCD1602液晶的几个特性:+5V电压、对比度可调、内含复位电路;提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器DDRAM;内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM。

       3-1 LCD液晶屏引脚说明

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

Data I/O

2

VDD

电源正极

10

D3

Data I/O

3

VEE

液晶显示偏压信号

11

D4

Data I/O

4

RS

数据/命令选择端(H/L)

12

D5

Data I/O

5

R/W

读写选择端(H/L)

13

D6

Data I/O

6

E

使能信号

14

D7

Data I/O

7

D0

Data I/O

15

BLA

背光源正极

8

D1

Data I/O

16

BLK

背光源负极

LCD1602采用标准的16脚接口,其中VSS为地电源,VDD接5V正电源,VEE为液晶显示器。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。E端为使能端。D0~D7为8位双向数据线。
3.5 电源电路模块
控制系统主控制部分电源需要用5V直流电源供电,其电路如图3-8所示,把有效值为220V频率为50Hz单相交流电压转换为幅值稳定的5V直流电压。其主要原理是把单相交流电,经过电源变压器降压。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的主要作用是起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需要通过低通滤波电路滤除交流成分使输出电压平滑稳定。稳压电路的功能是使输出直流电压基本不受负载电阻变化和电网电压波动的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片LM7805解决了电源稳压问题,在稳压芯片的前段分别放置两个电容主要是为了滤除电源中的高低频干扰而在芯片之后又经过一级的滤波以使电源更为洁净,并在电源输出端加上LED以此来显示电源的开关状态。


3-8 电源电路硬件结构
3.6 键盘输入模块
键盘是单片机十分重要的输入设备,是实现人机对话的纽带。键盘是由一组规则排列的按键组成,一个按键实际上就是一个开关元件,即键盘是一组规则排列的开关。根据按键与单片机的连接方式不同,按键主要分为独立式按键和矩阵式按键 ,有了这些按键,对单片机的控制就方便多了。
本设计按键数量较多,所以采用矩阵式按键以节省I/O口线。将16个按键分为4排4列排列好,如图3-9矩阵键盘硬件结构。当有一个键按下时,通过某一边引脚赋低电平,扫描全部引脚看是否与最初的赋值一样,不一样则根据相应的算法(通过改变后的值与初始值相或,根据结果赋值)确定是哪个键按下。








3-9键盘模块硬件结构
键盘为4×4形式,按键包括阿拉伯数字0~9,以及锁定、更改和改密三个应用按键。当用户需要输入密码或修改密码时,按下相应按键即会与单片机产生信号,并会执行相应的程序。
3.7 报警电路
当密码输入两次的数值与所设定的参数值不同时,单片机AT89C51便通过P2.7口控制三极管来驱动扬声器报警,当输出低电平时三极管截止,当输出高电平时三极管导通扬声器报警。如图3-10所示。






3-10报警电路硬件结构
3.8 开锁电路
开锁电路的功能是当输入正确的密码后密码锁将被锁定,既开锁。当单片机P2.6引脚发出信号经三极管放大后,触动电磁阀即会把锁打开。一旦输入密码,单片机便会与初始密码进行比对,如果密码输入两次都与原始密码不相符即会报警。其原理图如图3-11所示。





3-11 开锁电路硬件结构
3.9 复位电路
能让单片机运行起来的最小硬件连接就是单片机最小系统电路,51单片机的最小系统电路一般包括工作电源、振荡电路和复位电路等几部分。
复位电路(图3-12是单片机复位电路)具有上电自动复位和手动复位的双重功能。单片机的RST引脚是复位信号的输入端,复位信号是高电平的时候才有效,其有效时间应持续24个震荡脉冲周期(即2个机器周期)以上;通常为了保证应用系统能够准确地复位,复位电路应使引脚RST脚保持10ms以上的高电平状态。只要RST保持高电平,单片机就会自动循环复位。当RST引脚从高电平状态转为低电平状态时,单片机退出复位状态,从程序存储器的0000H地址开始执行用户程序。电容C3和电阻R5组成上电复位电路。上电瞬间RST引脚获得高电平,随着电容C11的充电,RST引脚的高电平逐渐下降。只要高电平保持足够的时间,单片机就能完成复位。手动复位的原理与此类似。







3-12 复位电路硬件结构
3.10串行通信电路
随着计算机在各个领域的广泛应用和智能化控制的发展,多微机系统和计算机网络技术的普及,计算机的通信功能显得越来越重要。计算机通信是指将计算机技术和通信技术相结合完成计算机与外部控制设备或计算机与计算机之间的信息交换或信息处理,按通信方式可以分为两大类:并行通信与串行通信。并行通信通常是将数据字节的各位用多条数据线同时进行传送 , 并行通信控制简单、传输速度快,但是由于传输线较多长距离传送时成本高且接收方的各位同时接收存在一定的困难。串行通讯传输线少,长距离传送时成本低且可以利用电话网等现成的设备所以本设计采用串口与单片机进行通信。
大多数PC机都有一个串行通讯端口,RS-232主要用于计算机之间进行数据的交换与通讯RS-232通讯接口是电子领域的一种标准化传输接口,主要是为了进行远程传输与通讯连接终端设备的物理接口。RS-232采用非平衡连接在这个线路中信号的电压都使用一个公共的接地线,所有信号电压都加到一条导线上为了能提高串口通信的抗干扰能力和数据传送距离,RS-232芯片的信号和电平采用负逻辑电平,直流电压值在-15至-5V芯片规定为逻辑值“1”,直流电压值在+ 5至+15V芯片规定逻辑值“0”,直流电压在-5至+5V为过渡区。由于单片机输入与输出为TTL电平这与 PC机所执行的串行接口标准不一致数据无法正常传输。
因此要实现单片机与PC机之间的数据通读,必须进行电平转换。一般常用的电平转换器件有MC1488、MC1489及MAX232等,但MC1488、MC1489需要±12V电源,这对于不具备±12V电源的单片机系统是非常不便的。故本系统使用MAX232实现电平转换。单片机的第10、11管脚与MAX232芯片的11、12管脚相连并互相传送数据通过MAX232芯片将单片机的TTL电平转换成电脑所能识别的电平。电路原理如图3-13所示。














3-13 串行通信电路硬件结构




3.11 系统整体原理图
智能电子密码锁的基本原理是:从矩阵键盘输入一组密码,单片机把该密码和设置密码进行比较,若输入的密码正确,则控制电磁锁动作,将电磁锁抽回,从而将锁打开;若输入的密码不正确,则要求从新输入,并记录错误次数,如果2次错误,则被强制锁定并报警。如下图3-14所示:

3-14 系统整体原理图


4系统软件设计
软件设计主要包括了主程序设计、键盘扫描设计、密码修改设计、开锁程序设计以及红外遥控设计五个方面。本设计采用Keil编译器来进行软件的编程。
4.1 主程序设计
























4-1 主程序流程图设计
主程序主要完成了系统的初始化、按键扫描、按键功能、以及调用显示等功能。主程序部分如下:
En bit P8       将LCD的en引脚连接到单片机的P8
Rw bit P9
Rs bit P10
Speaker bit P2.7
Open bit P2.6    开锁电路的控制端连接到P2.6口

4.2键值判断设计
键盘扫描和键值读取程序主要判断矩阵按键是否按下,按下的是哪一个键,并求出按键的键值。矩阵键盘的识别方法有多种。相对来说,矩阵式键盘的软件设计最终实现以下功能:是否有按键被按下;消除抖动;确定哪个键被按下,若按键闭合了一次,操作也只能是一次。


            4-2 键盘流程图设计
键盘程序如下:
if((0keydata)||(4keydata)||(8keydata)||keydata==14)
                                                                      //在0-9之间的数字通过
                                                        password=keydata;//键盘值进行保存
                                                        keydata=0;                            //把键盘值置其它值,不被其它利用,以一样
                                                        i++;
4.3开锁设计
当输入密码正确时,单片机输出低电平,控制继电器工作,模拟开锁动作,同时,当输入密码或开锁成功时,蜂鸣器发出相应的提示音。

4-3开锁流程图设计

开锁程序设计如下:

while(1)
                            {
                                          if(keydata==4)              //锁定功能
                                          {
                                                        P3_6=0;
                                                        EX1=1;

                                                        goto start;

4.4密码修改设计
输入密码前,要先将正确的密码从存储器24C02中读出,并存放在单片机RAM从40H开始的6个单元中。6位密码锁由矩阵按键输入,输入的密码存储在单片机RAM从30H开始的6个单元中,每输入一位密码,都要和正确的密码进行比较;若全部6位密码均输入正确,显示密码正确信息;若输入的密码不完全正确,则进行第二位输入,若输入3次仍不正确,则报错。输入密码时,还要打开定时器T0,使定时器T0工作,当计时到30s时,若输入的密码不正确或未输入密码,则显示出错信息。密码修改程序用来设置新密码,当输入的开锁密码正确后,可重新设置新密码,输入的新密码暂存在单片机RAM从40H开始的单元中,然后,调用存储器子程序,将40H开始的6位密码存储在24C02中。







4-4 密码修改流程图设计

密码程序如下:

              if(keydata==33)                 //确定进入密码比较
                                          {
                                                        keydata=0;
panduan:                            i=0;
                                                        for(j=0;j<6;j++)
                                                        {
                                                                      l+=password[j];
                                                                      k+=Random_Read(j);
                                                        }
                                                        if(l!=k)                            //密码不同进行处理
                                                        {
                                                                      l=0;
                                                                      k=0;
                                                                      LCD_Write_String(0,0,bb);
                                                                      DelayMs(1000);
                                                                      a1+=1;
                                                                      if(a1==2){while(1)P3_7=1;P3_6=0;}//两次错误发出报警

                                                                      goto start;                                                          //第二次输入密码

4.5 红外遥控设计
HS0038 接收头负责红外遥控信号的解调,将调制在38kHz上的红外脉冲信号解调并反相后输入到单片机的P3.2引脚,接收的信号由单片机进行高电平与低电平宽度的测量,并进行解码处理。解码编程时,既可以使用中断方式,也可以使用查询方式。

4-5 红外遥控流程图设计

4.6 Keil编程软件介绍
单片机的开发离不开必要的硬件,同样也离不开软件,编写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编。随着单片机开发技术的不断发展,单片机的开发软件也在不断的发展,Keil软件是目前最流行开发51单片机的软件。
在硬件电路设计好的同时,也需要软件的开发及使用。目前单片机类的课程设计大多采用Keil软件来进行程序的编写。Keil不仅支持C语言还支持汇编语言。支持不同型号的MCS系类的51单片机的型号。Keil软件已从早期的第一代发展到第四代了,有了更强大的功能。
这款软件的操作方法也很简单,甚至有些必须采用很复杂的硬件电路才能完成的工作,用软件编程有时会变得很简单,这样可以把复杂电路的输入信号直接用信号发生器给定,或是用电源来给定通过对电压电流的调节来实现。Keil 工程的建立打开已安装好的开发环境,进入界面后选择project然后在其下拉菜单中选择new project选项如图4-6所示。

4-6  新建工程
这样就能新建一个工程 ,在选定的路径下建立一个名字叫做abc的文件夹如图4-7所示,在abc文件夹中建立了一个xyz.c文件之后点击保存按钮就会出现如图4-8所示的画面在此对话框中选择Atmel之后会弹出一系列的单片机在本次设计中选用的是51单片机,完成后在选Target 1下的Source Group 1选择Add把xyz.c文件加载到里面在xyz.c下添加所编好的C语言程序或是汇编语言程序,如果程序是分开写得就可以添加多个子程序还有主程序,每个程序中必须有头文件否则编译不会通过 ,会显示有错误。等编译.hex文件时就要在此文件夹下找到。

4-7  新建工程文件夹的建立

4-8  芯片的选择
所有程序都加到工程项目文件夹中后就可以对其进行编译了。编译成功后,下方会有对话框显示,有几个错误,分别是在那几个位置。直接单击错误这条信息就可以索引到源文件中。如图所示4-9所示。

4-9  错误的生成及索引
















5 仿真设计
5.1 Protues仿真软件概述
Protues是目前使用比较广泛的单片机类的仿真系统的软件之一,它可以实现的功能比较多,可以实现程序与原理图的连调,也可以单独作为绘制原理图的工具使用,与Protel有着过之不及的功能,于此同时还可以进行PCB版图的生成,在方法中与Protel类似。此款软件及绘制原理图、PCB版图和仿真于一身。Protues此款软件的使用比较简单。在运行环境搭载好的前提下,打开ISIS直接进入到主界面,在左边栏框中有一个快捷键P(从库中选取),点击后出现一个对话框然后输入想要查找的元器件即可。之后在单击确定按键所选器件就会显示在界面左上角的小框中此时点击鼠标左键就会放到图层中,然后直接把鼠标放到接头处就会显示一个画笔的标志此时按住鼠标左键就可进行连线了。如图5-1所示为绘图界面。

5-1  绘图界面



5.2 ProtuesKeil的连调
在进行连调之前必须确保程序是完整的,原理图也是没有错误的。还要在正确的运行平台下进行操作。检查没有错误后,打开原理图,点击单片机就会出现一个对话框如图5-2所示,然后把生成的.hex文件添加到里面即可实现。在这里比较重要的就是.hex文件的生成过程。首先把已编写好的程序加载到Keil软件下进行编译如果没有遇到任何错误后,就直接点击工具栏中的 就会弹出如下图所示的对话框,然后选择相应的选项就可以生成.hex文件了。之后再按照生成的的路径去寻找这个文件。找到之后加载到之前点开的  对话框上即可。在此后点击运行按键就会进行仿真了,按照设计的功能去调试就可以了。

5-2加载.hex文件






5.3 ProtuesKeil的连调的仿真结果
系统仿真运行环境下的结果如图5-3所示。

5-3 系统仿真图

开锁仿真图如5-4所示。

                       5-4 开锁图

更改密码图如5-5所示。

5-5 更改密码图

输入错误密码报警如图5-6所示。

5-6 报警图

5.4问题及解决办法
在本系统的软件设计过程中,遇到了很多问题。首先是对软件的开发环境Keil的运用有些模糊、对它的操作过程需要看专业书以及向同学请教才能完成!其次是用C语言编程,这对于我来说可是一件十分困难的事情,最终是在同学的帮助之下才得以完成。而在Protues仿真过程中,也遇到了同样的问题,最后通过网上的教学资料对其使用有了一定的了解。而在仿真软件中,并没有红外一体化接收头HS0038,所以在同学及指导老师的帮助下采用555振荡器模拟仿真,一旦有信号发射或接收将会有波形显示来模拟仿真。

结   论
本设计是基于单片机实现电子密码锁,基本完成了按键有效提示、输入错误提示,控制开锁电平、控制报警电路、修改密码等多种功能。本系统具有结构简单,硬件较少,容易实现,性能稳定可靠,成本低等特点。
在设计过程中,我查阅大量的相关资料,详细的了解了各个芯片的作用,如何工作,工作原理,个个芯片引脚的连接方式。对系统硬件的设计,电路原理图以及仿真,软件流程图和具体的汇编语言的设计都有了相应的提高。此次设计涉及到了Protues和Protel99和一些单片机指令,通过近段时间的使用,对这些有了更深的了解。对于软件部分的Keil软件的使用,是我们对汇编语言以及C语言又有了更深一步的了解。
通过完成设计,我们对所学的知识有了更深刻地了解,实现了从理论到实践再到理论的几个飞跃,也更加了解到科学知识应该以服务社会为目的,只有掌握了足够的知识才能更好的为社会贡献我们的力量。我学会了利用所学知识以技术上的知识解决问题的能力。

致    谢

时光飞逝,转眼间又到了毕业的季节。

两年在北京联合大学的学习,让我真正感受到了大学的生活是那么美好。在即将离开之时才发现心中的不舍是那么的深刻。舍不得与同学间深刻的友谊,舍不得与老师间温暖的问候,更舍不得校园里象牙塔般的快乐生活!

在校园的生活的最后篇章里,我想要把我全部的感谢感激一一的倾诉出来。首先感谢我的母校,其次感谢我的任课老师,在我人生中最迷茫的时候为我指点迷途,带我走进那梦想般的灯塔!还要感谢我的论文指导老师张巧杰老师,张巧杰老师最为外聘老师对我们论文的指导十分认真,每周都会带着自己论文完成情况以及论文中遇到的问题去找指导老师,老师会耐心的为我们解答,并且还会关心我们每个人的实习生活状况,给予鼓励和激励!我衷心的感谢指导老师。当然,不会忘记陪伴我两年的同窗同学,一起风风雨雨走过的两年,真的是学生时代的一笔财富!我们一起学习,一起欢笑,一起面对每个清晨和日落。校园里到处都是我们的影子,在操场上、在教室里、在图书馆、在实验室...每个同学都很珍惜这两年的时光!最后我不会忘记我的父母,感谢他们一直以来的照顾!我最大的幸福是有你们一直都在!

   即将和学校离别,纵然我有许多的不舍,但是面对社会我依然会充满了信心。因为我知道在我的身边有许多朋友的陪伴,感谢我的大学,感谢我的老师,感谢我的同学们!


参考文献
[1] 李叶紫,王喜斌,胡辉,孙东辉.MCS-51单片机应用教程[M].北京:清华大学出版社 2004:29-35.
[2] 夏路易,石宗义.电路原理图与电路板设计教程PROTEL 99SE[M].北京:北京希望电子出版社 2004:56-59.
[3] 王福瑞编著,单片微机测控系统设计大全.北京航空航天大学出版社,1999
[4] 李华,MCS-51系列单片机使用接口技术.北京航空航天大学出版社,1990
[5] 余永权,Flash 单片机原理及应用.北京:电子工业出版社,1997
[6] 潘新民、王燕芳.《微型计算机控制技术》.北京:人民邮电出版社:2004:85-112
[7] 兰吉昌,《51单片机应用设计百例》.北京:化学工业出版社,2009:220-230
[8] 曹素芬,单片微型计算机原理与接口技术[M].沈阳:东北大学出版社,1995.
[9] 吴金戎,8051单片机实践与应用[M].北京:清华大学出版社,2002.
[10] 于永,戴佳,刘波.51单片机C语言常用模块与综合设计实例精讲[M].北京:电子工业出版社,2008 第二版.
[11] 周润景,张丽娜.基于PROTEUS 的电路及单片机系统设计与仿真[M].北京:航空航天大学出版社,2006.P321~P326
[12] 肖婧,单片机系统设计与仿真--基于PROTEUS[M].北京:北京航空航天大学出版社,2010.
[13]胡烨 、姚鹏翼、江思敏.《Protel 99SE电路设计与仿真》.北京: 机械工业出版社,2002:100-170
[14] Johnson J B.The Multibus Design Guidebook. McGrawHill Book Company,1995
[15] Borko H,Bernier C L.Indexing concepts and methods .New York:Academic

完整论文下载(word格式 可编辑):
基于单片机的电子密码锁设计与实现.doc (5.16 MB, 下载次数: 306)


评分

参与人数 1黑币 +10 收起 理由
山科大 + 10 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶2 踩
回复

使用道具 举报

来自 2#
ID:362076 发表于 2018-11-11 20:20 | 只看该作者
我想问几个实际应用中可能遇到的问题:
1.密码存储的安全性问题:如果有人使用另一台机器连接你的24C02,在上电情况下我想也可以进行读取,那么你的密码使用明文存储是肯定不安全的,是否具有加密措施?
2.开锁机构太简单,如果在外部使用物理方法实现电平拉低,就可以绕过密码部分直接开锁了
3.使用了红外开锁的功能,对红外通信的具体要求和安全性没有明确叙述啊,例如给程序专门设计的安全通信口令,不然一个人安装了这个锁,我买另一款同型号的锁就可以开这个锁了,岂不是很糟??

要是没有想到这些东西,答辩的时候老师想怼人很简单,万分轻松。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:288632 发表于 2018-3-12 10:51 | 只看该作者
有完整程序吗?
回复

使用道具 举报

地板
ID:300755 发表于 2018-4-8 20:21 | 只看该作者
这个有完整程序吗?
回复

使用道具 举报

5#
ID:304712 发表于 2018-4-9 21:09 | 只看该作者
下不了,还把分给扣了
回复

使用道具 举报

6#
ID:305734 发表于 2018-4-11 11:29 | 只看该作者
大神流弊啊!
回复

使用道具 举报

7#
ID:307760 发表于 2018-4-14 08:49 | 只看该作者
有完整程序吗请问?
回复

使用道具 举报

8#
ID:310664 发表于 2018-5-6 23:25 | 只看该作者
有程序吗
回复

使用道具 举报

9#
ID:335742 发表于 2018-5-22 15:42 | 只看该作者
大神  把毕业设计给你改可以不
回复

使用道具 举报

10#
ID:335742 发表于 2018-5-22 15:43 | 只看该作者
有谁会做基于单片机的密码锁设计的没
回复

使用道具 举报

11#
ID:416161 发表于 2018-10-27 09:52 | 只看该作者
最近在写毕业设计,一点头绪都没,正好拿来借鉴一下
回复

使用道具 举报

12#
ID:421728 发表于 2018-11-11 14:55 | 只看该作者

谢谢楼主。666
回复

使用道具 举报

13#
ID:427731 发表于 2018-11-16 15:26 | 只看该作者
厉害啊
回复

使用道具 举报

14#
ID:448168 发表于 2018-12-19 10:15 来自手机 | 只看该作者
Undo 发表于 2018-11-16 15:26
厉害啊

老哥可以分享一下么1608383880@qq.com
回复

使用道具 举报

15#
ID:455527 发表于 2018-12-26 15:51 | 只看该作者
求程序啊
回复

使用道具 举报

16#
ID:460696 发表于 2019-1-3 10:09 | 只看该作者
写的太棒啦

回复

使用道具 举报

17#
ID:460866 发表于 2019-1-3 13:06 | 只看该作者
谢谢分享,做个记号收藏备用
回复

使用道具 举报

18#
ID:460866 发表于 2019-1-3 13:06 | 只看该作者
1.密码存储的安全性问题:如果有人使用另一台机器连接你的24C02,在上电情况下我想也可以进行读取,那么你的密码使用明文存储是肯定不安全的,是否具有加密措施?
2.开锁机构太简单,如果在外部使用物理方法实现电平拉低,就可以绕过密码部分直接开锁了
3.使用了红外开锁的功能,对红外通信的具体要求和安全性没有明确叙述啊,例如给程序专门设计的安全通信口令,不然一个人安装了这个锁,我买另一款同型号的锁就可以开这个锁了,岂不是很糟??
回复

使用道具 举报

19#
ID:480111 发表于 2019-2-24 21:00 | 只看该作者
求文件
回复

使用道具 举报

20#
ID:480359 发表于 2019-2-25 20:31 | 只看该作者
不错呃,单片机就是这么简单
回复

使用道具 举报

21#
ID:300582 发表于 2019-3-1 11:00 | 只看该作者
有没有完整的例程
回复

使用道具 举报

22#
ID:483285 发表于 2019-3-2 16:46 来自手机 | 只看该作者
厉害呀,谢谢楼主
回复

使用道具 举报

23#
ID:485130 发表于 2019-4-2 20:05 | 只看该作者
有完整的程序吗?
回复

使用道具 举报

24#
ID:662533 发表于 2019-12-17 15:28 | 只看该作者
感谢大神指点,要是有完整的参考程序就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表