实验八键盘接口设计.
实验八键盘接口设计与 LED 显示
一.实验目的
1.了解 8255A 芯片的结构,掌握 8255A 的初始化编程。
2.掌握通过 8255A 并行口读写数据的方法。
3.了解非编码键盘结构,学会读取按键的方法。
二.实验仪器及设备
1. 一套 EL-MUT-III 单片机 /微机实验系统。
2. 一台微型计算机
3. MCS8086软件一套。
4. 若干连接导线。
三.实验内容
1.用 8255A 作为键盘接口,实验原理线路图如图 9所示。这里,要求将 8255A 芯片的片选 8255CS 通过连接导线接至系统的片选信号 CS0。
8255各端口地址如下:
端口 A 04A0H 端口 B 04A2H
端口 C 04A4H 控制端口 04A6H
2.运行示例程序 KB.ASM 以检查系统硬件。
3. 利用实验箱上的 8255A 可编程并行接口电路 (8255 PORT 、矩阵键盘(KEYBOARD UNIT 和 4个发光二极管(LED1~LED8中的 4个组成实验硬件电路,编
写程序用行扫描法识别矩阵键盘上的闭合键 ,做到在键盘上每按一个数字键(0~F ,用发光二极管将该数字键对应的二进制代码显示出来。
注:发光二极管点亮代表数字键对应的 bit 位为 1。
四.编程提示
1.在 MCS8086软件平台上编写宏汇编程序与在 MASM611环境下编写源程序在格式上稍有区别。此平台不需要定义数据段、堆栈段, 只需要定义代码段。数据段的内容在程序后面, code ends 之前定义即可。
代码段定义方式为 :
assume cs:code
code segment public org 100h
start :
. .
.(程序内容
code ends
end start
预定义方式与 MASM611的预定义方式相同,在 assume cs:code之前定义即可。2
2。
图2 ‘ 0-F 数字键’在 3×8矩阵键盘中的分布位置图
3.做键盘检测时要注意加延时去抖动的操作,避免一次闭合被检测为多次按键按下。
4.编写程序时,要根据操作的需要灵活地设置 8255A 的各端口的工作方式。
5.程序设计时,可将各键对应的键值(行线值、列线值放在一个表中,将要显示的 0~F 字符放在另一个表中,通过查表的方式来确定按下的是哪一个键并正确显示出来。注:编写程序时,在 org 100h的下一行,必须写上标号 start :,否则不能通过链接。
五.硬件连接
实验箱上的线路连接如表 1所示。
表 1
六. EL-MUT-III 实验箱使用说明
EL-MUT-III 实验箱用一根交叉串口线和微型计算机机箱相连。
将 8086CPU 模块插在实验箱右上角的插槽上(注意方向 ,同时接上实验箱的电源线。打开电源,此时实验箱的左上角数码管应显示 1996_7,几秒钟后变化,当实验箱通过软件 (MCS 8086与计算机连接成功时变为显示 C_,当连接没有成功时,显示P_。
七.示例源程序 KB.ASM
程序功能:用行翻转法识别矩阵键盘上的闭合键,做到在键盘上每按一个数字键(0~ F ,用发光二极管将该数字键对应的二进制代码显示出来。
硬件连接:PA[0..7]←→ RL[10..17], PB[0..2]←→ KA[10..12]
PC[0..3]←→ LED[8..5]/ LED[4..1], 8255CS ←→ CS0
源程序代码:
pa equ 04a0h ; 定义端口 A 的地址
pb equ 04a2h ; 定义端口 B 的地址
pc equ 04a4h ; 定义端口 C 的地址
pct equ 04a6h ; 定义控制端口的地址
assume cs:code
code segment public
org 100h
start : mov al,82h ; 初始化 8255A ,方式 0, A 端口输出, B 端口输入mov dx,pct
out dx,al
mov dx,pc
mov al,0ffh
out dx,al
wait: mov al,00h
mov dx,pa
out dx,al ;a 端口输出 00
mov dx,pb
in al,dx ;b 端口获得数据
cmp al,07h ; 判断是否有按键按下
jz wait ; 无按键按下,等待
push ax ; 有键按下,将数据压栈保护
push ax ; 按键的列值存于 al ,此时压入堆栈
mov cx,16eah
dly: loop dly ; 延时,消抖动
mov dx,pct
mov al,90h ; 行反转,再次初始化 8255A ,方式 0, A 端口输入, B 端口输入出 out dx,al
mov dx,pb
pop ax
out dx,al ;b 端口输出列值
mov dx,pa
in al,dx ; 获得行值
pop bx ; 将列值取出
mov ah,bl ;ah 为列值
mov si,offset table
mov di,offset char
mov cx,16
tt: cmp ax,[si] ; 比较按键值与 table 里的数据
jz nn ; 相等,跳转
dec cx
jz start ; 没有相等的值,重新开始
add si,2
inc di
jmp tt ; 继续查找比较
nn: mov cl,[di] ; 按照输入的键值,找到相应的输出值mov al,82h
mov dx,pct
out dx,al
wait2: mov al,00h
mov dx,pa
out dx,al ;a 端口输出 00
mov dx,pb
in al,dx ; 获得列值
cmp al,07h ; 判断按键是否松开
jnz wait2 ; 未松开,等待
mov dx,pc ; 已松开,将按键值输出
not cl
mov al,cl
out dx,al
jmp wait
table dw 06feh,06fdh,06fbh,06f7h,06bfh,067fh,03feh,03fdh,03efh,
dw 03dfh,03bfh,037fh,05fbh,05f7h,05efh,05dfh
char db 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fh code ends
end start
八.预习要求
1.分析示例程序,掌握 8255A 初始化编程的方法。
2.按要求编写相应功能的键盘接口程序,要求包括以下内容:
(1程序部分
● 程序采用的主要算法。
● 程序框图及源程序清单。
(2硬件部分
● 原理线路与实际接线图。
● 主要调试步骤及测试方案。
九.实验报告要求
示例程序
● 程序框图,主要算法
● 测试操作与结果分析
整理编写好的程序,要求包括以下内容:
● 程序采用的主要算法。
● 程序框图及源程序清单。
● 原理线路、接口电路工作过程分析和实际的接线图。
● 主要调试步骤、程序功能测试方案和测试结果。
● 实验中遇到的主要问题、解决方法及其分析说明。【附录】
MCS8086软件的安装和使用
一、软件的安装
1、找到文件夹 MCS8086,双击 setup.exe ,开始安装。
2、点击 Yes ,下一步。
3、 User name、 Company Name随意填写, Serial Number填 123456789, 点 next 下一步。
4、此处选择安装目录,默认路径即可, Next 。
5、此处默认第一项 Typical 即可。
6、单击 Finish ,安装完成。
7、此时,桌面上会出现图示快捷方式。二、软件的使用
双击打开快捷方式 ,出现如下界面。
点击确定即可
进入主界面之后,有两种方式进行操作,第一种方式是通过下图所示的菜单栏。
第二种方式是通过菜单栏下方的快捷工具栏,如下图所示:
通过这两种方式实现的操作时相同的,可自行选择一种即可。
1. 新建文件
选择:文件→新建,或者点击工具栏的“新建”图标,之后即可开始编辑文件。文件保存为 .asm 格式。
2. 打开文件
选择:文件→打开,或者点击工具栏的“打开”图标:
选择文件,单击‘打开’ 。
3. 编译、链接
文件编辑结束后, 工具栏将出现如图所示, 此时, 即可开始进行编译、链接, 这两步可以一次完成。
如图所示两种方式都可以完成。
选择之后,将出现编译、链接提示。
如果程序有错,将出现提示信息。
此时,点击程序界面,将出现红色区域提示错误所在的行。
4. 连接硬件、下载程序
程序编译、链接通过后,就可以与硬件连接,下载程序了。 (此时确保实验箱与计算机已连接并加电
选择:运行→连接设置。单击‘确定’
.
串口选择默认的 COM1,波特率选择默认的 9600即可,如果提示失败,则修改串口(COM2/COM3 ,视实际情况而定。
设置串口后,即可通过以下两种方式中的一种进行系统复位。
在弹出的提示窗口中,单点确定,随后马上按实验箱上右下角(在 3×8键盘的下方的复位键(RST 。
此时,将提示复位成功,同时程序通过交叉串口线下载到了实验箱上的存储器中等待执行。
右下角将可看到通讯联系的提示。
同时,程序代码界面将出现如图所示绿色光带在源程序所在的第一行。
5. 程序运行
程序下载完成后,即可运行程序。
如上图所示,程序运行有多种方式,可自行选择,有全速运行、单步运行、运行到光标处、从光标处开始运行、跟踪运行等。
可以通过上图所示的菜单栏选择,也可以通过单击下图所示的工具栏选择。
运行程序时,可在界面左边查看寄存器的值,对于调试程序非常方便。
6.调试方式可以选择“单步运行” ,或者“运行到光标处”运行程序,同时结合查看左边的寄存器,进行程序的调试。提示:对程序进行修改后,须要点击——保存,再重新编译、链接,同时进行系统复位,否则修改不能生效。