收藏 分享(赏)

第十章 并行接口芯.ppt

上传人:scg750829 文档编号:9037473 上传时间:2019-07-21 格式:PPT 页数:75 大小:503KB
下载 相关 举报
第十章  并行接口芯.ppt_第1页
第1页 / 共75页
第十章  并行接口芯.ppt_第2页
第2页 / 共75页
第十章  并行接口芯.ppt_第3页
第3页 / 共75页
第十章  并行接口芯.ppt_第4页
第4页 / 共75页
第十章  并行接口芯.ppt_第5页
第5页 / 共75页
点击查看更多>>
资源描述

1、第十章 并行接口芯片82C55A,【内容提要】本章主要讲4个问题。 从硬件角度讲82 C55 A组成和工作原理,尤其重视82 C55 A和CPU以及82C55 A和I/0设备的连接。 从编程角度讲82 C55 A控制字及其初始化。 从I/O接口角度讲I/O接口和简单I/0设备的连接。 以上三个问题都是重点。 82C55A的工作方式及其应用。【学习指导】I/0接口电路的学习要抓住三条思路:一是软件和硬件结合;二是I/0接口和CPU、I/O设备的连接,要学会系统的思考问题;三是理论学习和硬件相结合,要多做实验,要多读例题。本章的程序有它的特点,这就是用软件控制硬件工作,需要仔细体会。,在计算机系统

2、中,按同时传送的二进制信息的位数不同,分为并行传送和串行传送。并行传送时,传送8位数据需要8条数据线,优点是速度快,缺点是成本高;串行传送时, 传送8位数据只需要1条数据线,但需要分8次传送,优点是成本低,缺点是速度慢。因此,并行传送用于短距离传送,串行传送用于长距离传送。在微机中,CPU和M, CPU和I/0接口之间都采用并行传送。在I/O接口与I/O设备之间有两种情况:并行I/O接口I/O设备之间采用并行传送,串行I/O接口与I/O设备之间采用串行传送。常用的并行I/O接口有8255系列和8155系列。其中,最典型的是82C55A 。,10. 1 82C55A并行接口82 C55 A可编程

3、接口芯片(Programmable Peripheral Interface)是一个通用的并行接口芯片。 82 C55 A兼容性很强,可与任意一个采用TTL电平的I/O设备、CPU连接。从原理上看,82 C55 A和8255A完全相同,而且都采用40条引脚双列直插封装。它具有这样一些特点:1)具有三个独立的端口(PORT)与I/O设备连接,每个端口都能进行8位数据传送。2)具有三种工作方式,每个端口都能用编程选择工作方式。3) 82C55A与CPU之间可很容易实现无条件传送、程序查询方式传送和中断传送。 10.1 .1 82C55A组成和工作原理182C55A组成图10-1是82 C55 A的

4、内部结构框图。从图中可以看出,它是由8个功能模块组成。按接口概念把它们归为三个部分。,(1)与CPU相连的部分 (2)与外设相连的部分 (3)内部逻辑电路,(1)与CPU连接部分 1)数据总线缓冲器。数据总线缓冲器是82 C55 A与系统数据总线的接口,它是双向三态缓冲器。由图中可见,数据总线缓冲器通过内部数据总线与三个端口以及内部寄存器相连,在相互间传送信息。它在两者之间传递三种信息: CPU写人82C55 A的编程控制字; 从82C55 A读人CPU的状态信息; CPU与82 C55 A之间传送的数据。2)读写控制逻辑读写控制逻辑是82C55 A与系统地址总线和控制总线的接口:它接收芯片地

5、址(通过CS)和地址A1A0,实现对内部口地址的译码;另一方面它又接收CPU的读写命令,完成对82C55的写入和读出操作。,(2)与I/O设备连接部分由图可见,与I/O连接部分包括4个模块,结构很灵活。综合叙述如下:82C55 A提供4个部件与I/O设备相连。这四个部件分属3个端口,即PA, PB, PC。可以根据需要组成2个组(A组和B组)供用户使用。PA, PB, PC三个数据口都是八位的二进制位,它们都可以做输入/输出端口使用。但三者结构并不完全相同。为了增加灵活性,C口可以分成高4位部分和低4位部分,它们可独立编程使用。,注意:地址线A1、A0与82C55A四个端口的关系: A1A0=

