8255接口键盘及显示综合设计实验(曹建文2009年10月10日)一、实验目的1、掌握8255的工作方式及应用编程。2、自行设计、制作和连接基于8255并行接口的键盘及显示实验电路。3、实现扫描式矩阵键盘的功能和作用。二、实验设备PC机1台,TD-PIT实验台1台,实验元器件若干。三、实验内容1、使用8255实现键盘按键和七段LED数码显示管显示功能。2、根据实验要求自行设计实验线路图,制作和焊接实验电路板和实验元器件。3、按照实验要求和实验电路图编写实验程序,使得按下不同的数字按键后数码管显示相应的数字值(4位数码管)。4、按照实验要求设计和编写实验程序,实现普通计算器的加/减法功能。四、实验原理1、8255结构及原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图-2所示。图-1:8255内部结构及引脚图(a)工作方式控制字(b)c口按位置位/复位控制字图-2:8255控制字格式(1)8255的内部结构如图-1所示,8255的内部结构由以下4个部分组成:(1)输入/输出端口A、B、C。这三个端口均可看作是I/O端口,但它们的结构和功能也稍有不同。A口和B口是一个独立的8位I/O口。C口可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。(2)A组和B组控制电路。这是两组根据CPU命令控制8255工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255的工作方式,也可以根据编程命令来对C口的指定位进行置位/复位的操作。A组控制电路用来控制A口及C口的高4位;B组控制电路用来控制B口及C口的低4位。(3)读/写控制逻辑。它负责管理8255的数据传输过程,接收CS及RD、WR、RESET,还有来自系统地址总线的口地址选择信号A0和A1。将这些信号组合后,得到对A组控制部件和B组控制部件的控制命令,并将命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。(4)数据总线缓冲器。它是8位双向三态缓冲器,作为8255和CPU之间的数据接口,进行数据的输入/输出。CPU的编程命令以及外设通过8255传送的工作状态等信息,都是通过它来传输的。一般情况下数据总线缓冲器的8根数据线D7~D0是与8086CPU低8位数据线相连。(2)8255的引脚信号图-1所示为8255芯片引脚信号。除了电源和接地以外,其他信号可以分为两组:(1)和外设相连的:PA7-PA0:A组数据信号PB7-PB0:B组数据信号PC7-PC0:C组数据信号(2)和CPU相连的:RESET:复位信号,低电平有效。当RESET信号来到时,所有内部寄存器就被清除,同时,3个数据端口被自动设为输入端口。D7-D0:它们是8255的数据线,和系统数据总线相连。CS:芯片选择信号,低电平有效。在一个系统中,一般根据全部接口芯片来分配若干较低位地址(比如A5、A4、A3)来组成各种芯片选择码,当这几位地址组成某一个代码时,译码器便往8255的CS端输出一个低电平,于是8255被选中。只有当CS有效时,读信号RD和写信号WR才对8255有效。RD:芯片读出信号,低电平有效。WR:芯片写入信号,低电平有效。A1、A0:端口选择信号。8255内部有3个数据端口和一个控制端口,共四个端口。规定当A1、A0为00时,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。8255的几个控制信号和传输动作之间的关系如下表所示:8255的控制信号与传输动作的对应关系CSA1A0RDWR传输说明00001数据从端口A送数据总线00101数据从端口B送数据总线01001数据从端口C送数据总线00010数据从数据总线送端口A00110数据从数据总线送端口B01010数据从数据总线送端口C01110如果D7为1,则由数据总线往控制寄存器写入控制字;如果D7为0,则由数据总线输入的数据作为对C端口的置1、置0命令。1XXXXD7~D0进入高阻状态01101非法的信号组合0XX11D7~D0进入高阻状态(3)8255的控制字图-2为8255工作方式控制字和C口按位置位/复位控制字格式。其中:(1)工作方式控制字。8255有三种工作方式:方式0、方式1、方式2。两组端口可分别指定不同的工作方式,每组端口在某种工作方式下,并不要求各信号同为输入或同为输出,而是可以分别指定。(2)C口控制字。C口的各信号线常作为控制线来使用,因此,经常需要单独对每根信号线置1或置0。这种操作用是通过向C口控制字寄存器送出C口控制字来实现的。应用时注意:C口控制字虽然是对端口C操作,但在写入控制字时应是对控制端口地址写入,而不是写入到C数据端口。编程举例:设A数据口地址为00E0H,B数据口地址为00E2H,C数据口地址为00E4H,控制口为00E6H例1:当要求端口A工作在方式0,输出;端口B工作在方式1,输入;端口C的高4位为输入,低4位为输出;则方式控制字为10001110B或8EH。汇编指令如下:MOVDX,00E4HMOVAL,8EHOUTDX,AL例2:当要求端口A工作在方式1,输入;端口B工作在方式0,输入;端口C的高4位为输出,低4位为输出;则方式控制字为10110010B或0B2H。汇编指令如下:MOVDX,00E4HMOVAL,0B2HOUTDX,AL例3:对C7置1,则控制字为00001111B或0FH。汇编指令如下:MOVDX,00E4HMOVAL,0FHOUTDX,AL2、扫描键盘基本工作原理3、LED数码管结构及工作原理五、实验说明及主要步骤本实验是利用可编程8255并行接口实现与扫描式矩阵键盘及数码管的连接,并显示按键的值,实现普通计算器加/减法功能。具体内容:(1)设计和制作基于8255并行接口的矩阵键盘及数码管连接电路,根据要求编写实验程序,扫描键盘输入(即按下不同键值),并将扫描键盘(按键)结果送数码管显示。(2)按照普通计算器工作方式,将8个键盘按键分别定义为“1~4数字值”及“+”、“-”、“=”、“清零”等功能键,实现1~4以内数字的“1位加/减法”运算。实验接线图如图-3所示(学生应设计画出详细的电路图,以便制作电路板)。图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键盘。将键盘的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C口为输入口;PB0—PB7与七段数码显示管连接,B口为输出。程序执行过程如下:识别是否有键按下,方法是使PA0一PA3输出为全0,读C口值(行值),其中只要有一位为0,就说明有键按下,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行七段数码显示管显示程序,这时七段数码显示管就显示与该键相同的数值。图-3:8255接口键盘及显示原理图主要实验步骤如下:1、根据图-4所示的电路设计和画出具体的实验电路图,绘制和制作实验电路板,焊接实验元器件。2、参考给定的程序流程图,编写实验程序,检查无误后进行汇编、连接,并生存可执行文件。3、在TD-PIT实验台上,按图-5所示实验参考接线图连接好线路,打开实验台电源,运行执行文件,按动键盘,观察数码管显示结果是否正确。4、上述实验正确完成后,将自制的实验电路板接入TD-PIT实验台中(注意应正确连接),重复步骤3的内容,观察是否得到正确的实验结果。5、修改实验程序,重新定义实验板上的键盘按键,使键盘和显示能按照普通4位计算器方式工作,并能进行1~4以内数字的“1位加/减法”操作。6、详细记录全部实验过程、步骤和实验结果。六、实验报告及要求本实验完成后按如下要求和格式撰写实验报告,并分别提交电子文档和纸质打印文档的实验报告各1份。图-4:8255并行接口键盘及显示电路图123456ABCD654321DCBATitleNumberRevisionSizeBDate:18-Sep-2009SheetofFile:D:\新建文件夹\RTU\zhsy1.ddbDrawnBy:....74LS0774LS074.7k*84.7K4.7K+5V...+5V...ABCDEFGDPY1Y2X1X2X3X401234567PA31PA22PA13PA04/RD5/CS6GND7A18A09PC710PC611PC512PC413PC014PC115PC216PC317PB018PB119PB2208255PB321PB422PB523PB624PB725VCC26D727D628D529D430D331D232D133D034RESET35/WR36PA737PA638PA539PA4401234567891011121314A1A2A3A4A5A6Y1Y2Y3Y4Y5Y6VCCGND74LS07图-5:8255键盘及显示实验参考接线图七、实验程序参考流程图123456ABCD654321DCBATitleNumberRevisionSizeBDate:18-Sep-2009SheetofFile:D:\新建文件夹\RTU\zhsy2.ddbDrawnBy:BUSPORTXD0XD1XD2XD3XD4XD5XD6XD7XA0XA1XIOWXIORIOY3D0D1D2D3D4D5D6D7A0A1WRRDCSPA0PA1PA2PA3PC0PC1PB0PB1PB2PB3PB4PB5PB6PB7UNIT8255ABCDEFGDPY1Y2X1X2X3X4LEDKEYBOARDUNIT是否按键是否弹起?初始化缓冲用于存放键值开始初始化8255工作方式否是4列检测完?返回到DOS结束依次检测1-4列,确定是第几行按键按下将键值保存到缓冲区显示刷新及清屏有按键扫描小键盘按键无按键是有PC按键按下?否再显示刷新及清屏有按键扫描小键盘按键无按键显示刷新及清屏8255并行接口键盘及显示实验参考源程序:MY8255_AEQU9C60HMY8255_BEQU9C61HMY8255_CEQU9C62HMY8255_MODEEQU9C63HDATASEGMENTDTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,3000HMOVAL,00HMOV[SI],ALMOV[SI+1],ALMOV[SI+2],ALMOV[SI+3],ALMOVDI,3003HMOVDX,MY8255_MODEMOVAL,81HOUTDX,ALBEGIN:CALLDISCALLCLEARCALLCCSCANJNZINK1CALLBREAKJMPBEGININK1:CALLDISCALLDALLYCALLDALLYCALLCLEARCALLCCSCANJNZINK2JMPBEGININK2:MOVCH,0FEHKERR:JMPBEGINCCSCAN:MOVAL,00HMOVDX,MY8255_AOUTDX,ALMOVDX,MY8255_CINAL,DXNOTALANDAL,03HRETCLEAR:MOVDX,MY8255_BMOVAL,00HOUTDX,ALRETDIS:PUSHAXMOVSI,3000HMOVDL,0F7HAGAIN:PUSHDXMOVDX,MY8255_AOUTDX,ALMOVAL,[SI]MOVBX,OFFSETDTABLEANDAX,00FFHADDBX,AXMOVAL,[BX]MOVDX,MY8255_BOUTDX,ALCALLDALLYINCSIPOPDX