毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc

上传人:哈尼dd 文档编号:3283823 上传时间:2019-08-08 格式:DOC 页数:46 大小:838.02KB
返回 下载 相关 举报
毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc_第1页
第1页 / 共46页
毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc_第2页
第2页 / 共46页
毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc_第3页
第3页 / 共46页
毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc_第4页
第4页 / 共46页
毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于单片机的安全护卫双重保护密码锁设计.doc(46页珍藏版)》请在三一文库上搜索。

1、 安全护卫双重保护密码锁 摘要:摘要:双重保护密码锁即有钥匙和密码的电子锁。现代生活中,安全防范越来越 被人们所重视,拥有钥匙与密码双重护卫的密码锁不仅能锁住贵重的财物,也能 给人的心理上了把放心锁。本系统是由单片机系统、矩阵键盘、LED显示和报警 系统等功能,可以广泛用于门锁、保险箱等存有安全隐患的场所。主要通过输入 密码并转动钥匙控制开锁。本系统成本低廉,功能实用。 关键词:关键词:单片机 LED 电子密码锁 矩阵键盘 报警 Safe Guard Dual Protection Code Lock Abstract: Dual Protection Code Lock(a kind of

2、electronic lock with key and password). Security problem are more and more thinked highly of by people in modern life. DPCL(Dual Protection Code Lock), with double protective measure, keys and password, can not only protection the properties, but also set peoples mind at rest. The DPCL system is org

3、anised by singlechip system, matrix keyboard, LED displayer and audio alarm system. It can be used as gate locks, strong box locks and so on places where security protections needed. To control the DPCL system,generally,by input a password and turn the key on at the same time. The DPCL is cheap in p

4、rice and practical. Key word: singlechip LED electronic code lock matrix keyboard alarm system 目录 1 绪论1 2 系统总设计.2 2.1 保护锁设计分析2 2.2 双重保护密码锁设计概述2 3 硬件电路设计 .3 3.1 单片机 AT89S51 相关概述3 3.2 显示模块9 3.3 键盘模块13 3.4 音频模块14 3.5 电子锁控制开锁模块15 3.6 整体电路18 4 软件程序设计 .19 4.1 主程序19 4.2 键盘扫描子程序20 4.3 警示及音频程序22 4.4 电子锁控制程序2

5、6 结束语26 致 谢27 参考文献 28 附录 .29 安全护卫双重保护密码锁 1 1 绪论 随着人们防患意识的增强,结合高科技的不断翻新与发展,具有防盗报警功 能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全 性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步,而结合于 传统锁的电子密码锁却是使安全性加倍的电子密码锁。仅从电子密码锁的角度, 从目前的技术水平和市场认可程度看,国内外使用最为广泛的是键盘式电子密码 锁,该产品主要应用于保险箱、保险柜和金库,还有一部分应用于保管箱和运钞 车。当然现在也逐渐应用到家用式门锁柜锁等等。 键盘式电子密码在键盘上输入,与

6、打电话差不多,因而易于掌握,其突出优 点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失(除 了忘记),难以被窃(除非自己泄露)。但是密码不能太简单,太简单了就容易 被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。当然, 密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低, 造成使用不便。因此,为了发扬优点、克服弱点,键盘式电子密码也在不断发展 中,如“任意设定密码”技术使得被授权人可以根据自己的需要或喜好设定密码, 常用常新;而“更改密码”技术使得本次输入的密码将自动更改成下次应输入的密 码,更改的规律不为他人所知,因而不怕旁观者窥测,显

7、示的窄小角度只能由操 作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码,也有为了应 和用户不变原则固定密码的电子密码锁,更新需通知厂家刷机,虽麻烦却体现了 稳固不变的原则。 总之,尽管新式电子防盗锁层出不穷,但键盘式电子密码防盗锁仍然“老树发 新芽”,不仅在市场上居于主流地位,而且,还经常作为其他类型电子防盗锁的 辅助输入手段。 安全护卫双重保护密码锁 2 2 系统总设计 2.1 保护锁设计分析 科技高速发展的今天,对于住宅、财产、车辆等等日常相伴我们生活的物件, 安全防范设施更显得尤为重要,于是有安全性高、功耗低、易操作等优点的电子 密码锁应运而生。考虑到与我们生活最贴近的产品性能