6、00,选择 A口;A1A0=01 选择B口; A1A0=10,选择C口;A1A0=11,选择控制口。,(3)内部逻辑电路内部逻辑电路的核心是控制字寄存器。它与控制字译码器、操作信号发生器等组成内部逻辑电路,以及分级控制电路等。以控制82 C55 A按时序操作。这一部分电路是隐含的,程序员可不必去理会它。我们感兴趣的是与它相关的两个控制字(工作方式控制字和C口置位复位字)后面会详细展开。 2.端口结构PA端口是由一个8位数据输出锁存/缓冲器和一个8位数据输人锁存器构成。由于无论输出或输入,都能进行数据锁存,因此能在CPU和I/O之间起速度缓冲作用。数据传送时,CPU和PA口,PA口和I/O设备都

7、能并行工作,工作效率很高。PA口可工作在双向方式,也可以工作在选通方式和无条件方式。数据传输时,PA口无论用做输人还是输出,都是8位一致的;即使只使用其中的一位,也要8位一起输入/输出,其余7位当然是无效的。PB, PC也都是如此。,PB是由一个8位数据输出锁存缓冲器和一个8位数据输人缓冲器构成。输出锁存,因此CPU和PB口能并行工作,CPU工作效率高。输入不锁存,导致PB口和I/O设备不能并行工作, I/O设备效率低。PB口只能工作在选通方式和无条件方式。PC口结构比较复杂。数据传送时用做数据端口,这一点和PB相同,它也是由一个8位数据输出锁存缓冲器和一个8位数据输人缓冲器构成,但它只能工作

8、在方式0(无条件方式)。 PC口还可以分成两个独立4位口使用,这和PB口不同。PC口作为4位数据端口时,无论用做输入还是输出,都是4位一致的;即使只使用其中的一位,也要4位一起输人输出,其余3位当然是无效的。PC口也可作为状态端口,82C55 A在方式1、方式2下,如果读PC口,会将状态字读入。CPU的 PC口还可用做特殊控制,它有两种应用:一种是位控输出,即可以用置位复位控制字,对PC口的某一位单独进行编程输出;另一种是作为握手(联络)控制线,当82C55A工作在方式1、方式2时,PC口某些位(线)自动成为握手(联络)控制位,此处不详述,后面展开。,3数据传送82C55 A只有在初始化(编程

9、)以后才能进行数据传送。当输出数据时,CPU通过OUT指令,将数据传送到被选中的82 C55 A的某一个端口(PA、PB, PC)并进行锁存,此时CPU执行的是写I/O总线时序。以后82C55A根据控制字的要求,控制82 C55 A端口将数据输出至I/O设备,此时82C55 A是按自己的工作时序进行。当输人数据时,82C55 A根据控制字的要求,控制I/0设备将数据传送至一个端口。以后等待CPU使用IN指今将数据从82C55A的端口读入至AL中。,10.1.2 82C55A芯片引脚82 C55 A芯片引脚和8255A芯片引脚相同,如图10-2所示。这些引脚可分为两大类:1与CPU(系统总线)连

10、接的信号线1) RESET:系统复位信号,由CPU发来,高电平有效,功能是对82C55A进行复位。它将复位(清0)控制寄存器,同时将PA, PB和PC三个端口全部置为输人方式,一直到初始化时重新进行设置。2) CS*:片选信号,低电平有效,由系统地址总线经I/O端口地址译码电路产生。当CS*=0时,82C55A芯片被选中,CPU方可对该芯片进行读写操作。 3 ) A1 , A0:地址线,输人用来寻址 82C55 A内部端口。当CS *= 0时,与A1、A0联合使用,用来选择82C55A的4个端口地址。 4)RD*:读信号,低电平有效。 CPU在执行IN指令时,该信号有效,用于从8255A输入数

11、据(数据或状态信息),5)WR*:写信号,低电平有效。CPU在执行OUT指令时,发出WR*命令,向82 C55 A写人控制字或数据。 6) D7D0:数据线,双向三态。CPU通过D7D0与82 C55 A传送数据。用OUT指令,CPU向82C55A发送控制字、数据;用IN指令,CPU接收从82 C55 A读人的状态、数据。端口选择及其相应操作见表10-1,2与I/O设备连接的信号线1) PA7PA0:PA口输人输出数据线,8位,双向三态。通常用来和外设的数据线连接。可以只用其中几位,其余闲置。2) PB7 PB0: PB口输入输出数据线,8位,双向三态。通常用来和外设的数据线连接。可以只用其中

