并行通信接口技术.ppt

上传人:小飞机 文档编号:6117083 上传时间:2023-09-26 格式:PPT 页数:90 大小:1.58MB
返回 下载 相关 举报
并行通信接口技术.ppt_第1页
第1页 / 共90页
并行通信接口技术.ppt_第2页
第2页 / 共90页
并行通信接口技术.ppt_第3页
第3页 / 共90页
并行通信接口技术.ppt_第4页
第4页 / 共90页
并行通信接口技术.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《并行通信接口技术.ppt》由会员分享,可在线阅读,更多相关《并行通信接口技术.ppt(90页珍藏版)》请在三一办公上搜索。

1、7.3 可编程并行接口,微型计算机与I/O设备的接口按照数据传送格式的不同,可分为并行接口和串行接口两种。实现并行通信的接口就是并行接口实现串行通信的接口就是串行接口,并行通信与串行通信 数据通信的基本方式可分为并行通信与串行通信两种:并行通信:是指利用多条数据传输线将一个数据的各位同时传送。传输速度快,适用于短距离通信。串行通信:是指利用一条传输线将数据一位位地顺序传送。通信线路简单,利用电话或电报线路就可实现通信,降低成本,适用于远距离通信,但传输速度慢。,以计算机的字长,通常是8位、16位或32位为传输单位,一次传送一个字长的数据适合于外部设备与微机之间进行近距离、大量和快速的信息交换例

2、如:微机与并行接口打印机、磁盘驱动器微机系统中最基本的信息交换方法例如:系统板上各部件之间,接口电路板上各部件之间,并行通信的特点,串行通信的特点 将数据分解成二进制位用一条信号线,既传送数据信息,又传送控制信息 要求数据格式固定,分为异步和同步数据格式 串行通信中对信号的逻辑定义与TTL不兼容,需进行逻辑关系和逻辑电平转换 串行传送信息的速率需要控制,要求双方约定通信传输的波特率,可编程并行接口芯片8255A,18255A有两个8位(端口A与端口B)和两个4位(端口C高/低4位)的并行输入/输出端口2端口A有三种工作方式:方式0、方式1、方式2;端口B口有两种工作方式:方式0、方式1;可适应

3、CPU与I/O接口的多种数据传送方式,如无条件传送、查询式传送和中断方式传送等3端口C的使用较特殊,除工作在方式0作为数据端口之外,当工作在方式1和方式2时,它的大部分引脚被用作联络信号,端口C还可以进行按位置位/复位操作,8255A的内部结构,1数据总线缓冲器28位端口PA、PB和PC,端口A:PA0PA71个8位的数据输入锁存器和1个8位的数据输出锁存/缓冲器端口B:PB0PB71个8位的数据输入缓冲器和1个8位的输入/输出、锁存/缓冲器端口C:PC0PC71个8位数据输入缓冲器和1个8位输出锁存/缓冲器,也可以分两个4位端口使用,3A组和B组的控制电路A组控制部件用来控制端口PA和端口P

4、C的高4位(PC7PC4),B组控制部件用来控制端口PB和端口PC的低4位(PC3PC0)。4读/写控制逻辑,8255A芯片的引脚信号,8255A为双列直插式封装,除了电源和地线以外,其外部引脚信号可分为两组,一组是面向CPU的信号,一组是面向外设的信号。,1.面向CPU一侧的引脚信号,D7D0:8位,双向,三态数据线 RESET:复位信号,复位后所有内部寄存器清零,三个数据端口自动设为输入方式 CS*:片选信号RD*:读信号WR*:写信号 A1、A0:端口选择信号,8255A的读/写操作控制,2.面向外设一侧的引脚信号,端口A:PA0PA7A组,支持工作方式0、1、2端口B:PB0PB7B组

