收藏 分享(赏)

基于8086的电子密码锁技术报告.doc

上传人:精品资料 文档编号:8343175 上传时间:2019-06-21 格式:DOC 页数:32 大小:456.62KB
下载 相关 举报
基于8086的电子密码锁技术报告.doc_第1页
第1页 / 共32页
基于8086的电子密码锁技术报告.doc_第2页
第2页 / 共32页
基于8086的电子密码锁技术报告.doc_第3页
第3页 / 共32页
基于8086的电子密码锁技术报告.doc_第4页
第4页 / 共32页
基于8086的电子密码锁技术报告.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、I目 录第 1 章 实验简介 11.1 课题背景 11.2 研究意义 .11.3 本文主要内容 .1第 2 章 硬件电路设计 12.1 相关芯片简介 32.2 仿真电路总体设计 .5第 3 章 软件编程设计 63.1 系统概述 63.2 程序流程图设计 .73.3 按键控制 .93.4 字符动态显示 .10第 4 章 系统实现 10第 5 章 与军事方面的联系 11第 6 章 结论 116.1 设计总结 .116.2 收获与体会 .116.3 缺点与不足 .111第 1 章 实验简介1.1 课题背景在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以锁

2、的办法来解决。这种办法不仅给不法分子带来了可乘之机,而且传统的机械式开锁也给人们的出行带来了不便,最重要的是一旦钥匙丢失后安全性也大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用需要,增加其安全性,用电子密码锁代替钥匙锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。1.2 研究意义在安全技术防范领域,具有防盗换码功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差等缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着人们对安全的重视和科技的发展,许多电子智能锁。但是这些产品的特点是针对特定的指

3、纹和有效磁卡的,只能适用于保密要求的箱、柜、门等。而且指纹识别器若在公共场所使用存在容易机械损坏,IC 卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广,鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。此外,可以通过编写汇编语言程序以及硬件电路仿真设计来提高我们分析问题、解决问题的能力。1.3 本文主要内容本文介绍电子密码锁的软硬件设计,下面简单介绍成品的功能与操作。实现的功能:电子密码锁主要由一片 8086CPU,一片 74LS138 译码器,三片 74LS373,一片 74LS245 缓冲器,一片 8255A 及数码管构成,通过软件

4、编程以及硬件链接可以实现四位密码的设定、更改以及显示,通过判断密码的正确与否来控制锁的开关。具体操作:输入密码:(1) 、开始执行时数码管每一位都显示“米” ,点输入密码数码管只有2第一位显示“米” ,点击数字键进行数字选择;(2) 、按下“确认”键后跳到第二个数字,操作同第一步;(3) 、当四个密码选中完毕,按下“确认输入”键,显示输入的密码; (4) 、按下“开锁”键,若密码正确,同时显示 *YES,密码锁打开;(5) 、按下“开锁”键,若密码错误,则显示 ERRO,密码锁不能打开,按下“输入密码”键,即可重新输入密码。更改密码:(1) 、在显示 *YES 时,按下“更改密码”键后,输入新

5、的四位密码;(2) 、按下“确认输入”键,显示新密码,按下“确认”键,即可设定新密码。错误警报:若输入错误密码超过 5 次,警报会自动响起,只有再次输入正确密码后方可解除警报。第 2 章 硬件电路设计2.1 相关芯片简介1. 8255第一片 8255定义 A.B.C 口都为输出状态,A.B 口控制数码管的输入口,对应相应的段码表,来3显示。C 口的 PC0,PC1 经过 2-4 译码器,来激活数码管 1,2,3,4 通道,并采用 00,01,10,11,循环输出的方式,使数码管通道循环激活,实现动态显示。第二片 8255定义 A,B,C 口都为输入状态,对应输入相应的按钮状态,对应相应的程序,

6、实现相应功能。2. 8253使用 0 通道,方式 3,对输入的始终信号分频,当输入密码次数大于 5 次时,初始化 8253,并发出警报提示声。4当输入密码正确后,激活 1 通道,警报提示声接触。3. 2-4 译码器由于 8086 运行速度过快,数码管动态显示出现显示不全的现象,因此PC0,PC1 输出经过 2-4 译码器之后,再激活数码管,起到缓冲作用。4. 16 位数码管16 位数码管的数码管,由 16 个引脚控制,低电平有效,其中 A-H 控制外圈 0,K-M 控制内部* S1-s4 是通道控制,高电平有效。52.2 仿真电路总体设计本实验设计中,硬件部分涉及到了 8086CPU、可编程并

