首页 基于AT89S51的遥控电子锁的设计毕业论文

基于AT89S51的遥控电子锁的设计毕业论文

举报
开通vip

基于AT89S51的遥控电子锁的设计毕业论文 本 科 毕 业 论 文 基于AT89S51的遥控电子锁的设计 Design of AT89S51​-based Remote Control Electronic Lock  学院名称: 电子信息与电气工程学院 专业班级: 学生姓名: 学 号: 指导教...

基于AT89S51的遥控电子锁的设计毕业论文
本 科 毕 业 论 文 基于AT89S51的遥控电子锁的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 Design of AT89S51​-based Remote Control Electronic Lock  学院名称: 电子信息与电气工程学院 专业班级: 学生姓名: 学 号: 指导教师姓名: 指导教师职称: 2014年 5 月 毕业设计(论文)原创性声明和使用授权 说明 关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得安阳工学院及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作 者 签 名:        日  期:      指导教师签名:        日  期:        使用授权说明 本人完全了解安阳工学院关于收集、保存、使用毕业设计(论文)的 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 ,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:        日  期:      目 录 I摘要 IIAbstract 1引言 2第一章 概述 21.1课题背景和意义 21.2电子密码锁的发展趋势 4第二章 设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的选择 42.1本设计所要实现的目标 42.2 系统设计方案 6第三章 系统构成 63.1 设计原理 63.2 单片机电路部分 73.3 红外传输部分 93.4 密码存储部分 103.5 复位部位 113.6 晶振部分 123.7 显示部分 133.8 报警部分 143.9 开锁部分 15第四章 系统软件设计 154.1主要程序设计 164.2 开锁设计 174.3密码修改设计 20结论 21致谢 22参考文献 23附录 23附录 A 电路原理图 24附录 B 实物图 25附录 C 程序清单 基于AT89S51的遥控电子锁的设计 摘要:本设计是以单片机AT89S51为主控芯片,并结合外围液晶显示LCD1602、存储芯片AT24C02、红外遥控HX1813,以及键盘输入、复位、电源等电路组合而成。系统能够完成开锁、报警、修改密码等基本功能,还能够通过红外来控制单片机的开锁,以及掉电储存密码的功能。整个设计在Keil开发环境下,用C语言编写主控芯片的控制程序来实现具有多功能的电子密码锁。经实验证明,该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。 关键词:密码锁;AT89S51;红外遥控 Design of the AT89S51​-based remote control electronic lock Abstract: The design is based on SCM AT89S51 as main control chip, and the combination of peripheral LCD1602 liquid crystal display, memory chip AT24C02, infrared remote control HX1813, and keyboard input, reset, power circuit assembly.The system can complete the lock, alarm, modify passwords and other functions, can also through infrared to control chip lock, and power-down save password function.The whole design in the KEIL development environment, using C language master control chip control procedures to achieve multifunctional electronic cipher lock.The experiment proved that the lock has rational design methods like simplicity, low cost, safety and practical features.And it is in line with home and office lock's requirements.So it has promotional value. Key Words:Password lock ;AT89S51 ; Infrared Remote Control 引 言 随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到冶金、电力、建材、化工、机械、石油、食品等各个行业。单片机控制无疑是人们追求的目标之一,它所给人们带来的方便也是不可否认的其中单片机控制就是一个典型的例子。MCS-51系列单片机应用广泛,是学习单片机技术较好的系统平台,同时也是单片机微型计算机应用系统开发的一个重要系列。目前,单片机原理与应用教材大都采用汇编语言讲解和设计程序实例,但汇编语言学习困难。在实际应用系统开发调试中,特别是开发比较复杂的应用系统时,为了提高开发效率和使程序便于移植,现在多用C语言。 在信息产业飞速发展的今天,我们生活中必不可需的设备都向着小型化、便携化、智能化、自动化的方向发展。所以电子密码锁随着快节奏的生活应运而生。在我国六七十年代还是传统的一把钥匙配一把锁,不管是单位还是个人每天都要认真检查是否锁上了门,而且钥匙还不能随便乱放,一旦不小心忘记放在哪里很可能就打不开门了。传统的锁也相当的不安全,会有一些不法分子想尽办法打开你的房锁去偷盗东西。电子密码锁的产生使得这些问题都不再是问题,我们只需简单的记住六位密码即可。 第一章 概述 1.1课题背景和意义 人们从前使用的锁不但不方便,而且安全系数也比较低。随着社会的进步和人们生活水平的提高,老式的锁已经跟不上人们的要求,况且人们对防盗的要求越来越高,特别是对使用的便捷性也有了更高的需求。因此近几年一种新型的电子密码锁应运而生,受到了人们的青睐。有报警功能的密码锁这时正为人们解决了不少问题。但是市场上的密码锁大部分都是用于一些大公司财政机构、价格高昂,一般人们难以接受。如果再设计和生产一种价格低廉、性能灵敏可靠的密码锁,必将在防盗和保证财政安全方面发挥更加有效的作用。 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其特点如下: 1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2) 密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。 3) 误码输入保护,当输入密码多次错误时,报警系统自动启动。 4) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。 5) 电子密码锁操作简单易行,一学即会。 1.2 电子密码锁的发展趋势 20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,同时可靠性提高,成本也相对提高,所以只适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对密码锁的研究一直没有明显进展。到了90年代,美国、意大利、德国、日本、加拿大、韩国以及我国的台湾、香港等地的微电子技术的进步和通信技术的发展为密码锁提供了技术上的支持,从而推动密码锁走向实际应用的阶段。目前,在西方国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,使之更加安全更加可靠实现大门的管理。我国于90年代初期开始对密码锁进行初步的探索。到目前为止,随着电子技术和信息技术的发展,电子密码锁的技术领域已发展的十分成熟。从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。在其他技术领域还有遥控式电子密码锁以及卡片式密码锁等。 第二章 设计方案的选择 2.1本设计所要实现的目标 本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误一次将报警。密码可以由用户自己修改设定,锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。 2.2 系统设计方案 密码电子锁的设计方案有两种;方案一为采用数字电路控制:用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。故不采用。方案二为采用以单片机为核心的控制方案:用单片机AT89S51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路:外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。 本设计的遥控电子锁应用于家庭、办公室、学生宿舍及宾馆等场所,需要系统简单方便,易于开发。基于以上因素本设计选用方案二,由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最数器基本的比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。 当用户需要开锁时,先按键盘的数字键0-9输入密码。密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。新密码输入无误后按确认键使新密码将得到存储,密码修改成功。 第三章 系统构成 3.1 设计原理 设计原理:系统由硬件部分与软件部分两部分构成。其中硬件部分由单片机、电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。其原理框图如图3.1所示。 图3.1 电子密码锁原理框图 3.2 单片机电路部分 本次设计采用AT89S51芯片,AT89S51为8位通用微处理器,采用工业 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。AT89S51是一个低电压,高性能CMOS 8位单片机,通过用keil软件编写程序,然后烧到单片机里面去,然后让它对整个系统进行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程序来确定哪个按键按下,并处理相应按键对应的功能,然后把相应的信息反应到单片机的各个引脚,来实现按键实现的现象,如:显示是否开启锁,报警等。它的电路如图3.2所示。 图3.2 单片机电路 3.3 红外传输部分 红外数据传输的特点:成本廉价、建设工程期短、适应性好、扩展性好、设备维护上更容易实现。使用红外模块进行传输,丰富了系统的功能,提高了系统的可操作性,因而达到了交互式与智能化。红外数据传输广泛地运用在红外遥控系统和车辆的监控、门禁系统、小区的安全防火系统和传呼系统、身份的识别、非接触RF的智能卡等。工业设备中,在高压,辐射、有毒气体、粉尘等环境下,采用红外遥控不仅完全可靠而且能有效地隔离电气干扰。 红外线输入部分,采用HX1813接收和通用的红外遥控器。红外输入电路如图3.3所示,红外遥控器如图3.4所示。 图3.3 红外输入电路 图3.4 通用遥控器 3.4 密码存储部分 本设计采用EPROM芯片AT24C02存储密码。AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5 V)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I2C规程,使用主从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。 图3.5 AT24C02的两种引脚图 24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。 通过单片机对24C02芯片进行密码存储,存储好密码后,通过按键输入密码与存储芯片里面的数据进行对比,根据数据是否一致,来执行相应的操作,还可以根据按键操作来执行是否更换数据。电路连接图如图3.6所示。 图3.6 密码存储电路原理图 图中AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,与单片机的P3.3连接。第6脚SCL为串行时钟输入线,与单片机的P3.4连接。第7脚需要接地。 3.5 复位部位 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。地址锁存信号ALE也为高电平。根据实际情况选择如图3.7所示的复位电路。 图3.7 复位电路原理图 3.6 晶振部分 本设计采用石英晶体振荡器,石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。现在应用最广泛的是石英晶体振荡器。 石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。 本设计的AT89S51引脚XTAL1和XTAL2与晶体振荡器及电容C5、C6按图3.7所示方式连接。晶振、电容C5/C6及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C5、C6的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C5、C6取值范围在5~30pF之间。根据实际情况,本设计中采用12MHZ做为系统的外部晶振。电容取值为30pF。如图3.8所示。 图3.8 晶振电路 3.7 显示部分 为了提高密码锁的密码显示效果能力。本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。开始时显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,最多显示6位。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD子显示“Right Open”,单片机其中P1.3引角会输出低电平,使三极管导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“Error Retry”,P1.3输出的是高电平,电子密码锁不能被打开。通过LCD显示屏,可以清楚的判断出锁所处的状态。其显示部分引脚接口如图3.9所示。 图3.9 显示电路原理图 3.8 报警部分 报警部分由蜂鸣器及外围电路组成,加电后不发声,当密码输入错误三次时,单片机的P1.4引脚为低电平,三极管导通执行蜂鸣器警车声子程序发出警笛报警。如图3.10所示。 图3.10 报警电路原理图 3.9 开锁部分 开锁用户通过键盘任意设置密码,并储存在EEPROM中作为锁码指令。开锁步骤如下:首先按下键盘数字键0-9输入密码,最后按下确认键。当用户输入一密码后,单片机自动识码,如果识码不符,则提示重新输入,如果超过三次则报警。如果正确,系统使单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开,实物中用led代替继电器。开锁部分电路图如图3.11所示。 图3.11 开锁电路原理图 第四章 系统软件设计 本系统软件设计由主程序、初始化程序、LCD显示程序程序、键盘扫描程序、输入密码开锁程序、密码修改程序、EEPROM读写程序和延时程序等组成。 4.1主要程序设计 本系统主要流程图如图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所示。 图4.2 输入密码开锁流程图 当输入密码正确时,单片机输出低电平,控制继电器工作,模拟开锁动作,同时,当输入密码或开锁成功时,蜂鸣器发出相应的提示音。 开锁程序设计如下: while(1) { if(keydata==4) //锁定功能 { P3_6=0; EX1=1; goto start; 4.3密码修改设计 输入密码前,要先将正确的密码从存储器24C02中读出,并存放在单片机RAM从40H开始的6个单元中。6位密码锁由矩阵按键输入,输入的密码存储在单片机RAM从30H开始的6个单元中,每输入一位密码,都要和正确的密码进行比较;若全部6位密码均输入正确,显示密码正确信息;若输入的密码不完全正确,则进行第二位输入,若输入3次仍不正确,则报错锁定。输入密码时,还要打开定时器T0,使定时器T0工作,当计时到30s时,若输入的密码不正确或未输入密码,则显示出错信息。密码修改程序用来设置新密码,当输入的开锁密码正确后,可重新设置新密码,输入的新密码暂存在单片机RAM从40H开始的单元中,然后,调用存储器子程序,将40H开始的6位密码存储在24C02中。 密码修改流程图如图4.3所示。 图4.3 修改密码流程图 密码程序如下: 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; //第二次输入密码 结 论 本设计从经济实用的角度出发,采用美国Atmel公司的单片机AT89S51与低功耗CMOS型E2PROM ,AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路并用C语言编写主控芯片的控制程序,研制了一款可以多次更改密码具有报警功能的电子密码锁。设计完全可行可以达到设计目地。使用单片机制作的电子密码锁具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可应用于住宅、办公室的保险箱及档案柜等需要防盗的场所,有一定的实用性。该电路设计还具有按键有效提示,输入错误提示,控制开锁电平,控制报警电路,修改密码等多种功能。可在意外泄密的情况下随时修改密码。保密性强,灵活性高,特别适用于家庭、办公室、学生宿舍及宾馆等场所。 在设计过程中,我查阅大量的相关资料,详细的了解了各个芯片的作用,如何工作,工作原理,个个芯片引脚的连接方式。对系统硬件的设计,电路原理图以及仿真,软件流程图和具体的汇编语言的设计都有了相应的提高。此次设计涉及到了Protues和Protel99和一些单片机指令,通过近段时间的使用,对这些有了更深的了解。对于软件部分的Keil软件的使用,是我们对汇编语言以及C语言又有了更深一步的了解。 通过完成设计,我们对所学的知识有了更深刻地了解,实现了从理论到实践再到理论的几个飞跃,也更加了解到科学知识应该以服务社会为目的,只有掌握了足够的知识才能更好的为社会贡献我们的力量。我学会了利用所学知识以技术上的知识解决问题的能力。 致 谢 在论文完成之际,我要忠心的感谢身边给予过我莫大帮助的老师、同学和朋友,致以他们最诚挚的谢意。 本研究及学位论文是在我的导师的亲切关怀和悉心指导下完成的。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。从课题的选择到项目的最终完成,晁老师都始终给予我细心的指导和不懈的支持。晁老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励,这让我在整个论文的撰写过程中学习到了很多关于课题研究方面的知识。 真诚地感谢参加论文评审和答辩的各位老师,感谢你们的辛勤劳动和即将从你们那里获得的有益教诲;感谢同学们在设计中给予的指导和帮助。衷心感谢各位同学,在设计过程中多次帮助我解决问题。多亏了各位同学的开导和帮助,这次的设计才得以顺利完成。 在这四年的学期中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富。在此,也对他们表示衷心感谢。 本文参考了大量的文献资料,在此,向各学术界的前辈们致敬。最后要感谢的是我的父母和家人,感谢他们多年来对我默默的支持和帮助。由衷地希望在未来的日子里,周围的老师、同学和朋友们一如既往的在各方面继续给予我更多的指教和帮助,以期取得新的进步和成绩来回报大家。 参考文献 [1] 石文轩,宋薇.基于单片机MCS-1的智能密码锁设计[J].武汉工程职业技术学院学报,2004,(01). [2] 夏路易,宗义.电路原理图与电路板设计教程PROTEL 99SE[M].北京:北京希望电子出版社 2004.P56-59 . [3] 兰吉昌.51单片机应用设计百例[M].北京:化学工业出版社,2009.220-230. [4] 郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术,2005,(3). [5] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03). [6] 董继成.一种新型安全的单片机密码锁[J].电子技术,2004,(03). [7] 祖龙起,刘仁杰,孙乃凌. 一种新型可编程密码锁[J].大连轻工业学院学报,2002,(01). [8] 李明喜.新型电子密码锁的设计[J].机电产品开发与创新,2004,(03). [9] 杨茂涛.一种电子密码锁的实现[J].福建电脑,2004,(08). [10] 瞿贵荣.实用电子密码锁[J].家庭电子,2000,(07). [11] 曹素芬.单片微型计算机原理与接口技术[M].沈阳:东北大学出版社,1995.P69-77. [12] 于永,戴佳,刘波.51单片机C语言常用模块与综合设计实例精讲[M].北京:电子工业出版社,2008 ,P47-53. [13] 王千.实用电子电路大全[M],北京:电子工业出版社,2001,p101-162. [14] 周润景,张丽娜.基于PROTEUS的电路及单片机系统设计与仿真[M].北京:航空航天大学出版社,2006.P321-326. [15] 李叶紫,王喜斌,胡辉,孙东辉.MCS-51单片机应用教程[M].北京:清华大学出版社,2004.P29-35. 附 录 附录 A 电路原理图 附录 B 实物图 附录 C 程序清单 #include #include #include #define uint unsigned int #define uchar unsigned char //--------------------------------- sbit BEEP=P3^5; //蜂鸣器 sbit JDQ=P3^6; //继电器 模拟开锁 //--------------------------------- //P1.0-1.7---D0.0-D0.7 sbit rs = P3^0; //1602液晶 sbit wela = P3^1; //1602液晶 sbit lcden = P3^2; //1602液晶 //--------------------------------- #define C02_write 0xa0 //写 #define C02_read 0xa1 //读 sbit SCL=P3^4; //时钟 sbit SDA_EEPROM=P3^3; //数据 bit ack; bit dd; //--------------------------------- //4*4 key - P1 // //--------------------------------- uchar IIC_Password[16]=""; //IIC密码 uchar DSY_BUFFER[16]=""; //显示缓冲 uchar UserPassword[16]=""; //使用者密码 uchar TwoPassword[16]=""; //使用者密码 uchar OnePassword[16]=""; //使用者密码 uchar KeyNo =16; //---------------1602-------------------------------------- void delayms(uint z) //延时N ms { uint x,y; for(x=z;x>0;x--) for(y=120;y>0;y--); } void write_com(uchar com) //1602液晶写指令 { rs=0; lcden=0; P1=com; delayms(1); lcden=1; delayms(2); lcden=0; } void write_date(uchar date) //1602液晶写数据 { rs=1; lcden=0; P1=date; delayms(1); lcden=1; delayms(2); lcden=0; } void init_lcd(void) //初始化液晶,及画面初始化 { // uchar num; wela=0; lcden=0; write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); } //指定x,y写入字符串函数 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { if (y == 0){write_com(0x80 + x);} //第一行 else{write_com(0xC0 + x);} //第二行 while (*s) // {write_date( *s); s++;} //写入数据 } //-------------1602---------------------------------------- //蜂鸣器子程序 void Beep() { uchar i; for(i=0;i<100;i++) { delayms(2);BEEP=~BEEP; } BEEP=1; //关蜂鸣器 } ////////////////////2402/////////////////////////////////// //--------------------------------------------------------- void delay_ms(uchar i) { uchar j; for(;i>0;i--) for(j=124;j>0;j--); } void I2C_start(void) { SDA_EEPROM=1; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SDA_EEPROM=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); } void I2C_stop(void) { SDA_EEPROM=0; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SDA_EEPROM=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); } void I2C_ackownledge(void) { SDA_EEPROM=0; _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); _nop_(); } void I2C_no_ackownledge(void) { SDA_EEPROM=1; _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); _nop_(); } void I2C_sendB(uchar byte) { uchar counter; for(counter=0;counter<8;counter++) { if(byte&0x80) SDA_EEPROM=1; else SDA_EEPROM=0; _nop_(); SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); byte<<=1; } _nop_(); _nop_(); SDA_EEPROM=1; _nop_(); _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); _nop_(); if(SDA_EEPROM==0) ack=1; else ack=0; SCL=0; _nop_(); _nop_(); } uchar I2C_receiveB(void) { uchar temp; uchar counter; temp=0; SDA_EEPROM=1; _nop_(); _nop_(); for(counter=0;counter<8;counter++) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); SCL=1; _nop_(); _nop_(); if(SDA_EEPROM==1) temp=(temp<<1)|0x01; else temp=temp<<1; _nop_(); _nop_(); SCL=0; _nop_(); _nop_(); _nop_(); } _nop_(); _nop_(); return(temp); } /*bit I2C_write_byte(uchar byte,uchar address) { I2C_sendB(address); if(ack=0) { I2C_stop(); return(0); } else I2C_sendB(byte); */ //存UserPassword bit I2C_send_string(uchar no,uchar address) { uchar counter; for(counter=0;counter> 4 ^ 0x0f; switch(Tmp) { case 1: KeyNO += 0; break; case 2: KeyNO += 4; break; case 4: KeyNO += 8; break; case 8: KeyNO += 12; } Beep();//按键音 return KeyNO; } //--------------key--------------------------------------- void main() { uchar i=0; uchar error5=0; //密码错误5次锁键盘. uchar mode=0; //开机模式选择 BEEP=1; //关蜂鸣器 JDQ=1; //关锁 init_lcd(); //初始化1602 while(1) { if(mode==0) { LCD_Write_String(0,0," Welcome ! "); //显示 Welcome ! LCD_Write_String(0,1," "); //显示 delayms(2000); //延时2秒 LCD_Write_String(0,0," Input code ");//显示 Input Code EA=0; I2C_receive_string(6,0); //读取24C02内部密码 EA=1; mode=1; //去mode1 } if(mode==1) { KeyNo=16; //清零为键盘扫描做准备 i=0; //输入密码次数计数 while(1) { P2 = 0xF0; if(P2 != 0xF0) KeyNo = Keys_Scan(); //扫描键盘获取键序号KeyNo switch ( KeyNo ) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: //当4*4键盘输入0123456789这几个数字时执行以下选择 if ( i<= 5 ) //密码限制在6位以内 { //如果i为0则执行一次清屏 if (i ==0) LCD_Write_String(0,1," "); //当i=0时显示空白 UserPassword[i] = KeyNo + '0'; //用户输入的密码UserPassword[0]-UserPassword[5]共6个 UserPassword[i+1] = '\0'; DSY_BUFFER[i] = '*'; //1602上显示***** DSY_BUFFER[i+1] = '\0'; LCD_Write_String(0,1,DSY_BUFFER); //1602上显示***** // LCD_Write_String(8,1,UserPassword); i++; } break; }//switch if(i==6) //输入6个后系统自动进行密码验证 {if(strcmp(UserPassword,IIC_Password) == 0) //密码验证 {JDQ = 0;error5=0;mode=2;LCD_Write_String(0,1," Unlock OK! ");delayms(2000);break;}//密码正确,显示OK mode=2, else{JDQ = 1;error5++;LCD_Write_String(0,1," ERROR ! "); //密码错误,显示错误 i=0;delayms(2000);LCD_Write_String(0,0," Input code "); LCD_Write_String(0,1," ");}//第一排显示 Input code 第二排显示空白 } //if(i==6) if(error5>2){LCD_Write_String(0,1," ERROR ! "); while(1){delayms(100); Beep();};} // 错误3次,键盘锁,蜂鸣器响 P2= 0xF0; while (P2 != 0xF0); //如果有键未释放则等待 while (P2 == 0xF0); //如果没有再次按下按键则等待 }//while(1) } if(mode==2) { delayms(1000); //延时1秒 LCD_Write_String(0,0,"Change K10"); //修改软密码 LCD_Write_String(0,1,"Exit K11"); //修改硬密码 KeyNo=16; //清零为键盘扫描做准备 i=0; //输入密码次数计数 while(1) //循环需选择后退出 { P2 = 0xF0; if(P2 != 0xF0) KeyNo = Keys_Scan(); //扫描键盘获取键序号KeyNo if(KeyNo==10){KeyNo=16;mode=3;delayms(500);break;}; //到mode=3 延时0.5秒 软密码//读EEPROMPassword if(KeyNo==11){KeyNo=16;mode=0;delayms(500);JDQ=1;break;}; //到mode=0,继电器关,延时0.5秒 退出mode3 P2= 0xF0;//按键音 while (P2 != 0xF0); //如果有键未释放则等待 while (P2 == 0xF0); //如果没有再次按下按键则等待 } } if(mode==3) { delayms(500); //延时0.5S LCD_Write_String(0,0," New code 1 "); //显示New Soft code 1 LCD_Write_String(0,1," "); //显示空白 KeyNo=16; //清零为键盘扫描做准备 i=0; //输入密码次数计数 while(1) { P2 = 0xF0; if(P2 != 0xF0) KeyNo = Keys_Scan(); //扫描键盘获取键序号KeyNo switch ( KeyNo ) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: //当4*4键盘输入0123456789这几个数字时执行以下选择 if ( i<= 5 ) //密码限制在6位以内 { //如果i为0则执行一次清屏 if (i ==0) LCD_Write_String(0,1," "); //显示空白 OnePassword[i] = KeyNo + '0'; //用户第一次输入的密码 OnePassword[i+1] = '\0'; DSY_BUFFER[i] = '*'; // 显示***用 DSY_BUFFER[i+1] = '\0'; LCD_Write_String(0,1,DSY_BUFFER); // 显示*** i++; } break; }//switch if(i==6){break;} //输入6个后退出 P2= 0xF0;//按键音 while (P2 != 0xF0); //如果有键未释放则等待 while (P2 == 0xF0); } //while(1) delayms(1000); //1s LCD_Write_String(0,0," New code 2 "); //显示New Soft code 2 LCD_Write_String(0,1," "); //界面 KeyNo=16; //清零为键盘扫描做准备 i=0; //输入密码次数计数 while(1) { P2 = 0xF0; if(P2 != 0xF0) KeyNo = Keys_Scan(); //扫描键盘获取键序号KeyNo switch ( KeyNo ) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: //当4*4键盘输入0123456789这几个数字时执行以下选择 if ( i<= 5 ) //密码限制在6位以内 { //如果i为0则执行一次清屏 if (i ==0) LCD_Write_String(0,1," "); TwoPassword[i] = KeyNo + '0'; //用户第二次输入的密码 TwoPassword[i+1] = '\0'; DSY_BUFFER[i] = '*'; // DSY_BUFFER[i+1] = '\0'; LCD_Write_String(0,1,DSY_BUFFER); //显示字符 i++; } break; }//switch if(i==6){ if (strcmp(OnePassword,TwoPassword) == 0) //输入6个后系统自动进行密码验证 { for(i=0;i<6;i++){UserPassword[i] = TwoPassword[i];} //验证两次输入的密码是否正确 EA=0;I2C_send_string(6,0);EA=1; //密码正确 存入24c02 LCD_Write_String(0,0," OK! "); //显示OK! LCD_Write_String(0,1,"Password Saved! "); //显示Password Saved! delayms(2000); //延时2秒 i=0; mode=0; JDQ = 1;//继电器关 break;//延时2S } else { i = 0; LCD_Write_String(0,0,"No rights ! ");//显示No rights ! LCD_Write_String(0,1," ");//显示空白 delayms(1000); //延时1秒 mode=0; // mode=1 JDQ = 1; //继电器关 break; // mode=1 } } if(mode!=3){mode=0;break;} //退出该模式 去mode1 P2= 0xF0; while (P2 != 0xF0); //如果有键未释放则等待 while (P2 == 0xF0); }//while }//for(mode==3) } } 开始 初始化 键盘程序 启动程序 键盘扫描 键功能程序 结束 关闭程序 初始化 按开锁键 输入密码 确认程序 所输入密码正确? Y 开锁成功 开始 输入次数加1 次数>3? 报警程序 锁定 N Y N 开始 初始化 按下设置键 输旧密码 确认程序 所输入旧密码正确? 输新密码 确认程序 设置成功 输入次数加1 次数>3? 报警程序 N Y N Y 锁定 确认程序 再次输新密码 两次新密码输入相同? N Y _1234567890.vsd � 红外输入 AT89S51 复位电路 密码存储电路 晶振电路 电源输入 显示电路 报警电路 开锁电路
本文档为【基于AT89S51的遥控电子锁的设计毕业论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
北溟愚鱼
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:42
分类:工学
上传时间:2018-09-22
浏览量:23