资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第七章 可编程接口芯片,可编程接口概术,可编程并行输入输出接口芯片,8255A,可编程接口概术,一个简单的具有输入功能和输出功能的可编程接口电路如下图,它包括一个输入接口,其组成主要是八位的,三态门,;一个输出接口,其组成主要是八位的,锁存器,;另外还有八位的多路转换开关及控制这个开关的寄存器,FF,。,用户对寄存器,FF,写入的内容称为命令字或,方式控制字,,而寄存器,FF,称为,命令寄存器,,相应的端口称为,命令端口或控制端口,,对可编程芯片,初始化,过程实际上就是对芯片的控制端口写入各种命令字的操作过程。,并行接口电路:,微处理器与,I/O,设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。,并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。由于电气特性的限制,传输距离不能太长。,8255A,是通用的可编程并行接口芯片,功能强,使用灵活。适合一些并行输入,/,输出设备的使用。,7.1,可编程并行输入输出接口芯片,8255A,一、,功能,8255A(8155A),是一种通用的可编程并行,I,O,接口芯片,广泛用于几乎所有系列的微型机系统中,如,8086,、,MCS51,、,Z80CPU,系统等。,8255A,具有,3,个带锁存或缓冲的数据端口,可与外设并行进行数据交换。用户可用程序来选择多种操作方式,通用性强。使用灵活,可为,CPU,与外设之间提供并行输入输出通道。,二、,8255,引脚及内部结构,1,、,8255A,的引脚,8255,有,40,个引脚,采用双列直插式封装形式。其引脚如图所示。,二、,8255A,的内部结构,数据,总线,缓冲器,内部控制线,内部数据线,D,0,D,7,A,组,控制,A,组,端口,A,A,组,端口,C,上部,B,组,控制,B,组,端口,B,B,组,端口,C,下部,读写,控制,逻辑,PC,0,PC,3,PB,0,PB,7,PC,4,PC,7,PA,0,PA,7,RD,WR,A,0,A,1,CS,RESET,1,、与外设连接的管脚,我们已经知道,8255A,有三个数据端口,每个端口是,8,位的,由此可推算与外设相连接的管脚共有,24,位。其中,A,口有,PA,7,PA,0,八个,I/O,引脚,,B,口有,PB,7,PB,0,八个,I/O,引脚,,C,口有,PC,7,PC,0,八个,I/O,引脚。特别地对于,PC,7,PC,0,,,其中可有若干根复用线可用于“联络”信号或状态信号,其具体定义与端口的工作方式有关。,PA0PA7,PB0PB7,PC0PC7,端口,A,:,PA0,PA7,A,组,支持工作方式,0,、,1,、,2,端口,B,:,PB0,PB7,B,组,支持工作方式,0,、,1,端口,C,:,PC0,PC7,仅支持工作方式,0,A,组控制高,4,位,PC4,PC7,B,组控制低,4,位,PC0,PC3,端口,A,:,PA,0,PA,7,常作数据端口,功能最强大,端口,B,:,PB,0,PB,7,常作数据端口,端口,C,:,PC,0,PC,7,可作数据、状态和控制端口,分两个,4,位,每位可独立操作,控制最灵活,最难掌握,2,、与,CPU,连接的管脚 包括数据线,D,7,D,0,,,读写控制线和,复位线,RESET,,,以及和,CPU,地址线相连接的片选信号、端口地址控制线,A,0,和,A,1,。,CS*A1 A0,I/O,地址,读操作,RD*,写操作,WR*,0 0 0,0 0 1,0 1 0,0 1 1,60H,61H,62H,63H,读端口,A,读端口,B,读端口,C,非法,写端口,A,写端口,B,写端口,C,写控制字,D0 D7,数据线,A0 A1,地址线,RD*,读信号,WR*,写信号,CS*,片选信号,RESET,复位信号,8255A,端口选择及操作功能表,D0D7,A0,A1,/CS,/WR,/RD,RESET,三、,8255A,的控制字,8255A,可以通过指令在控制端口中设置控制,字来决定它的工作。,8255A,的,控制字有两,个,共用一个地址,根据,D7,位的值来区分。,控制字分为两类:,1.,方式选择控制字,2.C,口置位,/,复位控制字,1,D,6,D,5,D,4,D,3,D,2,D,1,D,0,方式选择控,制字标识位,A,组方式选择,00,方式,0,01,方式,1,1x,方式,2,端口,A,1,输入,0,输出,PC,3,PC,0,:1,输入,(方式,0,时),0,输出,端口,B:1,输入,0,输出,B,组方式选择:,0,方式,0,1,方式,1,PC,7,PC,4,:1,输入,(方式,0,时),0,输出,8255A,的工作方式可由,CPU,写一个工作方式选择控制字到,8255A,的控制寄存器来选择。,其格式如上图所示,可以分别选择端口,A,、,端口,B,和端口,C,上下两部分的工作方式。端口,A,有方式,0,、方式,1,和方式,2,三种工作方式,端口,B,只能工作于方式,0,和方式,1,,而端口,C,仅工作于方式,0,。注意,8255A,工作方式选择控制字的,最高位,D,7,(,特征位,),应为,1,。,0,D,6,D,5,D,4,D,3,D,2,D,1,D,0,x,x,x,无关,1:,置,1,0:,置,0,0,0,0,0,1,1,1,1,端口,C,按位置,1/,置,0,控制字标识位,位选择,PC,0,PC,1,PC,2,PC,3,PC,4,PC,5,PC,6,PC,7,0,0,1,1,0,0,1,1,0,1,0,1,0,1,0,1,8255A,的,C,口按位置位,/,复位控制字,8255A,的,C,口具有位控功能,即端口,C,的,8,位中的任一位都可通过,CPU,向,8255A,的控制寄存器写入一个按位置位,/,复位控制字来置,1,或清,0,,而,C,口中其他位的状态不变。,其格式如上图所示,注意,8255A,的,C,口按位置位,/,复位控制字的,最高位,D,7,(,特征位,),应为,0,。,例如:设有一片,8255A,的口地址为,60H-63H,,,PC5,平时为低电平,要求从,PC5,的引脚输出一个正脉冲。可使用程序先将,PC5,置,1,,输出一个高电平,再把,PC5,清零,输出一个低电平,结果,PC5,引脚输出一个正脉冲。程序如下:,MOV AL,00001011B,OUT 63H,AL,MOV AL,000001010B,OUT 63H,AL,四、,8255A,的工作方式及编程,8255A,端口,功能,表,工作方式,方式,0,A,口,B,口,C,口,方式,1,方式,2,基本输入输出端口,输入不锁存,输出锁存,同,A,口,同,A,口,应答式输入输出端口,输入输出均可锁存,双向应答式输入输出,,输入输出均可锁存,同,A,口,不用,上,C,口作为应答式,A,口,的应答线,;,下,C,口作为,应答式,B,口的应答线,用作,A,口的双向应答,控制线,三种可编程的工作方式:,方式,0,基本,的字节,输入,/,输出方式,方式,1,选通,的字节,输入,/,输出方式,方式,2,带选通的,双向,字节,输入,/,输出方式,8255A,有三种工作方式:,方式,0,基本输入,/,输出方式,方式,1,选通输入,/,输出方式,方式,2,双向传输方式,可以通过往控制寄存器中写入控制字来选择其工作方式。,方式,0,:,基本输入输出方式,适用于无条件传送和查询方式的接口电路,方式,1,:,选通输入输出方式,适用于查询和中断方式的接口电路,方式,2,:,双向选通传送方式,适用于与双向传送数据的外设,适用于查询和中断方式的接口电路,1,、,8255A,工作在方式,0,方式,0,也叫基本输入输出方式。,在这种方式下,端口,A,和端口,B,可以通过方式选择控制字规定为输入口或者输出口;,端口,C,分为高,4,位,(PC7,PC4),和低,4,位,(PC3,PC0),两个,4,位端口,这两个,4,位端口也可由方式选择控制字分别规定为输入口或输出口。,这四个并行口共可构成,16,种不同的使用组态。,利用,8255A,的方式,0,进行数据传输时,由于没有规定专门的应答信号,所以这种方式常用于与简单外设之间的数据传送,如向,LED,显示器的输出,从二进制开关装置的输入等。,需要说明的是,这里所说的输入或输出是相对于,8255A,芯片而言的。当数据从外设送往,8255A,时为输入,反之,数据从,8255A,送往外设则为输出。,方式,0,也可以用于查询方式的输入或输出接口电路,此时端口,A,和,B,分别作为一个数据端口,而用端口,C,的某些位作为这两个数据端口的控制和状态信息。下图是一个,A,口和,B,口工作在方式,0,时利用,C,口某些位作为联络信号的接口电路。,在此例中将,8255A,设置为:,A,口输出,,B,口输入,,C,口高,4,位输入,(,现仅用,PC7,、,PC6,两位输入外设的状态,),,,C,口低,4,位输出,(,现仅用,PC1,、,PC0,两位输出选通及清除信号,),。此时,8255A,的工作方式控制字为,10001010B(8AH),。,方式,0,查询方式的接口电路,其工作原理如下:,在向输出设备送数据前,先通过,PC7,查询设备状态,若设备准备好则从,A,口送出数据,然后通过,PC1,发选通信号使输出设备接收数据。,从输入设备取数据前,先通过,PC6,查询设备状态,设备准备好后,再从,B,口读入数据,然后通过,PC0,发清除信号,以便输入后续字节。,2.,方式,1,选通的输入输出方式,特点,:,(,1,)两组端口,A,和,B,都可以工作在方式,1,,每一组包含一个,8,位的数据端口和一个,3,位的控制端口。,(,2,),8,位数据端口可以是输入或者输出,输入,/,出均带锁存。,(,3,),C,口有,6,位固定作为,A,口、,B,口的状态和控制信号,剩下,2,位可由程序指定为输入和输出。,在,方式,1,输入,情况下,,C,口被定义的状态和控制信号有 、,IBF,和,INTR,,,其含义如下:,:选通信号,低电平有效,由外设提供。,有效时,外设把数据送入,8255A,的,A,口或,B,口。,IBF,:,输入缓冲器满,高电平有效,由,8255A,输出给外设。当该信号有效时表明,数据选通信号,表示外设已经准备好数据,输入缓冲器满信号,表示,A,口已经接收数据,中断请求信号,请求,CPU,接收数据,PC,4,PC,5,PC,3,PA,7,PA,0,INTE,A,IBF,A,INTR,A,STB,A,中断允许触发器,外设已将数据送到,A,口或,B,口的输入缓冲器。,IBF,由 置位,的上升沿使它复位。,IBF,可作为,8255A,与外设的联络信号。当,IBF=0,时,允许外设向,8255A,传送一个数据;当,IBF=1,时,表示外设送来的数据还未被,CPU,取走,这时禁止外设向,8255A,传送数据。,IBF,也可作为,CPU,的查询信号,当,IBF=1,时,告诉,CPU,应该从,8255A,的端口读取数据。,INTR,:,中断请求信号,高电平有效,由,8255A,发出。在程序设置的中断允许信号,INTE=1,的条件下,当,=1,和,IBF=1,时,,INTR,被置为,1,,的上升沿使它复位。,INTE,是端口内部的中断允许信号,是内部中断允许触发器的状态,由,C,口的位控字来设置。若位控字使,PC,4,=1,,则,A,口的中断允许信号,INTEA=1,;,若位控字,PC,2,=1,,则,B,口的中断允许信号,INTB=1,。,这一点对于,PC4,和,PC2,两引的 、功能并无影响。,方式,1,输入引脚:,B,端口,PC,2,PC,1,PC,0,PB,7,PB,0,INTE,B,IBF,B,INTR,B,STB,B,数据选通信号,表示外设已经准备好数据,输入缓冲器满信号,表示,A,口已经接收数据,中断请求信号,请求,CPU,接收数据,中断允许触发器,方式,1,需借用端口,C,用做联络信号,同时还具有中断请求和屏蔽功能,方式,1,输入联络信号,STB*,选通信号,低电平有效,由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至,8255A,的输入锁存器,IBF,输入缓冲器满信号,高电平有效,8255A,输出的联络信号。当其有效时,表示数据已锁存在输入锁存器,INTR,中断请求信号,高电平有效,8255A,输出的信号,可用于向,CPU,提出中断请求,要求,CPU,读取外设数据,方式,1,输入的时序,方式,1,输出时,各个控制信号的意义,OBF(Output Buffer Full),:,输出缓冲器满信号,输出,低电平有效。当,CPU,把数据写入端口,A,或,B,的输出缓冲器时,写信号,WR,的上升沿把,OBF,置成低电平,通知外设到端口,A,或,B,来取走数据,当外设取走数据时向,8255A,发应答信号,ACK,,,ACK,的下降沿使,OBF,恢复为高电平。,ACK(Acknowledge),:,外设应答信号,输入,低电平有效。当,ACK,有效时,表示,CPU,输出到,8255A,的数据已被外设取走。,INTR(Interrupt,Request),:,中断请求信号,输出,高电平有效。该信号由,ACK,的后沿,(,上升沿,),在,INTE=1,且,OBF=1,的条件下产生,该信号使,8255A,向,CPU,发出中断请求。若,CPU,响应此中断请求,则向数据口写入一,方式,1,输出时,各个控制信号的意义,新的数据,写信号,WR,上升沿,(,后沿,),使,INTR,复位,变为低电平。,INTE(Interrupt Enable),:,中断允许信号,与方式,1,输入类似,端口,A,的输出中断请求,INTR,A,可以通过对,PC,6,的置位或复位来加以允许或禁止。端口,B,的输出中断请求信号,INTR,B,可以通过对,PC,2,的置位或复位来加以允许或禁止。,方式,1,输出时,各个控制信号的意义,方式,1,输出引脚:,A,端口,外设响应信号,表示外设已经接收到数据,输出缓冲器满信号,表示,CPU,已经输出了数据,中断请求信号,请求,CPU,再次输出数据,PC,6,PC,7,PC,3,PA,7,PA,0,INTE,A,OBF,A,INTR,A,ACK,A,中断允许触发器,PC,2,PC,1,PC,0,PB,7,PB,0,INTE,B,OBF,B,INTR,B,ACK,B,外设响应信号,表示外设已经接收到数据,输出缓冲器满信号,表示,CPU,已经输出了数据,中断请求信号,请求,CPU,再次输出数据,中断允许触发器,方式,1,输出引脚:,B,端口,方式,1,输出的时序,3,方式,2,双向传输方式,此方式只适用于端口,A,。,这时,在,PA,0,PA,7,的,8,位数据线上,外设既可以从,8255A,获取数据;也可以向,8255A,发送数据。传输过程既可以工作于查询方式,也可以工作于中断方式。,方式,2,的主要特点,(,1,)仅限于端口,A,。,(,2,),一个双向,8,位数据总线端口,A,和一个,5,位的控制,/,状态端口,C,。,(,3,),输入,/,输出均锁存。,方式,2,将方式,1,的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据,只有端口,A,可以工作于方式,2,,需要利用端口,C,的,5,个信号线,其作用与方式,1,相同,方式,2,的数据输入过程与方式,1,的输入方式一样,方式,2,的数据输出过程与方式,1,的输出方式有一点不同:数据输出时,8255A,不是在,OBF*,有效时向外设输出数据,而是在外设提供响应信号,ACK*,时才送出数据,方式,2,的控制和状态信息,D,7,1,1/0,1/0,1/0,1,工作方式控制字,D,6,D,5,D,4,D,3,D,2,D,1,D,0,方式,2,的控制和状态信息,8255A,工作于方式,2,的状态字,当,A,口工作于方式,2,时,允许中断,此时若,B,口工作于方式,1,,则也允许中断。这时就有三个中断源(,A,口的输入和输出、,B,口)、两个中断请求信号(,INTRA,、,INTRB,)。,CPU,在响应,8255A,的中断请求时,先要查询,PC,3,(,INTRA,)和,PC,0,(,INTRB,),,以判断中断源是,A,口还是,B,口。如果中断源是,A,口,还要进一步查询,PC,5,(,IBFA,)和,PC,7,(),,以确定是输入中断还是输出中断。,8255A,的工作方式,2,是,A,口方式,1,输出和方式,1,输入两种操作的组合,所以方式,2,的工作过程也,同上述工作方式,1,的输出和输入过程。,INTR,WR,OBF,A,ACK,A,送外设的数据,数据有效,1,2,3,4,STB,A,9,7,IBF,A,RD,方式,2,的时序,8255A,的编程,初始化编程:一个方式控制字,采用控制,I/O,地址:,A1A0,11,工作过程中:通过数据端口对外设数据进行读写,数据读写利用端口,A,、,B,和,C,的,I/O,地址,,A1A0,依次等于,00,、,01,、,10,IBM PC/XT,机上,端口,A,、,B,、,C,和控制端口的,I/O,地址为,60H,、,61H,、,62H,和,63H,1.,写入方式控制字:控制字格式,1.,写入方式控制字:示例,要求:,A,端口:方式,1,输入,C,端口上半部:输出,,C,口下半部:输入,B,端口:方式,0,输出,方式控制字:,10110001B,或,B1H,初始化的程序段:,mov,dx,0fffeh;,假设控制端口为,FFFEH,mov,al,0b1h;,方式控制字,out,dx,al,;,送到控制端口,2.,读写数据端口,初始化编程后:,当数据端口作为输入接口时,执行输入,IN,指令将从输入设备得到外设数据,当数据端口作为输出接口时,执行输出,OUT,指令将把,CPU,的数据送给输出设备,8255A,具有锁存输出数据的能力,对输出方式的端口同样可以输入,不是读取外设数据,读取的是上次,CPU,给外设的数据,2.,读写数据端口:示例,利用,8255A,的输出锁存能力,可实现按位输出控制,对输出端口,B,的,PB7,位置位的程序段:,mov,dx,0fffah;B,端口假设为,FFFAH,in,al,dx,;,读出,B,端口原输出内容,or al,80h;,使,PB7,1,out,dx,al,;,输出新的内容,3.,读写端口,C,:,归纳,1,C,端口被分成两个,4,位端口,两个端口只能以方式,0,工作,可分别选择输入或输出,在控制上,,C,端口上半部和,A,端口编为,A,组,,C,端口下半部和,B,端口编为,B,组,3.,读写端口,C,:,归纳,2,当,A,和,B,端口工作在方式,1,或方式,2,时,,C,端口的部分或全部引脚将被征用,其余引脚仍可设定工作在方式,0,3.,读写端口,C,:,归纳,3,对端口,C,的数据输出有两种办法,通过端口,C,的,I/O,地址:向,C,端口直接写入字节数据。这一数据被写进,C,端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效,通过控制端口:向,C,端口写入位控字,使,C,端口的某个引脚输出,1,或,0,,或置位复位内部的中断允许触发器,端口,C,的位控制字,位控制字写入控制端口,特别便于置位复位内部中断允许触发器,INTE,3.,读写端口,C,:,归纳,4,读取的,C,端口数据有两种情况,未被,A,和,B,端口征用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息,被,A,和,B,端口征用作为联络线的引脚:将读到反映,8255A,状态的状态字,D7,D6,D5,D4,D3,D2,D1,D0,方式,1,输入,I/O,I/O,IBFA,INTEA,INTRA,INTEB,IBFB,INTRB,方式,1,输出,OBFA,INTEA,I/O,I/O,INTRA,INTEB,OBFB,INTRB,方式,2,双向,OBFA,INTE1,IBFA,INTE2,INTRA,端口,C,的状态字,A,组,B,组,七、,8255,应用举例,作为通用的并行接口电路芯片,,825A,具有广泛的应用,应用在,IBM PC/XT,微机上,应用于打印机接口电路,连接简易键盘,驱动,LED,数码管,1,、,LED,显示器接口,2,、并行打印机接口电路,3,、键盘接口,1,、,LED,显示器接口,例,:,8255A,作为开关,K0K3,及七段,LED,显示器接口。要求开关设置的二进制信息,由,PC0PC3,输入,经程序转换为对应的七段,LED,显示器的字形代码后,由,PA,口输出显示。,8255A,PA7,PA0,驱动器,+5V,5V,K0,K1,K2,K3,PC3,PC2,PC1,PC0,D7D0,RD WR A1 A2,A B C G2A G2B,G1,Y0 Y1 Y2,O O O,D7D0,RD WR A0 A1 CS,A0 A3,A4,A7,8086,系统总线,LS138,接口电路,M/IO,&,A5,A6,各端口地址为:,E8HEEH,8255A,各端口地址确定:,由图可知:,A7 A6 A5 A4 A3 A2 A1 A0,1 1 1 0 1,0,8255A,方式选择控制字:,CS,A B C G2A G2B,G1,Y0 Y1 Y2,A0 A3,A4,A7,LS138,M/IO,&,A5,A6,按题意设置端口,A,方式0输出,下,C,口输入.,1,0,0,0,0,1,81H,LED,显示器的结构,a,b,d,c,e,f,g,dp,LED,显示器的外形,a,b,c,d,e,f,g,ep,共阳极,LED,显示器的结构,a,b,c,d,e,f,g,ep,共阴极,LED,显示器的结构,LED,显示器的结构可分为共阳极和共阴极两种,若要显示某个字符首先需要将它转换成对应的字形码,(,也称为段码,),,然后送到,LED,显示。这一转换过程称为译码。译码方法分为软件译码法和硬件译码法两种,PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,8,2,5,5,DB7-DB0,a,b,c,d,e,f,g,ep,方案,1,共阳极,LED,显示器与同相驱动器接口,LED,显示器的工作原理,软件译码:,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,D7 D6 D5 D4 D3 D2 D1 D0,dp,g f e d c b a,0(C0H)1 1 0 0 0 0 0 0,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,9(90H)1 0 0 1 0 0 0 0,1(F9H)1 1 1 1 1 0 0 1,2(A4H)1 0 1 0 0 1 0 0,3(B0H)1 0 1 1 0 0 0 0,4(99H)1 0 0 1 1 0 0 1,5(92H)1 0 0 1 0 0 1 0,6(82H)1 0 0 0 0 0 1 0,7(F8H)1 1 1 1 1 0 0 0,8(80H)1 0 0 0 0 0 0 0,LED,显示器的工作原理,PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,8,2,5,5,DB7-DB0,a,b,c,d,e,f,g,ep,方案,2,共阳极,LED,显示器与反相驱动器接口,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,D7 D6 D5 D4 D3 D2 D1 D0,dp,g f e d c b a,0(3FH)0 0 1 1 1 1 1 1,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,a,b,d,c,e,f,g,dp,9(6FH)0 1 1 0 1 1 1 1,1(05H)0 0 0 0 0 1 1 0,2(5BH)0 1 0 1 1 0 1 1,3(4FH)0 1 0 0 1 1 1 1,4(66H)0 1 1 0 0 1 1 0,5(6DH)0 1 1 0 1 1 0 1,6(7DH)0 1 1 1 1 1 0 1,7(07H)0 0 0 0 0 1 1 1,8(7FH)0 1 1 1 1 1 1 1,LED,显示器的字形代码表存放在,TABLE,单元开始的内存中.,TABLE DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,98H,88H,83H,0C6H,0A1H,86H,8EH,编程:,实现操作的具体程序如下,:,MOV DX,0E8H,;,指向端口,A OUT DX,AL,;,输出字形码显示,HLT,MOV DX,,,0EEH,;,设置8255,A,工作方式,MOV AL,,,81H OUT DX,,,AL,MOV DX,,,0ECH,;,指向端口,C,,,读开关状态,IN AL,,,DX AND AL,,,0FH,LEA BX,,,TABLE,;,显示代码表首地址送,BX,XLAT,;,查表,取出相应的字形码送,AL,硬件译码:,利用专用接口芯片,7447,驱动,LED,显示器,7447,为,BCD,七段译码器,与单个,LED,的连接,7447,a b c d e f g,13 12 11 10 9 15 14,Vcc,GND,RBI,RBO,LT,A B C D,3,4,5,+5V,7 1 2 6,+5V,16,8,5V,R=(51.5 0.2)V/20mA=168,取R=150,5V,1.5V,0.2V,I=20mA,R,LED,显示器的电路设计分为两种,静态显示和动态显示,两种电路各有长处和缺点,在不同情况下可采用不同的连接方式。,下面是两种连接方式:,PA0PA1PA2PA3 PA4 PA5PA6 PA7,7447,a b c d e f g,A B C D,7447,a b c d e f g,A B C D,7447,a b c d e f g,A B C D,7447,a b c d e f g,A B C D,PB0PB1PB2PB3 PB4 PB5PB6 PB7,DB0DB7,DB0DB7,7447BCD,七段译码器与多个,LED,的连接,5V,静态显示器的设计,器件多,输出显示后若不改变显示内容,CPU,不用干预,7,4,4,7,a,b,c,d,e,f,g,A,B,C,D,PB0,PB1,PB2,PB3,PA0,PA1,PA2,PA3,PA4,PA5,PA6,8,2,5,5,动态显示器的设计,动态显示器控制程序的设计,LEA SI,BUFF,MOV CX,07H,MOV DL,01H,初始化,结束,取显示数据,送段通道口,延时,位码送位通道口,是否最后一位,修改指针,位码,N,Y,MOV AL,SI,OUT POTB,AL,MOV AL,DL,OUT POTA,AL,INC SI,ROL DL,PB0,PA0,PA1,PA2,PA3,PA4,PA5,PA6,8,2,5,5,a,g,PB7,74LS07,初始化,结束,取显示数据,查表得段码送段通道,延时,位码送位通道,是否最后一位,修改指针,位码,N,Y,LEA SI,BUFF,MOV CL,40H,MOV BX,LED-ADD,DISI:MOV AL,SI,XLAT,MOV DX,POTB,OUT DX,AL,MOV AL,CL,MOV DX,POTA,OUT DX,AL,INC SI,SHR CL,JNZ DISI,二、键盘接口,键盘是微型计算机系统中最常用的一种输入设备。键盘有两种类型:,编码键盘和非编码键盘,。,编码键盘能自动提供对应于被按键的编码,如,ASCII,码,并能同时产生一个脉冲通知,CPU,。,编码键盘还具有处理抖动和多键串键的保护电路。这种键盘的优点是使用方便,但需要较多的硬件,价格昂贵。,非编码键盘有一组开关组成,提供行和列的键盘矩阵,其工作过程:按键的识别;按键代码的产生;防止串键和消除抖动等均由程序来实现。故这种键盘的优点是所需要的硬件较少,价格便宜,宜用微机化仪表的面板的键盘。,这里只介绍,非编码键盘,PB7,PB6,PB5,PB4,PB3,PB2,PB1,PB0,C,9,8,D,E,4,0,F,6,1,5,B,2,7,3,A,PA0,PA1,PA2,PA3,8255A,8,2,5,5,A,+5V,4,行,4,列,16,个按键的键盘,工作原理,键盘扫描过程:,(,1,)检测键盘上所有的键是否都松开,反复检测直至全松开。,(,2,)检测键盘上是否有键按下,反复检测直至有键按下。,(,3,)若有键按下,则消除键抖动后(硬件消抖动电路,软件延时消抖动下),再确认该键是否按下。,(,4,)对按下的键进行编码,即将该键所在的行号和列号转换成,16,进制代码。,(,6,)根据代码转相应功能子程序。,注:若在按键时,多个键盘同时按下,可取最后松开的按键作为本次按下的键。,(,5,)检测该键是否松开,反复检测直至松开。,初始化:,PORT-A EQU 0FF9H,;,8255A,口地址,PORT-B EQU 0FFBH,;,8255B,口地址,PORT-CTL EQU 0FF9H,;,8255,控制口地址,TABLE DB 77H,,,7BH,,,7DH,,,7EH,DB 0B7H,,,0BBH,,,0BDH,,,0BEH,DB 0D7H,,,0DBH,,,0DDH,,,0DEH,DB 0E7H,,,0EBH,,,0EDH,,,0EEH,8255,初始化:方式,0,,,A,口,输出,,B,口、,C,口输入,MOV DX,,,PORT-CTL ;DX,指向控制口,MOV AL,,,10001011B ;,控制字,OUT DX,,,AL,;,写入控制字,MOV DX,,,PORT-A ;DX,指向,A,口,MOV AL,,,00H,OUT DX,,,AL,WO,:,MOV DX,,,PORT-B ;DX,指向,B,口,IN AL,,,DX ;,输入,B,口,AND AL,,,OFH,COM AL,,,OFH,;,各键均未按下,JNE WO,;,否,继续等,WR,:,IN AL,,,DX ;,输入,B,口,AND AL,,,OFH,COM AL,,,OFH,;,是否有键按下,JE WR,;,否,等待,MOV CX,16EAH,DELAY:LOOP DELAY,WR,:,IN AL,,,DX ;,输入,B,口,AND AL,,,OFH,COM AL,,,OFH,;,是否有键按下,JE WR,;,否,等待,读入列值,键,松开,读入列值,有键按下,延时,20ms,消抖动,键仍按下,逐行逐列查,按键,查表得键,代码,所有行置“,0”,N,Y,N,MOV AL,,,0FEH,;,置行扫描初值,MOV CL,,,AL,;,暂存于,C,N-R,:,MOV DX,,,PORT-A,OUT DX,,,AL,;,输出行扫描值,MOV DX,,,PORT-B,;,DX,指向,B,口,IN AL,,,DX,;,输入,B,口,AND AL,,,OFH,COM AL,,,OFH,;,有键按下,JNE ENCODE,;,是,转编码,ROL CL,,,01,;,否,修改扫描初值,MOV CL,,,AL,JMP N-R,;,扫描下一行,ENCODE,:,MOV BX,,,000FH,;置,键代码初值,IN AL,,,DX,;,读入行列号,NEXT-T,:,COM AL,,,TABLEBX,;,与表中行列号相等吗,JE DONE,;,相等转,DONE,DEC BX,;不,相等,修改位置,JNS NEXT-T,;,未查完,继续,MOV AH,,,01,;,查完,未查到,置出错标志,JMP EXIT,;,退出,DONE,:,MOV AL,,,BL,;,键代码送,AL,MOV AH,,,00,;,键有效标志,00,AL,EXIT,:,RET,+5V,PB7,PB6,PB5,PB4,PB3,PB2,PB1,PB0,8,2,5,5,A,PA7,PA6,PA5,PA4,PA3,PA2,PA1,PA0,8,2,5,5,A,7,行,6,行,5,行,4,行,3,行,2,行,1,行,0,行,4,列,5,列,3,列,1,列,2,列,0,列,6,列,7列,0,1,7,8,F,10,18,20,30,28,38,8,行,8,列,键盘,CPU,向端口,A,送全“,0”,到行线,再从,B,口读入列状态。若读入的状态为全“,1”,,表示无键按下。,CPU,向端口,A,的,PA0,送“,0”,,其余行线送“,1”,,再从,B,口读入列状态。若读入的状态为全“,1”,,表示第,0,行无键按下;否则闭合键在第,0,行上。,在第,0,行无键按下的情况下,依此对行,1,,行,2,,,行,7,进行上述操作,找出按键所在的行和列的编号。,三、与打印机接口,例:在某一,8086,系统中接有一个打印机,,8255A,作为输出接口。工作在方式,0,,试编一程序将缓冲区,BUFF,内的,400H,个字节的,ASCII,码送打印机打印。,总线式接口的缺点,8255,接口的优点,打印机具体工作过程如下:,1,、数据线,D,7,D,0,出现有效数据;,2,、,STB,有效,通知打印机,接口给打印机一个数据,数据从数据线进入打印机;,3,、,BUSY,有效,告诉接口,打印机正在打印数据。打印完毕,,BUSY,变为无效,表示打印结束。,1,2,3,print_data proc,;,打印子程序,入口在,dl,中,print1:in al,c_port,;,无条件读,C,口数据,test al,00010000b,;,测试,busy,线,jnz,print1,;,busy,有效,循环测试,mov,al,dl,out a_port,al,;,打印数据进入,A,口,mov,al,00000000b,;,发选通信号,out ctrl_port,al,mov,al,00000001b,out ctrl_port,al,ret,;,返回主程序,print_datA,endp,2,、,人机交互接口,动态显示,例:常用的显示称为动态显示,它采用扫描显示技术,可以使硬件开销降低很多。对于一个,8,位数据显示,它就需要两个输出端口就可以了。其电路如图所示。在两个输出端口中,一个称为段信号通道,它用来输出要显示数据的段码;另一个称为位信号通道,用来决定当前要显示数据的位置。,动态显示电路图,显示系统的具体工作步骤如下:,a,、,设要显示的初始位码,i,0,;,b,、,送第,i,位的段信号;,c,、,送第,i,位的位信号;,d,、,延时;,e,、,i,1,if,、,如果,i,小于,8,,转,bg,、,8,位数据显示结束。,程序如下:,a_port,equ,80h,;,定义,8255A,的四个端口,b_port,equ,82h,c_port,equ,84h,ctrl_port,equ,86h,datasegment,;,定义数据段,tab1db 3FH,06H,5BH,4FH,;,定义段码表,dispbuff,db 2,0,0,6,1,2,0,9,;,定义显示缓冲区,dataends,;,显示子程序,数据在,dispbuff,中,displayproc.,;,保护现场,mov,bx,offset,tab1,mov,si,offset,dispbuff,;,步骤,a,mov,cx,8,mov,ah,01,disp1:,mov,al,si,;,步骤,b,xlat,out a_port,al,mov,al,ah,;,步骤,c,out b_port,alcall delay5ms,;,步骤,d,,,延时,5ms,shl,
展开阅读全文