5、,支持工作方式0、1端口C:PC0PC7仅支持工作方式0A组控制高4位PC4PC7B组控制低4位PC0PC3,8255A的工作方式,方式0:基本输入输出方式适用于无条件传送和查询方式的接口电路方式1:选通输入输出方式适用于查询和中断方式的接口电路方式2:双向选通传送方式适用于与双向传送数据的外设适用于查询和中断方式的接口电路,1.方式0,方式0的特点(1)A口、C口的高4位、B口以及C口的低4位可分别定义为输入或输出,各端口互相独立,故共有16种不同的组合。(2)定义为输出的口均有锁存数据的能力,而定义为输入的口则无锁存能力。(3)在方式0下,C口有按位进行置位和复位的能力,方式0适合于两种情

6、况:一种是无条件传送,另一种是查询方式传送,2.方式1,一种选通的输入/输出工作方式三个端口分为两组,即A组和B组 A组包括8位数据端口A和PC7PC3五位控制/状态端口,B组为8位数据端口B和PC2PC0三位状态控制端口每一个8位数据端口均可设置为输入/输出方式,且两种工作方式均可锁存控制/状态口除了指示两组数据口的状态及选通信号外,还可用做I/O口,如PC6和PC7,用位控方式传送,端口A方式1作输入:,数据选通信号表示外设已经准备好数据,输入缓冲器满信号表示A口已经接收数据,中断请求信号请求CPU接收数据,端口B方式1作输入:,方式1输入联络信号定义,STB*选通信号,低电平有效由外设提

7、供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器IBF输入缓冲器满信号,高电平有效8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器INTR中断请求信号,高电平有效8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据INTE 中断允许信号,高电平有效用于控制中断允许或中断屏蔽,PC4(PC2)置1,允许中断,PC4(PC2)置0,禁止中断,8255A方式1作输入时的各联络信号对应关系,状态信号可以通过读取端口C得到(P287),8255A工作在方式1下的输入时序,端口A方式1作输出:,外设响应信号表示外设已经接收到数据,输出缓冲器满信

8、号表示CPU已经输出了数据,中断请求信号请求CPU再次输出数据,端口B方式1作输出:,方式1输出联络信号,OBF*输出缓冲器满信号,低有效8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走ACK*响应信号,低有效外设的响应信号,指示8255A的端口数据已由外设接受INTR中断请求信号,高有效当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据INTE 中断允许信号,高电平有效用于控制中断允许或中断屏蔽,PC6(PC2)置1,允许中断,PC6(PC2)置0,禁止中断,8255A方式1作输出时的各联络信号对应关系,状

9、态信号可以通过读取端口C得到(P287),8255A工作在方式1下的输出时序,3.方式2(双向选通方式),(1)工作方式2只适用于A口,B口仍按方式0或方式1工作(2)A口可工作于双向方式,C口的PC7PC3位作为A口的控制/状态信号端口,PC2PC0用于B组(3)A口的输入/输出均有锁存功能。在方式2工作状态下,A口既可工作于查询方式,又可工作于中断方式(4)状态字可以通过读C端口得到(P288),方式2的信号定义,用PC6设置INTE1(输出)用PC4设置INTE2(输入)输入和输出中断通过或门输出INTRA信号,8255A工作在方式2下的工作时序,8255A的控制字,8255A有两种控制

10、字:方式控制字端口C按位置位/复位控制字由于使用同一个控制端口,控制字采用特征位的方法,控制字中最高位D7为特征位D7=0:当前控制字是按位置位/复位控制字D7=1,当前控制字是方式控制字。,工作方式选择控制字D7=1,方式控制字的作用是确定A、B、C 3个并行口的工作方式及端口功能,由方式控制字可知:8255A有3种基本工作方式:方式0基本的输入/输出方式。方式1选通输入/输出方式。方式2双向传输方式。在方式1工作时,方式控制字总是把A、B、C 3个端口分为两组来设定工作方式。其中,A组为端口A和端口C的高4位(PC7PC4);B组为端口B和端口C的低4位(PC3PC0)。端口A可工作于3种