8、,电子密码锁该是成为价 格低廉,简单实用的日常工具之一。 对于设计,首先与输入密码相对应的该有足够多的按键,密码数字输入,功 能按键等等,用 4X4 矩阵键盘完全可以满足需求。在输入密码时难免有输错的时 候,拥有可删除的按键是完全有必要的。而在显示方面,主流产品有数码管显示 和 LCD 液晶屏显示,前者具有价格低廉,显示亮,寿命长等优点,除却显示多样 性能不如 LCD 液晶屏,在这里弃价格昂贵的液晶屏而选用数码管好处多于劣处, 故综合上述,本设计选用数码管显示系统。另外,增强型电子密码锁在警示音方 面该有些许突破,提高电子防盗锁之防护能力的必然途径是报警,在许多场所有 人值守、有电视监控,具有

9、报警功能,可以综合物理防范和人力防范两种作用。 报警的前提是具备探测功能,根据电子防盗锁的使用场所和防护要求,可选择多 种多样的探测手段。在中国的城市金融业中,实现联网报警已经成为对各金融网 点的基本要求。本设计选用喇叭扬声系统,不仅使报警花样化,更可以丰富功能 不同提示音,还可以根据用户爱好选用音乐作为提示音,生活更加情趣化。 2.2 双重保护密码锁设计概述 本设计遵循市场主流密码锁设计,采用单片机控制系统、4X4 矩阵键盘模块、 8 位八段数码管显示模块、提示音音频放大模块、电子锁模拟控制、指示灯模拟 开锁功能。总设计框图如图所示。 安全护卫双重保护密码锁 3 图 2.1 总体设计框图 本

10、设计实现功能: 8位数码显示,初始化时,显示“P ”。 用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”。 键盘数字个代表数字09,输完一组数字按确认键。 当数字输入超过6个时,给出报警信息 在密码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入的错误的数字 输入完密码,打开电子锁,若密码正确,则指示灯亮一秒钟,并且喇叭同时发 出“叮咚”声。 输入完密码,打开电子锁,若密码错误,则指示灯一闪一闪3秒钟,并且喇叭 同时发出“滴滴”报警声。 若密码输入错误,3秒钟内仍有密码输入错误,则指示灯闪烁与报警声顺延3秒 钟。 3 硬件电路设计 3.1 单片机 AT89S51 相关概述

11、 3.1.1 特性简述 安全护卫双重保护密码锁 4 微型计算机具有体积小,功耗 低重量轻,价格低,可靠性高,开 发使用简便等一系列优点,自问世 以来得到了非常广泛的应用。作为 微型计算机发展的其中一大支,单 片机系统全力满足测控对象的测控 功能,兼顾数据处理能力。 单片机本身有着优异的特色, 它性能价格比好,集成度高,体积 小,可靠性好控制能力强,且低功 耗,低电压,便于生产便携式产品,还易扩展。 图 3.1 单片机管脚 目前,应用广泛的主流机型是 80C51 系列 8 位单片机。 其优点不容知否, 它的性能价格比很高而且开发装置多,被国内技术人员熟悉广泛熟悉,芯片功能 也够用适用,还有众多芯

12、片制造厂商加盟,可选择空间大。而单片机本身又有着 优异的特色,它性能价格比好, 集成度高,体积小,可靠性好控制能力强,且低功耗,低电压,便于生产便携式产 品,还易扩展。 单片机的应用相当广泛,无论是在智能化家用电器,办公自动化设备商业营 销设备,工业自动化控制,智能化仪表还是智能化通信产品,汽车电子产品,航 空航天系统和国防军事、尖端武器等等都有着不可小觑的地位。 单片机引脚图如 3.1 所示。 单片机系统分为两大部分,一为硬件部分,即组成单片机系统的物理实体。 二为软件部分,即对硬件使用和管理的程序。图 3.2 为单片机系统硬件结构框图。 安全护卫双重保护密码锁 5 图 3.2 单片机系统硬

