《电子密码锁设计.pdf》由会员分享,可在线阅读,更多相关《电子密码锁设计.pdf(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 1 目 录 一、设计的背景和意义.2 1.1 设计的背景.2 1.2 设计的意义.2 二、设计方案的路径选择和确定.4 2.1 设计需求分析.4 2.2 方案的研究确定.3 三、设计过程.5 3.1 设计原理.5 3.2 主要器件选型和资源分配.5 3.3 硬件线路设计.6 3.4 程序设计及调试.12 五、毕业设计总结.27 六、参考资料.28 七、致谢.29 2 一、设计的背景和意义 1.1 设计的背景 随着人们生活水平的提高,日常生活和工作中的住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等一系列安全防盗问题变的尤其突出。传统的机械锁由于其构造的简单,被撬的事件屡
2、见不鲜,且人们常需携带多把钥匙,使用极不方便,一旦钥匙丢失安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁因具有安全性高、成本低、功耗低、易操作等优点,受到了广大用户的青睐。据有关资料介绍,电子密码锁的研究从 20 世纪 30 年代就开始了,在一些特殊场所早就有所应用。但当时多半是配合机械锁一起起作用且存在着诸如体积较大,成本较高,可靠性较低等缺点一时难以普及。20 世纪 80 年代后,随着信息技术、集成电路、半导体技术的发展,电子密码锁的设计也取得了快速的进步。目前,在西方发
3、达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于安全处所,而我国在此点上这稍有落后。1.2 设计的意义 常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。对于采用集成电路控制的方案,其中的编码电子锁电路分为编码电路、控制电路、复位电路、解码电路、防盗报警电路、门铃电路,而电子锁主要由输入元件、电路(包括电源)以及锁体三部分组成。显然此种方案的物理实现结构较为复杂且重新设置密码、输入密码的操作过程也会给用户带来一定的不方便;而利用单片机控制的方案,由于单片机灵活的编程设计和丰富的 I/O 端口,及其控制的准确性,不但能实现基本的密码锁功能
4、,还能添加掉电存储、声光提示甚至添加遥控控制功能,但其也有一定的局限性,就在于其控制原理的复杂以及要求设计人员具有更加良好的程序设计能力,调试较为繁琐,否则程序一旦跑飞将造成意想不到的损失。通过对这两种方案的优缺点比较,再考虑到本人自己对单片机设计具有一定的基础,所以此次选择利用单片机来进行密 3 码锁的设计。本文以 AT89C51 单片机为核心器件,结合按键电路、LED 数码管显示电路、报警指示电路和开锁机构,利用单片机灵活的编程设计和丰富的 I/O端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码锁的基本功能。4 二、设计方案的路径选择和确定 2.1 设计需求分析(1)退出输入:
5、可以退出正在输入状态,或者手动关闭门。(2)修改密码:按下进入密码修改,按液晶显示提示操作。(3)重修输入:在输入过程中输错可以清除以输入。(4)输入密码:进入输入正确密码,解锁门禁。(5)退格:在输入过程中输错可以清除最后输入一位。(6)确定:六位密码输入完成后按确定键。2.2 方案的研究确定 方案一:采用数字电路控制。用以 74LS112 双 JK 触发器构成的数字逻辑电路作为密码锁的核心控制,共设了 9 个用户输入键,其中只有 4 个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过 10 秒(一般情况下
6、,用户不会超过 10 秒,若用户觉得不便,还可以修改)电路将报警 20 秒,若电路连续报警三次,电路将锁定键盘 2 分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。方案二:采用一种是用以 AT89C51 为核心的单片机控制方案。选用单片机 AT89C51 作为本设计的核心元件,利用单片机灵活的编程设计和丰富的 IO 端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接 AT24C02 芯片用于密码的存储,外接 LCD1602 显示器用于显示作用。分析上面两个方案,可以看出方案二控制灵活准确性好
7、且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案。5 三、设计过程 3.1 设计原理 本设计的具体的系统方案如下图所示。图 1 系统方案 3.2 主要器件选型和资源分配 表 1 元件清单 名名称称 标标号号 数数量量 30PF 瓷片电容 C1,C3 2 10UF 电解电容 C2 1 红色 LED 灯 D1 1 黄色 LED 灯 D2 1 继电器 K1 1 微动开关 KEY1,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8,KEY9,KEY10,KEY11,KEY12,KEY13,KEY14,KEY15,KEY16,KEY17 17 LCD1602 液晶 Q1
8、 1 蜂鸣器 Q2 1 S8550 三极管 Q3,Q4 2 10K 色环电阻 R1 1 10K 电位器 R2 1 10k 排阻 R3 1 1K 色环电阻 R4,R5,R6,R7 4 双掷开关 SW1 1 DC-002 电源插座 P1 1 DC-005 电源插座 P2 1 2Pi 插针 U2 1 6 STC89C51 单片机 U3 1 AT24C02 存储芯片 U4 1 XH2P 接线端子 U6 1 12MHZ 晶振 Y1 1 3.3 硬件线路设计 3.3.1 STC89C51 单片机的最小系统 单片机最小系统说的通熟易懂的话就是以最少的元器件组成能让单片机工作起来的系统,接下来开始介绍 51
9、单片机最小系统必备的器件及其作用。首先电源这对于一个电子产品的话是必不可少,它提供能源给系统运作,在本设计中由于 51 单片机的工作电压在 4.55.5V 之间都可以正常工作所以我们采用了 USB 电源线连接手机充电器插头或者 5V 的移动电源给系统进行供电。其次晶振电路,XTAL1 和 XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2 中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在 XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在 1.212MH
10、z 之间任选,甚至可以达到 24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的 12M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在 2040pF 之间选择(本设计使用 30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在 3050pF 之间。通常选取 30pF 的陶瓷电容就可以了。图 2 晶振电路 再来就是复位电路,复位电路分为:上电自动复位和开关复位。图 3.2 中 7 所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和 RESET 相连,电压全部加在了电阻上,RE
11、SET 的输入为高,芯片被复位。随之+5V 电源给电容充电,电阻上的电压逐渐减小,最后约等于 0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使 RST 管脚出现高电平达到手动复位的效果。一般来说,只要 RST 管脚上保持 10ms 以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算 RC 充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。图 3 复位电路 完整的 STC89C51 单片机最小系统电路图如图 3 所示。8 图 4 ST
12、C89C51 单片机最小系统 3.3.2 LCD1602 的概述 LCD1602 液晶也叫 LCD1602 字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个 5X7 或者 5X11 等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。LCD1602 液晶模块采用 HD44780 控制器,HD44780 具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LCD1602 与单片机 MCU 通讯可采用8 位或 4 位并行传输两种方式,HD44780 控制
13、器由两个 8 位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数 RAM(DDRAM),字符发生器 ROMA(CGOROM)字符发生器 RAM(CGRAM),地址计数器 RAM(AC)。IR 用于寄存指令码,只能写入不能读出,DR 用于寄存数据,数据由内部操作自动写入 DDRAM 和 CGRAM,或者暂存从 DDRAM 和 CGRAM 读出的数据,BF为 1 时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM 用 9 来存储显示的字符,能存储 80 个字符码,CGROM 由 8 位字符码生成 5*7 点阵字符 160 中和 5*10 点阵字符 32 种.8
14、位字符编码和字符的对应关系,CGRAM是为用户编写特殊字符留用的,它的容量仅 64 字节,可以自定义 8 个 5*7 点阵字符或者 4 个 5*10 点阵字符,AC 可以存储 DDRAM 和 CGRAM 的地址,如果地址码随指令写入 IR,则 IR 自动把地址码装入 AC,同时选择 DDRAM 或CGRAM,LCD1602 液晶实物图如图 5 所示。图 5 LCD1602 液晶实物图 LCD1602 的工作原理 LCD1602 一共具有 11 条指令,单片机发送这些指令到 LCD1602 上就可以完成一些特定的功能,比如清屏,开关显示等等。LCD1602 自己带有字库在显示的时候可以直接调用字
15、库进行显示,当然如果字库中没有的字符也可以根据需要自己自定义字符写入 CGROM 中,自定义字符的分辨率为 5*8 而却自定义字符数量有限需要合理的安排使用,最多可以自定义 8 个字符,将自定义字符字模写入 LCD 的 CGROM 中后就可以随意的调用,调用的方式和正常显示字符是一样的。控制LCD1602液晶显示器只要会对LCD1602进行读状态操作、写指令操作、读数据操作、写数据操作即可具体的操作对应的引脚电平如表 2 所示。表 2 LCD1602 操作指令对应的引脚电平 读状态 写指令 读数据 写数据 输入 RS=L,R/W=H,E=H RS=L,R/W=L,D0-D7=指令码,E=高脉冲
16、 RS=H,R/W=H,E=H RS=H,R/W=L,D0-D7=数据,E=高脉冲 输出 D0-D7=状态 无 D0-D7=数据 无 10 上表中 E 为使能端;RS 为寄存器选择,当 RS=H 时表示选择数据寄存器,RS=L 时选择指令寄存器;R/W 为信号线,R/W=H 时执行读操作,R/W=L 时执行写操作。LCD1602 具体的读操作时序如图 6,写操作时序如图 7 所示。图 6 LCD1602 读操作时序图 图 7 LCD1602 写操作时序图 在使用时候将 D0-D7 连接到 51 单片机的 P0 上方便进行数据的传输,而 V0口接一个可调电位器,当调节电位器位置改变时接入 V0
17、的电压也随之变化进行显示的清晰度也随之变化,所以在实际时采用电位器而不采用固定阻值的电阻就是为了能够方便的调节以使用在电压不同的场合。具体 LCD1602 电路图如图 3.7所示。11 图 8 LCD1602 电路图 3.3.3 AT24C02 的概述 AT24C02 是一个 2K 位串行 CMOS E2PROM,内部含有 256 个 8 位字节,CATALYST 公司的先进 CMOS 技术实质上减少了器件的功耗。AT24C02 有一个8 字节页写缓冲器。该器件通过 IIC 总线接口进行操作,有一个专门的写保护功能。AT24C02 芯片实物图如图 9 所示。图 9 AT24C02 芯片实物图
18、AT24C02 的引脚说明 AT24C02 时钟芯片引脚功能描述见表 3。表 3 AT24C02 引脚 引引脚脚 名名称称 功功能能 13 A0、A1、A2 当这些脚悬空时默认值为 0。当使用 AT24C02 时最大可级联 8 个器件。如果只有一个AT24C02被总线寻址,这三个地址输入脚(A0、A1、A2)可悬空或连接到 GND,如果只有一个 AT24C02 被总线寻址这三个地址输入脚(A0、A1、A2)必须连接到 GND。4 GND 接电源地 12 5 SDA 双向串行数据/地址管脚用于器件所有数据的发送或接收,SDA 是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线或(wire
19、-OR)。6 SCL 串行时钟输入管脚用于产生器件所有数据发送或接收的时钟,这是一个输入管脚。7 WP 如果 WP 管脚连接到 VCC,所有的内容都被写保护只能读。当WP 管脚连接到 GND 或悬空允许器件进行正常的读/写操作 8 VCC 接+1.8V6.0V 电源 AT24C02 的工作原理 AT24C02 的存储容量为 2Kb,内容分成 32 页,每页 8B,共 256B,操作时有两种寻址方式:芯片寻址和片内子地址寻址。(1)芯片寻址:AT24C02 的芯片地址为 1010,其地址控制字格式为 1010 A2 A1 A0 R/W。其中 A2、A1、A0 可编程地址选择位。A2、A1、A0
20、引脚接高、低电平后得到确定的三位编码,与 1010 形成 7 位编码,即为该器件的地址码。R/W为芯片读写控制位,该位为 0 表示芯片进行写操作,为 1 表示芯片进行读操作。(2)片内子地址寻址:芯片寻址可对内部 256B 中的任一个进行读/写操作,其寻址范围为 00FF,共 256 个寻址单位。AT24C02 读/写操作时序图如图 10 所示。图 10 AT24C02 读/写时序图 在本设计中只是用到一个 AT24C02 芯片所以直接将 A0、A1、A2 三个引脚都连接到 GND,而 WP 写保护引脚通用接到 GND 上,这样方便读/写操作。而SDA 和 SCL 分别接到单片机的两个引脚上,
21、具体的电路图如图 11 所示。13 图 11 AT24C02 电路图 3.3.4 矩阵键盘的设计 在操作中需要使用到比较多的按键的时候,为了减少单片机的 I/O 口占用,通常将按键排列成矩阵形式,这就是矩阵键盘。在矩阵键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如 P3口)就可以构成 4*4=16 个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20 键的键盘,而直接用端口线则只能多出一键(9 键)。由此可见,在需要的按键数目比较多时,采用矩阵法来做键盘是合理的。矩阵键盘电路图如图 12 所示。图 1
22、2 矩阵键盘电路图 4*4 矩阵键盘的 16 个按键对应的功能表如 3-3 所示。表 4 矩阵键盘对应功能表 1 2 3 退出输入 4 5 6 修改密码 7 8 9 重新输入 输入密码 0 退格 确定 14 3.3.5 蜂鸣器电路的设计 蜂鸣器选用 5V 电磁式有源蜂鸣器,由于蜂鸣器的工作电流一般比较大,以至于单片机的 I/O 口是无法直接驱动的,所以要利用三极管开关电路来驱动。本处选用的是 8550 三极管,它是一个 PNP 型的三极管。基极串联一个 1K 的电阻连接到单片机的 I/O 口时。当 I/O 口输出低电平时,三极管导通,蜂鸣器鸣叫;当 I/O 口输出高电平时,三极管截止,蜂鸣器停
23、止鸣叫。蜂鸣器电路如下图 13所示。图 13 蜂鸣器电路 3.3.6 继电器驱动电路设计 继电器是一个由电控制的元器件。通常,被用在需要自动控制的电路中。简单的说,继电器就是一个通过输入的小电流来控制大电流的输出的一个“自动开关”。因此在电路中继电器起着自动调节电路、转换电路、保护电路等作用。当使用 51 单片机进行控制继电器时候由于单片机 IO口输出电流在 420mA之间,而继电器工作吸合电流大约在 40mA,所以采用直接控制是无法驱动的。需要添加一个电流放大电路。三极管的选择应该符合:(1)功率 PCM:大于 5V*继电器电流(5*40 mA=0.2W)的两倍;(2)最大集电极电流(ICM
24、):大于继电器吸合电流 40mA 的两倍以上;(3)耐压 BV(CEO):大于继电器工作电压 5V,可选 10V 以上;(4)直流放大倍数:取 100。15 图 14 继电器驱动电路 本设计中采用 S8550 三极管进行放大,驱动电路图如图 3.13 所示。当单片机 IO 口输出高电平时,三极管截止,继电器断开;当单片机 IO 口输出低电平时,三极管导通,继电器吸合。3.3.7 系统硬件测试 系统硬件电路的测试主要是检测电路是否出现漏焊、短路、断路、虚焊、一些具有方向的元件是否方向弄错、电路设计错误等情况。对于漏焊、元件方向弄错的检测方法是将实物电路板对照着 PCB 图的线路,检查每一个元件和
25、导线在实物上是否有出现。如果发现没有或者对不上的情况下需及时的重新对照确定漏焊时及时的补焊。对于短路、断路、虚焊这些情况采用数字万用表。将数字万用表打到二极管档位,然后通过红表笔和黑表笔碰一起,万用表会发出鸣叫警示。根据这个原理就可以用来检测短路、断路、虚焊。在需要检测的元件或导线的两端用两根表笔检测,如果导通蜂鸣器会鸣叫,如果断开蜂鸣器不叫。这样根据我们所需要检测的情况,在结合检测的现象就可以测出线路是否有问题。3.4 程序设计及调试 3.4.1 主函数的设计 主函数 void main()是程序的入口函数,一个完整的程序必须要包含该函数。在该函数的开头一般都是先对单片机和一些外围器件需要进
26、行初始化才能正常使用的器件进行初始化和重新赋值一些变量,初始化完后进去死循环,如果不进入死循环程序运行一次就会退出,如果加入死循环程序就会不断地进行循环达到 16 实时检测执行的目的。在主程序的设计中需要注意的是主函数中不宜放过多的代码,具体的代码一般都是采用函数进行封装然后在主函数进行调用,这样也可以方便阅读修改。具体流程图如下 15 所示。图 15 主函数流程图 3.4.2 LCD1602 显示函数的设计 LCD1602 的显示只需要严格的按照厂家的时序要求进行编程就可以完成显示。LCD602 的液晶显示首先需要将需要显示地方的地址通过命令写入,然后将数据按顺序的进行写入即可。在写入地址后
27、显示第一个内容后地址会自动加一。函数名 lcd1602_write_character(uchar x,uchar y,uchar*p),参数为 x,y,*s,其中的 x,y 表示在液晶显示屏上的位置坐标,*s 是需要显示的字符数组。软件根据输入需要显示的位置坐标计算出地址。显示函数流程图如 16 所示。17 开始根据在第几列显示计算地址Add=0 x80+x;根据在第几列显示计算地址Add=0 xc0+x;写入显示地址Add判断是否显示未完成*s!=0?返回写入显示内容*s显示内容指针加1s+;是否判断是否在第1行显示y=1?是否 图 16 显示子函数流程图 3.4.3 矩阵键盘检测函数的设
28、计 具体的矩阵键盘在程序上的检测方法如下(流程图中 Key 代表 P3 口)。(1)先将键盘中的全部行线 P3.0P3.3 置低,然后通过检测列线 P3.5P3.7 中是否有出现低电平的现象,如果有一列出现低电平,那么就证明那一列中的四个按键中有一个是被按下的。若没有列线中都没有出现低电平的现象,则没有按键按下。(2)在确定有按键被按键的时候,将进一步的确定具体为那一个按键按下。方法是:依次将四个行线 P3.0P3.3 置低电平,即在某一根行线为低电平时,其 18 它行线仍然保持高电平状态。然后通过确认在某一根行线为低电平的时候如果在第一步中得出的列为低电平就能够判断该行线与第一步得出的列线相
29、交的按键就是所按下的那个按键。矩阵键盘检测函数流程图如 17 所示。图 17 矩阵键盘检测函数流程图 3.4.4 程序设计及调试 测试所需的工具:KEIL 软件、系统硬件、PL2303 下载器等。系统的软件方面通过 KEIL 软件进行编写,将编写好的程序生成.HEX 文件后通过 PL2303 下载器下载到单片机中。通过观察整个系统运行的状态,然后进 19 行反复的修改调试程序,最终得到一个完善的程序。在系统软件调试上主要遇到以下几个问题:(1)在向LCD1602液晶发送清屏指令的时候,LCD1602并未成功的清楚屏幕。解决方法:通过查阅 LCD1602 的使用手册,得到清屏的指令的确是 0 x
30、01和程序上写的完全相同,而却显示屏可以显示出内容这表明程序发送指令是没有错误的,但是显示并未清屏。于是怀疑是否发送了清屏指令后里面进去下一个内容的显示,而 LCD1602 的处理速度不够,所以并未正真的执行清屏指令。通过添加 40ms 的延时后,重新下载进程序后发现清屏指令被执行了。通过仔细的阅读手册发现,LCD1602 清屏的确需要 1.64ms 的执行时间,最终程序采用了 4ms的延时。矩阵键盘的按键读取方法有了,在程序上需要将读取的每一个键值对应到每一个按键上并赋予特定的功能,如果直接进行人工计算键值的话显得工作量会比较大,并且可能会计算错误造成大量的时间浪费在调试上。解决方法:由于本
31、设计上有显示器件,所以可以将获取的键值直接在显示器件上进行显示出来,这样在按下每一个按键的时候显示器上显示一个对应的键值码,然后依次记录下来后在统一进行给每一个按键设计功能。这样大量的节省了时间,也确保正确性。3.4.5 程序 20 21 22 23 24 25 26 29 五、毕业设计总结 经过制作设计的这段时间的努力终于将本设计方案要求基本实现。由于时间、水平和经验有限,设计的作品还存在着一些的不足之处。对于这次设计来说既是一次机遇,又是一次挑战。在这次的设计过程中,本人学到了很多东西,通过自己的实践,增强了动手能力。通过实际工程的设计也使我了解到书本知识和实际应用的差别。在实际应用中遇到
32、很多的问题,这都需要我对问题进行具体的分析,并一步一步地去解决它。30 六、参考资料 1苏铁力,传感器及其接口技术M,北京:中国石化出版社.1998 2中国电子学会,传感器与执行器大全M,北京:电子工业出版社.1998 3白雪冰,张延林,等,单片机原理及应用M,哈尔滨:东北林业大学出版社.2006 4谢运祥,欧阳森等,电力电子单片机控制技术M,北京:机械工业出版.2007 5王洪业,传感器技术M,长沙:湖南科学技术出版社.1995 6李光飞,单片机课程设计实例指导,北京:北京航空航天大学出版社.2004 7王法能,单片机原理及应用,科学出版社.2004 8楼然苗,李光飞,51 系列单片机设计实例M,北京:北京航空航天大学出版社.2003 9胡汗才,单片机原理与接口技术M,清华大学出版社.2004 31 七、致谢 毕业设计的完成,也标志这我的大学三年即结束,在这里我需要感谢的人有 很多,首先我要感谢学校给了我一个学习知识、为人处世的平台,然后要感谢我 的毕业设计指导老师,在这次的毕业设计中给我提供了灵感和方案,还有感谢我各科的老师和辅导员,没有他们授予的知识我也完不成这次的设计,也对我踏入社会提供了生存技能和与人交往的能力,还要感谢我的同学、朋友们,他们在我方案完善和器件的选择中都提供了宝贵的意见,最后,我将牢记学校的校训“立德精技,尚学笃行”,满载着知识,走出校门。