1、基于单片机的电子密码锁设计与实现(2)412020年4月19日文档仅供参考河南理工大学万方科技学院课程设计报告 第 一 学期课程名称 单片机原理及应用 设计题目 电子密码锁设计 学生姓名 杨会毫 学 号 专业班级 计算机15升 指导教师 苏 百 顺 年 1 月 5 日摘 要近年来,随着改革开放的深入发展,电子电器的飞速发展。人民的生活水平有了很大提高。各种高档家电产品和贵重物品为许多家庭所拥有。然而不法分子也是越来越多,原因在于大部分人防盗意识还不够强,造成偷盗现象屡见不鲜。越来越多的居民家庭对财产安全问题十分担忧。因此,出于安全方便等方面的需求,电子密码锁相继问世。本设计是以单片机AT89S
2、51为主控芯片,并结合外围液晶显示LCD1602、存储芯片AT24C02、红外遥控HS0038,以及键盘输入、复位、电源等电路组合而成。系统能够完成开锁、报警、修改密码等基本功能,还能够经过红外来控制单片机的开锁,以及掉电储存密码的功能。整个设计在Keil开发环境下,用C语言编写主控芯片的控制程序来实现具有多功能的电子密码锁。关键词:密码锁 AT89S51 储存 显示 红外目 录摘 要I引 言11 概述21.1 课题背景和意义21.2电子密码锁的发展趋势22 系统总体设计思路32.1 系统设计要求32.2系统设计方案33 系统硬件设计与实现43.1主控芯片AT89S5143.2 存储模块AT2
3、4C0273.3红外模块HS003893.4 显示模块LCD1602103.5 电源电路模块113.6 键盘输入模块123.7 报警电路133.8 开锁电路133.9 复位电路143.10串行通信电路143.11 系统整体原理图164系统软件设计174.1 主程序设计174.2键值判断设计184.3开锁设计194.4密码修改设计204.5 红外遥控设计235 仿真设计245.1 Protues仿真软件概述245.2 Protues与Keil的连调255.3 Protues与Keil的连调的仿真结果265.4问题及解决办法27结 论28参考文献29引 言随着新技术的不断开发与应用,近年来单片机发
4、展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到冶金、电力、建材、化工、机械、石油、食品等各个行业。单片机控制无疑是人们追求的目标之一,它所给人们带来的方便也是不可否认的其中单片机控制就是一个典型的例子。MCS-51系列单片机应用广泛,是学习单片机技术较好的系统平台,同时也是单片机微型计算机应用系统开发的一个重要系列。当前,单片机原理与应用教材大都采用汇编语言讲解和设计程序实例,但汇编语言学习困难。在实际应用系统开发调试中,特别是开发比较复杂的应用系统时,为了提高开发效率和使程序便于移植,现在多用C语言。在信息产业飞速发展的今天,我们生活中必不可需的设备都向着
5、小型化、便携化、智能化、自动化的方向发展。因此电子密码锁随着快节奏的生活应运而生。在中国六七十年代还是传统的一把钥匙配一把锁,不论是单位还是个人每天都要认真检查是否锁上了门,而且钥匙还不能随便乱放,一旦不小心忘记放在哪里很可能就打不开门了。传统的锁也相当的不安全,会有一些不法分子想尽办法打开你的房锁去偷盗东西。电子密码锁的产生使得这些问题都不再是问题,我们只需简单的记住四位密码即可。1 概述1.1 课题背景和意义人们从前使用的锁不但不方便,而且安全系数也比较低。随着社会的进步和人们生活水平的提高,老式的锁已经跟不上人们的要求,况且人们对防盗的要求越来越高,特别是对使用的便捷性也有了更高的需求。
6、因此近几年一种新型的电子密码锁应运而生,受到了人们的青睐。有报警功能的密码锁这时正为人们解决了不少问题。可是市场上的密码锁大部分都是用于一些大公司财政机构、价格高昂,一般人们难以接受。如果再设计和生产一种价格低廉、性能灵敏可靠的密码锁,必将在防盗和保证财政安全方面发挥更加有效的作用。密码锁是现代生活中经常见到的工具之一,广泛应用于保险柜、房门、宾馆、车库等。电子密码锁克服了机械式密码锁量少、安全性能差的缺点,特别是使用单片机控制的智能电子密码锁,不但功能全,而且具有更高的安全性和可靠性。而且电子密码锁只需记住一组密码,无需携带钥匙,免除了人们携带钥匙的烦恼,被越来越多的人所喜欢。随着中国第三产
7、业的飞速发展,电子密码锁会在不久的将来得到广泛的应用,方便社会和个人。1.2电子密码锁的发展趋势20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,同时可靠性提高,成本也相对提高,因此只适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,因此对密码锁的研究一直没有明显进展。到了90年代,美国、意大利、德国、日本、加拿大、韩国以及中国的台湾、香港等地的微电子技术的进步和通信技术的发展为密码锁提供了技术上的支持,从而推动密码锁走向实际应用的阶段。当前,在西方国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,使之更加安全
8、更加可靠实现大门的管理。中国于90年代初期开始对密码锁进行初步的探索。到当前为止,随着电子技术和信息技术的发展,电子密码锁的技术领域已发展的十分成熟。从当前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。在其它技术领域还有遥控式电子密码锁以及卡片式密码锁等。2 系统总体设计思路2.1 系统设计要求单片机密码锁主要内容:用户能够自由设定密码、具有报警提示功能、可设置万用密码、具有掉电存储密码功能。2.2系统设计方案本系统采用以单片机为核心元件的控制方案。由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用
9、时要多加比较,合理选择,以获得最佳的性价比。一般来说在选取单片机时从下面几个方面考虑:性能、存储器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些方面外,还有一些最基本的条件,比如:中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。在开发过程中还要考虑开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等因素。基于以上因素本设计选用单片机AT89S51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。在单片机的
10、外围电路外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。其原理如下图1所示。显示电路电源电路单片机AT89S51报警电路键盘输入开锁电路复位电路红外遥控密码储存AT89S51 图1单片机控制方案3 系统硬件设计与实现3.1主控芯片AT89S51在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯片。它是一款低功耗,AT89S51就是一款广泛应用的,高性能CMOS 8位单片机,由于系统控制方案简单,数据量也不大,考虑到电路的简单和成本等因素,因此在本设计中选用 ATMEL 公司的 AT89S51单片机作为主控芯
11、片。主控模块采用单片机最小系统是由于 AT89S51芯片内含有8 B的 E2PROM ,无需外扩存储器,电路简单可靠,其时钟频率为 024 MHz,而且价格低廉,批量价在 10元以内。AT89S51是一款功能强大的微型计算机,它可为许多嵌入式控制应用系统提供高性价比。单片机的最小系统是由复位电路、时钟电路和电源组成。复位操作有上电自动复位、按键复位和外部脉冲复位3种方法。本文采用的是上电复位它是经过系统外部的复位电路来实现的。根据电路原理可知电容两极板间的电压不能突变当单片机电源接通电源的瞬间单片机的9管脚会产生一个阶跃信号,因此RTS端维持高电平由于这个充电时间远远大于1ms,一般就能够实现
12、对单片机的上电自动复位,即接通电源就完成了系统的初始化。初始化是为了让单片机从地址0000H开始执行, 除此之外单片机要想正常工作还必须有时钟电路,时钟电路是产生时序的基础,单片机每执行一条指令都是建立在时序电路上的,为了能保证单片机执行指令的同步,电路就要在唯一的时钟信号控制下按时序的先后进行工作。它分为内部时钟电路和外部时钟电路。本文采用的是内部时钟电路,在MCS51单片机的内部有一个高增益的反向放大器,其输入端为引脚XTAL1,输出端为XTAL2,只要在外部接上两个电容和一个晶振,就能够成一个稳定的自激振荡器。这里主要看一下电容和晶振的选择,晶振的大小与单片机的振荡频率有关,电容的大小影
13、响着振荡器振荡的稳定性和起振的快速性,一般选择1030pF的瓷片电容。本系统电容选择为33pF,晶振为12MHz之因此选择这一频率的晶振是为了在进行单片机与电脑进行串口通信时容易产生和电脑时钟同步的波特率,另外在设计电路时,晶振和电容应尽可能的靠近芯片,这样能够提高系统的抗干扰能力,电源部分,电源与地之间能够接一个0.1uF的电容,它用来滤除电源的纹波,使单片机稳定工作,单片机最小系统如图3-1所示。 图3-1 单片机最小系统 单片机引脚说明:VCC:电源电压输入端。 GND:电源地。 P0口:P0口是一个8位漏极开路双向I/O端口,每个引脚能够吸收8TTL门电流。P0口当作数据输出时需要加上
14、拉电阻,当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口外部下拉低时输出电流,这是因为有内部上拉的缘故
15、。当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(外部数据存储器的
16、写选通) P3.7 /RD(外部数据存储器的读选通) RST:复位引脚高电平时MCU复位,复位信号输入端口,当MCU要复位时,给与此引脚高电平,高电平持续时间是不少于两个机器周期的时间。ALE/PROG:地址锁存使能以及编程脉冲信号端口。当单片机访问外部的存储器时,地址锁存使能锁存地址低八位。一般情况下,ALE引脚输出单片机外部振荡器的频率的1/6的频率输出。应该注意到的是:当用于单片机扩展外部的数据存储器时,它会少一个ALE脉冲。如果你想禁止ALE输出能够设置为0在SFR8EH地址。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,ALE引脚倍稍微拉高。如果微处理器在外部执
17、行状态ALE的禁令,设置无效。PSEN:程序存储器允许输出控制端,在读外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作。EA/VPP:外部程序存储器访问允许。当/EA接高电平时,单片机读取内部程序序存储器,当扩展有外部ROM时,当读完内部ROM后自动读取外部ROM,当/EA接低电平时,单片机直接读取外部程序存储器。XTAL1:片内振荡器反相放大器和时钟发生器的输入端。 XTAL2:片内振荡器反相放大器的输出端。3.2 存储模块AT24C02存储模块的设计是把WP引脚接到GND上因为要让器件进行正常的读/写操作,把SDA串行数据/地址与单片机的P3.7引脚使AT24C02与单
18、片机进行所有数据的发送或接收,把SCK串行时钟引脚与单片机的P3.6引脚相连接,让单片机产生一个AT24C02工作的时钟,使其正常的工作。存储模块电路如图3-2所示。图3-2存储模块 AT24C02硬件结构AT24C02的特点:数据线看门狗定时器;可编程复位门级;高数据传输速率400kHz速率和I2C总线;2.7V至7V电压;低功耗CMOS工艺兼容;16 bespate写缓冲区;反撇写保护芯片;高低电平复位信号输出;100万擦除周期;保存长达1 。定义如下的总线状态,见图3-3。 图3-3 总线时序 总线空闲(状态A) 数据线和时钟线都保持高电平状态。 起始信号(状态B) 时钟线保持高电平期间
19、,数据线从高电平到低电平的跳变作为I2C总线的起始信号。所有操作都必须以起始信号为前提。 停止信号(状态C) 时钟线保持高电平期间,数据线从低电平到高电平的跳变作为I2C总线的停止信号。所有操作都必须以停止信号结尾。 数据有效(状态D) 起始信号之后,在时钟信号保持高电平期间,数据线传送的数据有效。 数据线上的数据必须在时钟信号为低电平时改变,以传输下一字节的数据。每传输一字节的数据,就会有一个时钟信号的暂停。数据传输都必须以起始信号开头,以停止信号结尾。在起始信号和停止信号期间传输数据的总量大小由主器件决定,理论上是没有限制的。可是在写状态下只有最后16个周期传送的数据会被写入。如果待写入的
20、数据超出了这个限制,会根据先入先出的原则覆盖掉前面的数据。图3-4地址控制字节 每一个被寻址到的从设备,在成功接收一个字节的数据后,都必须产生一个应答信号。主设备必须增加一个额外的时钟信号,接收从器件对收到数据的响应。器件应答的方式是在响应时钟周期时将SDA线拉低,表示其已收到一个8位数据。如图3-4。当然,调整时间和保持时间都必须计算在内。主器件在传送完最后一个字节的数据之后,不传送应答信号,从而向从器件标明数据传送结束。在这种情况下,从器件必须保持SDA高电平,使主器件能够产生停止信号。当AT24C02在内部读写周期内是不会产生任何响应信号的。3.3红外模块HS0038红外数据传输的特点:
21、成本廉价、建设工程期短、适应性好、扩展性好、设备维护上更容易实现。使用红外模块进行传输,丰富了系统的功能,提高了系统的可操作性,因而达到了交互式与智能化。红外数据传输广泛地运用在红外遥控系统和车辆的监控、门禁系统、小区的安全防火系统和传呼系统、身份的识别、非接触RF的智能卡等。工业设备中,在高压,辐射、有毒气体、粉尘等环境下,采用红外遥控不但完全可靠而且能有效地隔离电气干扰。一体化红外线接收头三个管脚分别是地、+5 V电源、解调信号输出端接在单片机P3.3引脚上。利用外部中断进行数据的接收。下图3-5为红外模块硬件结构。 图3-5 红外模块硬件结构红外线接收器大都将信号的接受、放大、检波等集于
22、一身,而且能够经过编码解码时单片机收到可识别的信号源。这样一来便会减少硬件设计过程中的麻烦,使电路简单化,且应用起来比较方便。下图为红外一体化接受头HS0038,外观图如图所示。 图3-6红外接收元器件3.4 显示模块LCD1602如果想要了解系统的运行与工作状态显示器是不可缺少的,显示器是一个典型的输出设备而且它的实际应用也是极为广泛的,几乎所有的电子产品都会使用到显示器其差别仅在于显示器的结构类型不同而已。最简单的显示器能够是LED发光二极管或者数码管,它能够给出一个简单的开关信息或者数字显示,而需要显示复杂的完整的信息上述的器件就不能胜任,而液晶的出现就很好的解决了这一问题,它不但显示内
23、容丰富而且好节约了单片机的管脚资源。本设计采用的是液晶显示LCD1602。LCD1602内部的字符已经储存了不同的字符形式,每一个字符都有一个固定的代码,其代码与标准的ASCII字符代码一致。因此只要写入显示字符的ASCII码即可,这种标准化的设计给使用带来很大的方便。比如英文字母“C”的ASCII代码是01000011(43H),显示时单片机往液晶模块写入显示指令,模块就会把地址为43H中的点阵字符图形识别出,并会在液晶屏相应位置上看到字母“C”。LCD1602液晶显示与单片机的连接能够分为两种方式:总线方式和模拟口线方式。在实验中,我们常采用模拟口线连接方式。如图3-7所示。 图3-7 显
24、示模块硬件结构当前市场字符液晶绝大多数是基于HD44780的液晶芯片,控制原理是完全相同的,因此基于HD44780的写控制程序能够很容易地应用到市场上大部分的字符液晶。LCD1602液晶的几个特性:+5V电压、对比度可调、内含复位电路;提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器DDRAM;内建有160个5X7点阵的字型的字符发生器CGROM 8个可由用户自定义的5X7的字符发生器CGRAM。 表3-1 LCD液晶屏引脚说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VEE液晶显示
25、偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极LCD1602采用标准的16脚接口,其中VSS为地电源,VDD接5V正电源,VEE为液晶显示器。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平1时进行读操作,低电平0时进行写操作。E端为使能端。D0D7为8位双向数据线。3.5 电源电路模块控制系统主控制部分电源需要用5V直流电源供电,其电路如图
26、3-8所示,把有效值为220V频率为50Hz单相交流电压转换为幅值稳定的5V直流电压。其主要原理是把单相交流电,经过电源变压器降压。 由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的主要作用是起到降压作用。降压后还是交流电压,因此需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需要经过低通滤波电路滤除交流成分使输出电压平滑稳定。稳压电路的功能是使输出直流电压基本不受负载电阻变化和电网电压波动的影响,从而获得稳定性足够高的直流电压。本电路使用集成稳压芯片LM7805解决了电源稳压问题,
27、在稳压芯片的前段分别放置两个电容主要是为了滤除电源中的高低频干扰而在芯片之后又经过一级的滤波以使电源更为洁净,并在电源输出端加上LED以此来显示电源的开关状态。图3-8 电源电路硬件结构3.6 键盘输入模块键盘是单片机十分重要的输入设备,是实现人机对话的纽带。键盘是由一组规则排列的按键组成,一个按键实际上就是一个开关元件,即键盘是一组规则排列的开关。根据按键与单片机的连接方式不同,按键主要分为独立式按键和矩阵式按键 ,有了这些按键,对单片机的控制就方便多了。本设计按键数量较多,因此采用矩阵式按键以节省I/O口线。将16个按键分为4排4列排列好,如图3-9矩阵键盘硬件结构。当有一个键按下时,经过
28、某一边引脚赋低电平,扫描全部引脚看是否与最初的赋值一样,不一样则根据相应的算法(经过改变后的值与初始值相或,根据结果赋值)确定是哪个键按下。图3-9键盘模块硬件结构键盘为44形式,按键包括阿拉伯数字09,以及锁定、更改和改密三个应用按键。当用户需要输入密码或修改密码时,按下相应按键即会与单片机产生信号,并会执行相应的程序。3.7 报警电路当密码输入两次的数值与所设定的参数值不同时,单片机AT89C51便经过P2.7口控制三极管来驱动扬声器报警,当输出低电平时三极管截止,当输出高电平时三极管导通扬声器报警。如图3-10所示。图3-10报警电路硬件结构3.8 开锁电路开锁电路的功能是当输入正确的密
29、码后密码锁将被锁定,既开锁。当单片机P2.6引脚发出信号经三极管放大后,触动电磁阀即会把锁打开。一旦输入密码,单片机便会与初始密码进行比对,如果密码输入两次都与原始密码不相符即会报警。其原理图如图3-11所示。 图3-11 开锁电路硬件结构3.9 复位电路能让单片机运行起来的最小硬件连接就是单片机最小系统电路,51单片机的最小系统电路一般包括工作电源、振荡电路和复位电路等几部分。复位电路(图3-12是单片机复位电路)具有上电自动复位和手动复位的双重功能。单片机的RST引脚是复位信号的输入端,复位信号是高电平的时候才有效,其有效时间应持续24个震荡脉冲周期(即2个机器周期)以上;一般为了保证应用
30、系统能够准确地复位,复位电路应使引脚RST脚保持10ms以上的高电平状态。只要RST保持高电平,单片机就会自动循环复位。当RST引脚从高电平状态转为低电平状态时,单片机退出复位状态,从程序存储器的0000H地址开始执行用户程序。电容C3和电阻R5组成上电复位电路。上电瞬间RST引脚获得高电平,随着电容C11的充电,RST引脚的高电平逐渐下降。只要高电平保持足够的时间,单片机就能完成复位。手动复位的原理与此类似。图3-12 复位电路硬件结构3.10串行通信电路随着计算机在各个领域的广泛应用和智能化控制的发展,多微机系统和计算机网络技术的普及,计算机的通信功能显得越来越重要。计算机通信是指将计算机
31、技术和通信技术相结合完成计算机与外部控制设备或计算机与计算机之间的信息交换或信息处理,按通信方式能够分为两大类:并行通信与串行通信。并行通信一般是将数据字节的各位用多条数据线同时进行传送 , 并行通信控制简单、传输速度快,可是由于传输线较多长距离传送时成本高且接收方的各位同时接收存在一定的困难。串行通讯传输线少,长距离传送时成本低且能够利用电话网等现成的设备因此本设计采用串口与单片机进行通信。大多数PC机都有一个串行通讯端口,RS-232主要用于计算机之间进行数据的交换与通讯RS-232通讯接口是电子领域的一种标准化传输接口,主要是为了进行远程传输与通讯连接终端设备的物理接口。RS-232采用
32、非平衡连接在这个线路中信号的电压都使用一个公共的接地线,所有信号电压都加到一条导线上为了能提高串口通信的抗干扰能力和数据传送距离,RS-232芯片的信号和电平采用负逻辑电平,直流电压值在-15至-5V芯片规定为逻辑值“1”,直流电压值在+ 5至+15V芯片规定逻辑值“0”,直流电压在-5至+5V为过渡区。由于单片机输入与输出为TTL电平这与 PC机所执行的串行接口标准不一致数据无法正常传输。因此要实现单片机与PC机之间的数据通读,必须进行电平转换。一般常见的电平转换器件有MC1488、MC1489及MAX232等,但MC1488、MC1489需要12V电源,这对于不具备12V电源的单片机系统是
33、非常不便的。故本系统使用MAX232实现电平转换。单片机的第10、11管脚与MAX232芯片的11、12管脚相连并互相传送数据经过MAX232芯片将单片机的TTL电平转换成电脑所能识别的电平。电路原理如图3-13所示。图3-13 串行通信电路硬件结构3.11 系统整体原理图智能电子密码锁的基本原理是:从矩阵键盘输入一组密码,单片机把该密码和设置密码进行比较,若输入的密码正确,则控制电磁锁动作,将电磁锁抽回,从而将锁打开;若输入的密码不正确,则要求从新输入,并记录错误次数,如果2次错误,则被强制锁定并报警。如下图3-14所示:图3-14 系统整体原理图4系统软件设计软件设计主要包括了主程序设计、
34、键盘扫描设计、密码修改设计、开锁程序设计以及红外遥控设计五个方面。本设计采用Keil编译器来进行软件的编程。4.1 主程序设计 图4-1 主程序流程图设计主程序主要完成了系统的初始化、按键扫描、按键功能、以及调用显示等功能。主程序部分如下:En bit P8 将LCD的en引脚连接到单片机的P8Rw bit P9 Rs bit P10 Speaker bit P2.7Open bit P2.6 开锁电路的控制端连接到P2.6口 4.2键值判断设计键盘扫描和键值读取程序主要判断矩阵按键是否按下,按下的是哪一个键,并求出按键的键值。矩阵键盘的识别方法有多种。相对来说,矩阵式键盘的软件设计最终实现以
35、下功能:是否有按键被按下;消除抖动;确定哪个键被按下,若按键闭合了一次,操作也只能是一次。键功能程序键值 =0-9密码输入程序 N Y N 键值 =锁定开锁程序 Y键值 =改密 N改密程序 Y键值 =更正 N设置程序 Y N键值 =确认确认程序 Y结束 图4-2 键盘流程图设计键盘程序如下:if(0keydata)|(4keydata)|(8keydata)|keydata=14)/在0-9之间的数字经过passwordi=keydata;/键盘值进行保存keydata=0;/把键盘值置其它值,不被其它利用,以一样i+;4.3开锁设计当输入密码正确时,单片机输出低电平,控制继电器工作,模拟开锁
36、动作,同时,当输入密码或开锁成功时,蜂鸣器发出相应的提示音。初始化按开锁键输入密码确认程序所输入密码正确Y开锁成功开锁程序输入次数加1次数2?报警程序返回NYN图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位密码均输入正确,显示密码正确信息;若输入的密码不完
37、全正确,则进行第二位输入,若输入3次仍不正确,则报错。输入密码时,还要打开定时器T0,使定时器T0工作,当计时到30s时,若输入的密码不正确或未输入密码,则显示出错信息。密码修改程序用来设置新密码,当输入的开锁密码正确后,可重新设置新密码,输入的新密码暂存在单片机RAM从40H开始的单元中,然后,调用存储器子程序,将40H开始的6位密码存储在24C02中。密码程序初始化按下设置键输旧密码确认程序所输入旧密码正确输新密码确认程序设置成功输入次数加1 大于2报警程序NYNY返回确认程序再次输新密码两次新密码输入相同NY图4-4 密码修改流程图设计密码程序如下:if(keydata=33) /确定进
38、入密码比较keydata=0;panduan:i=0;for(j=0;j6;j+)l+=passwordj;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 红外遥控流程图设计5 仿真设计5.1 Protues仿真软件概述Protues是当前使用比较广泛的单片机类的仿真系统的软件之一,它能够实现的功能比较多,能够实现程序与原理图的连调,也能够单独作为绘制原理图的工具使用,与Protel有着过之不及的功能,于此同时还能够进行PCB版图的生成,在方法中与Protel类似。此款软件及绘制原理图、PCB版图和仿真于一身。Protues此款软件的使用比较简单