12、几位,其余闲置。3 ) PC7 PC0: PC口输人输出数据线,8位,双向三态。它可以作为8位4位数据线和外设的数据线连接。它也可以用1位作为状态线和外设的状态线连接。它也可以用1位(通过编程)作为控制线和外设的控制线连接。,82C55A是通用可编程并行接口芯片,它必须先编程(初始化)后使用。所谓编程即CPU对82C55 A送控制字。82 C55 A具有两个控制字,分别是工作方式控制字和C口的置位复位命令控制字,用来对82 C55 A进行编程使用。下面介绍这两个命令的格式和应用。,10.1 3 82C55A/8255A控制字及其初始化,1工作方式控制字,从控制口写入(A1A0=11),(1)格

13、式它从8255A的控制口写入,存放在工作方式控制字寄存器中,在80X86系列计算机中控制口地址为43H(即CS*=0, A1A0=11)。1) D7:标识位,D7=1,标明是工作方式控制字;D7 = 0,则是C口置位复位命令控制字。2) D6D3:用于对A组编程。其中,D6 D4用于对A口编程;D3用于对C口高4位编程。A组可以统一使用。对A口编程,是指选择A口的工作方式和输入输出方式。D6 、 D5,用来选择工作方式: D6 D5= 00,选择方式0,基本输人输出方式;D6 D5=01,选择方式1,选通输人输出方式;D6 D5=10,选择方式2,双向(选通)输人输出方式。D4用来选择A口用做

14、输入方式还是输出方式,D4= 0,选择输出方式;D4=1,选择输人方式。A口也可以独立使用。D3用于对C口高4位编程,C口高4位默认为方式为D3 = 0,选择输出方式;D3=1,选择输人方式。C口高4位也可以独立使用。,3) D2D0:用于对B组编程。其中,D2、D1用于对B口编程;D0用于对C口低4位编程。B组可以统一使用。对B口编程时,D2用于选择工作方式:D2=0,选择方式0,D2=1,选择方式1。 D1用于选择B口的输入输出方式:D1= 0,选择输出方式;D1 = 1,选择输入方式。B口也可以独立 使用。D0用于对C口低4位编程时,C口低4位默认为方式0; D0=0,选择输出方式;D0

15、=1,选择输入方式。C口低4位也可以独立使用。,(2)应用【例10-1 若一系统要求将A端口指定为方式0,输人;C端口上半部指定为输出;B端口指定为方式0,输出;C端口下半部指定为输人;则工作方式控制字代码是10010001B或91H。设口地址为PA: 60H; PB: 61H; PC: 62H;控制口(CWR) :63H。初始化的程序段如下:,MOV AL, 91H ;工作方式控制字为10010001B=91HOUT 63H,AL ;工作方式控制字写入控制口,2C口置位复位命令控制字(1)格式C口置位复位控制字格式如图10-4所示,它也是从8255A的控制口写入,用于对C口的相应位进行设置,

16、常用来控制开关的通断,继电器的吸合释放, 指示灯的点亮与熄灭,等等。,例:利用C口的置位复位字从PC1输出一个负脉冲用于起动某外设。设8255A的端口号分别为:60H、61H、62H、63H。则程序如下:MOV AL,00000001BOUT 63H,ALNOP ;延时MOV AL,00000000BOUT 63H,ALNOP ;延时MOV AL,00000001BOUT 63H,AL,注意:使用该命令字无须先对8255A初始化。,例10-2 设82C55的口地址是360H363H,希望从PC3输出一个低电平去点亮指示灯(发光二级管)则程序段如下:MOV DX,363H MOV AL,O6H;

17、控制字是00000110B,(亮灯)OUT DX,AL;控制字要送入控制口,而不是PC口【例10-3】希望从PC7输出一个信号使指示灯闪烁(一亮一灭,无限循环)。 82C55A的口地址设为60H63H,则程序段(省略延时)如下: C1:MOV AL, 0EHOUT 63H,ALINC AL ;AL=0FHOUT 63H,ALJMP C1,【例10-4】从PC5输出一个单脉冲,作为D触发器的CP脉冲。82 C55 A的口地址设为60H一63H,则程序段如下: MOV AL, 00001011B OUT 63H,AL ;PC5输出高电平 MOV AL,00001010B OUT 63H,AL ;P

