模拟密码锁 完整版 JJ.doc_第1页
模拟密码锁 完整版 JJ.doc_第2页
模拟密码锁 完整版 JJ.doc_第3页
模拟密码锁 完整版 JJ.doc_第4页
模拟密码锁 完整版 JJ.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 工 程 学 院 微机原理及应用 课程设计成绩评定表系(部): 电气工程系 班级: 发电本093 学生姓名: 文鹏 指 导 教 师 评 审 意 见评价内容具 体 要 求权重评 分加权分调研论证能独立查阅文献,收集资料;能制定课程设计方案和日程安排。0.15432工作能力态度工作态度认真,遵守纪律,出勤情况是否良好,能够独立完成设计工作, 0.25432工作量按期圆满完成规定的设计任务,工作量饱满,难度适宜。0.25432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.55432指导教师评审成绩(加权分合计乘以12) 分加权分合计指 导 教 师 签 名: 年 月 日答 辩 小 组 意 见评价内容具 体 要 求权重评 分加权分报告内容思路清晰,语言表达准确,概念清楚,论点正确;分析归纳合理;结论严谨;设计具有应用价值。0.25432答辩回答问题有理论根据,基本概念清楚。主要问题回答准确、深入。0.55432说明书的质量说明书立论正确,论述充分,结论严谨合理,文字通顺,技术用语准确,符号统一,编号齐全,图表完备,书写工整规范。0.35432评阅教师评审成绩(加权分合计乘以8)分加权分合计评 阅 教 师 签 名: 年 月 日课 程 设 计 总 评 成 绩分中 文 摘 要 随着科学技术的发展和高新技术的广泛应用,电子技术在国民经济的各个领域所起的作用越来越大,并深深地渗透到人们的生活、工作、学习的各个方面。同时在工业领域,为防止他人误操作而利用电子锁进行加密的机械控制也得到了广泛的应用。本设计就是利用8255、8254、电子发声单元和发光二极管等制作了一款多功能密码锁。在输入密码正确的条件下,控制电控锁开启(用发光二极管亮来代替),同时显示”O”字样;当输入密码错误时,发出错误警告声音,同时显示”C”字样,并报警。密码锁的设计,硬件方面,最难的就是键盘值的确定及LED数码管的显示,本设计采用扫描法来解决键值读取;软件方面,最主要的则是取出键盘输入值,和已知密码比对等。关键字:模拟密码锁,扫描法,密码比对目录课程设计任务书课程设计成绩评定表中文摘要.I1 总体设计.1 1.1 模拟密码锁原理 .1 1.2 初步设计思路.12 硬件设计.2 2.1 LED数码块模板.2 2.2 按键模块.4 2.3 报警模块和发光二级管模块.53 软件设计.6 3.1 软件概要设计.6 3.2 功能模块详细设计.6 3.3 程序流程图.94 系统测试分析.11 总结体会.12 致谢.13 参考文献.141 总体设计1.1模拟密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将锁打开,显示“O”字样,同时数码灯亮;错则LED显示“C”字样,并发出声音报警。1.2初步设计思路如下:1输入密码用矩形键盘。2LED数码管显示输入密码,采扫描法确定具体按键。3用发光二极管模拟锁的情况,锁时发光二极管灭,打开时发光二极管亮。4输入密码错误时报警。软件的设计主要包括矩形键盘键值的读取、LED扫描输出程序、密码判断程序和报警程序。系统硬件电路图如1.1所示:图 1.1 系统硬件电路2 硬件设计根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。硬件电路由LED数码管显示模块、按键模块、发光二极管电路和蜂鸣器模块组成。2.1 LED数码块模板实验平台上提供一组四个LED数码管。七段LED数码管由名称为abcdefg的7个笔画段和一个圆点dp组成,这7个笔画段在点亮时,可以显示数字和一些简单的西文字符。本设计用8255的PB口作为输出,和7段LED数码管的abcdefg和dp相连,8255的A口低四位PA0PA3和LED列线连接,共同来控制内容的显示。数码灯的示意图如图2.1所示。 图2.1 LED数码管正面图本程序是用的共阳极,从上图可以看出,要使数码管显示数字,有两个条件:(1) 要在COM端加正电源;(2) 要使(a、b、c、d、e、f、g、dp)端接低电平或”0”,这样才能显示。LED数码管上显示的数字,必须经过转换,才能显示正确的字样。常用字符共阴极、共阳极时的段码即编码表,如表2.1所示。 表 2.1 段码表本设计中,LED数码管的连线如图2.2所示。由于a、b、c、d、e、f、g、dp分别和8255B口的PB0PB7相连(8255的控制字假设初始化为81H)。那么假如我现在已经选中了一个数码管,如果我要输出一个0,那么我只要写下如下代码段: MOV DX,MY8255_B ; MY8255_B为B口的端口地址 MOV AL,3FH OUT DX,AL这样,即可在该选中数码管上显示一个字符0。图2.2 LED灯示意图2.2 按键模块实验平台提供了2*4的矩阵键盘。为了检测键盘是否有键按下及具体按下了那个键,本设计使用列扫描法。分两步:(1)查询是否有键按下 将所有列线置成低电平0,然后通过行线输入全部行值,若读入的行值全是1,则说明没有任何一个键按下;若读入的行值不全是1,则说明有键按下。也就是说,在键盘识别的开始先进行全扫描,若有键按下,则必须判别是哪个键按下。 (2) 一旦发现有键按下,则采用逐列扫描的办法来确定究竟是那个键被按下。先扫描第一列,也就是使它输出低电平0,其余的列线为高电平1,然后读入行值。若读入的行值中有一位为低电平0,则说明在此行的一个行、列交叉处有键被按下。若读入的行值全是1,则说明这一列所有键都未被按下。接着扫描第二列。依此类推,直到扫描完全部的行线为止。若在扫描过程中发现非全1的行值,就能找出被按下键的位置。 在处理按键模块中,必须要解决的问题是,如何解决键抖动、重键、一次按键多次处理,及键值的确定。前面三个问题,用软件的方法,很容易实现。可以用多次扫描,延时来消除干扰。而键值的确定,也使用了一点儿技巧。键的行列值不是该键所对应的键值,那么CPU如何根据行、列值得到所按下键的键值呢?最方便的方法是利用按键所在的行、列值,形成一个查表值。然后,查表得到相应的键值。本设计用8255的C口低四位PC0PC3连接键盘的行线,接收键盘的输入;A口的低四位PA0PA3作为和数码管及键盘的共阴极线连接。键盘物理结构示意图如图3.3。图2.3 键盘物理结构键盘和8255的电路连线如图2.4所示。图2.4 键盘电路和8255的连接图2.3报警模块和发光二极管模块报警模块由SPK电子发声单元和8254组成。当密码输入错误时,8254发出方波脉冲,驱使电子发声单元发声。发光二极管也是用8255输出来驱动亮灭。8255的A口高四位和发光二极管连接。当输入密码正确的时候,灯亮,以示锁打开,就是给PC4PC7赋值。3 软件设计3.1软件概要设计模拟密码锁的设计,最重要也是最难的部分,就是软件的设计。很多地方都要采用技巧性的东西。如按键次数的确定,键盘抖动的消除等等。密码锁工作的主要过程是PC屏幕输出提示开始输入密码,通过2*4键盘输入密码,同时LED显示密码输入情况,按下3次键后判断密码的正确性,作出开锁或报警处理。3.2功能模块详细设计根据程序功能,程序大致分为键盘键值读取显示,密码判断和开锁或报警处理几个大的子过程。(1)键盘键值读取程序键盘键值读取程序包括键盘扫描、消除抖动、键译码等内容。本设计采用了扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,在程序中要加入消除抖动的部分。因此程序的布局就显得很重要。为了防止键抖动、重复响应,在初步扫描是否有键按下时,都是调用CALL DIS、CALL CLEAR、CALL CCSCAN,即是显示,清屏,扫描,重复两次,然后再跳转到获取具体键值的代码段。(2)LED数码显示程序 LED数码显示器是一种应用很普遍的显示器。程序主要负责把要显示的数字或字母对应的显示码送到相应的LED显示管。显示子程序如下:DIS PROC NEAR ;显示键值子程序 PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显示 MOV SI,3000H MOV DL,0F7H MOV AL,DLAGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;设置X1X4,选通一个数码管 MOV AL,SI ;取出缓冲区中存放键值 MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX MOV AL,BX ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_B OUT DX,AL ;写入数码管ADp CALL DALLY INC SI ;取下一个键值 POP DX MOV AL,DL TEST AL,01H ;判断是否显示完? JZ OUT1 ;显示完,返回(jz:zf = 1跳转) ROR AL,1 MOV DL,AL JMP AGAIN ;未显示完,跳回继续OUT1: POP AX RETDIS ENDP(3)密码判断程序当按下3次键后,按键计数值count为6,则跳转到密码比对代码段。从3003H开始处,读取键盘数输入据,与预先设定的密码逐位比较,就可以判断输入密码的正确性。代码段如下:pwd:;从开辟的缓冲区内读出键盘输入的值,和已知密码逐个比对mov si,3003hmov di,offset pwdmov al,simov bl,dicmp al,blje next1jmp show1next1:mov si,3002hmov al,simov bl,di+1cmp al,blje next2jmp show1next2:mov si,3001hmov al,simov bl,di+2cmp al,blje next3jmp show1next3:mov si,3000hmov al,simov bl,di+3cmp al,blje show2jmp show1(4)开锁和报警程序通过8255的A口高四位输出,控制发光二极管的亮灭。用8254控制电子发声单元鸣叫。发声子程序如下:ring procBEGINr: MOV SI,OFFSET FREQ_LIST ;装入频率表起始地址 MOV DI,OFFSET TIME_LIST ;装入时间表起始地址PLAY: MOV DX,0FH ;输入时钟为1.0416667MHz,1.0416667M = 0FE502H MOV AX,0E502H DIV WORD PTR SI;取出频率值计算计数初值,0F4240H / 输出频率 MOV DX,MY8254_COUNT0 OUT DX,AL ;装入计数初值 MOV AL,AH OUT DX,AL MOV DL,DI ;取出相对时间,调用延时子程序 CALL DALLYr ADD SI,2 INC DI CMP WORD PTR SI,0 ;判断是否到悄? JE BEGINr MOV AH,1 ;判断是否有按键按下? INT 16H JZ PLAYQUITr: MOV DX,MY8254_MODE ;退出时设置8254为方式2,OUT0置0 MOV AL,10H OUT DX,AL MOV AX,4C00H ;返回到DOS INT 21Hring endp3.3程序流程图由程序的功能模块详细设计可得程序流程图,如图3.3。图3.3程序流程图4 系统测试分析系统完成后,连线测试。结果如下:(1)编译、连接、运行程序,按下PC键的F2键,退出,返回到DOS。(2)按下PC键的F1键,PC屏幕上打印信息,提示转入4*4键盘输入。(3)在键盘上输入密码540262,开锁。发光二极管亮,模拟锁打开,LED显示字符“O”,以示开锁成功。O表示Open.(4)在键盘上输入其它6位数字,开锁失败。电子发声单元蜂鸣,LED显示字符“C”,以示开锁失败。C表示Close.经过多次测试,都能够达到上述结果,并完成下面的功能。密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同时显示OPEN字样。当输入密码错误时,发出错误警告声音,同时显示CLOSE字样。当三次误码输入的条件下,产生报警电平报警。还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。总结体会本模拟密码锁的设计主要由8255、8254、电子发声单元、4*4矩阵键盘、七段LED数码管和发光二极管组成。通过仔细思考,设计了其原理图。这次模拟密码锁的设计,难点在于其软件设计。这两周的时间,我下了很大的功夫在键盘的处理,7段LED数码管显示及密码比对上面。虽然顺利的解决了前面的几个问题,程序却也并不完美。我觉得最大的遗憾就是没能完全实现密码的修改和错误计数。汇编程序大多都是标签式的,在开始设计程序流程时,就遗漏了错误计数和密码修改。所以,待整个程序完成后,也很难再补漏。这,大概是因为自己对汇编程序设计经验的不足所致吧。通过近两周的设计,我学到了许多知识。把课本上的知识应用于实际,使得理论与实际相结合,加深了对课本上知识的理解。期间,也经常到图书馆查阅资料,增加了许多课本以外的知识,也锻炼了我个人的动手能力。思想上,也让我收获颇丰。做一个系统的设计,期间,会遇到许许多多的技术问题,遇到许多障碍。情绪难免会低落。这个时候,就需要保持乐观的心态,对自己有信心。确定一天的目标,一天进步一点,一天解决一个问题。积累下来,总会成功的致谢在这个课程设计中,我首先要感谢曲乐声老师与踪念品老师的悉心指导,以及组员间的密切配合。设计过程并不顺利,我们遇到了许多问题,不过老师及组员帮助我解决问题。我们做

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论