7、行接口 8255A,并配合 74LS373 锁存器、74LS245 缓冲器、74LS138 译码器等基本元器件,实现了设想的电子密码锁。8255A:如图 2-6,8255A 的 D0D7 端口与 CPU 数据线 ADOAD7 相接,CPU通过控制线的片选、读、写信号接口对 8255A 进行读、写与片选操作。外设接口端的 A0-A7 八个开关连接 245 的 A0-A7 端口,将外设信息传送到 245 中,键入密码输入、密码确定、修改密码等多种功能。8086CPU 总线连接可编程并行接口8255A 输出 数码管控制连接控制按钮警报器6图 2-6 开关功能如图 2-7,A 口的 PA0-PA7 端

8、口通过锁存器与数码管相连用于外圈显示,B口的 PB0-PB7 端口通过 74LS373 锁存器与数码管进行连接用于内部“米”字格的显示。第 3 章 软件编程设计3.1 系统概述密码锁是一种通过密码输入来控制电路或芯片工作,从而控制机械的开关和闭合,完成开锁闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在运用较广的电子密码锁是以芯片为核心,通过编程来实现的,其性能和安全性已大大超过机械锁。其特点是保密性好,随机开锁成功率几乎为零。密码可变,用户可随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。无活动零件,不会磨损,7寿命长。使用灵活

9、性好,不像机械锁必须佩带钥匙才能开锁。3.2 程序流程图设计密码的输入与判定位数+1 NYNY图 3-1 密码的输入与判定初始化更改密码按数字按钮确定显示* Y E S位数=4判定开锁重新输入E R R O换位8密码的更改位数+1 NYNY图 3-2 密码的更改更改密码按数字按钮确定显示* Y E S位数=4判定开锁重新输入E R R O换位93.3 按键控制(1) 、控制字给 8255A 输入端口控制字:void fun82531()_asmmov dx, 0x8006mov al, 0x37out dx, aloutp(GATE0,0x02);outp(GATE0,0x00);void f

10、un82532()_asmmov dx, 0x8006mov al, 0x77out dx, aloutp(GATE0,0x99);outp(GATE0,0x99);10(2) 、密码键入控制整个过程中主要是对是否有按键信息输入进行扫描判断,并将所得信息与灯管编号进行比对,确定所选择要键入数字的灯管。当目前的灯管数字被选出后,自动跳到下一个灯管,直到四位数字全部选择完毕。 3.4 字符动态显示四位密码选出后,显示四位选定数字,然后检测密码正确性,8255A 通过端口 A、B、C 读取指令,根据检测结果,密码正确则输出代码显示*YES,错误则显示 ERRO。见附录:检测密码正确性更改密码,键入“

11、更改密码”控制字后,与输入密码的流程相同,先选择灯管,待选定数字后跳至下一个,直到四位数字全部选定,然后键入“确认更改”指令,则密码更改成功。见附录:密码更改第 4 章 系统实现4.1 proteus 仿真实验11图 4-1 Proteus 仿真图如图 4-1,为本实验的 Proteus 仿真模拟图,整个实验共用到 8086CPU 一个、74LS245 一个、可编程并行接口 8255A 一个,74LS273 锁存器三个、74LS138 译码器一个、数码管一个、与非门两个、开关八个、电阻八个。第 5 章 与军事方面的联系电子密码锁对于军事方面有很大意义,应用也十分广泛。部队的许多地方都比较重要,

12、比如弹药库、武器库,和一些存放有关于军事机密的地方等,除了要有人看管以外,还要上锁,而对于普通的锁来说,电子密码锁无疑是较为便捷和安全的。用钥匙解锁的话,钥匙可能丢失,也可能被人偷去复制,安全性较低,而电子密码锁不用携带钥匙,只需要记住密码,也不用担心丢失和被他人窃取,在更换密码上电子密码比较方便;在外面的只有密码输入装置,遇到暴力破解时也能保证物品的安全。第 6 章 结论6.1 设计总结通过对电子密码锁的设计,从设计硬件电路到编写代码,再到对程序的调试,在整个的设计过程中学到了很多。例如,我们用到了 8255A 的并行接口,将二进制的控制信息传入 8086CPU 中处理,选择对密码是否正确进