18、C5输出低电平 MOV AL,00001011B OUT 63H, AL ;PC5输出高电平,10. 2 82C55A工作方式82 C55 A有三种工作方式。 (1)方式0 基本输人输出方式; (2)方式1 选通输入输出方式,简称选通方式. (3)方式2 双向选通输入输出方式,简称双向方式。 作为数据口使用时: A口 可工作于方式0、方式1、方式2。B口 可工作于方式0、方式1。C口 仅可工作于方式0。 C口有时可作为状态口使用,有时也可作为A口或B口与外设间的联络信号线。详细情况后面展开。下面我们先研究一下8255A芯片与CPU及外设的连接电路图。,PC机中8255的连接,AEN为低电平表示

19、8086控制系统总线 AEN为高电平表示DMAC控制总线,I/O接口学习要从硬件方面学习它们的连接技术,从初始化编程及应用编程方面学习软件对硬件的控制技术。,10.2.1 方式0 (基本输入输出方式)1工作特点82C55A的A、B、C三个端口都可以工作于方式0,不管那一数据口工作于方式0,都可以将它们设置成输入或输出模式。 初始化设置时,不管那一个口设置成方式0输入,那么它就只有输入功能,要使它能够工作于输出方式,则要重新初始化。反之也一样。 2方式0输入方式0输入常用于输入设备始终处于准备好状态,如我们所做的A口控制B口的实验。该实验中A口的八条数据线与八个开关相连接,初始化程序设置A口工作

20、于方式0。由于把开关看成一个始终就绪的设备,所以程序员在任何时刻要读取开关状态数据时都可以采用IN指令直接从A口读数。程序见后一页。 3. 方式0输出在实验二中,我们的B口接的是八个发光二级管,它也是始终就绪的,所以任何时刻都可以直接向其发送数据.(程序与上面相同.,;-硬件实验二 8255A并行口实验(2) PA输入,PB输出- CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODEORG 32E0H PA EQU 0FFD8H PB EQU 0FFD9H PC EQU 0FFDAH PCTL EQU 0FFDBH H2: MOV DX,PCTLMOV AL,9

21、0H ;A口工作于方式0输入,B口方式0输出OUT DX,AL P2: MOV DX,PAIN AL,DX ;从A口读进开关数据INC DXOUT DX,AL ;从B口输出数据.JMP P2 CODE ENDSEND H2,通过上面的例子,我们可以得出这样的结论,如果并行外设可以看成是始终处于就绪状态的,那么介于CPU和外设间的8255A接口芯片可以看成是完全透明,我们可以根据程序运行的需要,随时可以用IN指令从这样的外设读取数据,随时可用OUT 指令向这样的外设发送数据。(不须查询外设状态,直接对外设进行读写操作,这就是我们前面介绍的无条件传送方式)IN AL,端口地址OUT 端口地址,AL

22、这里的端口地址是接口电路中的端口寄存器的地址,操作的是是外设中的数据。实际上方式0不仅适用于无条件传送方式,它也适用于查询传送方式,这时程序员在进行硬件连接和软件编程时要考虑安排C口的若干条数据线作联络信号线。(见后面的例10-9),4. 方式0输入工作时序由CPU执行 IN AL,PORT指令产生。,5。方式0输出工作时序( 由执行OUT PORT,AL指令产生),10.2.2 方式一(选通输入/输出方式),选通方式也时也称选通应答方式,现以下图为例,对这名称作一解释。,1.方式一的工作特点8255A的PA、PB口都可以采用方式一进行八位数据的输入/输出操作。与方式0一样,不管是A口还是B口

23、,初始化时一经确定为输入口,若要更改为输出口,一定要重新初始化,反之也一样。当8255A的A口或B口有一个口工作于方式一时,或A口与B口都工作于方式一时,C口有一些线被系统强制指定为A口或B口与CPU或与外设的联络信号线,C口剩余的一些信号线只能工作于方式0输入或输出状态。,方式一、方式二时C口各信号线的安排情况表,这里要注意的是,A口或B口工作于方式二或方式一时,系统固定的安排C口的某些线充当A口或B口联络信号线。如果A口或B口初始化为方式0,而又采用程序查询方式进行输入/输出操作时,可以由程序员另行指令C口的某些线为联络信号线。(待讲例题时展开),选通信号选通信号分成二组,一组为输入,一组

24、为输出.输入的有 STB* IBF、INTR输出的有 OBF*、ACK*、INTR 1)STB* 输入,外设来的选通信号,低电平有效,当外设将数据送往8255A的某数据端口时,外设同时用STB*将数据打入到8255A内部的相应数据端口的输入缓冲器中。 2)IBF 输出,输入缓冲器满,高电平有效,该信号由外设来的选通信号启动产生,表示8255A某端口的输入缓冲器已满,在查询输入方式下,CPU通过查询该信号以确定是否要读数据口,另外该信号为高电平作用于外设时,禁止外设向8255A的相应口发送数据。当CPU的读信号线IOR*有效时,将IBF置低平。,3)INTR 中断请求信号,当程序员将8255A初

