AVR单片机实现的电子密码锁设计与源代码解析

1 下载量 63 浏览量 更新于2024-06-28 收藏 44KB DOC 举报
"单片机课程设计之电子密码锁样本" 本次课程设计的项目是一个基于单片机的电子密码锁系统,旨在让学生深入理解和应用微处理器系统,特别是 AVR 单片机的相关知识。在这个项目中,学生需要设计一个能够接受密码输入、进行密码验证并提供反馈的电子密码锁。如果连续输入错误密码达到3次,系统将锁定,不允许进一步输入,除非断电后重启。此外,还提供了一个超级密码机制,允许用户通过16位的超级密码进入密码修改模式,以便更改8位长度的普通用户密码。 在设计过程中,学生需掌握 ICC 编程环境的使用,以及 AVR 单片机的片上外设功能。这包括矩阵键盘、1602液晶显示器、蜂鸣器和 EEPROM(如 AT24C02)等设备的操作和通信。其中,EEPROM 的非易失性特性被用于存储密码,即使在断电后也能保持数据。 提供的源代码片段显示了程序的一些关键部分。例如,`#define` 语句用于定义特定引脚的功能,如 LCD 的使能引脚和 EEPROM 的控制寄存器位。`uchar` 和 `uint` 是无符号字符和无符号整型变量的别名,方便在代码中使用。`add` 数组用于键码映射,而 `sc` 数组则包含了数字1-9的ASCII码,用于键盘输入的处理。`title`,`title1`,`title2` 等字符串数组则用于在液晶屏上显示提示信息。 课程设计的实验目标不仅在于实现功能,还在于提升学生的实际操作技能,包括程序调试、硬件接口操作和问题解决能力。通过这个项目,学生将能够在理论知识和实践应用之间建立牢固的桥梁,为未来更复杂嵌入式系统的开发打下坚实基础。
2023-02-27 上传
1.2设计电子密码锁的意义及相关技术指标 当前虽然许多智能锁(如指纹辨别、人声识别、IC卡识别等)已相继问世,但这类产 品是针对特定指纹、声音或有效卡,只能用于保密要求高且仅供个人使用的箱、柜、房 间等。另外,卡片式的IC卡易丢失和损坏,加上其成本较高,在一定程度上限制了这类 产品的普及和推广。而电子密码锁具有安全性能高、成本低、低功耗、操作简单等优点 ,经济好用,易于推广和普及。 本次单片机课程设计内容为设计一个电子密码锁,技术指标如下:输入正确密码开锁 指示灯亮,否则开锁指示灯灭;应包含0- 9和设置、输入,删除12个键的键盘;输入密码可由数码管显示;连续3次密码输入错误 ,则控制蜂鸣器发声报警。 第2章 总体设计及方案论证 为完成电子密码锁的功能设计,需要通过不同的模块来共同实现。设计思路及总体设 计如图 图2.1 主程序流程图 在电源供电下,单片机通过控制各个模块共同构成一个电子密码锁,3×4键盘作为人 机交互的界面使用,加上复位电路的作用是在程序运行出错或陷入死循环时能从头开始 执行程序。 2.3数码管显示模块 LED显示器有静态显示和动态显示两种显示方式。 2.3.1 LED静态显示方式 所谓静态显示,就是当显示器显示某一字符时,相应段的发光二极管恒定地导通或截 止,并且显示器的各位可同时显示。静态显示时,较小的驱动电流就能得到较高的显示 亮度。静态显示方式的缺点是N位静态显示器要求有N8根的I/O口线,占用I/O口线 资源较多。 2.3.2 LED动态显示方式 所谓动态显示就是一位一位地轮流点亮显示器的各个位(扫描),对于显示器的每一 位而言,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间 隔时间的比例有关。相比于静态显示方式而言,8位LED动态显示电路只需要两个8位I/O 口,充分利用了I/O口资源。 电子密码锁的显示电路设计需要用到8位数码管来显示密码,为节约I/O口资源,显示 电路应采用LED动态显示方式。 2.4电源模块 AT89C51单片机供电电压为+5V,可采用两种供电方式。 2.4.1蓄电池供电 采用+6V蓄电池经电阻分压后直接给单片机供电,电路简单。 2.4.2双路电源供电 220V交流市电经降压,整流,集成稳压芯片稳压为+5V后给直接给单片机供电,当停 电后,采用蓄电池供电。利用一个单反相器实现两种供电电路的自动切换。 本设计为电子密码锁的设计,需要用到UPS(不间断电源),故采用双路电源供电为 宜。 2.5开锁电路模块 输入密码正确时,单片机输出信号作为开关信号,控制电磁铁动作,来完成开锁功能 。输入密码错误时,则不响应。 2.7最优方案 综上,最优方案为选用AT89C51单片机作为主控元件,采用双路电源自动切换供电方 案,数码管显示采用动态显示方式,以矩阵式键盘作为人机交互的界面,加上开锁和报 警电路及相应的软件,构成一个安全可靠的电子密码锁。 第3章 硬件电路设计 3.1输入键盘 图3.1键盘电路 本设计采用矩阵式键盘,连接方式如图3.1所示: 键盘的工作过程:第一步是CPU检测键盘上是否有按键按下,具体方法是:将列线送 入全扫描字,读入行线的状态来判断,即所有的列线置成低电平,然后将行线电平的状 态读入累加器A中,如果有按键按下,总会有一根行线电平被拉至低电平,从而使行输入 状态不全为"1"。第二步是识别哪一个按键按下,如果列输入状态不全为"1"则按下的键 必在此列,而且是该列与"0"电平的交点上的那个键。为求取编码,在逐列扫描时,可用 计数器记录下当前扫描列的列号,检测到第几行有按键按下时,就用该行的首键码加列 号得到当前按键的编码。本设计采用的是查询方式,这种方式是直接在主程序中插入键 盘的子程序,主程序每执行一次则键盘子程序被执行一次,对进行检测一次,如果没有 按键按下,则跳过按键识别,直接执行主程序,如果有按键按下,则通过键盘扫描子程 序识别按键,得到按键的编码,然后根据编码值进行相应的处理,处理完后再回到主程 序执行。 3.2显示数码管 硬件连接电路如图所示: 图3.2显示电路 如图3.1所示为数码管的控制及显示电路,数码管为共阳极数码管,通过段选和位选 实现动态显示方式,即通过软件用分时的方法轮流控制各个显示器的COM端,使各个显示 器轮流点亮。在轮流点亮扫描过程中,每位显示器的点亮时间极为短暂,但由于人的视 觉暂留现象及发光二极管的余晖效应,给人的印象就是一组稳定的显示数据。 3.3开锁电路 图3.3开锁电路 如图3.3所示为开锁控制电路,当输入密码与原设置密码相同时,P3.2引脚输出高电 平,三极管UNLOCK导通,电磁铁动作开锁,同时开锁指示灯亮。输入密码不正确时,电 磁铁不动作,且开锁指示灯灭。 3.5电源电路 图3.5电源电路 采用双路电源自动
2023-02-27 上传
单片机课程设计电子密码锁 摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路 保证电路能够安 工作,有极高的安全系数。 关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。 1 引言 随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机 械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好 ,安全系数高,受到了广大用户的亲呢。 设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另 一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复 杂,而且调试较为繁琐,所以本文采用后一种方案。 2 总体方案设计 2.1设计思路 共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按 下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输 入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修 改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操 作。 2.2总体方框图 3 设计原理分析 电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因 为停电 造成的密码锁电路失效,使用户免遭麻烦。 密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路 、键盘输入次数锁定电路。 3.1 键盘输入、密码修改、密码检测、开锁及执行电路 . 其电路如下图1所示: 图1 键盘输入、密码修改、密码检测、开锁、执行电路 开关K1~K9是用户的输入密码的键盘,用户可以通过开关输入密码,开关两端的电容 是为了提高开关速度,电路先自动将IC1~IC4清零,由报警电路送来的清零信号经C25送 到T11基极,使T11导通,其集电极输出低电平,送往IC1~IC4,实现清零。 密码修改电路由双刀双掷开关S1~S4组成(如图2所示), 它是利用开关切换的原理实现密码的修改。例如要设定密码为1458,可以拨动开关S1向 左,S2向右,S3向左,S4向右,即可实现密码的修改,由于输入的密码要经过S1~S4的选 择,也就实现了密码的校验。本电路有16组的密码可供修改。 图2 密码修改电路 由两块74LS112(双JK触发器,包含IC1~IC4)组成密码检测电路。由于IC1处于计数 状态,当用户按下第一个正确的密码后,CLK端出现了一个负的下降沿,IC1计数,Q端输 出为高电平,用户依次按下有效的密码,IC2~IC3也依次输出高电平,送入与门IC5,使 其输出开锁的高电平信号送往IC13的2脚,执行电路动作,实现开锁。 执行电路是由一块555单稳态电路(IC13),以及由T10、 T11组成的达林顿管构成。若IC13的2脚输入一高电平,则3脚输出高电平,使T10导通, T11导通,电磁阀开启,实现开门,同时T10集电极上接的D5(绿色发光二极管)发亮, 表示开门,20秒后,555电路状态翻转,电磁阀停止工作,以节电。其中电磁阀并联的电 容C24使为了提高电磁阀的力矩。 3.2 报警电路 报警电路实现的功能是:当输入密码的时间超过40秒(一般情况下用户输入不会超过 ),电路报警80秒,防止他人恶意开锁。 电路包含两大部分,2分钟延时和40秒延时电路。其工作原理是当用户开始输入密码 时,电路开始2分钟计时,超出40秒,电路开始80秒的报警。如图3所示 图3 报警电路 有人走近门时,触摸了TP端(TP端固定在键盘上,其灵敏度非常高,保证电路可靠的触发 ),由于人体自身带的电,使IC10的2脚出现低电平,使IC10的状态发生翻转,其3脚输出 高电平,T5导通(可以通过R12控制T1的基极电流),其集电极接的黄色发光二极管D3发光 ,表示现在电子锁处于待命状态,T6截止,C4开始通过R14充电(充电时间是40秒,此时为 用户输入密码的时间,即用户输入密码的时间不能超过40秒,否则电路就开始报警, 由于用户经常输入密码,而且知道密码,一般输入密码的时间不会超过40秒),IC2开始 进入延时40秒的状态。 开始报警:当用户输入的密码不正确或输入密码的时间超过40秒,IC11的2脚电位随着 C4的充电而下降,当电位下降到1/3Vcc时(即40秒延时结束时候),3脚变成高电位(延时时 是低电平),通过R15使(R15的作用是为了限制T7的导通电流防止电流过大烧毁三极管)T7 导通,其集电极上面接的红色发光二极管D4发亮,表示当前处于报警状态,T8也随之而导通 ,使蜂鸣器发声,令贼人生怯,实现报警. 停止报警:当达到了80秒的报警时间,IC10的6,7脚接的电容C5放电结束,IC10的3脚变 成低