11、方式中的任一种,端口B只能工作于方式0或方式1。在方式0时,端口C可以分成2个4位端口,用作数据输入/输出端口;还可以分别用来为A端口、B端口输入/输出时提供控制信号和状态信号,例如果把端口A设定为方式1,输出,端口B设定为方式0,输入,端口C上半部设定为输入,下半部设定为输出,则方式选择控制字应为:10101010B=AAH。设控制口地址为303H,初始化的程序段为:MOV DX,303H;8255A的控制口地址MOV AL,AAH;控制字,10101010OUT DX,AL;控制字写入控制端口,按位置位/复位控制字(D7=0),按位置位/复位控制字的作用是使端口C的某一位输出为高电平或低电

12、平,以用于控制或应答信号。,例 如果要使端口C的PC4端输出高电平,则按位置位/复位控制字应为00001001B=09H,设控制口地址为63H,则程序段如下:MOV AL,09H;控制字,PC4置1OUT 063H,AL;控制字写入控制端口,8255A的编程,初始化编程采用控制I/O地址:A1A011工作过程中通过数据端口对外设数据进行读写数据读写利用端口A、B和C的I/O地址,A1A0依次等于00、01、10IBM PC/XT机上,端口A、B、C和控制端口的I/O地址为60H、61H、62H和63H,(1)写入方式控制字:示例,要求:A端口:方式1输入C端口上半部:输出,C口下半部:输入B端

13、口:方式0输出方式控制字:10110001B或B1H初始化的程序段:MOV DX,303H;假设控制端口为303HMOV AL,0B1H;方式控制字OUT DX,AL;送到控制端口,(2)读写数据端口,初始化编程后:当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备8255A具有锁存输出数据的能力对输出方式的端口同样可以输入,但不是读取外设数据,读取的是上次CPU给外设的数据,读写数据端口:示例,利用8255A的输出锁存能力,可实现按位输出控制 对输出端口B的PB7位置位的程序段:MOV DX,301H;B

14、端口假设为301HIN AL,DX;读出B端口原输出内容OR AL,80H;使PB71OUT DX,AL;输出新的内容,(3)读写端口C,C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚将被征用,其余引脚仍可设定工作在方式0,对端口C的数据输出有两种办法:通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效通过控制端口:向C端口写入位控字,使C端口的某个引脚输出1或0,或置

15、位复位内部的中断允许触发器,读取的C端口数据有两种情况:未被A和B端口征用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息被A和B端口征用作为联络线的引脚:将读到反映8255A状态的状态字,8255A的应用,1.开关量的检测例:在工业控制过程中,经常需要检测某些开关的状态。例如,在某一系统中,有8个开关K7K0,要求不断地检测它们的通断状态,并随时在发光二极管上显示。通过8255A的端口A读入开关状态信息,使端口B、端口C连接的发光二极管的状态与端口A开关状态相呼应,并重复执行。假设8255A在系统中端口A、B、C及控制口的地址分别为100H,101H,

16、102H,103H,试设计出硬件电路图,并编写程序。,(1)硬件电路如图8-11所示,MOV DX,103H;控制寄存器的地址送给DX MOV AL,90H;控制字,10010000 OUT DX,AL;写入控制字L1:MOV DX,100H;端口A 地址的送给DX IN AL,DX;从端口A读入开关状态 MOV DX,101H;指向端口B端口 OUT DX,AL;从端口B输出,控制LED XORAL,0FFH;AL AL取反 MOVDX,102H;端口C 的地址送给DX OUTDX,AL;从端口C输出 JMP L1;循环,(2)相应的8255A初始化程序为:,例:甲乙两台微机之间并行传送1K