25、始化为方式一或方式二后,将8255A相应端口的中断允许位置1,当IBF为高电平时,INTR为会被置为高电平,以此信号向CPU提出读数中断。(方式一或方式二输入时)在方式一输出时,如相应口的中断允许位被置1,则当外设ACK*信号到达时,相应端口的OBF*被置1,表示端口的数据已取走,同时将INTR置1,向CPU提出写数到输出缓冲器的中断请求。,关于中断允许位设置的方法:方式一输入,A口对应的INTEA 由PC4控制方式一输入,B口对应的INTEB,由PC2控制方式一输出,A口对应的INTEA,由PC6控制方式一输出,B口对应的INTEB,由PC2控制A口方式二输入时,对应的INTE2,由PC2控

26、制A口方式二输出时,对应的INTE1,由PC6控制将方式一输入的A口设置成中断方式:MOV AL,00001001BOUT 43H,AL ;设8255A的控制口为43H 将方式一输入的B口设置成中断方式:MOV AL,00000101BOUT 43H,AL ;设8255A的控制口为43H,4. 方式一选通输入时的联络信号安排,注意:A组、B组的工作方式,输入/输出方式不应当分成二个独立的部分来初始化。INTEA是通过对PC4的置位复位操作来设置的。INTEB是通过对PC2的置位复位来设置的。,例:设某8255A的口地址为60H63H,其PA口工作于方式一输出,PB口工作于方式一输入,CPU使用

27、程序查询方式向PA口输出数据,CPU使用中断方式从PB口输入数据,请你写出该8255A的初始化程序。 解:控制口为63H,8255A的工作方式控制字为:10100110BB口必须设置INTEB为1,其置位复位字为:00000101B 初始化程序为:MOV AL,0A6H ;10100110BOUT 63H,ALMOV AL,05HOUT 63H,AL,方式一输入的操作时序,5.方式一选通输出,例: 8255A的PA口初始化为方式一输出,B口方式0输出,C口的剩余数据线也为基本输出信号线,CPU与PA口的数据传送控制方式为中断方式,请你给出初始化程序和中断服务程序. 解: 工作方式控制字为: 1

28、0100000B=0A0H 其相应程序段如下:MOV AL, 0A0HOUT 63H,ALMOV AL, 0DH ;00001101B.MOV AL,N ;这是中断服务子程序中的功能语句OUT 63H,AL,10.2.3 双向输入/输出方式(方式二),方式2指的是,当A口被设置成方式2时,A口暨可以作输入口使用,也可以作输出口使用。在程序中你可以根据需要在程序中对A口使用 “IN”指令,也可以使用“OUT”指令,完全不必为了改变“输入”或“输出”方式而对8255A重新初始化。当A口工作在方式2时(也仅有A口可以工作在方式2)A口与外设之间一般使用选通应答方式传送数据; A口与CPU之间可以使用

29、查询方式传送数据,也可以使用中断控制方式传送数据。当将A口设置成方式2时,8255A内部自动的安排了C口的5条信号线作为A口与外设、A口与CPU间的联络信号线,与方式1中的联络信号线一样,这些线中的那一根负责什么功能是固定的,不能由程序员随意指定。C口中余下的3条线仅能作为基本的数据输入/输出线使用。,当A口工作于方式2时,B口可以工作在方式1或工作在方式0;前面已经说过,C口有5条线被安排为A口的联络信号线,余下的3条线可作为方式0输出或输出线。下面给出方式2时的引脚联络信号图。,8255A的A口工作于方式2时的工作时序图,10.2.4 82C55A的状态字8255A的C口除了可以当作基本数

30、据输入/输出端口使用外,它的某些信号线还可以作为联络信号线为工作在方式1的A口、B口或工作在方式2的A口服务。除此之外,当8255A的某些端口工作于方式1或方式2时,C口还能反映8255A内部的工作状态,所以C口有时还可以作状态口使用。C口各相应位所表示的8255A内部的状态情况我们后面再谈,现在先通过一个简单的例子来说明怎么读8255A的状态字。例:某8255A已初始化,A、B两端口分别工作于方式2和方式1,已知8255A的四个端口号为340H343H,请你读出其状态字。 解:读状态字代码如下:MOV DX,342HIN AL,DX,1. 方式1状态字,2. 方式2状态字格式,10.3 82

