




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的电子密码锁设计 摘 要 随着科技的发展和社会生活水平的提高,具有安全防盗功能的电子密码锁正慢慢走进我们的生活。传统的机械锁由于其构造简单,安全性能差,极易磨损,但由于电子锁的安全系数高,使用灵活,保密性强,越来越受到广大用户的青睐。电子锁的种类很多,有指纹锁、磁卡锁、红外密码锁等。但能大众化使用的还是按键式电子密码锁。本设计从经济实用的角度出发,选用stc89c52单片机为核心的系统来实现具有按键输入、开锁、报警、存储、lcd显示和密码识别功能的电子密码锁。采用具备i2c总线接口的e2prom at24c02芯片来完成密码的存储,通过lcd1602液晶显示器提示程序运行状态和使用步骤,利用蜂鸣器模拟报警,发光二极管模拟锁的开关。该系统采用c语言编写程序,与汇编语言相比具有更好的可读性和移植性,便于修改和增减功能。经实验证明,该密码锁具有设计方法合理,简单易行,灵活性高,安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。关键字:stc89c52单片机;电子密码锁;i2c 总线;密码识别iabstractwith the development of science and technology and social improvement of living standard, has anti-theft security function of electronic locks is slowly walked into our life. the traditional mechanical lock because of its simple structure, safety performance is poor, extremely easy wear, but because electronic lock of high safety coefficient, use agile, secrecy is strong, more and more get the love of the masses of users. there are many kinds of electronic locks, a fingerprint lock, magnetic card lock, infrared trick lock, etc. but can use or push-button popularization electronic combination lock. this design from the economic practical angle, choose stc89c52 single-chip microcomputer as the core of the system to achieve has the keystroke lock, alarm, storage,lcd display and password identification function of electronic combination lock. equipped with iic bus interface chip to complete the at24c02 e2prom chips was password storage, through the lcd1602 lcd monitor tip program running state and use steps, using a buzzer simulation alarm, light emitting diode simulation of the lock switch. the system using c language program, and assembly language than readability and portability, easy to modify and increase or decrease in function. proved by the experiment, the combination lock design method is reasonable, simple and feasible, high flexibility, safe and practical characteristics, accord with residential, office use lock requirements with promotion value.key words : stc89c52 single-chip microcomputer;electronic password locks;i2c- bus; password recognition ii目 录摘 要iabstractii1 前言1 1.1电子密码锁简介1 1.2 电子密码锁的发展趋势1 1.3 设计目标及方案22 系统硬件结构设计32.1 电源电路32.2 单片机最小系统4 2.3 键盘电路62.4 存储电路8 2.4.1 iic总线介绍8 2.4.2 存储器at24c02 芯片简介92.5 lcd显示电路102.6 报警电路122.7 开锁电路133 软件程序设计143.1 主程序流程图143.2 键盘软件设计163.3 开锁软件设计173.4 密码设置软件设计183.5 系统的操作方法19 4 设计总结20参考文献21附录1: 电子密码锁设计程序源代码22附录2: 电子密码锁设计电路原理图41附录3: 电子密码锁设计pcb图42附录3: 电子密码锁设计实物图43致谢441 前言1.1 电子密码锁简介 电子密码锁是一种通过输入密码来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类有很多,有数字电路产品,也有基于芯片的性价比较高的产品。现在应用最为广泛的电子密码锁是以单片机芯片为核心,通过软件编程来实现的。其性能和安全性已大大超过了传统的机械锁,其基本特点如下:1)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。 2)密码是可重新修改的。 用户可以经常更换密码,防止密码被盗。3)具有报警功能。当输入密码多次错误时,报警系统自动启动。 4)电子密码锁操作简单,小孩和老人都可以使用。 5) 使用灵活性好,不像机械锁必须佩带钥匙才能开锁。1.2 电子密码锁的发展趋势 在日常生活中,个人财产的保护大多是通过加锁的办法来解决。目前家庭门锁主要是用弹子锁,其钥匙容易丢失,容易被盗;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性能高、成本低、功耗低、操作简单等优点使其作为防盗卫士的角色越来越重要。它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。随着科技的发展,电子密码锁也出现了很多的种类,功能日益强大,安全保密性更强,使用更加方便。出于安全、方便等方面的需求许多电子密码锁已相继问世。但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的箱、柜、房间等。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子防盗锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子防盗锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子防盗锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。可以看出组合使用电子信息是电子密码锁以后发展的趋势10。1.3 设计目标及方案 根据现代的科学技术以及人们的需求,此次设计一款经济实用,安全性高,灵活性强,操作简单的电子密码锁。它应该具有如下特性: 1)用户可设置一组门锁密码长度为6位。2)必须在输入正确的旧密码后才可以修改新的密码。3)在掉电情况下,原设定密码不丢失。4)若密码输入错误次数超过 3 次,启动报警系统并且自动锁定键盘。5)配备显示器件,提示操作方法。6)密码通过键盘输入,若密码正确,则将锁打开。本设计采用一种以stc89c52单片机为核心控制方案。利用单片机灵活的编程设计和丰富的io端口,及其控制的准确性,不但能实现基本的密码锁功能,还能实现掉电存储、报警、显示等功能。主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中4*4矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用用继电器的常开触点去控制电磁铁吸合线圈,本设计为了节省成本使用发光二极管来模拟开锁电路。 本系统共有两部分构成,即硬件设计部分与软件设计部分。其中硬件设计部分由电源电路、键盘电路、存储电路、单片机最小系统、显示电路、报警电路、开锁电路等组成,软件部分由主程序、初始化程序、lcd显示程序、键盘扫描程序、键盘锁程序、键功能程序、密码设置程序、eeprom读写程序和延时程序等组成。其总体设计方案图如图1-1所示。lcd显示电路键盘电路stc89c52报警电路晶振电路 模拟开锁电路电源电路 存储电路复位电路 图1-1 系统总体设计方案图 2 系统硬件结构设计系统硬件结构包含以下部分:1)单片机最小系统2)键盘与显示电路3)存储电路4)门锁控制及报警电路5)电源电路2.1 电源电路电子密码锁控制部分的电源需要用5v直流电源供电,在此次设计中采用lm317可调直流稳压电源来供电。其原理图如图2-1所示:图2-1 lm317可调直流稳压电源220vac市电经过变压器降压,二极管桥式整流,电容c7滤波后,送人lm317第3脚(输入端),第二脚输入稳定的直流电压。第一脚为调整端,调整端与输出端间为1.25v基准电压。调节r21可改变输出电压。输出电压的计算公式为:u0=1.25(1+r3/r2) c5用与滤波由市电引入的干扰,c7为电容滤波,c6用于旁路基准电压的纹波电压,提高电源的纹波抑制性能。d6,d7是保护二极管。r22和d5为工作指示电路。2.2 单片机最小系统由于利用单片机灵活的编程设计和强大的i/o端口,及其控制的准确性,不但能实现基本的密码锁功能,还可以添加掉电存储、声光提示等功能,故本设计选用单片机作为整个控制部分的核心。在考虑经济性和满足设计需要的前提下,本设计选用stc89c52单片机作为主控cpu。它是一种低功耗、高性能cmos8位微控制器,具有 8k 在系统可编程flash 存储器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节flash,512字节ram, 32 位i/o 口线,看门狗定时器,4kb eeprom,max810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 stc89c52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。 图2-2 stc89c52单片机引脚图 stc89c52单片机的引脚图如图2-2所示,其中pin40的vcc是5v电源输入端,pin20口是接地线gnd。xtal1和xtal2是片内振荡电路的输入输出端。该芯片具有四根控制引脚,包括复位引脚rst、地址锁存允许信号ale、外部存储器读选通信号psen、程序存储器的内外部选通ea/vpp。只要在rst引脚上接2个机器周期的高电平将使单片机复位。ea/vpp接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令,本设计需要访问外部存储器所以ea脚接的是低电平。stc89c52单片机有共有4组8位的可编程i/o口,分别位p0、p1、p2、p3口,每个口有8位(8根引脚),共32根。晶振是用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。晶振的作用是为系统提供基本的时钟信号。stc89c52引脚xtal1和xtal2与晶体振荡器及电容c2、c1连接构成晶振电路如图2-3所示。晶振、电容c1/c2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容c1、c2的容量有关,但主要由晶振频率决定,范围在033mhz之间,电容c1、c2取值范围在530pf之间。根据实际情况,本设计中采用12mhz做为系统的外部晶振。电容取值为30pf。 图2-3 晶振电路 复位是单片机的初始化操作,只需给stc89c52单片机的复位引脚rst加上大于2个机械周期(即24个时钟振荡周期)的高电平就可使stc89c52复位。当stc89c52进行复位时,pc初始化为0000h,使stc89c52单片机从程序存储器的0000h单元开始执行程序。除了进入系统的正常初始化外,当程序运行出错(如程序“跑飞”)或操作错误使系统处于“死锁”状态时,也需按复位键即rst脚为高电平,使at89s51摆脱“跑飞”或“死锁”状态而重新启动程序。在复位期间(即rst为高电平期间),p0口为高组态,p1p3口输出高电平;外部程序存储器读选通信号psen无效。地址锁存信号ale也为高电平。除pc之外,复位操作还对其他一些寄存器有影响,如复位时,sp=07h8。复位电路通常采用上电自动复位和按钮复位两种方式。本设计采用了按键手动电平复位方式,其复位电路如图2-4所示。它是通过rst端经电阻与电源vcc接通来实现的,晶振采用了12mhz,电容10uf,电阻10k。 图2-4 复位电路2.3 键盘电路系统密码的输入,新密码的设置,锁定键盘,开锁以及相关的操作,都需要使用键盘。因此,键盘不可或缺。键盘输入电路应该解决三个问题:1)首先判别是否有键按下,若有键按下,则进入下一步操作。2)识别是哪个键被按下,并求出相应的键值。3)如何消除按键的抖动,本设计采用软件延时来消除按键抖动。由于本设计所用到的按键数量较多,采用的是矩阵式按键键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多i/o口。本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如保存功能等。键盘的每个按键功能在程序设计中设置。其大体功能及与单片机引脚接法如图2-5与表2-1所示:图2-5 键盘键盘 表2-1 各个按键功能 按键按键功能数字09数字的输入*清除输入键,按下该键后显示器上的数字输入可全部清除#确定键,输完密码后按确定键可判断密码是否正确并选择去执行任务a锁键盘键,按下该键后键盘已锁,只有先解键盘锁后其它功能才可实现b解键盘锁键,先输入正确的键盘验证码后再按该键,可解键盘锁c设置密码键,先输入以前正确的密码再按该键后可进行重新设置新密码 d保存新密码键,在按c键确定可修改密码后,按新的数字密码,再按d键保存新密码,即可新密码设置成功 在这简单的介绍一下系统4*4矩阵键盘的工作原理。如图2-5所示,首先将p1.0p1.3依次设定为低电平,然后读入p1.4p1.7端口的状态,假设s*号键有键按下,则读到p1.4端口为低电平,而p1.5p1.7均为高电平,因此第一列出现电平的变化,说明第一列有键按下。然后让p1.4p1.7设定为低电平,再读入p1.0p1.3位,结果p1.0端口为低电平,其它为高电平。因此第四行出现电平的变化,说明第四行有键按下。综合上述分析,第一列、第四行按键为s*号键。这样就可以判断是哪个键按下。2.4 存储电路为了保证用户密码和程序运行过程中的重要数据在系统掉电时不丢失,本系统采用具有标准iic总线的eepromat24c02来保存这些数据。采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。2.4.1 iic总线介绍iic(interintegrated circuit)总线是一种由philips公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。iic总线只有两根双向信号线。一根是数据线sda,另一根是时钟线scl。该总线对时序有严格的要求,总线工作时,串行时钟scl传送时钟脉冲,sda传送数据线。 iic总线最主要的优点是其简单性和有效性。其允许若干兼容器件共享总线,主控器使用软件寻址方式识别每个器件,省掉了每个器件的片选信号线,使系统的连接非常简单。iic总线的另一个优点是,它支持多主控, 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。sda和scl均为双向i/o线,通过上拉电阻接正电源。当总线空闲时,两根线都是高电平。连接总线的器件的输出级必须是集电极或漏极开路,以具有线“与”功能。 iic总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的器件在接收到一个8位数据后,向发送数据的器件发出特定的低电平脉冲, 表示已收到数据。cpu向受控单元发出一个信号后,等待受控单元发出一个应答信号,cpu接收到应答信号后,根据实际情况作出是否继续传递信号的判断12。 在数据传送过程中,必须确认数据传送的开始信号和结束信号。开始和结束信号都是由主控器件发出的。开始信号后,总线出现的第一个8位的数据称为控制字(包括7位地址和1位读写控制位),用来选择从机和将要进行的操作类型。控制字的前7位为地址码,第8位为读/写操作类型,为0表示写操作,为“1”表示读操作。在总线上传送的每个字节必须为8位,而且每个字节后面必须跟一个应答位,即为第9位。从机收到一个字节后产生一个应答信号,准备去接收下一个数据字节。当主器件收到应答位后可继续传送数据。数据传送完毕后,主器件发出停止信号。要注意的是只有在总线“空闲”的时候才允许启动数据传送。2.4.2 存储器at24c02 芯片简介 at24c02是美国atml公司的低功耗cmos型e2prom,内含2568位存储空间,具有工作电压宽(2.55.5 v)、擦写次数多(大于10000次)、写入速度快(小于10 ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了i2c总线式进行数据读写的串行器件,占用很少的资源和i/o线,并且支持在线编程。at24c02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。at24c02运用了i2c规程,使用主/从机双向通信,主机(通常为单片机)和从机(at24c02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过scl引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ack。at24c02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向14。在at24c02芯片中scl是at24c02串行时钟输入管脚用于产生器件所有数据发送或接收的时钟。sda是双向串行数据/地址管脚用于器件所有数据的发送或接收,sda 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire-or)。 a0、a1、a2是器件地址输入端,这些输入脚用于多个器件级联时设置器件地址。当使用at24c02 时最大可级联8个器件。如果只有一个at24c02被总线寻址这三个地址输入脚(a0、a1、a2 )必须连接到vss。 wp是写保护引脚。at24c系列e2prom芯片地址的固定部分为1010,a2、a1、a0引脚接高、低电平后得到确定的3位编码。形成7位编码即为该器件的地址码。读出过程:当单片机发送器件的7位地址码和写方向位“0”,发送完后释放sda线并在scl线上产生第9个时钟信号。被选中的存储器在确认是自己的地址后,在sda线上产生一个应答信号作为回应。然后,再发出一个字节的要读出器件的存储区的首地址,收到应答后,单片机要重复一次起始信号并发出器件的地址和读出方向位,收到器件应答后就可以读出数据字节,每读出一个字节,单片机都要回复应答。当最后一个字节数据读完后,单片机应返回“非应答”,并发出终止信号以结束读出操作13。写入过程:单片机进行写操作时,首先发送该器件的7位地址码和写方向位,发送完后释放sda线并在scl线上产生第9个时钟信号。被选中的存储器器件在确认是自己的地址后,在sda线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送一个字节的被写入器件的存储区的首地址,收到存储器器件的应答后,单片机就逐个发送各数据字节,但每发送一个字节后都要等待应答。当写入数据传送完后,单片机应发出终止信号以结束写入操作13。 根据对iic总线和at24c02芯片的了解绘制出了本设计需要的存储电路,如图2-6所示。单片机的p3.7、p3.6分别连接i2c接口的e2prom at24c02的sda和scl线,外接两个5.1k的上拉电阻,构成i2c总线通信电路。来实现stc89c52单片机和at24c02芯片的数据交换。 图2-6存储电路由于系统中只需使用一个at24c02存储器则三个地址输入脚(a0、a1、a2 )必须接gnd。本次设计的电子密码锁的密码是可修改的,所以数据不能被写保护,因此wp管脚接gnd。系统需模拟iic总线,所以sda 和scl引脚需接上拉电阻。 2.5 lcd显示电路液晶显示模块已作为很多电子产品的显示器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。1602型lcd显示模块具有体积小,功耗低,显示内容丰富等特点。lcd1602可以显示2行16个字符,有8位数据总线d0-d7和rs,r/w,en三个控制端口,工作电压为5v,并且具有背光功能。在此对lcd1602显示器的特殊引脚做简单的介绍。v0脚为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,在本次设计中使用一个10k可调电阻来调整对比度。rs脚为数据/命令选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。rw脚为读写信号线,高电平时进行读操作,低电平时进行写操作。e(或en)端为使能端。d0d7为8位双向数据端。本系统所用的lcd显示器实际上是一个lcd模块(lcm),因为它除了显示部分之外,还另外包含了一颗hd44780的显示控制器。控制lcd主要是通过hd44780来控制的。基本操作时序:当rs脚为低电平,rw脚为高电平,使能端e脚为高电平时,为读状态。读的状态字低七位为当前数据地址指针的数值,第八位为读写操作使能位,为“1”则禁止读写操作,为0则允许写。当rs脚为低电平,rw脚为低电平,e脚为高脉冲时,进行写指令。当rs脚为高电平,rw脚为高电平,e脚为高电平时,进行读数据。当rs脚为高电平,rw脚为低电平,e脚为高脉冲时,进行写数据14。 lcd的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 lcd液晶模块内部的控制器共有11条控制指令,如表2-2所示。表2-2lcd1602内部控制器的控制指令指 令rsrwd7d6d4d3d2d1d0清显示000000001光标返回00000001*置输入模式0000001i/d s显示开/关控制000001dcb光标或字符移动00001s/cr/l* *置功能0001dlnf*置字符发生存储器地址0001字符发生存储器地址(agg)置数据存储器地址001显示数据存储器地址(add)读忙标志或地址01bf计数器地址(ac)写数到cgram或ddram10要写的数据内容从cgram或ddram读数11读出的数据内容 i/d:光标移动方向,高电平右移,低电平左移 。s:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 d:控制整体显示的开与关,高电平表示开显示,低电平表示关显示。 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 。b:控制光标是否闪烁,高电平闪烁,低电平不闪烁。s/c:高电平时移动显示的文字,低电平时移动光标指令。dl:高电平时为4位总线,低电平时为8位总线 。n:低电平时为单行显示,高电平时双行显示。 f: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 bf:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙14。 采用lcd显示器克服了led数码管显示单一的缺点,使设计的电子密码锁更具有可观赏性。在此次设计中lcd显示器扮演了一个向导的角色,指引用户如何进行下一步操作,使电子密码锁更易操作。其显示电路图如图2-7所示。在进行显示编程时首先得写入一个设置数据地址的指令码,来确定显示在lcd显示器上的第几行,哪个位置。然后紧跟着写入要显示的数据即可。 图2-7 lcd1602显示电路2.6 报警电路报警电路是通过5v蜂鸣器来设计的如图2-8所示。刚开始加电后不发声,当密码输入正确时,把单片机的p2.6引脚设为高电平,三级管q1不导通,蜂鸣器不发声。当输入的密码连续3次错误时,单片机的p2.6引脚设为低电平,三极管q1导通,蜂鸣器发出噪鸣声报警。 图2-8 报警电路图2.7 开锁电路在电子密码锁设计中输入正确的密码后就可以将锁打开。开锁电路是驱动和执行开锁的电路。该电路可以采用5v继电器驱动电磁阀来达到目的。其实际开锁电路图如图2-9所示。继电器在这相当于一组可以电气控制的开关,也就是可以用小电流去控制大电流的开关。在电路中起着自动调节、安全保护、转换电路等作用。小电流通过线圈,然后产生磁场,用这个磁场去控制大电流的开关吸合。这样的话就可以去控制大电流大电压设备。当p2.7脚接低电平时三极管饱和导通,集电极变为高电平,因此继电器线圈通电,开关吸合。当基极接高电平时,三极管截止,继电器线圈断电,开关断开。在电路中r18主要起限流的作用,降低三极管q5功耗。二极管d9反向续流,抑制浪涌,一般选用1n4148。 图2-9 开锁电路 在本次设计中为了节约成本,采用发光二级管来模拟锁是否打开。锁开时,p2.7脚接低电平,发光二级管亮。锁关时,p2.7脚接高电平,发光二极管暗。3 软件程序设计 电子密码锁的硬件电路设计较为简单,难在软件程序的编写。软件设计是整个控制系统的灵魂,灵活性很强,可以根据系统的要求和功能而变化。本设计采用模块化方法编写程序,由于stc89c52单片机不具有i2c硬件接口,所以必须通过程序来模拟i2c通信,对e2prom进行读、写操作。主要程序有主程序、初始化程序、键盘扫描程序、lcd显示程序、密码校验程序、报警程序、eeprom读写程序、密码设置程序和延时程序等组成。单片机c语言可读性强,便于系统程序的调试和纠错,因此系统软件使用单片机c语言编写。3.1 主程序流程图如图3-1 为系统主程序流程图,系统的控制程序主要是完成各种标志的产生与判断,再根据相应的标志去执行对应的控制子程序,控制的过程是一个无限循环过程,需要不断的扫描键盘。 开始接上电源,程序进行初始化,随后进入一个无限循环过程。cpu在主控程序中主要完成对定时器、lcd显示器、以及存储单元等的初始化。其中lcd显示器的初始化是把显示模式设置为162显示,5x7的点阵字符,8位数据接口。并且初始化为开显示、不显示光标,当读或写一个字符后地址指针加一。对lcd显示器写入清屏指令,以免显示的数据得到干扰。随后在lcd显示器上显示开机欢迎画面。再调用外部存储器的密码,把密码存到缓冲区中,便于将来判断输入密码是否正确。随后开始进入扫描键盘的无限循环中,再根据所输入的按键功能进入不同的子程序中。其子程序包括开锁程序、密码修改程序、密码输入程序、清除输入程序、锁键盘程序、解键盘锁程序等。其中需要调用输入数字的显示子程序,在显示器上隐藏输入的密码而显示“*”号。开始系统初始化 调用eeprom密码键盘扫描输入键盘锁验证码n验证码正确?y次数3?yn键盘扫描次数加1输入密码n报警程序、键盘锁程定t秒y密码正确?n开锁?n次数3?ny修改密码? yyn开锁程序次数加1密码正确?y报警程序、键盘锁定t秒 s输入新密码保存新密?码?ny保存 图3-1 系统主程序流程图3.2 键盘软件设计如图3-2为键盘扫描流程图。 开始 键盘扫描n有键按下?yy密码输入子程序按键为数字键ny清除输入子程序 按键为“*”ny确定开锁子程序按键为“#”ny锁键盘子程序按键为“a”ny解键盘锁子程序按键为“b”n按键为“c”y设置密码子程序ny按键为“d”保存密码子程序 返回 图3-2 键盘扫描流程图 在判断有键按下的时候,首先判断是哪个键按下,然后在调用对应的键盘处理子程序,再根据子程序进行不同的操作。对键盘操作需要解决按键的去抖动问题。本设计中使用的是按键式键盘,一个按键就相当于一个开关,在键的闭合和断开的过程中存在一个抖动期,抖动时间长短与开关的机械特性有关。为了确保单片机对一次按键只确定一次有效,必须消除抖动期。本设计采用软件延时来消除按键抖动。 消除抖动基本思想为:在检测到有键按下的时候,按键所对应的行线为低电平,执行一段延时子程序后,确定该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平为高电平,执行延时子程序后,检测该行线为高电平,说明按键确实已经松开9。 在键盘扫描的扫描的过程中,首先将p1口的低四位置为低电平,再读取p1口的高四位电平,如果有电平变化,说明是有键按下的。再置p1口的高四位为低电平,读取p1口的低四位电平变化。最后将两个读取数综合,即可判断到底是哪个键按下。3.3 开锁软件设计如图3-3所示为开锁流程图。开始初始化读取eeprom密码解键盘锁n输入密码次数大于3?n次数加1密码正确否?yy开锁报警系统返回 图3-3 开锁流程图 当键盘锁已经解开的情况下,输入密码,再将输入的密码与读取eeprom中的密码进行比较,必须6位密码数字和顺序都相同,如果输入的密码正确,发光二极管就会亮。如果输入密码错误,发光二极管不亮。如果联系输入三次错误的密码则执行报警程序,蜂鸣器响t秒,键盘锁定t秒钟。3.4 密码设置软件设计 如图3-4所示为密码设置流程图,当键盘锁已经解开的情况下,开始输入旧密码,然后按下设置密码键(“c”键),再将输入的密码与从外部存储器读取的密码进行比较,如果输入的是正确密码,则提示可以修改密码,然后输入新的密码,再按保存密码键(“d”键),则可修改密码成功。如果输入旧密码不正确则提示不可以修改密码。连续输入3次错误密码后启动报警系统,蜂鸣器响t秒,键盘锁定t秒钟。 开始解键盘锁输入旧密码按设置键“c”nn次数3次数加1 密码正确?yy输入6位新密码报警系统 返回按保存键“d”图3-4 密码设置流程图3.5 系统的操作方法接上电源后,led灯和蜂鸣器处于关闭状态,lcd显示器显示“liu zhihui”、“combination lock”5秒钟,然后lcd显示器第一行显示please unlock!。 接下来就是解除键盘锁的步骤。如果输入正确的验证码“1,2,3,4,5,6”后,按下解键盘锁键( b键),键盘锁解除,lcd显示器第二行显示“unlock success!”,第一行显示“input password!”。如果输入错误的验证码,按下解键盘锁键(b键),键盘锁处于锁状态,lcd显示器第二行显示 “unlock failure!”。在输入密码的过程中,每按一位数字都将在lcd显示器上显示“*”号,并且蜂鸣器会响一声。按清除输入键(*键)后,可将输入的数字清0,显示器上显示的“*”号也会清除。在键盘锁已经解开的时候,无论在哪一项功能的运行工程中,按下锁键盘键(a键)后,键盘锁锁住,并且在lcd显示器第二行上显示“lock success!”。这样的话在解开键盘锁之前,不可以进行开锁操作和密码设置。开锁操作方法:如果键盘锁已经解开,输入正确的密码后,按下确定键(#键),led灯亮。输入错误的密码后,按下确定键(#键),led灯不亮。如果连续输入三次错误密码,则蜂鸣器响t秒钟,并且键盘自动锁定t秒钟。键盘锁定期间不进行任何操作,即可防止短时间内多次试探密码。锁定时间到,自然解锁,不会影响以后的操作。 修改密码操作方法:如果键盘锁已经解开,输入正确的旧密码后,按下设置密码键(c键),lcd显示器第二行显示“can modify!”。然后输入6位新密码,按下保存新密码键(d键),lcd显示器第一行显示“password success”,即密码修改成功,以后开锁使用新密码。输入错误的密码后,按下设置密码键(c键),lcd显示器第二行显示can not modify!,密码是不可修改的。如果连续输入三次错误的密码,启动报警系统,即蜂鸣器响t秒钟,并且键盘自动锁定t秒钟。 4 设计总结 从最基本的方案制定,到硬件电路的选择,再到电路版的焊接,最后进行软件的调试。在此期间遇到过很多的困难,其中大部分问题都出在软件的编写上。首先刚开始对iic总线缺少了解,所以在外部存储器的读写程序的编写上遇到了很大麻烦。然后是系统中有数字键和功能键两种键位,如何在程序中区别和识别这两种键成为编写程序的主要问题。最后是lcd显示的问题,在此之前用的都是数码管显示而没有接触过液晶显示芯片,所以对它的了解也是比较陌生的。 为了解决上述问题,我在网上查阅了大量的资料,并且得到老师和同学们的很多很好的建议,终于击破各个难点,达到了所需的效果。在这次设计中,我深刻的认识到自身的不足(缺少实战经验)。与此同时,也因为这次设计,我得到一定的锻炼,体会到理论与实际结合的重要意义。 由于本次设计时间有限,一些设想没有完全实现,比如说:电子密码锁的智能化等,期望以后有机会对以上设想进行进一步研究实践。参考文献 1 刘坤51单片机c语言应用开发技术大全m北京:人民邮电出版社,2008:466-484.2 周向红51单片机课程设计m武汉:华中科技大学出版社,2011:181-195.3 杨居义,杨尧,王益斌单片机课程设计指导m北京:清华大学出版社,2009:95-1004 刘向宇电子工业出版社m北京:电子工业出版社,2010:125-142.5 李萍51单片机c语言及汇编语言实用程序设计m北京:中国电力出版社,2010:309-325.6 刘笃仁pic软硬件系统设计 基于pic16f87x系列m北京:电子工业出版社2005:267-297. 7 常敏编51单片机应用程序开发与应用实践m北京:电子工业出版社,2009:175-187.8 于京,张景璐51系列单片机c程序设计与应用案例m北京:中国电力出版社,2006:164-177.9 唐晨光单片机原理与应用及上机指导m北京:清华大学出版社,2010:329-356.10 侯聪玲,彭卫东基于at89c51单片机的电子密码锁的设计j教师,2011,(26).11 柳毅探索单片机的电子密码锁j科学时代(上半月),2012,(3).12 何立民i2c总线应用系统设计m北京:北京航空航天大学出版社,1995 :13-50.13 刘福奇fpga嵌入式项目开发实例精粹m北京:电子工业出版社,2009 :393-420.14 袁新燕计算机外设与接口技术m高等教育出版社,2009:272-297.15 周广兴,张子红单片机原理及应用教程m北京大学出版社,2010:229-237.附录1: 电子密码锁设计程序源代码#include#include#define uint unsigned int#define uchar unsigned char#includesbit sda=p37;sbit scl=p36;sbit buzzer=p26;sbit led_red=p27;sbit lcd_rs=p21;sbit lcd_rw=p22;sbit lcd_e=p23;bit flag=0,aa;uchar jj=0;/定义输入密码错误累积次数标志位uchar bb=0;/定义密码修改标志位uchar c=0;uchar k=0;uchar n=0,a;uchar t1_count=0;uchar is_valid_user=0;/定义键盘锁标志位uchar sendbyte(uchar wd);uchar recbyte();uchar recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n);uchar sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar n);uchar buffer6;uchar userpassword6=0;uchar code number_table=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;uchar code table1= liu zhihui ;uchar code table2=combination lock;uchar table36;uchar table46=1,2,3,4,5,6;/定义验证码uchar code tabl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业园区给排水系统的设计与优化
- 工业智能化的技术创新与实践
- 工业废水处理技术及优化方案
- 工业安全保障生产现场的员工安全
- 工业生态园区的建设与管理
- 工业物联网设备的安全防护与监控
- 工业机器人故障诊断与维护管理
- 工业自动化系统的创新与发展
- 工业自动化中的特种电源技术应用案例分析
- 工业自动化与智能机器人整合方案
- 2025年养老护理员职业考试试题及答案
- 党课课件含讲稿:以作风建设新成效激发干事创业新作为
- GA 1812.2-2024银行系统反恐怖防范要求第2部分:数据中心
- 2024《整治形式主义为基层减负若干规定》全文课件
- 菌种确认课件
- 医院病房楼电气安装施工方案
- 肠外营养及肠外营养制剂
- 人民币发展史
- 学校食品安全档案管理制度
- 环境法学案例分析题
- 《心理健康与职业生涯》期末考试题库含答案
评论
0/150
提交评论