13、件结构框图 单片机程序设计软件语言可分为机器语言,汇编语言,高级语言,本设计使 用的是 AT89S51,汇编语言。 AT89S51 单片机是 ATMEL 公司生产的高性能 8 位单片机,主要功能特性如下: 兼容 MCS-51 指令系统; 32 个双向 I/O 口,两个 16 位可编程定时/计数器; 1 个串行中断,两个外部中断源; 可直接驱动 LED; 低功耗空闲和掉电模式; 4 kB 可反复擦写(1 000 次)FLASI ROM; 全静态操作 O24 MHz; 1288 b 内部 RAM。 该款芯片的超低功耗和良好的性能价格比使其非常适合嵌入式产品应用 3.1.2 引脚说明 AT89S51

14、 总共 40 个引脚,以下分别作说明。 Vcc:电源电压 GND:地 安全护卫双重保护密码锁 6 P0口:P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口。作 为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端 用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位) 和数据总线复用,在访问期间激活内部上拉电阻。在F1ash编程时,P0口接收指 令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1口:Pl 是一个带内部上拉电阻的8位双向IO口,Pl的输出缓冲级可驱动(吸 收或输出电流)4个TTL逻辑门电路。对端口写“l”,

15、通过内部的上拉电阻把端口拉 到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引 脚被外部信号拉低时会输出一个电流(IIL),Flash编程和程序校验期间,Pl接 收低8位地址。 P2 口:P2 是一个带有内部上拉电阻的8 位双向IO 口,P2 的输出缓冲级可驱 动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻 把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻, 某个引脚被外部信号拉低时会输出一个电流(IIL),在访问外部程序存储器或 16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址 数据。

16、在访问8 位地址的外部数据存储器(如执行MOVXRi 指令)时,P2 口线 上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期 间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。 P3 口:P3 口是一组带有内部上拉电阻的8 位双向I0 口。P3 口输出缓冲级可 驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上 拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输 出电流(IIL)。P3口除了作为一般的I0口线外,更重要的用途是它的第二功 能,如下表所示:P3口还接收一些用于Flash闪速存储器编程和

17、程序校验的控制 安全护卫双重保护密码锁 7 信号 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单 片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址 8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。 ALEPROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出 脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频 率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要 注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器

18、编程 期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存 器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一 条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外 部程序时,应设置ALE无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两 个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。 EAVPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为 0000HFFFFH),EA端必

19、须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行 内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压 Vpp。 XTALl:振荡器反相放大器及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。 3.1.3 震荡电路 安全护卫双重保护密码锁 8 如图 3.3 所接电路,单片机 X1 和 X2 两端分别接 12MHz 晶振两端,并分别接 30P 电容的一端,两个电容的另外一端都接地。以此构成本课程设计的时钟电路。 晶振的大小决定了机器周期的大小。时钟周 期是 89S51 振荡

20、器产生的时钟脉冲频率的倒数, 是最基本最小的定时信号。89S51 单片机工作的 基本定时单位,简称机周。机器周期是时钟周期 的 12 倍。 当时钟频率为 12MHz 时,机器周期为 1S; 当时钟频率为 6MHz 时,机器周期为 2S。 3.1.4 复位系统 图 3.3 震荡电路 如图 3.4 所示,为接到单片机上按键复位电路,10 微法的电容负极连 RST 引 脚,正极连 5V 电源,10K 电阻两端分别连 RST 和 5V 和地,开关接在电容两端。系统复 位条件为单片机 RST 引脚保持 2 个机器周期 以上的高电平。 复位后 CPU 状态为: PC: 0000H TMOD: 00H Ac

21、c: 00H TCON: 00H 图 3.4 复位电路 B:00H TH0: 00H PSW: 00H TL0: 00H SP: 07H TH1: 00H DPTR:0000H TL1: 00H 安全护卫双重保护密码锁 9 P0P3:FFH SCON: 00H IP:00000B SBUF: 不定 IE:000000B PCON: 00000B 3.1.5 EA/Vpp 连接 此引脚即内外 ROM 选择/片内 EPROM 编程电源 EA 功能:内外 ROM 选择端。接高电平则从片内 ROM 读起,接低电平则从片外 ROM 读起 Vpp 功能:片内有 EPROM 的芯片,在 EPROM 编程期间