31、55A并行接口应用举例,10. 3.1 82C55A应用于简单I/O设备1开关电路例10-5】如图10-15所示,微型计算机用并行接口82 C55 A和开关电路连接。82C55的PB口外接8个开关,要求当有开关闭合时,统计有几个开关闭合,并将闭合开关的个数存人 BL。已知:82C55 A的PB口地址:219H,控制寄存器口地址:21BH。开关电路分析:当开关断开时,PB01;当开关闭合时,PB0 =00程序分析:使用82 C55 A必须先对它进行初始化,然后再进行开关输入。因为要重复进行判断故采用循环程序结构。功能程序如下:,MOV DX,21BHMOV AL,82H ;初始化PB口设置为方式

32、0输入OUT DX,AL H1:MOV DX,219HIN AL,DX ;读PB口CMP AL,0FFH ;是否有键按下?JZ H1 ;没有键处于闭合状态,则再读B口NOT AL ;将闭合状态标志从0变换为1MOV CX,8 ;循环8次,统计AL中有几个1MOV BL,00H ;计数初值为0 L1:SHL AL,1JNC L2INC BLL2:LOOP L1INT 3 ;断点中断,2. LED电路发光二极管是一种应用很普遍的显示器件,当将LED的阳极 接高电平,阴极接低电平时,LED就会发光;否则就会熄灭。【例10-6】如图10-16所示,某系统应用并行接口82 C55 A连接LED电路和按键

33、,用LED作为显示设备,用按键作为输人设备。82 C55 A的PC口外接8个发光二极管L0L7。用PA1外接一个按键K。试编写程序,实现下述功能:每按一次按键,使PB口上的发光二级管按L0、L1、L2L7次序循环点亮显示。已知:82C55A的PA口地址是218H。,按键电路分析:在应用电路中经常使用按键电路产生单脉冲。如图10-16所示,K键平常为断开。若未按键,PA1=1,若按下键PA1=0,若松开键,PA1=1。,按下再放开算按一次键,功能程序如下,MOV AL,90HMOV DX,21BH ;21BH为控制口OUT DX,AL ;A口方式0输入,B、C口方式0输出MOV AL,01HMO

34、V DX,21AH ;21AH为C口口地址OUT DX,AL ;点亮L0MOV BL,AL L1:MOV DX,218H ;读A口IN AL,DXTEST AL,02HJNZ L1 ;按下否? L2:IN AL,DX ;再读A口判断键是否已被放开TEST AL,02HJZ L2 ;键仍被按住,等待ROL BL,01H ;键已放开点亮下一个灯MOV AL,BLMOV DX,21AHOUT DX,ALJMP L1 ;再次检查是否有按键动作,10.3.2 82C55用于七段码管显示器1. 七段码显示器 微型计算机控制系统中常采用七段码管显示器作为输出设备,用于显示数字或字符。七段码显示器的主要部分是

35、七个制造成条形的发光二极管,实际应用上还有一个制造成一个小数点形状的发光二极管。如图10-17 a 所示。七段码管的八个发光二极管有共阳级接法和共阴级接法二种,如图10-17 B 和10-17C所示。在共阳级接法中,八个发光二极管的阳级被并在一起接入+5伏电位,如果我们在这八个管的任一个管的另一极上接一个低电平,则该管就被点亮。反之在共阴极电路中,八个发光二极管的阴级被并在一起接地,如果我们在这八个管的任一个管的另一极上接一个高电平,则该管就被点亮。,下面的表7-3给出了七段码管显示字符和显示码的对应关系。 实际上我们自己也可以推导出这样的关系。,如在共阳级电路中,我们向七段码管送COH,七段

36、码管要显示的是“0”,送88H,则显示的是“A”,其它类似。注:在后面的讨论中我们采用的是共阳级电中接法。,七段码显示器要求程序员输入的七段显示码(后面简称七段码),而计算处理的是二进制代码,二者之间要进行变换。如计算机某次的运算结果是数字“6”,它的二进制表示是06H=00000110B,如果直接把06H送七段管显示,则显示的是“E”而不是“6”,要在七段管显示“6”,我们要通过查表得到“6”的共阳级显示码为82H,把82H送七段码管的信号端,就是要显示“6”了。二进制数码和七段码之间的代码转换方法有硬件电路法和软件程序法二种,它们各有优点。,(1) 软件译码:,将七段代码表放在内存中,组成

