收藏 分销(赏)

可编程并行输入输出接口8255APPT学习课件.ppt

上传人:天**** 文档编号:10195627 上传时间:2025-04-26 格式:PPT 页数:106 大小:3.10MB
下载 相关 举报
可编程并行输入输出接口8255APPT学习课件.ppt_第1页
第1页 / 共106页
可编程并行输入输出接口8255APPT学习课件.ppt_第2页
第2页 / 共106页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第九章 可编程并行接口,8255A,9,1,并行接口原理,9,2,可编程并行接口芯片,8255A,9.3 8255A,应用举例,习 题,9,1,第九章 可编程并行接口,8255A,CPU,与外部设备之间的数据传送是通过接口来实现的。数据传送的方式有两种:串行传送和并行传送。串行传送就是在一条传输线上一位一位地传送数据。在串行传送方式下,外设通过串行接口与系统总线相连接。并行传送就是同时在多条传输线上以字节或字为单位进行传送。在并行传送方式下,外设通过并行接口与系统总线相连接。串行传送通常应用在远距离传输以及慢速外部设备与主机的数据传输方面,而并行传送则通常应用在短距离的快速数据传输方面。,本章讲述并行接口原理、可编程并行接口芯片,8255A,及其应用举例。重点讲述可编程并行接口芯片,8255A,的主要特性、内部结构、引脚功能及应用编程。,2,9,1,并行接口原理,并行接口和外设连接的原理示意图如图,9-1,。图中的并行接口用一个通道和输入设备相连,用另一个通道和输出设备相连。每个通道都配有一定的控制线和状态线。从图中可以看到,并行接口中的控制寄存器用来接收,CPU,发来的控制命令,状态寄存器提供各种状态位供,CPU,查询,而输入缓冲寄存器和输出缓冲寄存器用来实现输入和输出。,3,图,9-1,并行接口和外设连接示意图,4,9.1.1,并行接口的功能,通常来说,一个并行接口应具备以下功能:,1.,实现与系统总线的连接,提供数据的输入输出功能。,2.,实现与外部设备相的连接,具有与外部设备进行应答的同步机构,保证有效地进行数据的发送或接收。,3.,具有中断请求与处理功能,使得数据的输入,/,输出可以采用中断的方式来实现。,5,9.1.2,并行接口的控制方式,1.,并行,I/O,接口的输入过程,输入设备将数据送往并行,I/O,接口,同时向接口发送数据输入选通,(STB),信号。,STB,信号一方面将输入数据保存在接口内的数据寄存器,另一方面将接口内状态寄存器的输入数据就绪,(Ready),状态置位,(1),,供,CPU,查询,或申请中断。,CPU,通过查询状态获知数据进入接口或收到中断请求后执行指令读取数据。,接口将状态寄存器中的,Ready,状态复位,(0),同时向输入设备方式数据输入应答,(ACK),信号。,6,2.,并行,I/O,接口的输出过程,CPU,执行输出指令,将数据送到接口中的数据寄存器。,接口将寄存器中数据送往外部设备,同时向外部设备发出数据输出选通,(STB),信号,并将接口内状态寄存器的设备忙,(Busy),状态置位,(1),。,外部设备接收到数据,并将数据输出完成后,向接口发一个数据应答,(ACK),信号。,接口收到,ACK,信号,将状态寄存器中的设备忙,(Busy),状态复位,(0),Busy,信号既可以作为状态信号供,CPU,查询,又可以作为向,CPU,发送的中断请求信号。,7,并行接口电路的外部信号可分为与外部设备相连的接口信号和与,CPU,相连的接口信号两部分。,与外部设备的接口信号,数据信号:用于接口电路与外部设备进行数据的输入或输出。,状态信号:用于接口电路接收外部设备提供的状态信息。,控制信号:用于接口电路向外部设备提供控制功能,8,2,与,CPU,的接口信号,数据信号:用于接口电路与,CPU,的数据交换。,地址译码信号:用于选择不同的接口电路以及接口电路内部不同的寄存器。,读写信号:用于确定,CPU,对接口电路的读,/,写操作。,中断请求与应答信号:用于实现中断请求和中断响应操作。,9,9.1.3,并行接口的接口标准,1.Centronics,标准:并行打印机接口,2.IEEE1284,标准:,10,9,2,可编程并行接口芯片,8255A,Intel 8255A,是一种通用的可编程并行接口芯片,由于它是可编程的,可以通过程序来设置芯片的工作方式,通用性强,使用灵活,可为多种不同,CPU,与外设之间提供并行输入,/,输出通道。,11,9.2.1 8255A,的内部结构及引脚功能,1,8255A,的内部结构,8255A,内部具有三个带锁存器或缓冲器的数据端口,可与外设进行并行数据交换,各端口内具有中断控制逻辑和选通控制逻辑。外设与,CPU,之间可通过条件传送方式或中断方式进行信息交换,在条件传送方式下,,8255A,可提供联络信息。,8255A,的内部结构框图如图,9-2,所示。从图中可见,,8255A,由以下几部分组成。,12,(,1,)数据端口,A,、,B,、,C,8255A,有,3,个,8,位的数据端口,即端口,A,,端口,B,和端口,C,。设计人员可通过编程使它们分别作为输入端口或输出端口。不过,这,3,个端口有各自的特点。,端口,A,对应一个,8,位的数据输入锁存器和一个,8,位的数据输出锁存器,/,缓冲器。端口,A,作为输入或输出时,数据均受到锁存。,端口,B,和端口,C,均对应一个,8,位输入缓冲器和一个,8,位数据输出锁存器,/,缓冲器。,在使用中,端口,A,和端口,B,常常作为独立的输入或者输出端口。端口,C,除了可以作为独立的输入或输出端口外,还可以配合端口,A,和端口,B,的工作。具体说,端口,C,可分成两个,4,位的端口,分别作为端口,A,和端口,B,的控制信号和状态信号。,13,图,9-2 8255A,内部结构及引脚功能图,14,(,2,),A,组控制和,B,组控制,这两组控制电路一方面接收,CPU,发来的控制字并决定,8255A,的工作方式;另一方面接收来自读,/,写控制逻辑电路的读,/,写命令,完成接口的读,/,写操作。,A,组控制电路控制端口,A,和端口,C,的高,4,位的工作方式和读,/,写操作。,B,组控制电路控制端口,B,和端口,C,的低,4,位的工作方式和读,/,写操作。,(,3,)总线缓冲器,这是一个双向三态的,8,位数据缓冲器,,8255A,正是通过它与系统总线相连。输入数据、输出数据、,CPU,发给,8255A,的控制字都是通过这个缓冲器传递的。,15,(,4,)读,/,写控制逻辑电路,读,/,写控制逻辑电路负责管理,8255A,的数据传输过程。它接收 及来自系统地址总线的信号,A1,,,A0,信号和控制总线的,RESET,、信号,将这些信号进行组合后,得到对,A,组控制和,B,组控制的控制命令,并将这些命令发给这两个部件,以完成对数据、状态信息和控制信息的传输。,16,2,8255A,引脚功能,8255A,芯片的引脚信号如图,9-3,所示,,8255A,芯片除电源和地引脚以外,其他引脚可分成两组:,(,1,),8255A,与外设相连的引脚,8255A,与外设连接的有,24,个双向、三态引脚,分成三组,分别对应于,A,、,B,、,C,三个端口:,PA7PA0,,,PB7PB0,,,PC7PC0,。,17,(,2,),8255A,与,CPU,相连的引脚,D7D0,:双向、三态数据线,RESET,:复位信号,高电平有效。复位时所有内部寄存器清除,同时其,3,个数据端口被自动设为输入端口。,:芯片选择信号,低电平有效。该信号有效时,,8255A,被选中。,:读信号,低电平有效。该信号有效时,,CPU,可从,8255A,读取输入数据或状态信息。,18,:写信号,低电平有效。该信号有效时,,CPU,可向,8255A,写入控制字或输出数据。,A1,,,A0,片内端口选择信号。,8255A,内部有三个数据端口和一个控制端口。规定当,A1,,,A0,为,00,时,选中,A,端口,为,01,时,选中,B,端口;为,10,时,选中,C,端口;为,11,时,选中控制口。,概括起来,,8255A,的 ,、,,A1,,,A0,控制信号和传送信号操作之间的关系如表,9.1,所示。,19,表,9.1 8255A,的控制信号和传送操作的对应关系,20,9.2.2 8255A,控制字,8255A,可以通过指令在控制端口中设置控制字来决定它的工作。,8255A,有两个控制字:方式选择控制字和端口,C,置位,/,复位控制字。这两个控制字公用一个地址,即控制端口地址。用控制字的,D7,来区分这两个控制字,当,D7=1,时选择方式选择控制字;当,D7=0,时选择端口,C,置位,/,复位控制字。,21,1.,方式选择控制字,方式选择控制字的格式如图,9-3,所示。,D0D2,用来对,B,组端口进行工作方式设定,,D3D6,用来对,A,组的端口进行工作方式设定。最高位为,1,是方式选择控制字标志。,对,8255A,的方式选择控制字的几点说明:,8255A,有,3,种基本的工作方式:,方式,0,:基本的输入,/,输出方式,方式,1,:选通的输入,/,输出方式,方式,2,:双向传输方式,22,端口,A,可以工作在,3,种工作方式中的任何一种,端口,B,只能工作在方式,0,或方式,1,,端口,C,则常配合端口,A,和端口,B,工作,为这两个端口的输入,/,输出传输提供控制信号和状态信号。可见,只有端口,A,能工作在方式,2,。,归为同一组的两个端口可以分别工作在输入方式和输出方式,并不要求同为输入方式或同为输出方式。而一个端口到底是作为输入还是输出端口,这完全由方式选择控制字决定。,23,图,9-3 8255A,方式选择控制字,24,2.,端口,C,置位,/,复位控制字,端口,C,的数位常常作为控制位使用,所以,在设计,8255A,芯片时,应使端口,C,中的各数位可以用置位,/,复位控制字单独设置。,端口,C,置位,/,复位控制字的格式如图,9-4,所示。,对端口,C,置位,/,复位控制字的几点说明:,端口,C,置位,/,复位控制字尽管是对端口,C,进行操作,但此控制字必须写入控制口,而不是写入,C,口。,25,端口,C,置位,/,复位控制字的,D0,位决定是置,1,还是置,0,操作。如为,1,,则对端口,C,中某一位置,1,,否则,置为,0,。,端口,C,置位,/,复位控制字的,D3,、,D2,、,D1,位决定了对,C,端口中的哪一位进行操作。,端口,C,置位,/,复位控制字的,D6,、,D5,、,D4,位可为,1,,也可为,0,,它们不影响置位,/,复位操作。但,D7,必须为,0,,它是端口,C,置位,/,复位控制字的标识符。,26,图,9-4 8255A,端口,C,置位,/,复位控制字,27,9.2.3 8255A,的工作方式,前面已提到,,8255A,的端口,A,可以工作在方式,0,、方式,1,、方式,2,三种方式下工作,而端口,B,只能在方式,0,和方式,1,这两种方式下工作,此外,我们也说明了端口的工作方式是由方式控制字决定的。,下面,介绍三种工作方式的具体含义。,28,1,方式,0,方式,0,称为基本输入输出方式。在这种方式下,端口,A,和端口,B,可以通过方式选择控制字规定为输入端口或输出端口,端口,C,则分为两个,4,位端口,高,4,位为一个端口,低,4,位为一个端口,这两个,4,位端口也可由方式选择控制字规定为输入端口或输出端口。,方式,0,的基本特点如下:,4,个端口相互独立,它们之中每个端口既可作为输入端口,也可作为输出端口,各端口之间没有必然关系。,4,个端口的输入,/,输出可以有,16,种组合,所以可适用于多种使用场合。,29,各个端口工作于方式,0,时,输出具有锁存功能,而输入则没有锁存能力。即在给某一个端口输出信息后,如果没有对该端口进行改变,则该端口一直保持以前输出的信息。而读入的信息则是在输入指令执行时外界在引脚上施加的电平信息。,当端口,C,工作于方式,0,且为输出时,可以通过置位,/,复位控制字改变端口,C,任何一个引脚的电平,即置位,/,复位控制字直接影响端口,C,引脚状态。,8255A,工作于方式,0,时,,CPU,采用无条件读写方式与,8255A,交换数据,也可采有查询方式与,8255A,交换数据。采用查询方式时,可利用端口,C,作为与外设的联络信号。,30,2,方式,1,方式,1,称为选通的输入,/,输出方式。与方式,0,相比,最大的差别是当端口,A,和端口,B,用方式,1,进行输入或输出数据时,要利用端口,C,提供的选通信号和应答信号,而这些信号与端口,C,的数位有着固定的对应关系,这种对应关系是,8255A,本身决定的,不能用程序改变,除非改变,8255A,的工作方式。,方式,1,的基本特点如下:,31,端口,A,和端口,B,分别作为两个输入或输出端口工作在方式,1,。该端口作为输入端口或输出端口是由方式控制字决定的。,如果,8255A,的端口,A,和端口,B,只有一个工作在方式,1,,那么,端口,C,中就有,3,条线被规定为配合方式,1,工作的联络信号。此时另一个端口可以工作在方式,0,,端口,C,中剩余,5,条线也可以工作在方式,0,,即作为方式,0,输入端口或方式,0,输出端口。如果,8255A,的端口,A,和端口,B,都工作在方式,1,,那么,端口,C,就有,6,条线被规定为配合方式,1,工作的联络信号,剩余的,2,条线,仍可作为方式,0,输入或输出。,32,端口,A,和端口,B,在方式,1,,输入、输出均具有锁存功能。,当端口,C,的相应引脚规定作联络线时,这些联络线不能用置位,/,复位控制字影响其引脚电平,而只能用规定的操作改变引脚状态。,(,1,)方式,1,输入,端口,A,、端口,B,都设置为方式,1,输入时的情况及时序如图,9-5,所示。其中,PC3,,,PC4,,,PC5,作为端口,A,的联络信号,,PC0,,,PC1,,,PC2,作为端口,B,的联络信号。,33,图,9-5 8255A,方式,1,输入的控制信号和时序,34,表,9-2,是端口,A,和端口,B,都工作在方式,1,情况下作为输入端口,端口,C,各引脚的名称及对应关系。,对于各控制信号,说明如下:,(,Strobe,):数据选通信号输入端,低电平有效。是由外设送往,8255A,的。当有效时,,8255A,接收外设送来的一个,8,位数据,并将数据锁存到其输入的锁存器中,从而,8255A,的输入缓冲器得到一个新的数据并保持此数据,直到外设再次送来新数据。,IBF,(,Input Buffer Full,):输入缓冲器满信号,高电平有效。它是,8255A,输出的状态信号。当它有效时,表示当前输入缓冲器已有一个新的数据。此信号一般供,CPU,查询用。,IBF,信号是由 信号使其复位的,而由读信号的后沿即上升沿使其复位。,35,INTR,(,Interrupt Request,):,8255A,送往,CPU,的中断请求信号,高电平有效。,INTR,端在 ,,IBF,均为高时被置为高电平,也就是说,当选通信号结束,外设已将一个数据送进输入缓冲器中,并且输入缓冲器信号已为高电平时,,8255A,会向,CPU,发出中断请求信号,即将,INTR,端置为高电平。在,CPU,响应中断读取输入缓冲器的数据时,由读信号 的下降沿将,INTR,改变为低电平。,36,表,9-2,方式,1,输入情况下联络信号及传输方向,37,INTE,(,Interrupt Enable,):中断允许,实际上,它就是控制中断允许或中断屏蔽的控制信号。,INTE,没有外部引出端,它是由程序通过对端口,C,的置位,/,复位控制字来实现对中断的控制的。具体讲,对,PC4,置,1,,则使端口,A,处于中断允许状态;对,PC4,置,0,,则使端口,A,处于中断屏蔽状态。与此类似,对,PC2,置,1,,则使端口,B,处于中断允许状态;对,PC2,置,0,,则使端口,B,处于中断屏蔽状态。当然,如果要使用中断功能,应该用程序使相应的端口处于中断允许状态。,(,2,)方式,1,输出,端口,A,、端口,B,都设置为方式,1,输出时的情况及时序如图,9-6,所示。其中,PC3,,,PC6,,,PC7,作为端口,A,的联络信号,,PC0,,,PC1,,,PC2,作为端口,B,的联络信号。,38,图,9-6 8255A,方式,1,输出的控制信号和时序,39,表,9-3,方式,1,输出情况下联络信号及传输方向,表,9-3,是端口,A,和端口,B,都工作在方式,1,情况下作为输出端口,端口,C,各引脚的名称及对应关系。,40,对于方式,1,输出端口对应的控制信号和状态信号,说明如下:,(,Output Buffer Full,):输出缓冲器满信号,低电平有效。由,8255A,送给外设,当 有效时,表示,CPU,已经向指定的端口输出了数据,所以,是,8255A,用来通知外设取走数据的信号。是由写信号 上升沿置为有效电平,而由 的有效信号使它恢复为高电平。,(Acknowledge),:外设的响应信号。它是由外设发给,8255A,的,低电平有效。当 有效时,表示外设已取走,8255A,的端口数据。,41,INTR,(,Interrupt Request,):中断请求信号,高电平有效。当输出设备从,8255A,端口中读取数据,从而发出 信号后,,8255A,便向,CPU,发出中断请求信号,以便,CPU,响应中断,再次输出数据。所以,当 变为高电平,并且 也变为高电平,,INTR,便成为高电平即为有效电平,而当写信号 的下降沿到来时,,INTR,变为高电平。,INTE,(,Interrupt Enable,):中断允许信号。与端口,A,、端口,B,工作在方式,1,输入情况下,INTE,的含义一样,,INTE,为,0,时,使端口处于屏蔽状态,而,INTE,为,1,时,使端口处于允许状态。端口,A,用,PC6,的置位,/,复位控制,端口,B,用,PC2,的置位,/,复位控制。,42,3.,方式,2,方式,2,又称为双向传输方式,这种方式只适用于端口,A,。在方式,2,下,外设可以在,8,位数据线上,既向,CPU,发送数据,又接收,CPU,传输来的数据。此外,和工作于方式,1,类似,端口,C,在端口,A,工作于方式,2,时自动提供相应的控制信号和状态信号。其联络信号如图,9-7,所示。,43,图,9-7 8255A,方式,2,的控制信号和时序,44,方式,2,的特点如下:,方式,2,只适用于端口,A,。,端口,A,工作于方式,2,时,端口,C,用,5,条线自动配合端口,A,,提供控制信号和状态信号。,方式,2,下数据传输方向由联络控制信号决定。,方式,2,下的输入和输出均具有锁存功能。,当端口,A,工作于方式,2,时,端口,C,的,PC3PC7,,共,5,条线分别作为控制信号和状态信号端。具体对应关系如表,9-4,所示。,45,表,9-4,方式,2,输出情况下联络信号及传输方向,46,各控制信号和状态信号的含义如下:,INTRA,(,Interrupt Request,):中断请求信号,高电平有效。不管是输入动作还是输出动作,当一个动作完成而进入下一个动作时,,8255A,通过这一引脚向,CPU,发出中断请求信号。,A,(,Strobe,):是由外设提供给,8255A,的选通信号,低电平有效。此信号将外设送到,8255A,的数据锁存到其输入锁存器中。,IBFA,(,Input Buffer Full,):,8255A,送往,CPU,的状态信息,表示当前已有一个新的数据送到输入缓冲器中,等待,CPU,取走。,IBFA,可作为供,CPU,查询的信号,47,A,(,Output Buffer Full,):输出缓冲器满信号,实际上,它是一个由,8255A,端口,A,送给外设的状态信号,低电平有效。当,A,有效时,表示,CPU,已经将一个数据写入,8255A,端口,A,中,通知外设取走数据。,A(Acknowledge),:外设对,A,信号的响应信号,低电平有效。它使,8255A,端口,A,的输出缓冲器开启,送出数据。否则,输出缓冲器处于高阻状态。,48,INTE1,(,Interrupt Enable,):中断允许信号。,INTE1,为,1,时,允许,8255A,由,INTR,往,CPU,发出中断请求信号,以通知,CPU,往,8255A,的端口,A,输出一个数据;,INTE1,为,0,时,则屏蔽了该中断请求,这时,即使,8255A,的数据输出缓冲器空了,也不能在,INTR,端产生中断请求。,INTE1,到底为,0,还是,1,,则由程序通过,PC6,的设置来决定,,PC6,为,1,,则,INTE1,为,1,,,PC6,为,0,,则,INTE1,为,0,。,INTE2,(,Interrupt Enable,):中断允许信号。,INTE2,为,1,时,端口,A,的输入处于中断允许状态;当,INTE2,为,0,时,端口,A,的输入处于中断屏蔽状态,,INTE2,是程序通过对,PC4,的设置来决定为,1,还是为,0,的,将,PC4,置,1,时,使,INTE2,为,1,时,,PC4,为,0,时,则使,INTE2,为,0,。,49,9.3 8255A,应用举例,【,例题,9.1】,扫描键盘按键,并保存相应键值,硬件图如图,9-8,所示。设,8255A,的端口地址为,400H,403H,,接收,16,个按键后结束。,分析:检测键盘输入过程如下:,PC4,PC7,送全“,0”,,再读取,PC0,PC3,,若全为“,1”,,则表示无键闭合。若有键闭合,则进行键扫描。键扫描方法如下:使,PC4,为,0,,,PC5,PC7,为高电平,读取,PC0,PC3,,如果是全“,1”,,表示该列无键闭合;否则闭合键在该列上,再进一步判断读取的数据中哪一位为“,0”,,从而确定闭合键。若该列无键闭合,则依次使,PC5,,,PC6,,,PC7,进行上述操作。,50,在键盘设计时,除了对键码识别外,还有抖动和重键两个问题需要解决。,对机械按键就是当用手按下一个键时,往往会出现按键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。抖动持续时间一般为,10ms,左右。利用硬件,也可通过软件延时来消除抖动,所谓重键就是指两个或多个键同时闭合。通常情况,则是只承认先识别出来的键,对同时按下的其它键均不作识别,直到所有键都释放以后,才读下一个键。,51,52,程序如下:,DATA SEGMENT,BUFFER DB 16 DUP(?),DATA ENDS,CODE SEGMENT,ASSUME CS:CODE,DS:DATA,START,:,MOV AX,DATA,MOV DS,AX,LEA SI,BUFFER,53,MOV CL,16,;初始化按键次数,MOV AL,81H,;,8255A,控制字,MOV DX,403H,OUT DX,AL,;,8255A,初始化,KS1,:,CALL KS,;读取按键,CMP AL,0FH,;判有无键闭合,JZ KS1,;无键闭合,循环等待,CALL DELAY,;延时,12ms,,消除抖动,CALL KS,54,CMP AL,0FH,;再次判有无键闭合,JZ KS1,MOV BL,0EFH,;初始化列码,MOV BH,0,;初始化列计数器,AGAIN,:,MOV DX,402H,MOV AL,BL,OUT DX,AL,;输出列码,IN AL,DX,;读取行码,AND AL,0FH,CMP AL,0FH,55,JZ NEXT,;该列无键闭合,准备下一列扫描,CMP AL,0EH,;判该列是否第一个键闭合?,JNZ TWO,MOV AL,0,JMP FREE,TWO,:,CMP AL,0DH,;判该列是否第二个键闭合?,JNZ THREE,MOV AL,4,JMP FREE,56,THREE,:,CMP AL,0BH,;判该列是否第三个键闭合?,JNZ FOUR,MOV AL,8,JMP FREE,FOUR,:,CMP AL,07H,;判该列是否第四个键闭合?,JNZ NEXT,MOV AL,0CH,FREE,:,PUSH AX,WAIT1,:,CALL KS,CMP AL,0FH,57,JNZ WAIT1,;键未释放,则等待,POP AX,ADD AL,BH,;按键键值扫描键值列计数值,MOV SI,AL,;保存相应按键键值,INC SI,DEC CL,JZ EXIT,;判是否接收到,100,个按键?,JMP KS1,NEXT,:,INC BH,;列计数值加,1,ROL BL,1,;列码循环左移一位,58,CMP BL,0FEH,;判该轮键扫描是否结束?,JNZ AGAIN,JMP KS1,EXIT,:,MOV AH,4CH,;返回,DOS,INT 21H,KS PROC NEAR,MOV DX,402H,MOV AL,0FH,OUT DX,AL,;使所有列线为低电平,IN AL,DX,;读取行值,59,AND AL,0FH,;屏蔽高,4,位,RET,KS ENDP,DELAY PROC NEAR,;延时子程序,PUSH BX,PUSH CX,MOV BX,2000,DEL1,:,MOV CX,0,DEL2,:,LOOP DEL2,60,DEC BX,JNZ DEL1,POP CX,POP BX,RET,DELAY ENDP,CODE ENDS,END START,61,【,例题,9.2】,试编程实现采用动态扫描方法在,LED,数码管上显示,00,99,,硬件图如图,9-9,所示。设,8255A,的端口地址为,288H,28FH,。,62,图,9-9,数码管动态显示接口,63,LED,(,Light Emitting Diode,)数码管的主要部分是发光二极管,如图,9-10,所示。这七段发光管按顺时针分别称为,a,、,b,、,c,、,d,、,e,、,f,、,g,,有的产品还附带小数点,h,。,LED,数码管有共阴极和公阳极两种结构。通过,7,个发光段的不同组合,可显示,0,9,和,A,F,以及某些特殊字符。,64,图,9-10 LED,数码管,65,由于发光二极管发光时,通过的平均电流为,10mA,20mA,,而通常的输出锁存器不能提供这么大的电流,所以,LED,各段必须接驱动电路。,点亮数码管有静态和动态两种方法。所谓静态显示,就是当数码管显示某一个字符时,相应的发光二极管恒定地导通或截止。这种显示方式每一个数码管都需要有一个,8,位输出口控制,而当系统中数码管较多时,用静态显示所需的,I/O,口太多,一般采用动态显示方法。,66,所谓动态显示就是一位一位地轮流点亮各位数码管(扫描),对于每一位数码管来说,每隔一段时间点亮一次。数码管的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。这种显示方法需有两类控制端口,即位控制端口和段控制端口。位控制端口控制哪个数码管显示,段控制端口决定显示代码。此端口所有数码管公用,因此,当,CPU,输出一个显示代码时,各数码管的输入段都收到此代码。但是,只有位控制码中选中的数码管才得到导通而显示。,67,DATA SEGMENT,OUTBUFF DB 0,0 ;,对应两位数码管,LED DB,3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,;0 1 2 3 4 5 6 7 8 9,BZ DW?;,位控标志,DATA ENDS,CODE SEGMENT,ASSUME CS:CODE,DS:DATA,START:MOV AX,DATA,68,MOV DS,AX,MOV AL,80H;,各端口均是,0,方式,输出,MOV DX,28BH,OUT DX,AL,;,8255A,初始化,LEA DI,OUTBUFF,;设,DI,为显示缓冲区,LOOP1:MOV CX,0300H,;循环次数,LOOP2:MOV BH,02,LLL:MOV BYTE PTR BZ,BH;02,作为位控标志,PUSH DI,DECDI,69,ADDDI,BZ,MOV BL,DI,;,BL,为要显示的数,POP DI,MOV BH,0;,高位置,0,MOV SI,OFFSET LED,;置,LED,数码表偏移地址为,SI,ADD SI,BX,;求出对应的,LED,数码,MOV AL,BYTE PTR SI;,要显示的数,AL,MOV DX,288H,;从,8255,的,A,口输出,70,OUT DX,AL ;,数对应显示代码写入,PA,口,MOV AL,BYTE PTR BZ ;,位控标志,AL,MOV DX,28AH ;,让,PC1PC0,输出,10,OUT DX,AL ;,位控标志写入,PC,口,PUSH CX;,保存计数值,MOV CX,3000,DELAY:LOOP DELAY,;延时,POPCX ;,保存的,300,次计数剩余值,MOVBH,BYTE PTR BZ,SHR BH,1,;指向下一个数码管,71,JNZ LLL ;,位控标志右移一位,非零重复,LOOP LOOP2 ;BH,02,MOV AX,WORD PTR DI,CMP AH,09,JNZ SET ;ah9,读键盘输入,MOV AX,0000 ;AH=9,显示数据置,0,MOV DI,AL,MOV DI+1,AH,JMP LOOP1,SET:MOV AH,01,72,INT 16H,JNE EXIT,;有键按下则转,EXIT,MOV AX,WORD PTR DI,INC AL,AAA;,非压缩,BCD,加法调整,MOV DI,AL ;,送回显示缓冲区,MOV DI+1,AH,JMP LOOP1,EXIT:MOV DX,28AH,73,MOV AL,0,;关掉数码显示,OUT DX,AL,MOV AH,4CH,;返回,DOS,INT 21H,CODE ENDS,END START,74,例:,将,8255,的,A,口,PA0,PA6,分别与七段数码管的段码驱动输入端,a,g,相连(方式,0,),位码驱动输入端,S2,、,S1,接,8255C,口的,PB1,、,PB0,。,PC00C7,分别接开关,K1K8,,开关合上为,0,,断开为,1,,在七段数码管上显示开关,K8-K1,八位二进制数的十六进制形式。,75,】,76,【流程图】,77,.8086,.modelsmall,.data,leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h,Ioporta equ60h,ioportb equ61h,ioportc equ62h,.stack,.code,start:,movax,data,movds,ax,movdx,ioporta,moval,10001001b,outdx,,,al;,初始化,8255a,、,b,口输出,c,口输入,play:,moval,1h,movdx,ioportb,outdx,al;,输出,b,口选择个位,78,movdx,,,ioportc,inal,,,dx;,输入,c,口数据,andal,,,0fh;,保留低,4,位,movbx,,,offsetled,xlat;,查表得到显示代码,movdx,,,ioporta,outdx,,,al;,从,a,口输出,calldelay,moval,,,2h,movdx,,,ioportb;,输出,b,口选择十位,outdx,,,al,movdx,,,204h,inal,,,dx;,输入,c,口数据,andal,0f0h;,保留高,4,位,movcl,4,shral,,,cl,movbx,,,offsetled,xlat;,查表得到显示代码,movdx,,,ioiporta,outdx,,,al;,从,a,口输出,calldelay,jmpplay,79,延时子程序,delayproc,pushcx,pushax,movax,6,x1:movcx,0080h;,调整可以更改延迟时间,x2:deccx,jnex2,decax,jnex1,popax,popcx,ret,delayendp,movah,4ch,int21h,endstart,80,81,8255A,的应用举例,8255A,作为开关,K0K3,及七段,LED,显示器接口。要求开关设置的二进制信息,由,PC0PC3,输入,经程序转换为对应的七段,LED,显示器的字形代码后,由,A,口输出显示。,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,82,各端口地址为:,E8HEEH,8255A,各端口地址确定:,由图可知:,A7 A6 A5 A4 A3 A2 A1 A0,1 1 1 0 1,0,8255A,方式选择控制字:,LED,显示器的字形代码表存放在,TABLE,单元开始的内存中.,TABLE DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,98H,88H,83H,0C6H,0A1H,86H,8EH,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,83,实现操作的具体程序如下,:,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,84,LED,显示器的结构,a,b,d,c,e,f,g,dp,LED,显示器的外形,a,b,c,d,e,f,g,dp,共阳极,LED,显示器的结构,a,b,c,d,e,f,g,dp,共阴极,LED,显示器的结构,85,LED,显示器的工作原理,软件译码法,PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,8,2,5,5,DB7-DB0,a,b,c,d,e,f,g,dp,方案,1,共阳极,LED,显示器与同相驱动器接口,86,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,87,PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,8,2,5,5,DB7-DB0,a,b,c,d,e,f,g,dp,方案,2,共阳极,LED,显示器与反相驱动器接口,88,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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服