17、B数据。甲机发送,乙机接收。甲机的8255A采用方式1工作,乙机的8255A采用方式0工作。两台微机的CPU与接口之间都采用查询方式交换数据(1)接口电路设计。甲机的8255A用方式1发送,端口PA指定为输出,发送数据,而PC7和PC6引脚分别固定作联络线乙机的8255A用方式0接收数据,端口PA定义为输入,选用引脚PC7和PC0作为联络线,2.查询方式的双机并行通信,(2)接口软件编程。接口驱动程序包括发送程序和接收程序。甲机发送如下程序段:MOV DX,303H;8255A命令端口MOV AL,l0100000B;初始化工作方式字OUT DX,AL MOV AL,00001101B;PC6

18、=1,允许中断OUT DX,ALMOV SI,OFFSET BUFS;设置发送数据区的指针MOV CX,3FFH;发送字节数MOV DX,300H;向端口A写第1个数,产生第1个OBF信号MOV AL,SI;送给乙方,以便获取乙方的ACK信号,OUT DX,AL INC SI;内存地址加1 DEC CX;传送字节数减1L:M0V DX,302H;8255A状态端口(端口C)IN AL,DX;查看中断标志位INTRA=1 AND AL,00001000B;是否PC3=1 JZ L;若无中断请求,则等待;若有中断请求,则向端口A写数 M0V DX,300H;8255A端口 PA地址 M0V AL,

19、SI;从内存取数 0UT DX,AL;通过端口A向乙机发送第2个数据 INC SI;内存地址加1 DEC CX;字节数减1 JNZ L;字节未完,继续 M0V AX,4COOH;己完,退出 INT 21H;返回DOS BUFS DB.;定义1024个数据,乙机接收如下程序段:MOV DX,303H;8255A命令端口MOV AL,10011000B;初始化工作方式字OUT DX,ALMOV AL,00000111B;置=1(PC3=1)OUT DX,ALMOV DI,OFFSETBUFR;设置接收数据区的指针MOV CX,3FFH;接收字节数L1:MOV DX,302H;8255A端口PCIN

20、 AL,DX;查甲机的PC7=O?AND AL,80H;即查甲机是否有数据发来JNZ L1;若无数据发来,则等待;若有数据,则从端口A读数,MOV DX,300H;8255A端口PA地址IN AL,DX;从端口A读入数据M0V DI,AL;存入内存MOV DX,303H;产生信号,并发回给甲机MOV DX,OO000110B;PC3置“O”OUT DX,ALNOPNOPMOV AL,00000111B;PC3置“1”OUT DX,ALINC DI;内存地址加1DEC CX;字节数减1JNZ L1;字节未完,则继续MOV AX,4COOH;已完,退出INT 2lH;返回DOSBUFR DB l0

21、24 DUP(?),并行打印接口,打印机的主要接口信号和时序STB*:数据选通,打印机在其上升沿读数据(输入)ACK*:应答脉冲,低表示数据已被打印机接收,可以传输下一数据(输出)BUSY:打印机忙(输出)D0-D7:数据(输入),查询方式打印字符当CPU准备输出打印的数据时,先查询打印机忙信号(BUSY),如果打印机正在打印字符时,忙信号为1(BUSY=1),不能接收数据。当打印机不忙后,CPU对打印机接口输出8位二进制数,并使选通信号为负脉冲,将数据送入打印机中的数据端口,分析:8255A工作在方式0,端口A输出,端口C高4位输出,低4位输入,控制字为:10000001B=81H8255A

22、端口地址:244H,245H,246H,247H待打印字符在内存的首地址为2000H,字节数100H编写打印机驱动程序如下:MOV DX,247H;8255A控制端口地址 MOV AL,81H;8255A控制字 OUT DX,AL,MOV AL,0DH OUT DX,AL;使PC6置“1”,即STB*1 MOVSI,2000H;数据段内偏移地址送给SI MOVCX,0FFH;打印字节数NEXT:MOVDX,246H;8255A的PC口地址 INAL,DX;读端口C数据,查询PC30?ANDAL,08H JNZ NEXT;打印机忙,则等待 MOVDX,244H;端口A地址送给DXMOVAL,SI