37、一张表,需要时使用查表指令(XLAT),从表中取了相应的七段码,送8255A的A口再经反相驱动器后,驱动LED发光,要注意内存中的七段码表应是表81中相应段码的反码。,下面的程序可在LED七段管中显示十六进制数中的数符。,PORT8255A EQU 0F0H ;8255A的A口地址 COUNT EQU 05 DATA SEGMENT TABLE DB COH,F9H,A4H,B0H,99H,92HDB 82H,F8H,80H,98H,88H,83H, DB C6H,A1H,86H,8EH DATA ENDS CSEG SEGMENT ,DISP: MOV BX, OFFSET TABLEMOV

38、 AL, COUNT XLATMOV DX, PORT8255AOUT DX, AL.CODE ENDSEND ?,(2) 硬件译码法 (1)显示单个数符,7447只能用于显示0 9的十进制数符,可以直接输出驱动共阳级的LED 显示管。若要用于驱动共阴级的电路必须使用反相器。显示一个8时,电路的电流为:207=140MA,在实际的应用中,我们经常要将多个七段码显示器组合使用,其电路图如下所示。,先说明工作原理,然后提出要显示“1234567”要怎么处理。,显然,我们无法同时向七个和分别送出“1”,“2”,“3”,“4”,“5”,“6”,“7”,但我们可以在第一时间从PB口送出“1”,并让Q1工

39、作,其它Qi都不工作,这时最左边的一个管显示“1”,延时一小会,接下从PB口送出“2”,让Q2工作,也延时一小会,再接下来对每一个七段码管都如法操作,一直到由PB口送出“7”,让Q7工作之后,又再从头开始。由此循环往返即可。可能有的同学会说,你这样做是让七个管依次显示“1”,“2”,“3”,“4”,“5”,“6”,“7”,而不是同时显示“1”,“2”,“3”,“4”,“5”,“6”,“7”。说的不错,确实如此。但是如果我们循环显示的速度足够快,眼睛看起来就是同时显示“1”,“2”,“3”,“4”,“5”,“6”,“7”了。,2. 应用,例 10-7 如图10-18所示,8255的PA口接接一个

40、共阴级的七段码管,PB7接开关电路,要求当PB7闭合时,七段码管显示”1”;断开时,显示”0”。设8255A的四个口地址分别为:218H21BH,试编写程序实现之。,分析:初始化后就要读PB口,当PB7=0时,开关断开; PB7=1时,开关闭合。,程序段如下:,MOV DX,21BH ;工作方式控制字MOV AL,82H ;A口方式0输出,B口方式0输入OUT DX,AL H1:MOV DX,219H ;读B口IN AL,DXTEST AL,80H ;测试开关状态JZ H2 ;开关断开,转显示“0”MOV AL,06H ;显示“1”MOV DX,218HOUT DX,ALJMP H1 ;再读B

41、口判断开关状态 H2: MOV AL,3FH ;显示“0”MOV DX。218HOUT DX,ALJMP H1 ;再读B口判断开关状态,例10-8仍然如图10-18所示,8255A各端口地址与例10-17相同,要求开关K闭合时,循环显示“0” “9”,开关K断开时,不显示。分析:初始化后就要读 PB口,当PB7=0时,开关断开, 当PB7=1时,开关闭合。程序功能语句如下: DATA DB 3FH,06H,5BH,4FH,66H,6DH,7DH,DB 07H,7FH,6FH ;共阴极七段码表 START: MOV DX,21BH ;初始化8255AMOV AL,82H ;OUT DX,AL,M

42、OV DX,219H ;读B口以决定如何选择程序分支IN AL,DXAND AL,80H ;当AL中的最高位为1时,不执行转移JZ D11 ;转移指令MOV BX,DATA1 ;BX,CX为循环入口参数MOV CX,10 ;在LED管循环显示“0” “9” DISP:MOV AL,00HXLAT ;查表指令,MOV DX,218H ;显示码送A口驱动显示器OUT DX,ALCALL DELAT1 ;延时1S子程序INC BX ;指向显示码表中的下一个LOOP DIST ;循环10次JMP START ;再读B口作判断 D11:MOV DX,218H ;向A口送00,LED管不显示。MOV AL

