《《微机原理与接口技术》课程设计密码小键盘 .doc》由会员分享,可在线阅读,更多相关《《微机原理与接口技术》课程设计密码小键盘 .doc(18页珍藏版)》请在三一办公上搜索。
1、课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 密码小键盘 课程设计的目的:本课程设计教学所要达到的目的是:1、培养学生理论联系实际的设计思想,提高学生综合运用汇编语言课程的理论分析问题、解决问题的能力。2、通过查找、运用设计资料,完成工程设计所必备的基本训练。3、使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。课程设计的内容和要求: 本次课程设计要求是建立在可编程并行接口芯片8255人机交互接口之“键盘接口”技术电路基础之上的,通过8255的三个并行输入/输出端口、以及利用8255的三种工作方式,来扩展一个外接小键盘,并
2、且能通过此外接键盘输入数字进行红绿灯校验,整个电路能够实现的功能就是:键盘包括数字键“09”和功能键“确认、取消”;程序设定初始密码,当输入的密码同初始密码相同时绿灯亮,当输入的密码错误时红灯亮。时间安排:1、 课程设计任务书的布置,讲解 (一天)2、 根据任务书的要求进行设计构思(一天)3、 编程调试(两天)4、 撰写说明书 (两天)5、 课程设计答辩(一天)指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要31 设计要求及其简明思路41.1 设计说明41.2 设计思路42 密码输入键盘具体设计方法52.1 可编程并行接口芯片8255A基本简介52.1.1 8255A的
3、内部结构及功能简介52.1.2 8255A的管脚分配62.1.3 8255A工作方式及其编程简介62.2 硬件接口电路原理82.2.1 键盘接口原理电路图82.2.2 键盘扫描法及程序处理的任务82.2.3 红绿灯显示电路部分92.2.4 硬件连接电路图112.3 软件设计112.3.1 软件设计思路112.3.2 程序流程图12结束语13参考文献14附录15附录1、设计程序15摘要微机原理与接口技术作为计算机科学领域的基础知识,尽管计算机科学高速发展,但基本原理依然不变,即是遵循冯诺依曼基本思想的。学习并能掌握好微机原理与接口技术这门知识是非常重要的,通过对这门知识的了解可以简单的编写一些日
4、常中经典的控制程序。本文主要是针对接口技术方面问题的一种设计方法,通过对8255A这个可编程并行接口芯片的所学知识,来扩展一个外接小键盘,并能够通过此键盘输入数据进行密码校正并有红绿灯显示的功能。本设计主要是通过软硬件结合的方法来加以实现所要求的功能,利用8255A端口单独作为输入/输出的功能同时实现扩展键盘和外接红绿灯显示的功能。其中,键盘键值的扫描是一个主要的问题,另外,密码比较和防抖延时等子程序也是一个应该关心的问题,解决了这部分关键点也就能很好的解决本设计要求。关键字:8255A 键盘 密码校验 红绿灯显示密码输入键盘1 设计要求及其简明思路1.1 设计说明本文设计要求是建立在可编程并
5、行接口芯片8255人机交互接口之“键盘接口”技术电路基础之上的,通过8255的三个并行输入/输出端口以及利用8255的三种工作方式,来扩展一个外接小键盘,并且能通过此外接键盘输入数字进行红绿灯校验,整个电路能够实现的功能就是:键盘包括数字键“09”和功能键“确认、取消”;程序设定初始密码,当输入的密码同初始密码相同时绿灯亮,当输入的密码错误时红灯亮。1.2 设计思路本文设计的思路也就能够围绕题目要求以及所学关于8255可编程并行接口芯片的知识得出解决此题的基本方法,简明介绍如下:通过8255基本输入输出端口C口七根I/O接口线分成34行列形式外接12个键的矩阵式键盘电路,12个键的功能通过相应
6、的程序进行控制,最终实现有09等10个数字键和确认、取消等2个功能键;另外,设定一个四位数字的初始密码,同初始密码进行比较的过程即为:从扩展的外接键盘输入数字直到按确认键后才使输入完毕输入的数据存入缓冲区、按取消即可清除之前输入的数字还可以重新输入数字直到按确认为止;输入的数据通过8255传送到CPU,再由CPU通过程序同初始密码确认比较,如果比较正确则8255通过B口输出使绿灯亮,否则红灯亮。本设计要完成的任务需要通过软、硬件设计来完成。软件设计需要实现键盘键值的读取、密码判断程序以及LED显示程序;硬件设计则需要硬件实验平台上相应的硬件电路模块,包括键盘模块、LED发光二极管显示模块。2
7、密码输入键盘具体设计方法 2.1 可编程并行接口芯片8255A基本简介8255A是一种通用的可编程并行I/O接口芯片,具有3个带锁存或缓冲的数据端口,可与外设并行进行数据交换。用户可用程序来选择多种操作方式,它的各端口内具有中断控制逻辑,为外设与CPU之间的信息交换提供了方便。2.1.1 8255A的内部结构及功能简介8255A芯片内部结构图如图2.1.1所示,我们可以看到该芯片含有3个8位的控制端口,即A口、B口和C口,这三个端口可以作为CPU与外设通信时的缓冲器或锁存器,其中,一般情况下,作为缓冲器使用时就是输入接口,作为锁存器使用时是输出接口。图2.1.1 8255A的内部结构图其实,8
8、255A的三个端口实际上只有两组控制部件,其中将C口的八位分成高低各四位分别同A口、B口组合形成A组、B组两种独立的控制部件,它们可以同时接收来自读/写控制电路的命令和CPU送来的控制字。另外,8255A的数据总线缓冲器和读/写控制电路分别实现了8255A与CPU之间的联系,具体功能将在以下各节指出。2.1.2 8255A的管脚分配8255A是一个标准的40管脚芯片如图2.2.1所示,可以分为三个部分:与外设连接的I/O线,与CPU连接的总线,以及电源线。本设计中需要使用到与外设连接的各个端口,用于连接小键盘的C口和PB0端的红绿显示灯。其中与CPU连接的8、9管脚决定了8255A的工作方式,
9、本设计中采用的8255端口地址是奇地址即8255的A0、A1的管脚连接CPU的A0、A1管脚,CPU通过对8255A管脚的控制来控制其各个端口的工作方式。图2.1.2 8255A的管脚分布图2.1.3 8255A工作方式及其编程简介8255A有三种工作方式:方式0基本输入输出,方式1选通输入输出,方式2双向传输方式。本设计要使用该芯片来扩展小键盘,并实现密码校验的功能,为此,我们必须掌握8255A该芯片的编程方式,因为只有通过相应的软件来定义端口的工作方式,选择所需要的功能,硬件电路才能得以实现。首先对8255A的源程序初始化及其程序编程应该有所了解,然而对其的初始化就必须使用到8255A的各
10、种工作方式及其端口的地址,以便进行程序的控制。为此须要了解8255A的控制命令即其方式控制字,关乎8255A的端口工作情况。其基本规格如下各表所示: 表2.1方式控制字 表2 A口工作方式选择 表3 A口I/O选择D7 D6 D5 D4 D3 D2 D1 D01 A组控制 B组控制D4输入/输出选择0A口为输出1A口为输入D6D5 A口工作方式 00 方式0 01 方式1 1 方式2 表4 C口上半部I/O选择 表5 B口工作方式选择 表6 B口I/O选择 表7 C口上半部I/O选择D2B口工作方式0工作方式01工作方式1D3输入、输出选择0C口高4位输出1C口高4位输入D0输入、输出选择0C
11、口低4位输出1C口低4位输入D1输入/输出选择0B口为输出1B口为输入 本设计采用B口PB0端口输出外接显示灯,当管脚信号为低电平时绿灯亮,表示输入的数据同初始设置的值相同,相反当其管脚输出为高电平时红灯亮,表示输入的数据同初始设置的值不同。C口外接矩阵式键盘并且采用扫描法进行键盘信息的读取,通过使用的方式不同可以得出8255A可编程并行接口芯片的控制方式,在8255A的初始化及其编程当中需要用到。2.2 硬件接口电路原理2.2.1 键盘接口原理电路图由于本题设计要求要用户扩展的键盘按键有数字键09和功能键等共12个,因此键盘电路采用独立式键盘将会占用很多的I/O线从而不实用。故采用矩阵式键盘
12、电路来扩展带有12个按键的小键盘比较合适,根据本题要求只需34方式的矩阵即可,故其原理电路图如下图3所示: +5V 8255 PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 0 1 2 3 4 5 6 7 8 9 10 11 图2.2.1 矩阵式键盘电路原理图矩阵式键盘电路其特点是由按键组成一个矩阵,矩阵的行线和列线分别作为两个传输方向相反的I/O接口信号线,如行线作为输入接口信号线,列线作为输出接口信号线,或反之。用独立式键盘相比这种电路所需要的I/O线很少,但键盘容量很大,按题目设计要求,本设计题只需用到C口的七根输入/输出线,组成34式的矩阵即可达到要求组成带有12个按键
13、的小键盘。2.2.2 键盘扫描法及程序处理的任务虽然矩阵式键盘对CPU的硬件资源要求不多,但相应的软件要复杂,目前扫描键盘的方法有两种,即扫描法和翻转法。其实现思想基本简介如下:扫描法是设定行线输出、列线输入,行线逐行输出0,如果某列有按键则列线输入为0;若无键按下列线输入全部为1,这样根据行线和列线提供的信息就可以确定是哪个键被按下。翻转法的实现思想是行、列线交换输入、输出,先输出一组所有为0的行值,读取列值并判断是否有0的位,然后输出所有为0的列值,读取行值并判断是否有0的位,从而两步进行确定获取键位置信息。因此,这种方法要比扫描法效率高,本设计中采用的也是翻转法进行键盘信息的读取。其中,
14、键盘的扫描同键位的确定有如下表2.2.2(a)所示的关系,扫描的程序将在附录中给出。表2.2.2(a) 34行列式键盘的按键编码表 按键 键 码 按键 键 码 行值 列值 行值 列值 011101110 611011011 111101101 711010111 211101011 810111110 311100111 910111101 411011110 10(确认)10111011 511011101 11(取消)10110111其中,功能按键只需要通过相应的程序进行调用说明其功能即可,其功能如下表2.2.2(b)所示:表2.2.2(b) 按键对应的键名及其功能 按 键 键 名 功能说
15、明 09键 数字键用于输入密码 10键 确认键当扫描到此键时结束扫描,即输入结束 11键 取消键当扫描到此键时重新扫描,即重新输入密码键盘处理程序的任务主要包括以下步骤:键输入、键译码和键处理三步。其中,键输入是键盘处理程序最主要的工作,由于键盘的机械结构,当键按下或松开时,键将有一个抖动过程,因此键输入的首要工作就是检查键盘是否有键被按下,消除按键抖动。然后再确定被按的键在矩阵中的位置,获取键号。消除抖动的方法可以采用软件延时。延时程序将在附录中给出。2.2.3 红绿灯显示电路部分由于设计的要求,需要通过扩展小键盘来输入数据并且与初始密码进行比较,要求相同时绿灯亮,不同时红灯亮。故可以通过8
16、255A端口输入/输出的功能加上相应的程序来实现,本设计采用B端口的一个输出端口通过非门的选择来实现红绿灯的亮灭,其部分接口电路如图2.2.3所示:图2.2.3 红绿灯显示电路部分电路图其中,红绿灯显示的原理是:当密码比较正确时绿灯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,AL2.2.4 硬件连接电路图由以上分析可以知
17、道,整体电路设计图如图2.2.4所示,由于protel仿真软件中没有8086CPU,因此使用了Z80CPU来代替。另外,由于所学知识的有限只能连接出部分的电路原理图如图2.2.4所示。8255A图2.2.4 输入接口电路2.3 软件设计2.3.1 软件设计思路密码输入键盘的主要功能是实现8255A扩展的小键盘,通过输入数据同初始设置的密码比较,若密码比较的相同则绿灯亮,否则红灯亮。其中,初始设置为四位数字的密码,数据的键入通过扩展的小键盘来实现,当输入的数据在09之间时,输入正常并把数据寄存在缓冲区BUFF2中。当扫描到的数据为10时,则执行确认功能即退出扫描读数;当扫描到的数据为11时,则执
18、行取消功能即重新扫描读取输入的数据。其中,主程序为键盘扫描读取从键盘输入的数据,即通过扩展矩阵式键盘翻转法将扫描的键码值转化为相应的键号值,数据键为09,功能键有10确认键、11取消键。子程序有消除抖动的延时程序和密码比较同时调用红绿灯显示输出的程序;消除抖动的延时程序,主要利用软件延时的方法即通过循环方式的控制来实现延时以消除按键的抖动。2.3.2 程序流程图由以上分析知该设计分为主、子程序两部分,故主、子程序流程图分别如下图2.3.2(a)、图2.3.2(b)所示:键值存入BUFF2调用密码比较子程序结束 开始8255初始化 读键盘有键按下否调用延时子程序 读取键值键值是否为11键值是否为
19、10NY 红灯亮结束开始取存密码缓冲区的偏移地址SI设置循环次数CX=4与初密码相等否 CX是否为0 或者SI为4否绿灯亮NNYY YNYN 图2.3.2(b) 密码比较及红绿灯显示子程序流程图 图2.3.2(a) 主程序流程图结束语在本次的课程设计中,整体思路比较明确、设计的步骤也比较顺畅,由于曾有课程设计的基础,对说明书的书写格式也方便了许多,没有第一次时的那种种麻烦以及困难,同时通过这次的课程设计也让我对微机接口方面的知识有了进一步的了解,而且也更加熟悉了汇编语言所运行的软件环境,同时通过软件环境的调式运行可以检验自己的程序是否正确,由于本次设计涉及到硬件方面的知识,需要对硬件电路进行检
20、验,因此促使自己学习仿真软件,本次设计中我使用的仿真软件为protel。通过本次课程设计,给我最大的收获也就在于此了,了解到更多的软件知识以及对所学的软件编程知识进行了巩固。同时,通过本次课程设计让自己明白了自己的不足以及急需加强练习的地方。首先,拿到设计要求的第一个问题就是不知道如何编写键盘读键的程序,虽然通过看书能够明白8255A是如何扫描键盘并读取键号信息的,但是,其中遇到很多小问题无法想明白,思维进入了死胡同。但是,随着不断的查找资料以及翻阅书籍慢慢明白了过来。之后,一个问题解决了另一个问题又随之而来,能够扫描也能够读取键号信息了,可是8255A所读取的键号信息又存储在哪里?后一次扫描
21、的数据会把前一次扫描的数据覆盖,应该用什么样的程序将扫描到的数据截取出来并且存入自己设置的缓冲空间当中,最后,通过各种学习的手段问题也逐一得到解决。参考文献1周佩玲,彭虎,傅忠谦.微机原理与接口技术(基于16位机).北京:电子工业出版社,2005.42汤书森.微机原理接口实验与实践教程.北京:清华大学出版社,2008.73 杨文武.微机原理与接口技术实验与课程设计.城都:西南交通大学出版社,2005.104王为青、邱文勋.51单片机应用开发案例精选.北京:人民邮电出版社,2007.85 朱定华.微机原理、汇编与接口技术.北京:清华大学出版社,2005.86 7 附录附录1、设计程序A_PORT
22、 EQU 80HB_PORT EQU 81HC_PORT EQU 82HCTRL_PORT EQU 83HDATA SEGMENT BUFF1 DB 0,7,1,2 BUFF2 DB 4 DUP(0)DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART: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 ;设定扫描键盘
23、读入数据的次数,可为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的信号即DLj MOV CX,4LOOP1:SHR AL,1 ;此循环为逐列检查,找出输出为0的列信号j JNC LOOP2 ; CF
24、=0即移出的位为0,则跳 INC DL LOOP LOOP1LOOP2: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的信号即DHi MOV CX,3LOOP3:SHR AL,1 ;该循环为逐行检查,找出0的行信号i JNC LOOP4 INC DH LOOP L
25、OOP3LOOP4:SHL DH,1 ;计算键号4ij SHL DH,1 ADD DH,DL ;DH为键号 CMP DH,0AH ;键号为10则结束输入 JZ FINISH CMP DH,0BH ;键号为11取消重新输入 JZ NO_KEY MOV BUFF2SI,DH ;键号为09的键则存入缓冲区BUFF2 INC SI LOOP NO_KEY ;再次扫描输入第二个数 CALL MMBJ ;调用密码比较程序 DELAY10MS PROC ;调用10毫秒延时子程序DELAY:MOV CX,2801WAIT:LOOP WAIT RETDELAY10MS ENDPMMBJ PROC ;调用密码比较
26、子程序 MOV DI,OFFSET BUFF1 MOV SI,OFFSET BUFF2 MOV CX,4A1: MOV AL,DI CMP AL,BUFF2SI JNZ A2 ;密码不同比较结束且红灯亮,否则继续比较全部相同绿灯亮 INC DI INC BX LOOP A1 MOV AL,00H ;PB0为低电平,绿灯亮 MOV DX,B_PORT OUT DX,ALA2: MOV AL,01H ;PB0为高电平,红灯亮 MOV DX,B_PORT OUT DX,AL RETMMBJ ENDPFINISH:MOV AH,4CH INT 21HCODE ENDS END START附录2、成绩评定表本科生课程设计成绩评定表姓 名性 别专业、班级课程设计题目: 密码输入键盘课程设计答辩或质疑记录:成绩评定依据:评 分 项 目分值评分1选题合理、目的明确102设计方案正确,具有可行性、创新性203设计结果(例如:硬件成果、软件程序)254态度认真、学习刻苦、独立完成任务155设计报告规范化、参考文献充分(不少于5篇)106答辩20总分最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日