23、;从内存取出一个字节OUTDX,AL,MOVDX,247H;端口C地址送给DX MOV AL,0CH;设置PC6为“0”,OUTDX,AL;使STB*选通信号为低电平NOPNOPNOP;适当延时MOVAL,0DHOUTDX,AL;STB*1INCSI;内存地址加1LOOPNEXT,中断方式打印8255A的端口A工作在方式1输出,外加一片中断控制器8259APC6为ACK*信号输入端,PC3为中断请求输出端,PC0用于产生打印机需要的STB信号(P290,图7-30),键盘的工作原理:最简单的键盘中每个键对应I/O端口的一位,没有键闭合时,各位均处于高电平;当有一个键按下时,就使对应位接地而成为

24、低电平。CPU只要检测到某一位为“0”,便可判别对应键已经按下。这种键盘的缺点是当键盘上的键较多时,占用的I/O端口太多。如一个有64键的键盘,就需要64条连线,需占用8个8位端口,所以,这种简单结构只用在仅有几个键的系统中。,键盘接口,通常使用的键盘采用矩阵结构,对于88=64个键的键盘,采用矩阵方式就只要用16条引线(2个8位端口)。以33=9个键为例,这个矩阵分为3行3列,如果键4按下,则第1行和第1列线接通而形成通路。如果第1行线接地电位,则由于键4的闭合,会使第1列线也输出地电位。矩阵式键盘工作时,就是按行线和列线的电平来识别闭合键的。,键的识别方法为了识别键盘上的闭合键,通常可以采

25、用两种方式:逐行扫描法和行列反转法1逐行扫描法图为一个8行8列组成的键盘。行线与8255的A端口相连,列线与8255的B端口相连。CPU使8255的A端口某一位为0,相当于将该行线接地;某位为1,相当于将该行线接高电平,行扫描法识别按键的原理如下:(1)使所有行线为低电平,然后读入列线值并进行检查。如果列线有一位为低,则说明必有键被按下。(2)使第0行输出低电平,然后读入列线值并进行检查。如果有某列线变为低电平,则表示第0行和此列线相交的位置上的键被按下。如果没有任何一条列线为低电平,则说明第0行没有任何键被按下。(3)将第1行接低电平,然后读入列线值并进行检查。检测列线是否有变为低电位的线。

26、如此往下一行一行地扫描,直到最后一行。在扫描过程中,当发现某一行有键闭合时,也就是读入的列线值中有一位为低时,即可识别出此刻是哪一键被按下,例:第一步是判断是否有键按下。为了消除键的抖动,所以调用了延迟程序。这段程序如下:KY1:MOV AL,00MOV DX,ROWPORT;ROWPORT为行线端口地址OUT DX,AL;使所有行线为低MOV DX,COLPORT;COLPORT为列线端口地址IN AL,DX;读取列值CMP AL,0FFH;判定是否有列线为低电平JZ KY1;没有,无闭合键,则循环等待CALL DELAY;有,则延迟20ms清除抖动,第二步是判断哪一个键被按下了MOV AH

27、,0FEH;扫描初值送AHMOV CX,8;行数送CXKEY2:MOV AL,AHMOV DX,ROWPORTOUT DX,AL;输出行值(扫描值)MOV DX,COLPORTIN AL,DX;读进列值CMP AL,0FFH;判断有无接地线JNZ KEY3;有,则转下一步处理ROL AH,1;无,则移位扫描值LOOP KEY2;准备下一行扫描JMP KEY1;所有行都没有键按下,则返回继续检测KEY3:;此时,AL=列值,AH=行值,进行后续处理,2行列反转法行列反转法也是识别按键的常用方法。它的原理为:(1)判断是否有键按下(同行扫描法)。(2)将行线工作在输出方式,将列线工作在输入方式,C