43、,00HOUT DX,AL JMP START ;再读B口作判断,例10-9 有一逻辑打印机通过8255A与CPU相连,如图10-19所示,8255A的端口号分别为:0C0H、OC2H、0C4H、0C6H。请写一段代码,将BL中的可打印字符送打印机打印。 解:要使用8255A首先要对其进行初始化,我们要搞清PA口和PC口的工作状态。根据A口方式1、方式2的联络信号图可知,A口必须工作于方式0输出,C口高4位工作于方式0输出,C口的低4位工作于方式0输入。 8255A的工作方式控制字=10000001B 相应的程序功能段如下:,图10-19 打印机逻辑连接图,10.3.3 8255A应用于打印机

44、,MOV AL,81H OUT 0C6H,AL ;写入工作方式控制字 MOV AL,0DH ;0DH=00001101B OUT OC6,AL ;C口的置位复位字,置PC6为高电平无效 LA:IN AL,0C4H ;读C口TEST AL,04H ;判断PC2是否为BUSYJNZ L1 ;PC2为1,则再读C口等待。MOV AL,BL ;要打印的字符送ALOUT OC0H,AL ;AL中要打印的字符送A口MOV AL,0CH ;0CH=00001100BOUT 0C6H,AL ;从PC6送出低电平的选通信号MOV AL,0DH ;PC6送出高电平,使选通信号无效OUT OC6H,AL 作业:除第

45、8小题外,全做。,10.3.4 8255A应用于步进电机控制 1)步进电机原理,图19-20 步进电机原理图,图10-20给出的是步进电机的工作原理图。每次有两个 励磁线圈通电,图中表明了合成磁场的方向。通过控制线圈通电的顺序,可以依次转动到450,1350,2250,3150,即每次转动的角度是离散的。通过齿轮,可以将圆周方向的离散转动转变为轴向的步进直线运动。,图10-21 步进电机控制原理图,控制电路中用到了并行口8255A,实际上控制的原理非常简单,A口作为输出口。每次只要让相邻的两位输出为1,使相应的两个线圈通电;然后按控制顺序使另外两位输出为1,如此重复。,实验12 步进电机控制程

46、序说明,CODE SEGMENTASSUME CS:CODE,DS:CODE,ES:CODE IOCONPT EQU 0FFDBH ;8255A的控制器 IOBPT EQU 0FFD9H ;8255A之PB口 IOAPT EQU 0FFD8H ;8255A之PA口ORG 3620H H12: MOV AL,88H ;初始化8255AMOV DX,IOCONPT ;我们只关心A口设为输出OUT DX,AL ;就可以了。NOP ;延时NOPNOP,IOLED1: MOV DX,IOAPTMOV AL,03H ;1、2两线圈通电OUT DX,ALCALL XDELAY ;延时MOV AL,06H ;

47、2、3两线圈通电OUT DX,ALCALL XDELAY ;延时MOV AL,0CH ;3、4两线圈通电OUT DX,ALCALL XDELAY ;延时MOV AL,09H ;4、1两线圈通电OUT DX,ALCALL XDELAY ;延时 JMP IOLED1 ;无条件转移到循环入口 END H12,;延时子程序 XDELAY: MOV CX,03FFFH XDELA: LOOP XDELARET CODE ENDS,综合实验一 - 步进电机实验(2)参照实验12 之步进电机实验电路,编写一个程序,实现对步进电机的控制,具体要求是,CPU通过8255A芯片之PA口实现对步进电机的控制, 程序

48、中使用CX寄存器的最高位控制电机的转动方向,CX的最高位为1,顺时针转动,CX的最高位为0逆时针转动, 当CX为8000H或为0000H里,步进电机不转动,CX的其余15位放循环的次数,用于控制每次步进的距离。,【提示】此题的程序并不是很复杂。需要注意的是A口中只有4位参与了控制,为了能够达到连续转动的目的,关键在于合理的设置高4位的内容,使得用简单的循环移位指令就能实 现控制。设初始的时候,PC0 , PC1输出为1,让A口输出00110011B(33H),以后每次向左移动一位可以得到01100110B(66H),11001100B(CCH),10011001B(99H),00110011(33H),这样就可以利用简单的移位指令来实现控制。当然只要初始值是33H,66H,CCH,99H中的任意一个均可。另外,当每次向右移动一位时,可以实现向另一个方向转动。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报