为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > [应用]密码输入键盘

[应用]密码输入键盘

2018-08-23 17页 doc 126KB 12阅读

用户头像

is_180829

暂无简介

举报
[应用]密码输入键盘[应用]密码输入键盘 目录 摘要 ......................................................... I 1 设计要求及其简明思路 ....................................... 1 1.1 设计说明 ............................................... 1 1.2 设计思路 ............................................... 1 2 密码输入键盘具体设计方法 ...
[应用]密码输入键盘
[应用]密码输入键盘 目录 摘要 ......................................................... I 1 要求及其简明思路 ....................................... 1 1.1 设计说明 ............................................... 1 1.2 设计思路 ............................................... 1 2 密码输入键盘具体设计方法 ................................... 2 2.1 可编程并行接口芯片8255A基本简介 ....................... 2 2.1.1 8255A的内部结构及功能简介 .......................... 2 2.1.2 8255A的管脚分配 .................................... 3 2.1.3 8255A工作方式及其编程简介 .......................... 3 2.2 硬件接口电路原理 ....................................... 4 2.2.1 键盘接口原理电路图 ................................. 4 2.2.2 键盘扫描法及程序处理的任务 ......................... 5 2.2.3 红绿灯显示电路部分 ................................. 6 2.2.4 硬件连接电路图 ..................................... 7 2.3 软件设计 ............................................... 8 2.3.1 软件设计思路 ....................................... 8 2.3.2 程序流程图 ......................................... 8 结束语 ...................................................... 10 致谢 ........................................................ 11 参考文献 .................................................... 11 附录 ........................................................ 12 附录1、设计程序清单 ....................................... 12 附录2、成绩评定表 ......................................... 14 摘要 微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,即是遵循冯?诺依曼基本思想的。学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日常中经典的控制程序。本文主要是针对接口技术方面问题的一种设计方法,通过对8255A这个可编程并行接口芯片的所学知识,来扩展一外接小键盘,并能够通过此键盘输入数据进行密码校正并带有红绿灯显示的功能。 本设计主要是通过软硬件结合的方法来加以实现所要求的功能的,利用8255A端口单独作为输入/输出的功能同时实现扩展键盘和外接红绿灯显示的功能。其中,键盘键值的扫描是一个主要注意的问题,另外,密码比较和防抖延时等子程序也是一个应该关心的问题,解决了这部分关键点也就能很好的解决本设计要求。 关键字:8255A 键盘 密码校验 红绿灯显示 密码输入键盘 1 设计要求及其简明思路 1.1 设计说明 本文设计要求是建立在可编程并行接口芯片8255人机交互接口之“键盘接口”技术电路基础之上的,通过8255三个并行输入/输出端口、以及利用8255的三种工作方式,来扩展一个外接小键盘,并且能通过此外接键盘输入数字进行红绿灯校验,整个电路能够实现的功能就是:键盘包括数字键“0,9”和功能键“确认、取消”;程序设定初始密码,当输入的密码同初始密码相同时绿灯亮,当输入的密码错误时红灯亮。 1.2 设计思路 本文设计的思路也就能够围绕题目要求以及所学关于8255可编程并行接口芯片的知识得出解决此题的基本方法,简明介绍如下:通过8255基本输入输出端口C口七根I/O接口线分成3×4行列形式外接12个键的矩阵式键盘电路,12个键的功能通过相应的程序进行控制,最终实现有0,9等10个数字键和确认、取消等2个功能键;另外,设定一个四位数字的初始密码,同初始密码进行比较的过程即为:从扩展的外接键盘输入数字直到按确认键后才使输入完毕输入的数据存入缓冲区、按取消即可清除之前输入的数字还可以重新输入数字直到按确认为止;输入的数据通过8255传送到CPU,再由CPU通过程序同初始密码确认比较,如果比较正确则8255通过B口输出使绿灯亮,否则红灯亮。 本设计要完成的任务需要通过软、硬件设计来完成。软件设计需要实现键盘键值的读取、密码判断程序以及LED显示程序;硬件设计则需要硬件实验平台上相应的硬件电路模块,包括键盘模块、LED发光二极管显示模块。 2 密码输入键盘具体设计方法 2.1 可编程并行接口芯片8255A基本简介 8255A是一种通用的可编程并行I/O接口芯片,具有3个带锁存或缓冲的数据端口,可与外设并行进行数据交换。用户可用程序来选择多种操作方式,它的各端口内具有中断控制逻辑,为外设与CPU之间的信息交换提供了方便。 2.1.1 8255A的内部结构及功能简介 8255A芯片内部结构图如下图1所示,我们可以看到该芯片含有3个8位的控制端口,即A口、B口和C口,这三个端口可以作为CPU与外设通信时的缓冲器或锁存器,其中,一般情况下,作为缓冲器使用时就是输入接口,作为锁存器使用时是输出接口。 图1 8255A的内部结构图 其实,8255A的三个端口实际上只有两组控制部件,其中将C口八位分成高低各四位分别同A口、B口组合形成A组、B组两种独立的控制部件,它们可以同时接收来自读/写控制电路的命令和CPU送来的控制字。另外,8255A的数据总线缓冲器和读/写控制电路分别实现了8255A与CPU之间的联系,具体功能将在以下各节指出。 2.1.2 8255A的管脚分配 8255A是一个的40管脚芯片如图2所示,可以分为三个部分:与外设连接的I/O线,与CPU连接的总线,以及电源线。本设计中需要使用到与外设连接的各个端口,用于连接小键盘的C口和PB0口红绿显示灯。其中与CPU连接的8、9管脚决定了8255A的工作方式,本设计中采用的8255端口地址是奇地址即8255的A0、A1的管脚连接CPU的A0、A1管脚,CPU通过对8255A管脚的控制来控制其各个端口的工作方式。 图2 8255A的管脚分布图 2.1.3 8255A工作方式及其编程简介 8255A有三种工作方式:方式0,,基本输入输出,方式1,,选通输入输出,方式2,,双向传输方式。本设计要使用该芯片来扩展小键盘,并实现密码校验的功能,为此,我们必须掌握8255A该芯片的编程方式,因为只有通过相应的软件来定义端口的工作方式,选择所需要的功能,硬件电路才能得以实现。首先对8255A的源程序初始化及其程序编程 应该有所了解,然而对其的初始化就必须使用到8255A的各种工作方式及其端口的地址,以便进行程序的控制。为此须要了解8255A的控制命令即其方式控制字,关乎8255A的端口工作情况。其基本规格如下各表所示: 表1方式控制字 表2 A口工作方式选择 表3 A口I/O选择 输入/输出选择 D7 D6 D5 D4 D3 D2 D1 D0 A口工作方式 D4 D6D5 方式0 A口为输出 00 0 1 A口为输入 方式1 1 01 1× 方式2 表4 C口上半部I/O选择 表5 B口工作方式选择 表6 B口I/O选择 表7 C口上半部I/O选择 B口工作方式 输入/输出选择 D2 D1 输入、输出选择 输入、输出选择 D3 D0 B口为输出 0 B口为输出 C口高4位输出 0 C口低4位输出 0 0 B口为输入 B口为输出 1 1 C口高4位输入 C口低4位输入 1 1 本设计采用B口PB0端口输出外接显示灯,当管脚信号为低电平时绿灯亮表示输入的数据同初始设置的值相同,相反当其管脚输出为高电平时红灯亮表示输入的数据同初始设置的值不同。C口外接矩阵式键盘并且采用扫描法进行键盘信息的读取,通过使用的方式不同可以得出8255A可编程并行接口芯片的控制方式,在8255A的初始化及其编程当中需要用到。 2.2 硬件接口电路原理 2.2.1 键盘接口原理电路图 由于本题设计要求要用户扩展的键盘按键有数字键0,9和功能键等共12个,因此键盘电路采用独立式键盘将会占用很多的I/O线从而不实用。故采用矩阵式键盘电路来扩展带有12个按键的小键盘比较合适,根据本题要求只需3×4方式的矩阵即可,故其原理电路图如下图3所示: +5V 8255 0 1 2 3 PC0 4 5 6 7 PC1 PC2 8 9 10 11 PC3 PC4 PC5 PC6 PC7 图3 矩阵式键盘电路原理图 矩阵式键盘电路其特点是由按键组成一个矩阵,矩阵的行线和列线分别作为两个传输方向相反的I/O接口信号线,如行线作为输入接口信号线,列线作为输出接口信号线,或反之。用独立式键盘相比这种电路所需要的I/O线很少,但键盘容量很大,按题目设计要求,本设计题只需用到C口的七根输入/输出线,组成3×4式的矩阵即可达到要求组成带有12个按键的小键盘。 2.2.2 键盘扫描法及程序处理的任务 虽然矩阵式键盘对CPU的硬件资源要求不多,但相应的软件相对要复杂,目前扫描键盘识别键号的方法有两种,即扫描法和翻转法。其实现思想基本简介如下:扫描法是设定行线输出列线输入,行线逐行输出0,如果某列有按键则列线输入为0;若无键按下列线输入全部为1,这样根据行线和列线提供的信息就可以确定是哪个键被按下。翻转法实现思想是行、列线交换输入、输出,先输出一组所有为0的行值,读取列值并判断是否有0的位,后出输出所有为0的列值,读取行值并判断是否有0的位,从而两步进行确定获取键位置信息。因此,这种方法要比扫描法效率高,本设计中采用的也是翻转法进行键盘信息的读取。其中,键盘的扫描同键位的确定有如下表8所示的关系,扫描的程序将在附录中给出。 表8 3×4行列式键盘的按键编码表 按键 键 码 按键 键 码 行值 列值 行值 列值 0 1110 1110 6 1101 1011 1 1110 1101 7 1101 0111 2 1110 1011 8 1011 1110 3 1110 0111 9 1011 1101 4 1101 1110 10(确认) 1011 1011 5 1101 1101 11(取消) 1011 0111 其中,功能按键只需要通过相应的程序进行调用说明即可,其按键功能如下表9所示: 表9 按键对应的键名及其功能 按 键 键 名 功能说明 0,9键 数字键 用于输入密码 10键 确认键 当扫描到此键时结束扫描,即输入结束 11键 取消键 当扫描到此键是重新扫描,即重新输入密码 键盘处理程序的任务主要包括步骤如下:键输入、键译码和键处理三步。其中,键输入是键盘处理程序最主要的工作,由于键盘的机械结构,当键按下或松开时,键将有一个抖动过程,因此键输入的首要工作就是检查键盘是否有键被按下,消除按键抖动。然后再确定被按的键在矩阵中的位置,获取键号。消除抖动的方法可以采用软件延时。延时程序将在附录中给出。 2.2.3 红绿灯显示电路部分 由于设计的要求,需要通过扩展小键盘来输入数据并且与初始密码进行比较,要求相同时绿灯亮,若输入的数据同初始密码不同则红灯亮。故可以通过8255A端口输入/输出的功能加上相应的程序来进行实现,本设计采用B端口的一个输出端口通过非门的选择来实现红绿灯的选择亮灭,其部分接口电路如下图图4所示: 图4 红绿灯显示电路部分电路图 其中,红绿灯显示的原理是:当密码比较正确时绿灯D1亮,即B口PB0输出应该为0,所以B口输出为00H;当密码比较错误时红灯D2亮,即B口即PB0输出应该为1,所以B口输出为01H。其实现红绿灯亮的部分程序段如下: MOV AL,00H ;绿灯亮 MOV DX,B_PORT OUT DX,AL MOV AL,01H ;红灯亮 MOV DX,B_PORT OUT DX,AL 2.2.4 硬件连接电路图 由以上分析可以知道,整体电路设计图如下图图5所示,由于proteus仿真软件中没有8086CPU,因此使用了Z80CPU来代替。另外,由于所学知识的有限只能连接出部分的电路原理图如图5所示。 8255A 图5 输入接口电路 2.3 软件设计 2.3.1 软件设计思路 密码输入键盘的主要功能是实现8255A扩展的小键盘,通过输入数据同初始设置的密码比较,若密码比较的相同则绿灯亮,否则红灯亮。其中,初始设置为四位数字的密码,数据的键入通过扩展的小键盘来实现,当输入的数据在0,9之间时,输入正常并把数据寄存在缓冲区BUFF2中,当扫描到的数据为10时,则执行确认功能即退出扫描读数,若扫描到的数据为11时,则执行取消功能即重新扫描读取输入的数据。 其中,主程序为键盘的扫描读取从键盘输入的数据,即通过扩展矩阵式键盘翻转扫描法将扫描的键码值转化为相应的键号值,数据键为0,9,功能键有确认取消键,也即当扫描到输入的值为10时,通过程序控制使其转化为确认的功能,当扫描到的键值为11时即实现取消的功能。子程序有消除抖动的延时程序和密码比较调用红绿灯显示输出的程序;消除抖动的延时程序,主要利用软件延时的方法即通过循环方式的控制来实现延时以消除按键的抖动。 2.3.2 程序流程图 由以上分析该设计分为主、子程序两部分,故主、子程序流程图分别如下图6、图7所 示: 开始 开始 取存密码缓冲区的偏移地址SI 8255初始化 设置循环次数CX=4 读键盘 N 与初设密码等否 有键按下否 N Y 红灯亮 Y N CX是否为0 调用延时子程序 或者SI为4否 读取键值 Y 绿灯亮 键值是否为11 Y N 结束 键值是否为10 Y 图7 密码比较及灯显示子程序流程图N 键值存入BUFF2 调用密码比较子程序 图6 主程序流程图 结束语 在本次的课程设计中,整体思路比较明确、设计的步骤也比较顺畅,由于有过课程设计的基础,对说明的书写格式也方便了许多,没有第一次时的那种种麻烦以及困难,同时通过这次的课程设计也让我对微机接口方面的知识有了进一步的了解,而且也更加熟悉了汇编语言所运行的软件环境,同时通过软件环境的调式运行可以检验自己的程序是否正确,由于本次设计涉及到硬件方面的知识,因此,也需要对硬件电路的检验也就促使自己学习仿真软件,本次设计中我主要使用的仿真软件有proteus和keil c51等两种,后者软件主要用来烧制可运行的程序以生成HEX文件,以便直接可以导入CPU来检验硬件电路的正确如否。通过本次课程设计,给我最大的收获也就在于此了,了解到更多的软件知识以及对所学的软件编程知识进行了巩固。 同时,通过本次课程设计让自己明白了自己所存在的不足以及急需要加强练习的地方。首先,拿到设计要求的第一个问题就是不知道如何着手编写键盘读键的程序,虽然通过看书能够明白8255A是如何扫描键盘并读取键号信息的,但是,其中遇到很多小问题无法想明白,思维进入了死胡同似乎就转不过弯来。但是,随着不断的查找资料以及翻阅书籍慢慢明白了过来。之后,一个问题解决了另一个问题又随之而来,能够扫描也能够读取键号信息了,可是8255A所读取的键号信息又存储在哪里,后一次扫描的数据会把前一次扫描的数据覆盖,应该用什么样的程序将扫描到的数据截取出来并且存入自己设置的缓冲空间当中,最后,通过各种学习的手段问题也逐一解决的差不多了。 致谢 在本次的课程设计中,不仅加强了所学的知识而且了解到了不少未曾使用过的软件环境,同时,在此课程设计期间,我所遇到的问题不仅仅通过自己查阅资料而获悉,更大的帮助要来自于向馗老师、李志俊老师和班里的同学们。向馗老师建立群为大家提出问题提供了方便;李志俊作为我们的微机课程老师,由于对于我们所学知识的程度比较了解,对于我们提出的关于此次课设的问题,他也给出了我们合理解答;同学之间的讨论也更加让自己模糊的问题得以简单化、明白化,在此感谢他们。 参考文献 [1]周佩玲,彭虎,傅忠谦.微机原理与接口技术(基于16位机).北京:电子工业出版社,2005.4 [2]汤书森.微机原理接口实验与实践教程.北京:清华大学出版社,2008.7 [3] 杨文武.微机原理与接口技术实验与课程设计.城都:西南交通大学出版社,2005.10 [4]王为青、邱文勋.51单片机应用开发案例精选.北京:人民邮电出版社,2007.8 [5] 朱定华.微机原理、汇编与接口技术.北京:清华大学出版社,2005.8 [6] [7] 附录 附录1、设计程序清单 A_PORT EQU 80H B_PORT EQU 81H C_PORT EQU 82H CTRL_PORT EQU 83H DATA SEGMENT BUFF1 DB 0,7,1,2 BUFF2 DB 4 DUP(0) DATA ENDS SEGMENTCODE ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX LEA SI,BUFF2 MOV AL,88H ;设定行(C口低四位)输出,列(C高四位)输入 OUT CTRL_PORT,AL MOV AL,8 ;行输出为零即低四位1000,列输入信号j OUT C_PORT,AL MOV CX,200 ;设定扫描键盘读入数据的次数,可为200次 NO_KEY:IN AL,C_PORT ;键盘部分程序,判断是否有键按下 AND AL,0F0H CMP AL,0F0H ;列信号是否全为1,是无键按下并返回扫描,不全为1有键按下 JZ NO_KEY CALL DELAY10MS ;有键按下调延时 IN AL,C_PORT SHR AL,1 ;把列信息移到低四位,逻辑右移空位补0 SHR AL,1 SHR AL,1 SHR AL,1 MOV DL,0 ;设置初始变量DL为0,用于计数列为0的信号即DL,j MOV CX,4 LOOP1:SHR AL,1 ;此循环为逐列检查,找出输出为0的列信号j JNC LOOP2 ; cf=0即移出的位为0,则跳 INC DL LOOP LOOP1 LOOP2:MOV AL,81H ;设定列为输出,行为输入 OUT CTRL_PORT,AL MOV AL,0 ;列输出为0,输入行信号i OUT C_PORT,AL IN AL,C_PORT AND AL,0FH CMP AL,0FH ;检查行信号是否全为1,是返回,否继续下步 JZ LOOP2 ;若行信号全为1,则重新扫描行信号 MOV DH,0 ;设置初始行变量DH为0,用于计数行为0的信号即DH,i MOV CX,3 LOOP3:SHR AL,1 ;该循环为逐行检查,找出0的行信号i JNC LOOP4 INC DH LOOP LOOP3 LOOP4:SHL DH,1 ;计算键号,4i,j SHL DH,1 ADD DH,DL ;DH为键号 CMP DH,0AH ;键号为10则结束输入 JZ FINISH CMP DH,0BH ;键号为11取消重新输入 JZ NO_KEY MOV BUFF2[SI],DH ;键号为0,9的键则存入缓冲区BUFF2 INC SI LOOP NO_KEY ;再次扫描输入第二个数 CALL MMBJ ;调用密码比较程序 DELAY10MS PROC ;调用10毫秒延时子程序 DELAY:MOV CX,2801 WAIT:LOOP WAIT RET DELAY10MS ENDP MMBJ PROC ;调用密码比较子程序 MOV DI,OFFSET BUFF1 MOV SI,OFFSET BUFF2 MOV CX,4 A1: MOV AL,[DI] CMP AL,BUFF2[SI] JNZ A2 ;密码不同比较结束且红灯亮,否则继续比较全部相同绿灯亮 INC DI INC BX LOOP A1 MOV AL,00H ;PB0为低电平,绿灯亮 MOV DX,B_PORT OUT DX,AL A2: MOV AL,01H ;PB0为高电平,红灯亮 MOV DX,B_PORT OUT DX,AL RET MMBJ ENDP FINISH:MOV AH,4CH INT 21H CODE ENDS END START 附录2、成绩评定表 本科生课程设计成绩评定表 姓 名 性 别 女 廖蓝州 专业、班级 自动化0604班 课程设计题目: 密码输入键盘 课程设计答辩或质疑记录: 1,8255A有哪些工作方式,其控制字用途是什么, 答:有三种工作方式0,2即基本输入/输出方式、选通输入/输出方式、双向传出方式;其用途是在8255A的初始化编程过程中需要使用到控制字,以使8255A开始工作,对各个端口进行信息的传送。 2,8255A键盘扫描的原理是什么,如何确定键码与键值之间的对应关系, 答:采用翻转法进行键盘的扫描,即先设定行为有效再逐列检查列有效信号,后设列有效再逐行检查有效信号,其中设为低电平为有效信号,从而通过行、列线交换输入、输出两步即可获取键位置信息。通过行列信息的扫描有唯一的有效位,对照行列的值用4倍的行值加上列值就可算出该键的键号值。 3,8255A键盘的扫描时间有哪些要求, 答:一般来说键盘扫描的速度是很快的,但作为要求扫描的速度至少比外输入按键的速度快,否则在扫描键值时有可能扫描不到所按下的键或错过了所按键的位置,因此在扫描键盘的识别程序中要加如相应的程序以控制扫描的时间。 成绩评定依据: 评 分 项 目 分值 评分 1(选题合理、目的明确 10 2(设计正确,具有可行性、创新性 20 3(设计结果(例如:硬件成果、软件程序) 25 4(态度认真、学习刻苦、独立完成任务 15 5(设计报告化、参考文献充分(不少于5篇) 10 6(答辩 20 总分 最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字:
/
本文档为【[应用]密码输入键盘】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索