13、行调整。与此同时,我们又通过这次产品的设计加深了对硬件知识的理解以及常用芯片功能的掌握。在使用 8255A 和 8253 的时候,要对其进行初始化,这初始化程序的编写,有助于对这些接口芯片的工作原理的理解。总之,在实验中自己动手,把理论知识用于实践,从中能够学到很多。6.2 收获与体会通过这一个多月以来对电子密码锁的硬件电路的设计,以及对软件程序的12编写,我们又对计算机硬件技术基础这门课程有了更深一层的理解。与此同时,我们还有如下收获:首先,我们能熟练掌握计算机硬件技术知识,其中包括硬件电路设计和软件编程设计等内容。计算机硬件技术基础是比较难学的科目,尤其是对那些没有过编程基础的学员来说,刚

14、开始接触时感觉力不从心。但是,通过设计这个电子密码锁,我组成员都能对硬件设计以及软件编程熟练掌握,并且能实现原计划的功能,效果比较显著。其次,增强了我们组员之间的团结协作的能力。通过实验,我们明白了团队力量的强大,只有一个团队能够齐心协力、合理分工,工作才能有条不紊的高效开展。最后,我们能够将自己设计的东西应用于实际生活当中,充分体现了它的价值。作为军校学员,我们有责任去开发设计有利于部队生活实际的东西,这也是我们每一个学员的义务所在。6.3 缺点与不足虽然在这次电子密码锁的制作中我们收获了很多,但是也不乏问题存在。首先,刚开始的时候分工不明确,导致制作进程比较缓慢。由于刚接触一门全新的课程,

15、再加上对程序的编写不是很熟悉,所以大家都不知道从何入手,没有明确的分工。随着教员对硬件知识的讲解,再结合平时的小组讨论与自我学习,大家对 C 语言基本理解。于是开始分配任务,有主攻硬件设计的,有软件编程的,也有 PPT 制作和论文编写的,以此提高了我们的效率。其次,由于我们知识积累不足,导致大家在制作中遇到很多困难,期出现厌烦心理,抱怨声音较多,甚至出现了分歧与争吵。当然,对于一个团队来说,出现矛盾是在所难免的,这时候作为组长更应该起到稳定军心的作用。大家在一起,从头来过,寻找解决问题的办法,一起攻克难关。最后,是制作时间比较少。由于我们身处军校这个特殊的环境,平时白天进行文化课的学习,下午又

16、有体能训练,所以自主时间比较少。我们平时的制作也只能利用晚自习、晚加班的时间进行,这同样也是影响制作进程的原因之一。13程序:#define GATE0 0x8000#define GATE1 0x8002#define GATE2 0x8004#define GATECOM 0x8006#define IOA1 0xc000#define IOB1 0xc002#define IOC1 0xc00414#define IOCC1 0xc006#define IOA2 0xD000#define IOB2 0xD002#define IOC2 0xD004#define IOCC2 0xD00

17、6char err1=0CH, 38H,38H,00H;char err2=77H, 67H,67H,0FFH;char cs=0b00000000,0b00000001,0b00000010,0b00000011;char num1=00H,0f3h,88h,0c0h,73h,44H,04H,0F0H,00H,40H;char num2=0ffh,0ffh,77h,77h,77h,77h,77h,0ffh,77h,77h;char yes1=0FFH,0FFH,0CH,44h,;char yes2=00H, 0DAH,77H,77h;void outp(unsigned int addr,

18、char data)/ Output byte to port _asm mov dx, addrmov al, dataout dx, alchar inp(unsigned int addr)/ Input byte from port char result;_asm mov dx, addrin al, dx15mov result, alreturn result;/void fun82531()_asmmov dx, 0x8006mov al, 0x37out dx, aloutp(GATE0,0x02);outp(GATE0,0x00);void fun82532()_asmmo

