要求:1、掌握8255方式0的硬件及其编程2、了解8255方式1、方式2的特点及应用3、掌握LED数码管的硬件及其编程(静态显示、动态显示)4、掌握简单键盘的硬件及其编程。第5章可编程并行接口8255A存储器RAM存储器ROMAB地址总线DB数据总线CB控制总线I/O接口1设备1I/O接口2设备2一、为什么扩展I/O接口二、I/O接口的功能I/O接口电路应满足以下要求:1.实现和不同外设的速度匹配大多数的外设的速度很慢,无法和µs量级的计算机速度相比。CPU只有在确认外设已为数据传送做好准备的前提下才能进行I/O操作。想知道外设是否准备好,需I/O接口电路与外设之间传送状态信息。2.输出数据锁存由于CPU工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的数据接收。I/O电路应具有数据锁存器,以保证接收设备接收。3.输入数据三态缓冲输入设备向CPU输入数据时,但数据总线上面可能“挂”有多个数据源,为不发生冲突,只允许当前正在进行数据传送的数据源使用数据总线,其余的应处于隔离状态。常用的外围I/O接口芯片有:(1)8255A:可编程的通用并行接口电路(3个8位I/O口)。(2)8155H:可编程的IO/RAM扩展接口电路(2个8位I/O口,1个6位I/O口,256个RAM字节单元,1个14位的减法定时器/计数器)。(3)74LS系列的TTL电路也可以作为MCS-51的扩展I/O口,如74LS244(缓冲器)、74LS273(锁存器)等。三、常用I/O接口电路5.1.2、8255A芯片介绍8255A是Intel公司生产的可编程并行I/O接口芯片,具有3个8位的并行I/O口,3种工作方式,可通过编程改变其功能,因而使用灵活方便,通用性强。1.引脚说明40只引脚,双列直插式封装,引脚功能如下:D7~D0:三态双向数据线,与单片机数据总线连接CS*:片选信号线,低电平有效,表示本芯片被选中RD*:读出信号线,控制8255A中数据的读出高WR*:写入信号线,控制向8255A数据的写入。Vcc:+5V电源。PA7~PA0:A口输入/输出线。PB7~PB0:B口输入/输出线。PC7~PC0:C口输入/输出线。A1、A0:地址线,用来选择8255A内部的4个端口。2.内部结构(1)端口A、B、C功能和结构上有些差异PA口:输出锁存和缓冲;输入锁存PB口:输出锁存和缓冲;输入缓冲PC口:输出锁存;数据输入缓冲PC口可在软件的控制下,分为两个4位端口,作为PA口、PB口选通方式操作时的状态控制信号。(2)A组和B组控制电路A组:PA口和PC口的上半部(PC7~PC4);B组:PB口和PC口的下半部(PC3~PC0),可根据“命令字”对PC口按位“置1”或“清0”。(3)数据总线缓冲器线线三态双向,作为8255A与计算机数据线之间接口,传送数据、指令、控制命令及外部状态信息。(4)读/写控制逻辑电路线该电路接收CPU发来的控制信号、RESET、地址信号A1、A0等。对端口进行读写。各端口的工作状态与控制信号的关系如表9-1所示。表9-18255A端口工作状态选择A1A0RD*WR*CS*工作状态00010读端口A:A口数据→数据总线读端口B:B口数据→数据总线读端口C:C口数据→数据总线010101001000100写端口A:总线数据→A口写端口B:总线数据→B口写端口C:总线数据→C口写控制字:总线数据→控制字寄存器011001010011100××××1数据总线为三态11010非法状态××110数据总线为三态5.2.2工作方式选择控制字及C口置位/复位控制字8255A有三种工作方式:(1)方式0:基本输入输出;(2)方式1:选通输入输出;(3)方式2:双向传送(仅A口有)。1.工作方式选择控制字三种工作方式由方式控制字来决定。控制字格式如下。C口上半部分(PC7~PC4)随A口称为A组,C口下半部分(PC3~PC0)随B口称为B组。其中A口可工作于方式0、1、和2,而B口只能工作在方式0和1。例如:写入工作方式控制字95H可将8255A编程为:A口方式0输入,B口方式1输出,C口的上半部分(PC7~PC4)输出,C口的下半部分(PC3~PC0)输入。2.C口按位置位/复位控制字可对C口8位中的任一位置“1”或清“0”。用于位控。例如:控制字07H写入控制口,置“1”PC3;08H写入控制口,清“0”PC4。5.3.28255A的三种工作方式1.方式0基本的输入/输出方式。外设的I/O数据可在8255A的各端口得到锁存和缓冲CPU可对8255A进行数据的无条件传送例如:从口线读入一组开关状态,向端口输出数字量,控制一组指示灯的亮、灭。不需要联络信号,基本功能为:(1)具有两个8位端口(A、B)和两个4位端口(C的上半部分和下半部分)。(2)任一个端口都可以设定为输入或输出,各端口的输入、输出可构成16种组合。(3)数据输出锁存,输入不锁存。例项目3:用8255A控制LED灯左右循环亮1.项目要求与目的(1)项目要求:根据开关的状态,用8255的端口PA控制8只LED发光二极管,PB口接两只开关K0和K1,编写程序实现K0闭合,LED灯左循环亮,K1闭合,LED灯右循环亮。(2)项目目的:●了解8255控制方式的设置。●掌握8255的编程方法。●了解8255控制外部设备的常用电路。2.项目说明8255是常用的并行接口芯片,在使用时,只要对8255进行初始化就可使用。本项目PA口作为输出口,PB口作为输入口,工作于方式0。当开关K0闭合,LED灯左循环亮,当开关K1闭合,LED灯右循环亮。3.项目电路原理框图用8255A控制LED灯左右循环亮电路框图如图5-8所示。电路由8086CPU芯片、8255A芯片、8只LED发光二极管和两只开关K0和K1等组成。图5-8用8255A控制LED灯左右循环亮电路框图A9A8A7A6A5A4A3A2A1A0接口片内地址接入138译码器地址10,0000,0地址200H~207HI/O接口芯片各端口地址10,0000,1地址208H~20FH10,0001,010,0001,1A15~A10000000000000000000000000接入逻辑门电路地址地址210H~218H地址218H~21FH10,0010,0000000地址220H~228H10,0010,1000000地址228H~22FH10,0011,0000000地址230H~238H10,0011,1000000地址238H~23FHCS片选信号范围AB地址总线A0~A19DB数据总线CB控制总线ABCG2BG1AG1Y0Y1Y2Y3Y4Y5Y6Y720根A0~A19接口0地址范围:200H~207H接口0CS接口1CS接口2CS接口3CS接口4CS接口5CS接口1地址范围:208H~20FH3根A0~A2A7A5M/IOA6A4A374LS138译码器D0~D15≥1A9A8接口2地址范围:210H~217H接口3地址范围:218H~21FH接口4地址范围:220H~217HA10A11A12A13A14A15AB地址总线A0~A19DB数据总线CB控制总线RDA1A0D0D7~WRCSA0A18255PAPBPC200H~203H当/CS有效时PA端口地址200HA1A00001PB端口地址201H10PC端口地址202H11控制字端口地址203HABCG2BG1AG1Y0Y1Y2Y3Y4Y5Y6Y720根A0~A19A7A5M/IOA6A4A374LS138译码器D0~D15≥1A9A8A10A11A12A13A14A158086CPU的三种总线与8255详细的连线图A9A8A7A6A5A4A3A2A1A010,0000,0x00PA端口地址200H10,0000,0x01PB端口地址201H10,0000,0x10PC端口地址202H10,0000,0x11控制字端口地址203HA15~A10000000000000000000000000A9A8A7A6A5A4A3A2A1A0接口片内地址接入138译码器地址A15~A10接入逻辑门电路地址CS片选信号范围8255接口芯片各端口地址4.项目程序设计(1)程序流程图用8255A控制LED灯左右循环亮程序流程图如图5-9所示。图5-9用8255A控制LED灯左右循环亮程序流程图(2)程序清单用8255A控制LED灯左右循环亮程序清单如下所示。CODESEGMENTASSUMECS:CODESTART:MOVDX,203H;8255控制口地址MOVAL,82H;PA口输出,PB口输入OUTDX,ALMOVDX,200H;PA口地址MOVAH,0FEH;置LED0亮初始值BG:MOVAL,AHOUTDX,AL;点亮LED灯CALLDELAY;调延时子程序MOVDX,201H;PB端口地址INAL,DX;读开关的状态TESTAL,01H;PB0=0吗?(K0闭合吗)JNZOPR;PB0≠0,转移ROLAH,1;PB0=0,左移MOVDX,200H;PA口地址JMPBGOPR:INAL,DX;读开关的状态TESTAL,02H;PB1=0吗?(K1闭合吗)JNZBG;PB1≠0,转移RORAH,1;PB1=0右移MOVDX,200H;PA口地址JMPBGDELAYPROCNEAR;延时子程序MOVBL,100;4个时钟周期DELAY2:MOVCX,374;4个时钟周期DELAY1:NOP;1个时钟周期NOP;1个时钟周期LOOPDELAY1;5个时钟周期DECBL;2个时钟周期JNZDELAY2;4个时钟周期RET;20个时钟周期DELAYENDPCODEENDSENDSTART2.方式1选通输入/输出工作方式。A口和B口通常用于I/O数据传送,C口用作A口和B口的联络线,以中断方式传送数据。(1)方式1输入控制联络信号如图9-5所示,STB*与IBF构成了一对应答联络信号,联络信号的功能如下图:STB*:选通输入,是由输入外设送来的输入信号。IBF:输入缓冲器满,高电平有效。表示数据已送入8255A的输入锁存器,它由STB*信号的下降沿置位,由信号的上升沿使其复位INTR:中断请求信号,高电平有效。由8255A输出,向计算机发中断请求。INTEA:A口中断允许,由PC4控制,INTEB:B口中断允许,由PC2控制。A口的方式1输入工作方式见图9-6。(2)方式1输出如图9-7所示。OBF*与ACK*构成了一对应答联络信号,各信号的功能如下:OBF*:输出缓冲器满信号,8255A给外设的联络信号,外设可以将数据取走。ACK*:外设的响应信号,外设已将数据取走。INTR*:中断请求信号。表示该数据已被外设取走,请求单片机继续输出下一个数据。INTEA:中断允许,由PC6控制。INTEB:中断允许,由PC2控制。B口的方式1输出如图9-8所示:3.方式2只有A口才能设定为方式2。图9-9为方式2工作示意图。在方式2下,PA7~PA0为双向I/O总线。当输入时,PA7~PA0受STBA*和IBFA控制,其工作过程和方式1输入时相同;当输出时,PA7~PA0受OBFA*、ACKA*控制,其工作过程和方式1输出时相同。5.5显示及显示接口技术要求:掌握LED数码管的硬件及其编程(静态显示、动态显示)一、显示及显示接口技术单片机应用系统中,使用的显示设备主要有发光二极管LED(LightEmittingDiode)显示器和液晶显示器LCD(LiquidCrystalDisplay)两种。这两种显示器成本低廉,配置灵活,与单片机接口方便。近年来也开始配置简易形式的CRT接口,可以较方便地进行图形显示。1、发光二极管发光二极管半导体是用发光材料做成的PN节,只要在发光二极管两端通过正向电流5-20mA就能达到正常发光。LED发光颜色通常有红、绿、黄、白,它的外形和电气符号如图所示。(a)LED外形(b)LED电气符号+―+―2、LED数码管LED数码管显示块是由发光二极管显示字段的显示器件