22、,施加编程电源 Vpp。 本设计 EA/Vpp 引脚连接在 5V 电源上即高电平。从片内 ROM 读取程序。 3.2 显示模块 3.2.1 LED 数码管简介 数码管是一种半导体发光器件,其基本单元是发光二极管。防水,防尘,防 紫外线,耐压,耐破裂,耐高低温,耐燃,超强抗冲击老化数码管按段数分为 七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元 (多一个小数点显示);按能显示多少个 “8”可分为 1 位、2 位、4 位等等 数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳 数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。 共阳数码管

23、在应用时应将公共极 COM 接到+5V,当某一字段发光二极管的阴极 为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不 亮。 。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM) 的数码管。共阴数码管在应用时应将公共极COM 接到地线 GND 上,当某一字 段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电 平时,相应字段就不亮。 数码管是一类显示屏 ,通过对其不同的管脚输入相 安全护卫双重保护密码锁 10 对的电流,会使其发亮,从而显示出数字 。 数码管能够显示时间 、日期、温度 等所有可用数字表示的参数 。由于 它的价格便宜 ,使用简单,

24、在电器,特别是家电领域应用极为广泛 :空调、 热水器、冰箱等等。 数码管使用的电流与电压 : 电流:静态时,推荐使用 10-15mA;动态时, 16/1 动态扫描时,平均电 流为 4-5mA,峰值电流 50-60mA。 电压:查引脚排布图,看一下每段的芯片数量是多少?当红色时,使用 1.9V 乘以每段的芯片串联的个数;当绿色时,使用2.1V 乘以每段的芯片串 联的个数。 图 3.5 数码管引脚图 测量数码管引脚, 区分共阴和共阳 : 找公共共阴和公共共阳:首先,我们找个电源( 3 到 5 伏)和 1 个 1K(几百欧的也行)的电阻, VCC 串接个电阻后和 GND 接在任意 2 个脚上, 组合

25、有很多,但总有一个 LED 会发光的,找到一个就够了,然后GND 不动, VCC(串电阻)逐个碰剩下的脚,如果有多个LED(一般是 8 个),那它就是 安全护卫双重保护密码锁 11 共阴的了。相反用 VCC 不动,GND 逐个碰剩下的脚,如果有多个 LED(一般 是 8 个),那它就是共阳的。也可以直接用数字万用表,红表笔是电源的正极, 黑表笔是电源的负极。 3.2.2 74LS245 简介 74LS245 是我们常用的芯片, 它的管脚图如图 3.6 所示,它用来驱动 le d 或者其他的设备,它是 8 路同相三态双向总线收发器,可双向传输数据。 74LS245 还具有双向三态功能,既可以输出

26、,也可以输入数据。当8051 单片 机的 P0 口总线负载达到或超过 P0 最大负载能力时,必须接入 74LS245 等总 线驱动器。 74LS245 真值表如图 3.6 所示。当片选端/CE 低电平有效时, DIR=“0” ,信号由 B 向 A 传输;(接收) DIR=“1”,信号由 A 向 B 传输;(发 送)当/CE 为高电平时, A、B 均为高阻态。 另外由于 P2 口始终输出地址的高 8 位,接口时 74LS245 的三态控制端 / 1G 和/2G 接地,P2 口与驱动器输入线对应相连。 P0 口与 74LS245 输入端相 连,/E 端接地,保证数据现畅通。 8051 的/RD 和

27、/PSEN 相与后接 DIR,使得/ RD 或/PSEN 有效时,74LS245 输入(P0.iDi),其它时间处于输出( P0.i Di)。 图 3.6 真值表 图 3.7 管脚图 安全护卫双重保护密码锁 12 3.2.3 驱动电路及与单片机的连接 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示 出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态 式两类。 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的 每一个段码都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二-十 进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高

28、,缺点是 占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5840 根 I/O 端口 来驱动,要知道一个 89S51 单片机可用的 I/O 端口才 32 个呢:),实际应用 时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种 显示方式之一,动态驱动是将所有数码管的8 个显示笔“a,b,c,d,e,f,g,dp“ 的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路, 位选通由各自独立的 I/O 线控制,当单片机输出字形码时,所有数码管都接 收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对

29、位选 通 COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该 位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管 的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过 程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极 管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够 快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和 静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。 安全护卫双重保护密码锁 13 本设计所使用的是动态数码管显示 ,其驱动电路和单片机的连接电路图 如

