微机原理ch09并行接口.doc_第1页
微机原理ch09并行接口.doc_第2页
微机原理ch09并行接口.doc_第3页
微机原理ch09并行接口.doc_第4页
微机原理ch09并行接口.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

9 并行接口9.1 8255A的结构与引脚9.1.1 内部结构9.1.1.1 数据端口A、B、C8255A有三个8位数据端口,即端口A、端口B和端口C。1) 端口A端口A对应一个8位数据输入锁存器和一个8位数据输出锁存缓冲器,所以用端口A作为输入或输出时,数据均受到锁存。2) 端口B端口B对应一个8位数据输入缓冲器和一个8位数据输出锁存缓冲器。3) 端口C端口C对应一个8位数据输入缓冲器和一个8位数据输出锁存缓冲器。9.1.1.2 A组控制和B组控制A组控制电路控制端口A和端口C的高4位(PC7PC4)的工作方式和读写操作。B组控制电路控制端口B和端口C的低4位(PC3PC0)的工作方式和读写操作。9.1.1.3 读写控制逻辑电路读写控制电路负责管理8255A的数据传输过程。9.1.1.4 数据总线缓冲器这是一个双向三态的8位数据缓冲器,8255A通过他与系统总线相连,输入数据、输出数据以及CPU发给8255A的控制字都是通过这个缓冲器传递的。9.1.2 引脚说明9.1.2.1 和外设一侧相连的信号l PA7PA0,PB7PB0,PC7PC0三组双向数据信号线,分别与8255A的A口、B口、C口相对应,每组8根。9.1.2.2 和CPU一侧相连的信号1) 数据线D7D0是8255A与系统数据总线相连接的双向三态8位数据信号线。CPU通过执行IN或OUT指令传送的数据由缓冲器接收或发送,控制字和状态字也是通过数据总线缓冲器传输的。2) 复位信号RESET,输入,高电平有效。RESET信号有效时,将使8255A内部的控制寄存器清零,所有的口处于输入工作状态。3) 片选信号-CS,输入,低电平有效。通常由端口地址译码产生。4) A1和A0均为输入信号,A1和A0用来选择8255A内部的A口、B口、C口和控制寄存器。5) 读写控制信号-RD读控制信号,输入,低电平有效。-RD有效时,8255A将状态信息或者数据信息送上系统数据总线,从而完成CPU对该8255A的读操作。-WR写控制信号,输入,低电平有效。-WR有效时,将CPU输出的数据或控制命令字写入8255A,从而完成CPU对该8255A的写操作。-CSA1A0-RD-WR操作00001数据从端口A 数据总线 CPU00101数据从端口B 数据总线 CPU01001数据从端口C 数据总线 CPU00010数据从CPU 数据总线 端口A00110数据从CPU 数据总线 端口B01010数据从CPU 数据总线 端口C01110数据从CPU 数据总线 控制寄存器1D7 D0进入高阻态01101非法的信号组合011D7 D0进入高阻态9.2 8255A的控制字9.2.1 方式选择控制字8255A中有三种工作方式:l 方式0(Mode 0):基本输入输出方式(Basic Input/Output)l 方式1(Mode 1):选通输入输出方式(Strobe Input/Output)l 方式2(Mode 2):双向传输方式(Bi-Dirctional Bus)Example:(a) Find the control word if PA = out, PB = in, PC0 - PC3 = in, and PC4 - PC7 = out.(b) Program the 8255 to get data from port B and send it to port A, In addition, data from PCL is sent out to the PCU.Use port addresses of 300H - 303H for the 8255 chip.Solution:(a) From the figure of 8255 control word format, we get the control word of 1000 0011 in binary or 83H.(b) The code is as follows:B8255Cequ300h;Base address of 8255 chipCNTLequ83h;PA=out, PB=in, PCL=in, PCU=outmov dx, B8255C+3;load control registermov al, CNTL;load control byteout dx, al;send it to control registermov dx, B8255C+1;load PB addressin al, dx;get data from PBmovdx, B8255C;load PA addressoutdx, al;sent it to PAmov dx, B8255C+2;load PC addressinal, dx;get the bits from PCLandal, 0fh;mask the upper bitsrolal, 1;shift the bits to upper positionrolal, 1rolal, 1rolal, 1outdx, al9.2.2 端口C置位复位控制字置位复位控制字只能对C口进行操作,即只对C口有效。当8255A接收到写入器控制寄存器的控制字时,首先检测控制字的最高位,如果为“1”,则是方式控制字;如果为“0”,则是C口置位复位控制。9.3 8255A的工作方式9.3.1 方式0方式0(Mode 0)又称基本输入输出方式(Basic Input/Output)。在方式0下,A口、B口、C口的高4位和低4位都可以作为基本输入端口或基本输出端口,注意:C口被当作两个独立的4位端口。如果将所有的4个端口的输入功能和输出功能组合起来共有16种不同的组态。9.3.2 方式1方式1(Mode 1)又称选通输入输出方式(Strobe Input/Output)。在这种工作方式下,A口和B口作为数据输入输出端口,C口的高5位(PC7PC3)被用作A口的状态信号和控制信号;C口的低3位(PC2PC0)被用作B口的状态信号和控制信号。CPU使用A口或B口与外设交换数据时,由C口提供8255A与外设之间的选通和应答信号。此外,方式1具有中断请求逻辑,能够以中断方式与CPU交换数据。8255A的A口和B口能够同时以方式1工作。方式1时输入端口对应的控制信号:方式1时输出端口对应的控制信号:9.3.3 方式2方式2(Mode 2)又称双向传输方式(Bi-Dirctional Bus)。这种工作方式只能适应于8255A的A口,在这种工作方式下,外设可以通过8255A的A口进行数据的双向传输。当A口工作于方式2时,B口可以以方式1或方式0工作。9.4 8255A的应用9.4.1 LED数码管及其接口最简单的显示设备就是发光二极管(Light Emitting Diode, LED),由7段发光二极管组成的LED数码管是一种应用非常普遍的显示器件,单板机、微机控制系统及数字化仪器都用它作为输出的显示。9.4.1.1 LED数码管的工作原理LED数码管的主要部分是7段发光管,如图所示。这7段发光管顺时针分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h。通过7个发光段的不同组合,数码管可以显示09和AF共16个数字,从而实现16进制数的显示。LED数码管有共阳极和共阴极两种结构。如为共阳极结构,则共用的阳极应接高电平为有效,各段则输入低电平有效。如为共阴极结构,则共用的阴极应接低电平为有效,各段则输入高电平有效。共阳极显示代码共阴极显示代码11000000C0001111113F11111001F9000001100610100100A4010110115B10110000B0010011114F100110019901100110331001001092011011013D1000001082011111017D11111000F800000111071000000080011111117F1001000090011011115F100010008801110111771000001183011111007C11000110C6001110013911000001C1001111103E10000110860111100179100011108E01110001719.4.1.2 单个LED的显示由于发光二极管发光时,通过的平均电流为10mA20mA,而通常的输出锁存器不能提供这么大的电流,所以LED的各段必须接驱动电路。例如,对于共阴极的数码管,阴极接地,则阳极要加驱动电路。驱动电路可由三极管构成,也可采用小规模集成电路。为了显示一个4位二进制数据(一位16进制数据),就需要将这4位二进制数据译为LED的7位(或8位)显示代码。一种方法是采用专用的带驱动的LED段译码器,实现硬件译码。另一种常用的方法是软件译码,在程序设计时将0F这16个数字对应的显示代码组成一个表,用换码指令(xlat)查表取出显示代码。;数据段LEDtbdb3fh,06h,5bh,4fh,.;代码段moval, digital;AL赋值为要显示的数字,例如5movbx, offset LEDtd;取显示代码表的首地址xlat;换码为显示代码,AL-DS:BX+ALmovdx, port;假设port表示与数码管相接的端口outdx, al;输出显示9.4.1.3 多个LED数码管的显示在实际使用中,往往是要用几个数码管实现多位显示。如果每一个数码管占用一个独立的输出端口,那么将占用太多的通道,而且驱动电路的数目也需要很多。所以要从硬件和软件两方面想办法来节省硬件电路。下图是一个常用的多位LED数码管显示接口电路示意图。在这种方案中,硬件上用公用的驱动电路来驱动个数码管,软件上用扫描法实现数码的显示。从图中可以看出两个8位端口就可以实现8个数码管的显示控制。位控制端口:用来控制哪一个(位)数码管的显示。对于图中共阳极的数码管,当位控制端口的控制码的某位为低电平时,经反向驱动便在相应的数码管的阳极加上了高电平,这个数码管就可以显示数据。段控制端口:决定具体显示什么数码。段控制端口通过段驱动电路送出显示代码到数码管相应的段。此端口由8个数码管共用,因此当CPU送出一个显示代码时,各个数码管的阴极都收到了此代码,但是只有位控制码中为低的位对应的数码管才得到导通而显示数据,其他数码管并不发光。只要CPU通过段控制端口送出显示代码,然后通过位控制端口送出位显示代码,指定的数码管便显示相应的数据。如果CPU顺序地输出段码和位码,依次让每个数码管显示数据,并不断地重复显示,当重复频率到达一定程度,利用视觉残留,则从数码管上便可看到稳定的数字显示。;数据段B8255Cequxxh;Base address of 8255 chipLEDdtdb8 dup(?);代码段;主程序;-;设置8255的工作模式mov dx, B8255C+3;load control registermov al, 10000000b;PA=out, PB=out.;-movsi, offset LEDdt;指向数据缓冲区callLEDdisp;调用显示子程序;-;显示子程序:显示一次数据缓冲区中的8个数据;入口参数:DS:SI=缓冲区首地址LEDdispprocpushaxpushbxpushdxmovbx, offset LEDtd;指向显示代码movah, 0feh;指向位0,最右边的位LED1:lodsb;取出要显示的数字xlatcs:LEDtb;取得显示代码: AL-CS:BX+ALmovdx, B8255C+1;Port B为段控制端口outdx, al;送出段码moval, ah;取出位显示代码movdx, B8255C;Port A为位控制端口outdx, al;送出位码calldelay;实现数码管延时显示rolah, 1;指向下一个数码管cmpah, 0feh;是否显示了所有的数码管jnzLED1;没有,则显示下一个数字popdxpopbxpopax;显示代码。显示代码表安排在子程序中是为了相对独立LEDtbdb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1,86h,8ehLEDdispendp;-;延时子程序timer= 10;延时常数,根据需要而设定delayprocpushbxpushcxmovbx, timerdelay1:xorcx, cxdelay2:loopdelay2decbxjnzdelay1delayendp9.4.2 键盘的基本工作原理9.4.2.1 键盘矩阵9.4.2.2 键的识别9.4.2.2.1 行扫描法的原理9.4.2.2.2 行反转法的原理行反转法是识别闭合键的常用方法之一。以4x4=16的键盘为例。用行反转法识别闭合键时,要将行线接于一个并口,先让它工作在输出方式;将列线接于一个并口,先让它工作在输入方式。CPU通过输出端口往各行线上全部送低电平,然后读入列线的值。如果此时有某个键被按下,则必定会使某一列线为0值。然后,反转行列端口的工作方式,即使行端口由输出方式转换为输入方式,列端口由输入方式转换为输出方式。将先前由列端口读入的值经由此端口输出,从行端口读入行线上的值,那么在闭合键所在的行线上的值比为0。这样当一个键被按下后,必定可以读取到一个唯一的行值和列值。当下图中的9号键闭合时,往行线输出全0后,从列线上读到的值为1101。然后,反转行列端口的工作方式,将读入的1101经由列端口输出,则会从行线上读到1011。于是行值和列值合起来得到一个数值10111101即BDH,这个知对应了键9。例:设用8255A的A端口连接行线,用B端口连接列线,用行反转法判别键的闭合。;ctrlport是8255的控制端口,设置控制为82H,;A端口输出,B端口输入st:moval, 10000010Boutctrlport, al;往A端口输出0wait1:moval, 0Outporta, al;输入列值inal, portb;看是否有键闭合cmpal, 0ffh;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论