28、PU通过8255的A端口往各行线上全部送低电平,然后从8255的B端口读入列线值。如果此时有某键被按下,则必定会使某列线值为低。,(3)程序再对两个端口进行行列反转,使接行线的A端口设为输入方式,将列线的B端口设为输出方式。然后将刚才读得的列值从列线所接端口输出,再读取行线的输入值,那么,闭合键所在的行线值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行值和列值。键值表:为查找键代码,键盘程序设计时,可将各个键对应的行、列值放在一个表中,程序通过查表来确定具体按下的为哪一个键,进而在这个表中找到这个键的代码。从而确定是哪一个键。如果遇到多个键同时闭合的情况,则输入的行值或者列值中一定

29、有一个以上的0,而由程序预先建立的键值表中不会有此值,因而可以判为重键而重新查找。所以,用这种方法可以方便地解决重键问题。,行反转法键盘扫描程序如下:KEY1:;设置行线接输出端口ROWPORT,列线接输入端;COLPORT;并判断是否有键按下(同行扫描法)KEY2:MOV AL,00MOV DX,ROWPORTOUT DX,AL;行线全为低MOV DX,COLPORTIN AL,DX;读取列值CMP AL,0FFHJZ KEY2;无闭合键,循环等待PUSH AX;有闭合键,保存列值PUSH AX;设置行线接输入端口ROWPORT,列线接输出端;COLPORT,MOV DX,COLPORTPO

30、P AXOUT DX,AL;输出列值MOV DX,ROWPORTIN AL,DX;读取行值POP BX;结合行列值,此时MOV AH,BL;AL=行值,AH=列值;查找键代码 MOV SI,OFFSET TABLE;TABLE为键值表 MOV DI,OFFSET CHAR;CHAR为键对应的代码 MOV CX,64;键的个数,KEY3:CMP AX,SI;与键值比较JZ KEY4;相同,说明查到INC SI;不相同,继续比较INC SIINC DILOOP KEY3JMP KEY1;全部比较完,仍无相同,说明是重键KEY4:MOV AL,DI;获取键代码送AL;判断按键是否释放,没有则等待CA

31、LL DELAY;按键释放,延时消除抖动;后续处理,TABLE DW 0FEFEH;键0的行列值(键值)DW 0FDFEH;键1的行列值DW 0FBFEH;键2的行列值;全部键的行列值CHAR DB;键0的代码DB;键1的代码;全部键的代码,3抖动和重键问题当用手按下一个键时,往往会出现按键在闭合位置和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,称为抖动。抖动的持续时间随操作员而异,不过通常总是不大于l0ms,抖动问题会引起对闭合键的错误识别。,抖动消除:用硬件电路很容易消除抖动,例如采用带滞环的施密特硬件消抖电路。在键数很多的情况下,可以使用软件的方法,通过

32、延时20ms来等待抖动消失,然后再读入键值。重键:所谓重键就是指两个或多个键同时闭合。出现重键时,读取的键值必然出现有一个以上的0,于是就产生了到底是否给予识别和识别哪一个键的问题。,对重键问题的处理,简单的情况下,可以不予识别。连锁法:通常情况,则是只承认先识别出来的键,对此时同时按下的其他键均不作识别,直到所有键都释放以后,才读入下一个键。巡回法:等被识别的键释放以后,就可以对其他闭合键作识别,而不必等待全部键释放。显然巡回法比较适合于快速键入操作。行列反转法可以方便地解决重键问题。,LED显示器及其接口,七段LED显示器原理 LED的主要部分是7段发光管,分别为ag段,有些产品还附带小数

