实验一 基于并行接口的键盘控制.docx_第1页
实验一 基于并行接口的键盘控制.docx_第2页
实验一 基于并行接口的键盘控制.docx_第3页
实验一 基于并行接口的键盘控制.docx_第4页
实验一 基于并行接口的键盘控制.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

本科实验报告实验名称: 课程名称:实验时间:任课教师:实验地点:实验教师:实验类型: 原理验证 综合设计 自主创新学生姓名:学号/班级:组 号:学 院:同组搭档:专 业:成 绩:实验一 基于并行接口的键盘控制一、 实验目的1.掌握简单并行接口(8255)的工作原理及使用方法。2.了解小键盘的工作原理,学会设计小键盘的接口技术。3.利用8255并行接口芯片作为小键盘的接口电路,掌握它们之间的线路连接。二、 实验内容与步骤1、接线PA0 - PA3 /8255 接 行0 行3 /44矩阵键盘PB0 - PB3 /8255 接 列0 列3 /44矩阵键盘CS /8255 接 Y1 /IO地址2、编程实现在按下小键盘上的任意键后,在微机屏幕上显示相应字符。它们的对应关系如下:小键盘 显示 小键盘 显示 0 0 8 8 1 1 9 9 2 2 A A 3 3 B B 4 4 C C 5 5 D D 6 6 E E 7 7 F F三、 实验原理1、可编程并行接口8255A芯片8255A是通用的可编程并行接口芯片,它可以将任一个与TTL兼容的I/O设备与CPU相连。8255A为40引脚双列直插芯片。它有三个相互独立的端口,分别成为A端口、B端口、C端口,每个端口有8根数据线,通过数据线,可以与I/O设备交换数据。8255A的引脚分布及内部结构图1(a),(b)所示。图1-(a) 8255A引脚分布 图1-(b) 8255A内部结构图方式选择控制字8255A共有两类编程控制字:方式选择控制字和对C端口按位置位/复位控制字。这两个控制字都要写入控制寄存器。初始化时,把方式选择控制字写入控制寄存器用来选择端口的工作方式及端口功能。在8255A工作之后,把“按位置位/复位控制字”写入控制字寄存器,可以把C端口的对应位单独地置1或置0。(1) 方式选择控制字方式选择控制字的格式如下图所示:图2 方式选择控制字各位的意义如下:D7位:方式选择控制字的特征位,必须为1,表示写入控制寄存器的控制字为方式选择控制字。D6/D5位:选择A组的工作方式,控制A端口及C端口的高4位工作方式。“00”:方式0;“01”:方式1;“1x”:方式2。D4位:D4=0,选择A端口的8条数据线PA7-PA0作为输出线;D4=1,选择A端口的8条数据线PA7-PA0作为输入线。D3位:D3=0,选择C端口的高4位数据线PC7-PC4作为输出线;D3=1,选择C端口的高4位数据线PC7-PC4作为输入线。D2位:选择B组的工作方式,控制B端口及C端口的低4位工作方式。D2=0,选择B组工作于方式0;D2=1选择B组工作于方式1。D1位:D1=0,选择B端口的8条数据线PB7-PB0作为输出线;D1=1,选择A端口的8条数据线PB7-PB0作为输入线。D0 位:D0=0,选择C端口的低4位数据线PC3-PC0作为输出线;D0=1,选择C端口的低4位数据线PC3-PC0作为输入线。(2) C端口按位置位/复位控制字C端口按位置位/复位控制字的格式如下图所示:图3 C端口按位置位/复位控制字各位的意义如下:D7位:特征位,该位必须为0,表示写入控制寄存器的控制字为C端口按位置位/复位控制字。D6/D5/D4位:不用。D3/D2/D1位:C端口选择位,选择C端口中特定的某一位。“111”-“000”分别表示第7位-第0位。D0位:置位/复位。D0 = 1 ,表示选择的端口输出1,D0=0,表示选择的端口输出0。2、44矩阵键盘矩阵键盘由8255芯片卡控制,并将行线连接到8255芯片的A口,将列线连接到B口,还需要连接8255芯片的片选到Y1/IO地址(280H)以使键盘阵列有8255芯片控制。图4 8255芯片与矩阵键盘8255A与44矩阵键盘接口线路如图4所示。PA0-PA3分别连接矩阵键盘的4条行线,PB0-PB3分别连接矩阵键盘的四条列线。所有的行线、列线通过上拉电阻共与正电压源相连。因此当按键没有按下时,所有的端口读入的数据均为1。当有按键按下时,对应的行线与列线读入的数据应保持一致。皆为0或皆为1。矩阵键盘的检测就是按照上述特性实现的。一共有两种检测方法:行扫描法、行反转法。(1) 行扫描法行扫描法的原理如下,首先判断是否有按键按下。将所有的行线置成0电平,然后通过列线输入全部列值,如果读入的列值全是1,则说明没有任何一个键按下;反之,如果读入的列值不全是1,这说明有键按下。也就是说,在键盘识别的开始先进行全扫描。若有键按下,则必须判别是哪个按键被操作。第二部确定哪个键按下。一旦发现有键按下,就转入采用逐行扫描的办法俩确定究竟是哪一个被按下。先扫描第一行,即使它输出为0电平,其余的行线为高电平1,然后读入列值。如果读入的列值中,其中有一位为低电平0,则说明在慈航的一个行、列交叉处有键被按下。如果读入的列值全是1,说明这一行所有按键都未被按下。接着扫描第二行。依此类推,逐行扫描,知道扫完全部的行线为止。若在扫描的过程中,发现非全1的列值,就能找出被按下的键。(2) 线路行反转法行反转法工作原理如下,首先向各行线上全部送低电平0,然后读入列线的值,如果此时有某一键被按下,则必定会使某一列线为0,输入的列值其中某一位为0。然后使行线工作在输入方式,列线工作在输出方式。利用输出指令,使列线全部输出为0值,再从行线输入行线值。行值中闭合键所对应的位必然为低电平0。利用这种反转法,可得到一对行值和列值,每一个按键唯一对应一组行值和列值,行值和列值组合起来可形成一个按键的识别码。四、 编程实现为了实现实验要求主要实现两个方面的内容,其一是对8255芯片的初始化,其二是对矩阵键盘进行检测,找出按下的按键并执行相应操作。1、程序流程图这里,选择行扫描法检测键盘,程序流程图如下。yesA端口输出TEMP(检测第某行)从B端口读入列值列值全为高电平?延时去抖设变量TEMP = “1110B”CNT = 4写入8255控制字81H A口输出,B口输入A端口全部输出0(行线)从B端口读入列值开始NO列值全为高电平?CNT = 0?CNT = CNT 1YESYESTEMP循环左移一位NONO字符为F?YES输出字符根据行值列值判断对应字符结束NO2、代码及注释data segmenttab1DB F, E, D, Ctab2DB B, A, 9, 8tab3DB 7, 6, 5, 4tab4DB 3, 2, 1, 0kb DB 00eh, 00dh,00bh,007hport equ 280hdata ends ;数据段定义stack segmentsta db 256 dup(?)topequ size stastack ends;堆栈段定义code segment assume cs:code,ds:data,ss:stackmain proc far mov ax,data mov ds,ax mov ax, stack mov ss,ax mov sp,top; 初始化8255mov dx, port+3mov al,10000010b out dx,al begin: mov al,0mov dx, portout dx,almov dx, port+1in al,dx and al,0fh cmp al,0fh je begin; 若有键按下,按列查找哪个键 mov al,00001110bmov dx, port out dx,almov dx, port+1in al,dx lea bx,tab1 cmp al,0fh jne displaymov al,00001101bmov dx, port out dx,almov dx, port+1in al,dx lea bx,tab2 cmp al,0fh jne displaymov al,00001011bmov dx, port out dx,almov dx, port+1in al,dx lea bx,tab3 cmp al,0fh jne display mov al,00000111bmov dx, port out dx,almov dx, port+1in al,dx lea bx,tab4 cmp al,0fh jne displaynopjmpbegin; 查找按下的键,并显示display:mov di,bxlea si,kb ;存小键盘扫描码next: cmp al,si ;查键盘扫描码表 je show ;找到了,转去显示 inc si ;否则继续 inc di jmp nextshow: ;显示键入字符 mov ah,2mov dl,diint 21hcmp dl, Fje overcall delayjmpbegin ;重新开始查询over:mov ah,4chint 21hmain endpdelay proc near ;延时循环 100*65536次 push dipush cxmov cx,0Fhmov di,100again:nopdec di jnz again dec cx jnz again pop cx pop di retdelay endpcode endsend main五、 总结与收获这次实验加深了我对8255并行接口芯片的了解,了解了芯片的编程实现方法。同时学会了矩阵键盘的原理与检测方法,最重要的是这是我第一次将汇编语言用在实际应用上,加深了我对计算机基本原理的理解,加深了对

温馨提示

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

评论

0/150

提交评论