1微机原理及接口技术第九章可编程外围接口芯片8255A及其应用国脉信息学院2第九章可编程外围接口芯片8255A及其应用9.18255A的工作原理9.28255A的应用举例习题39.18255A的工作原理并行接口电路:微处理器与I/O设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。由于电气特性的限制,传输距离不能太长。8255A是通用的可编程并行接口芯片,功能强,使用灵活。适合一些并行输入/输出设备的使用。41、8255A的引脚8255有40个引脚,采用双列直插式封装形式。其引脚如图所示。一、8255引脚及内部结构5DATABUSBUFFERREAD/WRITECONTROLLOGICo8BNNATSBUERLTAA|II/0I/0I/0I/0GROUPACONTROLGROUPAPORTA(8)GROUPAPORTCUPPER(4)GROUPBPORTCLOWER(4)PC3-PC0GROUPBPORTB(8)GROUPBCONTROLITDWRRDA0A1CSRESETD7-D0PC7-PC4PA7-PA0PB7-PB08255A并行接口逻辑框图一、8255引脚及内部结构数据总线缓冲器读/写控制逻辑三个独立的8位I/O端口,口A、口B、口C。口A与口B有输入/输出锁存器、输入/输出缓冲器。口C有输入、输出缓冲器及输出锁存器。在实现高级的传输协议时,口C的8条线分为两组,每组4条线,分别作为口A与口B在传输时的控制信号线。口C的8条线可独立进行置1/置0的操作。口A、口B、口C及控制字口共占4个设备号。6模式0:基本输入/输出方式•A、B、C均可设成此模式。无应答信号,二、8255A并行接口的工作模式D0-D7A8448cB8255PA7-PA0PC7-PC4PC3-PC0PB7-PB087数据传输采用应答方式,口A、口B可工作在此方式下,征用口C部分位作为应答信号。模式1:带选通的I/O端口二、8255A并行接口的工作模式(序)8PC4,5PA0-PA7INTEAPC7PC6PC3OBFAACKAINTRA28PB0-PB7INTEBPC1PC2PC0OBFBACKBINTRB8模式1(续)口A、口B均为输出:二、8255A并行接口的工作模式(序)9MODE1:STROBEDOUTPUT(PORTA/PORTB)WROUTPUTVALIDOBFINTRACROUTPUTTOPERIPHERALCPUDATABUSPROGRAMMEDPC6=1(PORTA),PC2=1(PORTB)INTE模式1(续)口A、口B均为输出:二、8255A并行接口的工作模式(序)10PC6,7PA0-PA7INTEAPC4PC5PC3STBAINTRA28IBFAPB0-PB7INTEBPC2PC1PC0STBBINTRB8IBFB模式1(续)口A、口B均为输入:二、8255A并行接口的工作模式(序)11MODE1:STROBEDINPUT(PORTA/PORTB)STBPROGRAMMEDPC4=1(PORTA)PC2=1(PORTB)IBFINTRRDDATA-INFROMPERIPHERALINTE模式1(续)口A、口B均为输入:二、8255A并行接口的工作模式(序)12模式2:双向输入输出方式只有口A可设成此方式,此时B口只能工作在方式0或方式1。在此方式下,A口即做输入又做输出,ACK有效时A口输出有效数据,无效时输出呈高阻;输入输出都具有锁存功能;输入输出都能引起中断,是否能引起中断还要受到INTE1和INTE2的限制,二、8255A并行接口的工作模式(序)13PA0-PA7INTE2PC7OBFAINTRA38ACKAPC6PC4PC5PC0-2STBAIBFAPC3&≥1INTE1&•模式2:二、8255A并行接口的工作模式(序)14MODE2B1-DIRECTIONALBUSOUTWROBFINTRACKSTBIBFPA7-PA0RDINOUTDATAFROMDATAFROMPERIPHERALTO82558255TOPERIPHERALCPUDATABUSCPU8255CPU8255模式2:双向输入输出方式时序二、8255A并行接口的工作模式(序)15D7D6D5D4D3D2D1D0D7=1:方式选择GROUPAMODESELECTMODE0MODE1MODE200101XA=INPUT1A=OUTPUT010PORTC(UPPER)=INPUTPORTC(UPPER)=OUTPUT01MODE0MODE1101GROUPBMODESELECTPORTC(Lower)inPORTC(Lower)outPORTBINPUTPORTBOUTPUT0D7=0:位操作三、方式控制字及状态字1.方式控制字162.口C按位操作控制字CONTROLWORDFORPORTCBITSET/RESETD5D7D6D4D3D2D1D0XXXDONTCAREBITSET/RESET10SETRESETPORTCBITSELECT000PC0000111101100111010101PC1PC2PC3PC4PC5PC6PC70向控制口输出此控制字可实现对口C各位单独置1、置0,即位操作。三、方式控制字及状态字(续)178255ASTATUSWORD(MODE1.2READINPORTC)I/OI/OIBFAINTEAINTRAINTEBIBFBINTRBD7D6D5D4D3D2D1D0GROUPBGROUPAINPUTOBFAINTEAI/OI/OINTRAINTEBOBFBINTRBD7D6D5D4D3D2D1D0GROUPBGROUPAOUTPUTOBFAINTE1IBFAINTE2INTRAD7D6D5D4D3D2D1D0GROUPBGROUPAMODE1(MODE0,MODE1)MODE23.状态字当A口、B口工作在方式1或A口工作在方式2时可以通过C口读出其状态三、方式控制字及状态字(续)188255ABASICOPERATIONA1A0RD#WR#CS#OPERATION00010PORTA=DataBUS01010PORTB=DataBUS10010PORTC=DataBUS00100DTATBUS=PORTA01100DataBUS=PORTB10100DataBUS=PORTC11100DataBUS=CONTROLPORTXX1113-STATE=DataBUS四、8255A并行接口的寻址及连接199.28255A的应用举例一、LED显示器接口二、并行打印机接口电路三、键盘接口20一、LED显示器接口21例:8255A作为开关K0~K3及七段LED显示器接口。要求开关设置的二进制信息,由PC0~PC3输入,经程序转换为对应的七段LED显示器的字形代码后,由PA口输出显示。8255APA7PA0~驱动器+5V+5VK0K1K2K3PC3PC2PC1PC0D7~D0RDWRA1A2ABCG2AG2BG1Y0Y1Y2OOOD7~D0RDWRA0A1CSA0A3A4A78086系统总线LS138接口电路M/IO&A5A622各端口地址为:E8H~EEH8255A各端口地址确定:由图可知:A7A6A5A4A3A2A1A01110108255A方式选择控制字:CSABCG2AG2BG1Y0Y1Y2A0A3A4A7LS138M/IO&A5A6按题意设置端口A方式0输出,下C口输入.10000××181H23LED显示器的结构abdcefgdpLED显示器的外形abcdefgep共阳极LED显示器的结构abcdefgep共阴极LED显示器的结构LED显示器的结构可分为共阳极和共阴极两种24若要显示某个字符首先需要将它转换成对应的字形码(也称为段码),然后送到LED显示。这一转换过程称为译码。译码方法分为软件译码法和硬件译码法两种PA0PA1PA2PA3PA4PA5PA6PA78255DB7--DB0abcdefgep方案1共阳极LED显示器与同相驱动器接口LED显示器的工作原理软件译码:25abdcefgdpabdcefgdpD7D6D5D4D3D2D1D0dpgfedcba0(C0H)11000000abdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdp9(90H)100100001(F9H)111110012(A4H)101001003(B0H)101100004(99H)100110015(92H)100100106(82H)100000107(F8H)111110008(80H)10000000LED显示器的工作原理26PA0PA1PA2PA3PA4PA5PA6PA78255DB7--DB0abcdefgep方案2共阳极LED显示器与反相驱动器接口27abdcefgdpabdcefgdpD7D6D5D4D3D2D1D0dpgfedcba0(3FH)00111111abdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdpabdcefgdp9(6FH)011011111(05H)000001102(5BH)010110113(4FH)010011114(66H)011001105(6DH)011011016(7DH)011111017(07H)000001118(7FH)0111111128LED显示器的字形代码表存放在TABLE单元开始的内存中.TABLEDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB80H,98H,88H,83H,0C6H,0A1H,86H,8EH编程:实现操作的具体程序如下:MOVDX,0E8H;指向端口AOUTDX,AL;输出字形码显示HLTMOVDX,0EEH;设置8255A工作方式MOVAL,81HOUTDX,ALMOVDX,0ECH;指向端口C,读开关状态INAL,DXANDAL,0FHLEABX,TABLE;显示代码表首地址送BXXLAT;查表,取出相应的字形码送AL29硬件译码:利用专用接口芯片7447驱动LED显示器7447为BCD—七段译码器与单个LED的连接7447abcdefg1312111091514VccGNDRBIRBOLTABCD345+5V7126+5V1685VR=(5–1.5–0.2)V/20mA=168取R=1505V1.5V0.2VI=20mAR30LED显示器的电路设计分为两种,静态显示和动态显示,两种电路各有长处和缺点,在不同情况下可采用不同的连接方式。下面是两种连接方式:31PA0PA1PA2PA3PA4PA5PA6PA77447abcdefgABCD7447abcdefgABCD7447abcdefgABCD7447abcdefgABCDPB0PB1PB2PB3PB4PB5PB6PB7DB0——DB7DB0——DB77447BCD—七段译码器与多个LED的连接5V静态显示器的设计器件多,输出显示后若不改变显示内容CPU不用干预32•••••••••••••••••••••7447abcdefg•••ABCDPB0PB1PB2PB3PA0PA1PA2PA3PA4PA5PA68255动态显示器的设计33动态显示器控制程序的设计LEASI,BUFFMOVCX,07HMOVDL,01H初始化结束取显示数据送段通道口延时位码送位通道口是否最后一位修改指针,位码NYMOVAL,[SI]OUTPOTB,ALMOVAL,DLOUTPOTA,ALINCSIROLDL34•••••••••••••••••••••PB0PA0PA1PA2PA3PA4PA5PA68255•••ag••••••PB7•••74LS0735初始化结束取显示数据查表