北京理工大学微机原理实验报告一

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科实验报告实验名称:基于并行接口的键盘控制

课程名称:计算机原理与应用实验时间:任课教师:实验地点:

实验教师:

实验类型:□原理验证■综合设计□自主创新

学生姓名:

学号/班级:组号:学院:同组搭档:专业:成绩:

实验一基于并行接口的键盘控制

一、实验目的

1、掌握简单并行接口(8255)的工作原理及使用方法。

2、了解小键盘的工作原理,学会设计小键盘的接口技术。

3、利用8255并行接口芯片作为小键盘的接口电路,掌握它们之间的线路连接。

4、程序实现实验系统上的4×4键盘输入。

二、实验内容与步骤

1、接线:PA0-PA3 /8255 接行0-行3 /4×4键盘

PB0-PB3 /8255 接列0-列3 /4×4键盘

CS /8255 接YI/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-5芯片工作方式的设置

(1)基本控制字

基本控制字的格式如下:

各位含义如下:

D7:设定工作方式标识,1有效。

D6、D5:A组方式选择:00--方式0 01--方式1 1X—方式2

D4:端口A功能(1=输入,0=输出)

D3:端口C高四位功能(1=输入,0=输出)

(2)端口C置位/复位控制字

端口C置位/复位控制字如下:

各位含义如下:

D7:位置0位置1标识,0有效。

D6、D5、D4:不用,可人任意值。

D3、D2、D1:端口C的每位选择,由111—000分别表示第7位—第0位。

D0:位置1/置0,1=置1,0=置0.

2、键盘阵列由8255芯片控制,并将行列连接到8255芯片的A口、B口,还需要连接8255芯片的片选到YI/IO地址(288H~28FH),以使键盘阵列由8255芯片控制。其线路连接图如下:

3、编程方法

对于片选信号根据设置的YI/IO地址来具体连接相应的输出端口。8255A与4×4矩阵键盘接口线路如图所示。PA0-PA3分别连接矩阵键盘的4条行线,PB0-PB3分别连接矩阵键

盘的四条列线。所有的行线、列线通过上拉电阻共与正电压源相连。因此当按键没有按下时,所有的端口读入的数据均为‘1’。当有按键按下时,对应的行线与列线读入的数据应保持一致。皆为‘0’或皆为‘1’。矩阵键盘的检测就是按照上述特性实现的。一共有两种检测方法:行扫描法、行反转法。

(1)键的识别—行扫描法

第一步应该判断是否有键按下

第二步判断哪一个键被按下,显示

程序参考流程如下:

(2)键的识别—行反转法

第一步应该判断是否有键按下

第二步行线输出,列线输入

第三步列线输出,行线输入

第四步判断哪一个键被按下,显示

程序参考流程如下:

图3 行反转法工作示意图四、实验代码及注释

data segment

tab1 DB 'F', 'E', 'D', 'C'

tab2 DB 'B', 'A', '9', '8'

tab3 DB '7', '6', '5', '4'

tab4 DB '3', '2', '1', '0'

kb DB 00eh, 00dh,00bh,007h

port equ 288h

data ends

stack segment

sta db 256 dup(?)

top equ size sta

stack ends

code segment

assume cs:code,ds:data,ss:stack

main proc far

mov ax,data

mov ds,ax

mov ax, stack

mov ss,ax

mov sp,top

mov dx, port+3 ;初始化8255

mov al,10000010b

out dx,al

begin:

mov al,0

mov dx, port ;A口设置

out dx,al ;A口输出

mov dx, port+1 ;B口设置

in al,dx ;B口输出

and al,0fh ;判断是否有键按下

cmp al,0fh

je begin ;没有键按下,则继续扫描mov al,00001110b

mov dx, port

out dx,al

mov dx, port+1

in al,dx

lea bx,tab1

cmp al,0fh

jne display

mov al,00001101b

mov dx, port

out dx,al

mov dx, port+1

in al,dx

lea bx,tab2

cmp al,0fh

jne display

mov al,00001011b

mov dx, port

out dx,al

mov dx, port+1

in al,dx

lea bx,tab3

cmp al,0fh

jne display

mov al,00000111b

mov dx, port

out dx,al

mov dx, port+1

in al,dx

lea bx,tab4

cmp al,0fh

jne display

nop

jmp begin display:

mov di,bx

相关文档
最新文档