利用数字电路实现电子密码锁-毕业设计(共36页).doc
精选优质文档-倾情为你奉上利用数字电路实现电子密码锁学生:XXX 指导老师:XXX内容摘要:本数字密码锁采用单片机AT89S52为主控芯片,由EEPROM存储密码。硬件部分包括主控制系统、人机交互界面以及输出系统三大部分。主控制系统中主控制芯片使用了AT89S52单片机,该单片机性能优良,能满足一般的普通应用;EEPROM采用AT24C02芯片,掉电后可以存储密码,从而保证了系统的安全性。人机交互通道部分采用了4×4矩阵键盘输入以及LCD1602标准字符型液晶显示。输出系统部分包括驱动开锁电路和报警电路;其中,在本系统设计中,驱动开锁电路用发光二极管表示,而报警电路则使用蜂鸣器。本系统中使用的AT24C02芯片是一个带有I2C总线接口的EEPROM存储器。I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。本数字密码锁的功能为:密码位数为8位,可选值为09,从而保证足够的锁体强度;用户可以自行设定和修改密码;防止密码被盗,输入密码错误次数超过3次则报警;友好的人机界面;输入正确的密码后,驱动开锁电路。软件部分应用单片机C语言实现了本设计的全部控制功能。C语言编译方便,易读性好,且移植性方便,能够满足实现本系统的功能要求。在设计过程中,给出了本系统C语言编程的原理和流程图。本数字密码锁系统稳定性好,设计人性化,由于使用单片机控制并有记忆模块,功能齐全可靠,并有很好的扩展性,而且成本低廉,具有良好的发展前景。关键词:数字密码锁 AT24C02芯片 安全性Electronic combination lockAbstract:Using the digital circuit realize electronic combination lockThis digital locks USES the monolithic integrated circuit AT89S52 as the controller chip, by EEPROM memory password. Hardware including master control system, man-machine interface and output system of three.The Lord control system used in the control chip AT89S52 SCM, this single chip good performance, can satisfy the general common application; The AT24C02 chip EEPROM, after power off can be stored password, so as to ensure the security of the system. Man-machine interactive channel part adopts the 4 x 4 matrix keyboard input and LCD1602 standard character type LCD display. The output of system including drive circuit and alarm lock circuit; Which, in the system design, drive the lock circuit using light-emitting diodes said, and alarm circuit is using a buzzer.The system used AT24C02 chip is a with the I2C bus interface EEPROM memory. The I2C bus is a two-way two wire bus, its simple structure, reliability and anti-interference capability. The I2C bus structure is simple, only two lines, including a data line (SDA) and a serial clock line (SCL). Has the I2C devices through this interface to two lines on the bus, the mutual information transfer.This digital locks function for: password digits for eight, optional value is 0 9, so as to ensure enough lock body strength; The user can set and modify the password; To prevent the password is stolen, the input password mistake number more than three times the alarm; Friendly human-machine interface; To enter the correct password, drive the lock circuit.Application software of single chip microcomputer C language realized this design of all control function. C compiler convenient, easy to read the gender is good, and easy portability, and can meet the requirement of system function realization. In the design process are given, and the system of the C programming language principle and flow chart.This digital locks system stability, humanized design, because use a single-chip microcomputer control and a memory module, complete function and reliable, and have a good scalability, and the cost is low, have good development prospect.Keywords: Electronic combination lock AT24C02 chip safety目 录 专心-专注-专业利用数字电路实现电子密码锁前言随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。目前国内,大部分人使用的还是传统的机械锁。然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。所谓互开率,是各种锁具的一个技术质量标准,也就是1把钥匙能开几把锁的比率。经国家工商局、国家内贸局、中国消协等部门对锁具市场的调查,发现个别产品的互开率居然超标26倍。为何弹子锁的“互开率”会如此之高?据有关专家人士剖析,弹子锁质量好坏主要取决于弹子数量的多少以及弹子的大小,而弹子的多少和大小受一定条件的限制。此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。机械锁的这些弊端为一种新型的锁-电子密码锁,提供了发展的空间。电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁,主要特点如下:保密性好,编码量多,远远大于弹子锁,随机开锁成功率几乎为零。密码可变。 用户可以经常更改密码,防止密码被盗,同时也可以避免因人的更替而使锁的密级下降。误码输入保护。当输入密码多次错误时,报警系统自动启动,防止试探密码。从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞车。键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除了忘记),难以被窃(除非自己泄露)。但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。因此,为了发扬优点、克服弱点,键盘式电子密码也在不断发展中,如“任意设定密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新;而“自动更改密码”技术使得本次输入的密码将自动更改成下次应输入的密码,更改的规律不为他人所知,因而不怕旁观者窥测;独出心裁的“键盘乱序显示”技术使得键盘上的固定键位每次显示出的字符不固定,并且显示的窄小角度只能由操作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码;“多重密码设定”技术使得单组密码不一定有效,适合多人分权使用,需要输入两组以上的密码才被认可,大大提高了保密性,如果限定输入这些密码的先后顺序或时间区段,则保密性还可提高。在输入密码的过程中,为了限制试探密码的企图,通常输入错误码若干次或若干时间内输入不正确,即“封锁”键盘,不再接受输入操作。总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的辅助输入手段。1 系统的硬件设计1.1 硬件的总体结构和原理 1.1.1 硬件系统的总体结构图硬件系统的总体结构图如图1.1.1-1所示。 AT89S52驱动电路报警电路振荡电路LCD1602显示AT24C024×4键盘输入图1.1.1-1 体结构图1.1.2 硬件系统组成 如图1.1.1-1所示,本系统的硬件部分主要由单片机AT89S52、存储芯片AT24C02、4×4矩阵键盘、LCD1602、报警电路和驱动电路组成;其中驱动电路用发光二极管LED表示,而报警电路使用蜂鸣器。总的来说,数字密码锁主要由微处理器模块、记忆模块、键盘模块、声光提示模块和显示模块构成。微处理器模块,也就是AT89S52单片机,因为本系统要实现密码检测、密码设定、声光提示等功能,要求微处理器必须能提供很多I/O口,而且由于系统体积限制,很难扩展I/O口和使用外部程序存储器,所以选用AT89S52单片机。记忆模块,AT24C02芯片作为记忆模块的核心部分,作用是存储用户设置的有效开锁密码。由于一片AT24C02拥有256字节存储空间,而本设计中只需要存储8个字节的数据,所以只需要一片AT24C02就已足够了。并且AT24C02是一种非易失性存储器,掉电后数据不会掉失,而且该存储器内数据保存寿命可以保证达到100年以上,功耗低,十分适合本设计使用。声光提示模块,由发光二极管LED和蜂鸣器组成,由单片机控制。发光二极管LED有绿色和红色两种,绿色LED亮表示密码输入正确,驱动开锁电路;相反,红色LED亮就表示输入密码错误。蜂鸣器采用5V驱动蜂鸣器,作为报警电路。当输入密码错误次数超过3次后就发出声音警报。显示模块,考虑到友好的人机界面,采用LCD1602液晶显示。显示模块的作用主要是显示提示信息和输入的密码,以方便用户使用。键盘模块,键盘模块的作用是让用户输入密码和修改密码。考虑到本系统需要用到大量的按键,键盘模块采用4×4的16矩阵键盘模式。1.1.3 系统的可能性分析系统工作原理分析:使用AT89S51单片机、4×4矩阵键盘、发光二极管LED、蜂鸣器等。4×4矩阵键盘的按键分别为0、1、2、3、4、5、6、7、8、9、取消、全取消、确定、修改密码、密码初始化还原、返回。系统启动后,开始时LCD1602显示时钟界面,切换到密码锁输入界面后,LCD1602显示“Enter Password”提示输入密码;输入密码时,LCD1602显示输出为“*”,以保证密码的安全性。当密码输入完毕按下确定键时,对输入密码与设定的密码进行比较,若密码正确则LCD1602显示为“Right!”,并驱动开锁电路,绿色发光二极管LED亮;若密码不正确,LCD1602显示为“Error!”,红色发光二极管LED亮;若连续3次输入不正确,则发出警报声同时锁定键盘。在按下修改密码键时,LCD1602显示“Enter old Key”提示输入旧密码,此时若输入正确的旧密码,则LCD1602显示会有提示输入新密码,在输入新密码后,LCD1602显示会再次提示“再次输入新密码”。若两次输入的新密码不一致,则修改密码失败;一致则成功,并将新密码保存到AT24C02芯片中。在修改密码的过程中,如果一开始输入的旧密码错误LCD1602会显示错误提示,同时系统返回到开始界面。若在“再次输入新密码”的时候输入新密码与前次不一致,则会返回到系统并要求重新输入新密码。修改密码完成后,系统自动储存到AT24C02中,要再次开锁则需要输入正确的新密码。 系统中取消键用于退格,在输入密码时,若输入错误且未按下确定键,按下取消键可以删除刚输入的密码,然后再次输入。 为了防止恶意尝试,系统采用若连续输入3次错误密码则发出报警声,同时锁定键盘。以此提高系统的安全系数,同时也能够保护合法用户的正常使用。若用户忘记了密码,可以按下密码初始化还原键,恢复到最原始的密码。1.2 单片机AT89S51简介AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU在掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。1.2.1 主要性能与MCS-51单片机产品兼容 8K字节在系统可编程Flash存储器 1000次擦写周期全静态操作:0Hz33Hz 三级加密程序存储器32个可编程I/O口线 三个16位定时器/计数器八个中断源全双工UART串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 1.2.2 引脚功能描述AT89S52的引脚如图1.2.2-1所示,其中各引脚为:图1.2.2-1 AT89S52引脚图VCC: 供电电压。GND: 接地 。 P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在Flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在Flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能: P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出。P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)。 P1.5 MOSI(在系统编程用)。P1.6 MISO(在系统编程用)。 P1.7 SCK(在系统编程用)。 P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4 个TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在Flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,在Flash编程和校验时,P3口也接收一些控制信号。 引脚号第二功能: P3.0 RXD(串行输入)。P3.1 TXD(串行输出)。P3.2 INT0(外部中断0)。 P3.3 INT0(外部中断0)。P3.4 T0(定时器0外部输入)。P3.5 T1(定时器1外部输入)。P3.6 WR(外部数据存储器写选通)。 P3.7 RD(外部数据存储器写选通)。 RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在Flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”, ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN: 外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP: 访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在Flash编程期间,EA也接收12伏VPP电压。XTAL1: 振荡器反相放大器和内部时钟发生电路的输入端。XTAL2: 振荡器反相放大器的输出端。1.3 AT24C02简介 AT24C02如图1.3.2-1所示,是一个2K位串行CMOS EEPROM内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗,有一个16字节页写缓冲器,该器件通过I2C总线接口进行操作;有一个专门的写保护功能。1.3.1 功能描述AT24C02支持I2C总线数据传送协议,I2C总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。1.3.2 管脚描述AT24C02的管脚如图 1.3.2-1所示,其中各管脚为:SCL 串行时钟:AT24C02串行时钟输入管脚,用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。SDA 串行数据/地址:AT24C02双向串行数据/地址管脚,用于器件所有数据的发送或接收。SDA是一个开漏输出管脚。A0 A1 A2 器件地址输入端:这些输入脚用于多个器件级联时设置器件地址。当这些脚悬空时默认值为0。使用AT24C02时最大可级联8个器件.如果只有一个AT24C02被总线寻址,这三个地址输入脚A0、A1、A2可悬空或连接到Vss。 WP 写保护:如果WP管脚连接到Vcc,所有的内容都被写保护只能读;当WP管脚连接到Vss 或悬空,允许器件进行正常的读/写操作。图1.3.2-1 AT24C02引脚图1.3.3 I2C总线协议I2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。目前很多公司都推出了基于I2C总线的外围器件,AT24C02芯片就是一个带有I2C总线接口的EEPROM存储器,I2C总线结构很简单,只有两条线,包括一条数据线(SDA)和一条串行时钟线(SCL)。具有I2C接口的器件可以通过这两根线接到总线上,进行相互之间的信息传递。连接到总线的器件具有不同的地址,CPU根据不同的地址进行识别,从而实现对硬件系统简单灵活的控制。I2C总线协议定义如下:只有在总线空闲时才允许启动数据传送。在数据传送过程中当时钟线为高电平时,数据线必须保持稳定状态不允许有跳变;时钟线为高电平时数据线的任何电平变化将被看作总线的起始或停止信号。起始信号:时钟线保持高电平期间数据线电平从高到低的跳变作为I2C总线的起始信号。停止信号:时钟线保持高电平期间数据线电平从低到高的跳变作为作为I2C总线的停止信号。1.4 LCD1602介绍液晶显示模块具有体积小、功耗低、显示内容丰富、超薄轻巧等优点,在袖珍式仪表和低功耗应用系统中得到广泛的应用。目前液晶显示模块已经是单片机应用设计中最常用的信息显示器件。其中LCD1602液晶显示模块是常用的选择,它可以显示两行,每行16个字符,采用单+5V电源供电,外围电路配置简单,价格便宜,具有很高的性价比。考虑到本系统设计中友好的人机界面,相对采用多个LED作为显示模块,LCD1602更合适。1.4.1 引脚描述1602采用标准的16脚接口,如图1.4.1-1所示,其中: 第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源 时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:LEDA为背光接5V正电源。第16脚:LEDK为背光地电源。图1.4.1-1 LCD1602管脚图1.4.2 LCDI602控制指令 如表1.4.2-1所示,LCD1602的读写操作、屏幕和光标的操作都是通过指令编程来实现的。指令 1:清显示。指令码01H,光标复位到地址00H位置。 指令 2:光标复位。光标返回到地址00H。指令 3:光标和显示模式设置,I/D:光标移动方向,高电平右移,低电平左移 ;S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令 4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令 5:光标或显示移位。S/C:高电平时移动显示的文字,低电平时移动光标 。指令 6: 功能设置命令 。DL:高电平时为4位总线,低电平时为8位总线; N:低电平时为单行显示,高电平时双行显示;F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。 指令 7:字符发生器RAM地址设置。指令 8:DDRAM地址设置。指令 9:读忙信号和光标地址。BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。 指令11:读数据。表1.4.2-1 LCD1602的控制指令表指 令RSR/WD7D6D5D4D3D2D1D0清显示0000000001光标返回000000001*置输入模式00000001I/DS显示开/关控制0000001DCB光标或字符移位000001S/CR/L*置功能00001DLNF*置字符发生存储器地址0001字符发生存储器地址置数据存储器地址001显示数据存储器地址读忙标志或地址01BF计数器地址写数CGRAM或DDRAM10要写的数从CGRAM或DDRAM读数11读出的数据1.4.3 LCDI602读写控制时序LCD1602的读写控制时序如表1.4.2-2所示,使用LCD1602显示时要严格按照时序要求,否则LCD1602显示会出现问题。表1.4.2-2 LCD1602的读写控制时序表RSR/WE功能00下降沿写指令代码01高电平读忙标志和AC码10下降沿写数据11高电平读数据1.5 4×4矩阵键盘如图1.5-1所示,本系统采用4×4矩阵键盘。当LCD1602为时钟界面显示时,S2为时设置键,S3为分设置键,S4为切换键;当切换到密码锁界面显示时,16个按键分为输入数字键和功能键。其中,S2、S6、S7、S8、S10、S11、S12、S14、S15、S16依次表示数字09,S3为取消键,S4为全取消键,S5为确定键,S9为密码初始化还原键,S13为返回键,S17为密码修改键。图1.5-1 4×4矩阵键盘1.6 复位电路为确保系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。如图1.6-1所示,时钟电路工作后,在REST管脚上加两个机器周期的高电平,芯片内部开始进行初始复位。图1.6-1 复位电路1.7 振荡电路图1.7-1所示为单片机晶体振荡电路。在本系统设计中晶振选择频率为12MHz,其中两个电容叫晶振的负载电容,分别接在晶振的两个脚上和对地,一般在几十皮法,它会影响到晶振的谐振频率和输出幅度。多数情况下电容取值在20pF-30pF左右,在本系统中取电容为30pF。图1.7-1 振荡电路1.8 发光二极管LED电路图1.8-1所示为发光二极管LED电路,开始时发光二极管LED1、LED2连接的单片机I/O口均为高电平。当输入密码正确后,LED1连接的I/O口由高电平变为低电平,绿色的发光二极管LED点亮,表示驱动了开锁电路;当输入密码错误时,LED2连接的I/O口由高电平变为低电平,红色的发光二极管LED点亮。其中R10、R11为发光二极管LED的保护电阻,阻值均为1K。图1.8-1 发光二极管LED电路1.9 报警电路 本系统中的报警电路采用蜂鸣器,如图1.9-1所示。当连续3次输入错误密码后,就会驱动报警电路,蜂鸣器不停地响,以示警报。其中,R5阻值为1k,R6阻值为100。三极管为8550。8550是PNP型中功率高频三极管,最大耗散功率为700mW,在此电路中起功率放大作用。图1.9-1 报警电路1.10 电源输入电路电源输入电路如图1.10-1所示,输入直流电源后,经过三端稳压集成电路7805,使电压输出稳压在5V左右。图1.10-1 电源输入电路用7805三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路。7805只有三条引脚输出,分别是输入端、接地端和输出端,如图1.10-2所示。使用7805要注意最高输入电压是35V左右。图1.10-2 7805引脚图1.11 使用到的元器件列表表1.11-1所示为硬件设计中使用到的元器件。表1.11-1 元器件列表元器件规格/型号数量单片机AT89S511三极管85501EEPROMAT24C021稳压管78051液晶显示器LCD16021晶振12M1电阻10K/1K/1004/6/1排阻10K1电容104/30Pf.7uF3/2/1发光二级管红色/绿色/黄色1/1/1蜂鸣器12 软件程序设计目前,对单片机的编程主要采用汇编跟C语言。汇编语言有执行效率高、速度快、与硬件结合紧密等特点。尤其在进行I/O端口管理时,使用汇编语言有快捷、直观的优点。但是使用汇编语言相对于使用高级语言编程难度要大一些,且程序可读性低,开放性差,从系统开发时间来看,效率不是很高。 C语言是一种结构化语言,可产生紧凑代码。C语言可以用许多机器级函数直接控制操作8051硬件。与汇编语言相比,C语言有如下的优点:不要求了解单片机的指令系统,仅要求对8051的存储结构有初步了解;寄存器分配,不同存储器的寻址及数据类型等细节可由编译器管理;程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;关键字及运算符可用近似人的思维方式使用;编程及程序调试时间显著缩短,从而提高效率;提供的库包含许多标准子程序,具有较强的数据处理能力;已编好的程序可容易地植入新程序,因为它具有方便的模块化编程技术。当然,采用混编模式,就能结合两者的优点。本系统程序使用C语言编写。使用C语言编程,目的是实现数字密码锁的所有功能。C语言编程主要实现显示功能,进行密码输入,对密码进行比较,判断密码对错和修改密码等功能。2.1 编译器Keil uVision2简介Keil uVision2 是德国Keil公司开发的一个单片机C语言编译器,可以用它来编译C源码,汇编编写的汇编源程序,连接和重定位目标文件和库文件,创建HEX文件,调试目标程序。和其他的C语言编译器相比,Keil uVision2有着很多的优点,例如可产生最少的代码、支持浮点和长整数、支持重入和递归。在Keil uVision2的仿真功能中,有两种仿真模式:软件仿真模式和目标板仿真模式,在软件仿真模式下我们不需要任何8051单片机硬件即可完成用户程序仿真调试,极大地提高了用户程序开发的效率。在目标板调试方式下,用户可以将程序下载到自己的8051单片机板上,利用8051的串口与PC机进行通讯来实现程序的实时在线仿真。2.2 软件总设计流程图 软件总设计流程图如图2.2-1所示。开始LCD初始化时钟显示检测命令键S2S3设置时间S4密码锁界面检测命令键Return键输入密码N密码正确Y开锁N红色LED亮N+1N>3报警YN修改密码修改密码键图2.2-1 软件设计流程图2.3 具体功能软件实现2.3.1 4×4矩阵键盘扫描程序当键盘中按键数量较多时,为了减少对I/O口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图2.3.1-1所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU通过检测行或列线上的电平变化可以确定哪个按键被按下。图2.3.1-1 4×4矩阵键盘图2.3.1-1为一个4×4行列结构,可以构成16个键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O口线。矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU的时间,所以较好的方式是采用状态机的方法来设计,尽量减少键盘查询过程对MCU的占用时间。图2.3.1-1中,KEY1、KEY2、KEY3、KEY4为4根列线,作为键盘的输入口(工作于输入方式)。KEY5、KEY6、KEY7、KEY8为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。 行扫描法也称为逐行扫描查询法,其按键识别的过程如下:将全部行线KEY5KEY8置低电平输出,然后读KEY1