33、点h。通过7个发光段的不同组合,可以显示09和AF共16个字母数字及其他特殊字符。例如当a、b、c段亮,显示“7”;当a、b、c、d、e、g段亮,则显示“d”。LED可以分为共阳极和共阴极两种结构,共阳极结构数码显示端输入低电平有效,当某一段得到低电平时,便发光;共阴极结构数码显示端输入高电平有效,当某段处于高电平时便发光,共阴极数码管,共阳极数码管,为了在LED上显示数据,首先必须把显示数据转换为LED的7位显示代码。实现这种转换可以采用下面两种方法:(1)专用芯片。即采用专用的带驱动器的LED段译码器,如CD 4511,可以实现对BCD码的译码,但不能对大于9的二进制数译码。CD4511有

34、4位显示数据输入,7位显示段输出,3位控制信号输入,使用时,只要将CD 4511的输入端与微机系统输出端口的某4个数据位相连,而CD4511的输出直接与LED的ag相接,便可实现对l位BCD码的显示。,(2)软件译码法。图中所示的是采用8255A的LED接口,在软件设计时,在数据段定义0F共16个数字(也可以为09或其他符号)的显示代码表,在程序中利用XLAT指令进行软件译码。,例:假设用共阳极LED来显示数据,0F的显示代码表就可以按0F的顺序定义如下:DISPCODE DB 0C0H,0F9H,06H,0EH利用8086的换码指令XLAT,可方便地实现数字到显示代码的译码。假设要显示的数据

35、存放在BL的低4位中,利用下面指令就可以实现软件译码。MOV AL,BL;把要显示的数据送入ALAND AL,0FH;屏蔽无用位LEA BX DISPCODE;显示代码表的首地址送BXXLAT;AL-BX+AL,相应的显示代码即被;存入AL,多位数显示电路图是多位显示的接口电路示意,硬件上用公用的驱动电路来驱动各数码管,软件上用扫描方法实现数字显示。硬件上:用2个8位输出端口实现8个数码管的显示控制。位控制:一个端口用作位控制,即控制哪个数码管显示。对于图中的共阳极数码管,当位控制端口的控制码某位为低电平时,经反相驱动,便在相应数码管的阳极加上了高电平,这个数码管就可以显示数据。但具体显示什么

36、数码,则由另一个端口,即段控制端口决定。段控制:段控制端口通过段驱动电路送出显示代码到数码管相应段。此端口由8个数码管共用,因此当CPU送出一个显示代码时,各数码管的阴极都收到了此代码。但是,只有位控制码中为低的位对应的数码管才得到导通而显示数字,其他数码管并不发光,软件:CPU通过段控制端口送出段显示代码,然后通过位控制端口送出位显示代码,指定的数码管便显示相应的数字。如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地重复显示,利用眼睛的视觉惯性,当重复频率达到一定程度,从数码管上便可见到相当稳定的数字显示。重复频率越高,每位数码管延时显示的时间越长,数字显示得就越稳定,显示

37、亮度也就越高。,下面是一段实现8位数码管依次显示一遍的子程序:TABLE DB 0C0H,0F9H,0A4H,0B0H;显示代码表 DB 99H,92H,82H,0F8HDB 80H,90H,88H,83H DB 0C6H,0C1H,86H,8EHBUFDATA DB 8 DUP(0);数字缓冲区 MOV DI,OFFSET BUFDATA;指向数字缓冲区MOV CL,0FEH;指向最左边数码管DISP:MOV AL,DI;取出数字MOV BX,OFFSET TABLE;指向显示代码表XLAT;得到显示代码MOV DX,SEGPORT;SEGPORT为段控制端口OUT DX,AL;送出段码MOV AL,CL;取出位显示代码,MOV DX,BITPORT;BITPORT 为位控制端口OUT DX,AL;送出位码CALL DELAY;实现数码管延时显示INC DI;指向下一个数字ROL CL,1;指向下一个数码管CMP CL,0FEH;是否指向最右边的数码管 JNZ DISP;没有,显示下一个数字 RET;8位数码管都显示一遍,返回,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号