19、v dx, 0x8006mov al, 0x7716out dx, aloutp(GATE0,0x99);outp(GATE0,0x99);void delay(int s) unsigned int i,j;for(i=0;is;i+)for(j=0;j1000;j+); / 大约 s=20 延时 1s/* void yes()char tmp;int i;char yes1=0FFH,0FFH,0CH,44h,;char yes2=00H, 0DAH,77H,77h;char cs=0b00000000,0b00000001,0b00000010,0b00000011;tmp=inp(IO

20、A2);while(tmp=0xffed) tmp=inp(IOA2);for(i=0;i4;i+)outp(IOC1,csi);outp(IOA1,yes1i);17outp(IOB1,yes2i);delay(1);/*void fun82551()_asmmov dx, 0xc006mov al, 0x80out dx, alvoid fun82552()_asmmov dx, 0xD006mov al, 0x9bout dx, al18/*void err() / 密码错误char tmp;int i;char err1=0CH, 38H,38H,00H;char err2=77H,

21、67H,67H,0FFH;char cs=0b00000000,0b00000001,0b00000010,0b00000011;tmp=inp(IOA2);while(tmp=0xffed)tmp=inp(IOA2);for(i=0;i4;i+)outp(IOC1,csi);outp(IOA1,err1i);outp(IOB1,err2i);delay(1);19/* void chushihua(int r) / 复位int i;if(r=1)for(i=0;i4;i+)outp(IOC1,csi);outp(IOA1,num10);outp(IOB1,num20);delay(1);ch

22、ar xianshi()char tmp;char result;tmp=inp(IOB2);if(tmp=0xfffe)/020outp(IOA1,num10);outp(IOB1,num20);result=0;if(tmp=0xfffd)/1outp(IOA1,num11);outp(IOB1,num21);result=1;if(tmp=0xfffb)outp(IOA1,num12);outp(IOB1,num22);result=2;if(tmp=0xfff7)outp(IOA1,num13);outp(IOB1,num23);result=3;if(tmp=0xffef)outp(

23、IOA1,num14);outp(IOB1,num24);result=4;21if(tmp=0xffdf)outp(IOA1,num15);outp(IOB1,num25);result=5;if(tmp=0xffbf)outp(IOA1,num16);outp(IOB1,num26);result=6;if(tmp=0xff7f)outp(IOA1,num17);outp(IOB1,num27);result=7;tmp=inp(IOC2);if(tmp=0xfffe)outp(IOA1,num18);outp(IOB1,num28);result=8;if(tmp=0xfffd)outp

24、(IOA1,num19);outp(IOB1,num29);22result=9;return result;/*char change(int c) / 单纯的更改密码的函数char result;char tmp;outp(IOC1,csc);outp(IOA1,yes10);outp(IOB1,yes20); tmp=inp(IOA2);while(tmp!=0xfff5)tmp=inp(IOA2);result= xianshi();return result;/直接传出去改过之后的哪位数字,不管是更改密码还是输入密码,只管输出 23/*char genggaimima() /更改密码

25、 int c=0;char i1;i1= change(c);return i1; / 要求更改密码,直接更改第一位,并输出更改之后的第一位密码是多少 i=1,可以更改密码/*char huanwei(char c) /换位 c+;delay(50);return c; /传出去换位之后的位/*/*24char shurumima() /第一位输入密码 输入密码int c=0;char s1;/输入的第一位密码s1= change(c);return s1;/传出去第一位输入的密码 / void querengg(char shuru) / 显示输入之后的密码 ffdfint i,j,m;fo

26、r(j=0;j7;j+)for(i=0;i4;i+)m=shurui;outp(IOC1,csi);outp(IOA1,num1m);outp(IOB1,num2m);delay(1); int panduan1(char shuru,char mima)/判断 开锁 I 为 1,可以更25改密码 I 为 0 不允许更改密码int i;if(shuru0=mima0i=1;elseerr(); i=0; return i;int panduan2(char shuru,char mima,int t)/判断 错误超过 6 次,警报 t 为 错误密码次数 if(shuru0=mima0t=0;e

27、lse 26err(); t+; return t;/void main(void)int i1=0,i2=1,i3=2,i4=3;int s1=0,s2=1,s3=2,s4=3;int r=1; /变量 R 非常重要,只有当 R=1 时,才可以修改密码,初始化密码,在判断密码中,会返回一个 R,得知 R=1or0. !亮点int t=0;char mima100=0,0,0,0; /这两个数组是亮点char shuru100=0,0,0,0;char tmp;int c1=0; /更改密码的 led 位置 !亮点int c2=0; /输入密码的 led 位置fun82551();27fun8

28、2552();while(1)tmp=inp(IOA2);if(tmp=0xfffCmima0=0;mima1=0;mima2=0;mima3=0;if(tmp=0xffbdc1=huanwei(c1);mimai2=change(c1);c1=huanwei(c1);mimai3=change(c1);c1=huanwei(c1);mimai4=change(c1);28c1=0;int i,j,m;for(j=0;j25;j+)for(i=0;i4;i+)m=mimai;outp(IOC1,csi);outp(IOA1,num1m);outp(IOB1,num2m);delay(1);if(tmp=0xffdd) / 确认输入querengg(shuru);if(tmp=0x7d) / 重新输入 输入密码

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报