30、图 3.8 所示: 图3.8 数码管驱动电路 将把“单片机系统”区域中的P0.0P0.7用8芯排线连接到“动态数码显示”区域 中的ABCDEF端子上。把“单片机系统“区域中的P2.0P2.7用8芯排线连接到“动态 数码显示”区域中的S1S2S3S4S5S6S7S8端子上。 3.3 键盘模块 为了轻松实现密码输入与功能键,本系统使用了4X4矩阵键盘16个按键,不 仅拥有数字09,还有确认及删除按键,另外还空置5个按键以便今后的系统功能 扩展。 4X矩阵键盘原理: 每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。 矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同

31、样需变成 数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输 出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键 按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中, 安全护卫双重保护密码锁 14 一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描 值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 键盘电路及与单片机系统的连接如图3.9所示: 图 3.9 矩阵键盘 把“单片机系统”区域中的P3.0P3.7用8芯排线连接到“44行列式键盘” 区域中的R1R2R3R4C1C2C3C4端子上。 3

32、.4 音频模块 3.4.1 LM386 简述 LM386 是美国国家半导体公司生产的音频 功率放大器,管脚图如图 3.10 所示,它主要应 用于低电压消费类产品。为使外围元件最少, 电压增益内置为 20。但在 1 脚和 8 脚之间增加 一只外接电阻和电容,便可将电压增益调为任 意值,直至 200。输入端以地位参考,同时输出端 图 3.10 管脚图 安全护卫双重保护密码锁 15 被自动偏置到电源电压的一半,在 6V 电源电压下,它的静态功耗仅为 24mW,使 得 LM386 特别适用于电池供电的场合。 LM386 的封装形式有塑封 8 引线双列 直插式和贴片式。 特性: 静态功耗低,约为 4mA

33、,可用于电池供电。 工作电压范围宽,4-12V or 5-18V。 外围元件少。 电压增益可调,20-200。 低失真度 3.4.2 音频放大电路 该音频放大模块采用LM386芯片作为音频的功率放大,音频信号由“SPK IN” 端口输入,信号的输出由“SPK OUT”端口输出,只要在“SPK OUT”接一个喇叭即 可,具体电路图及与单片机连接如图所示: 图3.11 音频放大电路 将“单片机系统”区域中的P1.7用导线连接到“音频放大模块”区域中的SPK IN 端子上。另外 “音频放大模块”区域中的SPK OUT接到喇叭上 3.5 电子锁控制开锁模块 3.5.1 开锁机构 安全护卫双重保护密码锁

34、 16 电磁锁开锁具体流程图如图 3.12 所示: 图3.12 电磁锁开锁流程图 当用户输入的密码正确并且是在按下确定键的话,单片机便输出开门信号, 送到开锁驱动电路,然后驱动电磁锁,达到开门的目的 电路驱动和开锁两级组成。由D5、R1、T10组成驱动电路,其中T10可以选择 普通的小功率三极管如9014、9018都可以满足要求。D5作为开锁的提示;由 D6、C24、T11组成。其中D6、C24是为了消除电磁锁可能产生的反向高电压以及 可能产生的电磁干扰。T11可选用中功率的三极管如8050,电磁锁的选用要视情 况而定,但是吸合力要足够且由一定的余量。 具体电路图如图3.13所示: 安全护卫双

35、重保护密码锁 17 图 3.13 在本次设计中,基于节省材料的原则,暂时用发光二极管代替电磁锁,发光 管亮一秒钟,表示开锁;一闪一闪 3 秒钟,表示没有开锁。 3.5.1 电子锁控制开锁机构 此电子锁系通电手动开锁控制,一端接于单 片机 P1.2 口,一端接于地。当密码输入正确, 用钥匙拧动电子锁,代表电磁锁的指示灯持续亮 1 秒钟,喇叭发出悦耳的“叮咚”声,若密码输 入错误,指示灯连续闪烁 3 秒钟,喇叭发出“滴 滴”的报警声。 图 3.14 电子锁电路 安全护卫双重保护密码锁 18 3.6 整体电路 图 3.15 整体电路图 安全护卫双重保护密码锁 19 4 软件程序设计 4.1 主程序

36、主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示 等等。主程序的流程图如图 4.1 所示: 图 4.1 主流程图 部分主程序: void main(void) 安全护卫双重保护密码锁 20 unsigned char i,j; TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1; ET0=1; EA=1; 4.2 键盘扫描子程序 44 行列式键盘的按键功能分布图如图 4.2 所示: 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环 主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回

37、。流如图 4.3 所示: 图 4.2 44 行列式键盘的按键功能分布图 安全护卫双重保护密码锁 21 图 4.3 流程图 部分代码如下: uchar get_key() uchar row_code; uchar col_code; P1=0xf0; if(P1!=0xf0) 安全护卫双重保护密码锁 22 delayms(10); if(P1!=0xf0) row_code=0xfe; while(row_code!=0x7f) P1=row_code; if(P1!=row_code) col_code=(P1 return( (col_code)|(row_code); row_code=

38、(row_code unsigned char ps=1,2,3,4,5; /设定的密码 unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71, 0x00,0x40,0x73,0xff; unsigned char dispbuf8=18,16,16,16,16,16,16,16; unsign

39、ed char dispcount; /显示计数 unsigned char flashcount; /闪烁计数 unsigned char temp; /临时变量 unsigned char key; /按键 unsigned char keycount; /按键计数 unsigned char pslen=5; /password length 密码长度 unsigned char getps6; /get 到的密码 bit keyoverflag; bit errorflag; /错误标志位 bit rightflag; /正确标志位 unsigned int second3; unsi

40、gned int aa,bb; /aa,bb unsigned int cc; /cc bit okflag; /ok 标志位 bit alarmflag; /报警标志 bit hibitflag; /高位标志 unsigned char oka,okb,k; bit lockflag;/判定是否开锁标志 void main(void) unsigned char i,j; /用于循环. TMOD=0x01; 安全护卫双重保护密码锁 30 TH0=(65536-500)/256; /TH0 初始化 整除 TL0=(65536-500)%256; /TL0 初始化 取余 TR0=1; /TR0

41、初始成 1 ET0=1; /ET0 初始成 1 EA=1; /EA 初始成 1 while(1) /死循环开始 P3=0xff; /P3 赋值 为 255 P3_4=0; /P3_4 置为 0 temp=P3; / temp=temp /按位取与 / temp= 11111111 / 0x0f= 00010000 i0;i-) for(j=248;j0;j-); /空循环 temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=7; break; case 0x0d: key=8; br

42、eak; case 0x0b: key=9; 安全护卫双重保护密码锁 31 break; case 0x07: key=10; break; temp=P3; P1_1=P1_1;/后面也有,貌似无用 if(key=0) keyoverflag=1; /key overflow 输入密码长度超过 else if(key=12) /delete key if(keycount0) keycount-; getpskeycount=0; /最近 1 次数入的数值清 0 dispbufkeycount+2=16; else 安全护卫双重保护密码锁 32 keyoverflag=1; /未输入密码,按

43、到功能键,报错!嘀 一声。 else if(key=15) /enter key lockflag=1; /加入开锁判定标志 1 表示判定是否转动钥匙 0 表示不判断 if(keycount!=pslen) errorflag=1; rightflag=0; second3=0 else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case

44、0x0b: key=6; break; case 0x07: key=11; break; 安全护卫双重保护密码锁 34 temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key 安全护卫双重保护密码锁 35 lockflag=1; /开锁判定标志 1 表示判定是否转

45、动钥匙 0 表示不判断 if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=1; break; case 0x0d: key=2; break; case 0x0b: key=3; break; case 0x07: key=12; break; temp=P3; P1_1=P1_1; if(ke

46、y=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key lockflag=1; /开锁判定标志 0 表示判定是否转动钥匙 1 表示不判断 if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; 安全护卫双重保护密码锁 38 else for(i=0;i0;i

47、-) 安全护卫双重保护密码锁 39 for(j=248;j0;j-); temp=P3; temp=temp if (temp!=0x0f) temp=P3; temp=temp switch(temp) case 0x0e: key=0; break; case 0x0d: key=13; break; case 0x0b: key=14; break; case 0x07: key=15; break; temp=P3; P1_1=P1_1; if(key=0) keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key lockflag=1; /开锁判定标志 0 表示判定是否转动钥匙 1 表 示不判断 if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;k-) if(P1_2=0) goto judge; lockflag=0; return; else return; judge: if(errorflag=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1