1 / 51

微机原理及接口技术

微机原理及接口技术. 第九章 可编程外围接口芯片 8255A 及其应用. 第九章 可编程外围接口芯片 8255A 及其应用. 9.1 8255A 的工作原理 9.2 8255A 的应用举例 习题. 9.1 8255A 的工作原理. 并行接口电路: 微处理器与 I/O 设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。 并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。由于电气特性的限制,传输距离不能太长。 8255A 是通用的可编程并行接口芯片,功能强,使用灵活。适合一些并行输入 / 输出设备的使用。.

ganesa
Download Presentation

微机原理及接口技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 微机原理及接口技术 第九章 可编程外围接口芯片8255A及其应用

  2. 第九章 可编程外围接口芯片 8255A及其应用 • 9.1 8255A的工作原理 • 9.2 8255A的应用举例 • 习题

  3. 9.1 8255A的工作原理 并行接口电路: • 微处理器与I/O设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。 • 并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。由于电气特性的限制,传输距离不能太长。 • 8255A是通用的可编程并行接口芯片,功能强,使用灵活。适合一些并行输入/输出设备的使用。

  4. 一、8255引脚及内部结构 1、8255A的引脚 8255有40个引脚,采用双列直插式封装形式。其引脚如图所示。

  5. 一、8255引脚及内部结构 8255A并行接口逻辑框图 • 三个独立的8位I/O端口,口A、口B、口C。 • 口A与口B有输入/输出锁存器、输入/输出缓冲器。 • 口C有输入、输出缓冲器及输出锁存器。 • 在实现高级的传输协议时,口C的8条线分为两组,每组4条线,分别作为口A与口B在传输时的控制信号线。 • 口C的8条线可独立进行置1/置0的操作。 • 口A、口B、口C及控制字口共占4个设备号。

  6. 8 PA7-PA0 A 8255 D7 D0- 4 8 PC7-PC4 c 4 PC3-PC0 8 B PB7-PB0 二、8255A并行接口的工作模式 • 模式0:基本输入/输出方式 • A、B、C均可设成此模式。无应答信号,

  7. 二、8255A并行接口的工作模式(序) 模式1:带选通的I/O端口 数据传输采用应答方式,口A、口B可工作在此方式下,征用口C部分位作为应答信号。

  8. 8 PB0-PB7 8 PA0-PA7 OBFB PC1 OBFA PC7 ACKB PC2 ACKA INTE B PC6 INTE A PC0 INTRB PC3 INTRA 2 PC4,5 二、8255A并行接口的工作模式(序) 模式1(续) 口A、口B均为输出:

  9. 二、8255A并行接口的工作模式(序) 模式1(续) 口A、口B均为输出:

  10. 8 8 PA0-PA7 PB0-PB7 STBA STBB INTE A INTE B PC4 PC2 IBFA IBFB PC5 PC1 PC3 INTRA PC0 INTRB 2 PC6,7 二、8255A并行接口的工作模式(序) 模式1(续) 口A、口B均为输入:

  11. 二、8255A并行接口的工作模式(序) 模式1(续) 口A、口B均为输入:

  12. 二、8255A并行接口的工作模式(序) 模式2:双向输入输出方式 只有口A可设成此方式,此时B口只能工作在方式0或方式1 。 • 在此方式下,A口即做输入又做输出,ACK有效时A口输出有效数据,无效时输出呈高阻; • 输入输出都具有锁存功能; • 输入输出都能引起中断,是否能引起中断还要受到INTE1和INTE2的限制,

  13. 8 PA0-PA7 ≥1 PC3 INTRA PC7 OBFA INTE2 PC6 ACKA & & INTE1 PC4 STBA PC5 IBFA 3 PC0-2 二、8255A并行接口的工作模式(序) • 模式2:

  14. 二、8255A并行接口的工作模式(序) 模式2:双向输入输出方式时序

  15. D7 D6 D5 D4 D3 D2 D1 D0 D7=1:方式选择 1 PORTC(Lower) in D7=0:位操作 PORTC(Lower)out 0 GROUP A MODE SELECT 0 0 MODE 0 1 PORT B INPUT MODE 1 0 1 0 PORT B OUTPUT MODE 2 1 X GROUP B MODE SELECT 1 A=INPUT 0 MODE 0 0 1 MODE 1 A=OUTPUT 1 PORT C (UPPER) = INPUT PORT C (UPPER) = OUTPUT 0 三、方式控制字及状态字 1.方式控制字

  16. CONTROL WORD FOR PORT C BIT SET/RESET D7 D6 D5 D4 D3 D2 D1 D0 X X X DONT 0 BIT SET/RESET CARE 1 SET 0 RESET PORTC BIT SELECT 0 0 0 PC0 0 0 1 PC1 0 0 1 PC2 0 1 1 PC3 1 0 0 PC4 1 0 1 PC5 1 1 0 PC6 1 1 1 PC7 三、方式控制字及状态字 (续) 2.口C按位操作控制字 向控制口输出此控制字可实现对口C各位单独置1、置0,即位操作。

  17. MODE2 三、方式控制字及状态字 (续) 3. 状态字 当A口、B口工作在方式1 或A口工作在方式2时可以通过C口读出其状态

  18. 8255A BASIC OPERATION A1 A0 RD# WR# CS# OPERATION 0 0 0 1 0 PORT A = Data BUS 0 1 0 1 0 PORT B = Data BUS 1 0 0 1 0 PORT C = Data BUS 0 0 1 0 0 DTAT BUS = PORT A 0 1 1 0 0 Data BUS = PORT B 1 0 1 0 0 Data BUS = PORT C 1 1 1 0 0 Data BUS = CONTROL PORT X X 1 1 1 3 - STATE = Data BUS 四、8255A并行接口的寻址及连接

  19. 9.2 8255A的应用举例 一、LED显示器接口 二、并行打印机接口电路 三、键盘接口

  20. 一、LED显示器接口

  21. 接口电路 驱动器 PA7 D7~D0 D7~D0 RD WR A0 A1 CS 8086 ~ 系统总线 PA0 RD WR A1 A2 +5V K3 PC3 A0 A3 A4 Y0 Y1 Y2 O O O A B C G2A G2B G1 K2 PC2 K1 PC1 K0 M/IO PC0 & A5 A6 A7 8255A LS138 +5V 例:8255A作为开关K0~K3及七段LED显示器接口。要求开关设置的二进制信息,由PC0~PC3输入,经程序转换为对应的七段LED显示器的字形代码后,由PA口输出显示。

  22. 由图可知:A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 0 1  0 按题意设置端口A方式0输出,下C口输入. 1 0 0 0 × 0 × 1 CS A0 A3 A4 Y0 Y1 Y2 A B C G2A G2B G1 M/IO & A5 A6 A7 LS138 8255A各端口地址确定: 各端口地址为:E8H~EEH 8255A方式选择控制字: 81H

  23. a b c d e f g ep a f b g a b c d e f g ep c e d dp LED显示器的外形 共阳极LED显示器的结构 共阴极LED显示器的结构 LED显示器的结构 LED显示器的结构可分为共阳极和共阴极两种

  24. a b c d e f g ep PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8 2 5 5 DB7--DB0 LED显示器的工作原理 若要显示某个字符首先需要将它转换成对应的字形码(也称为段码),然后送到LED显示。这一转换过程称为译码。译码方法分为软件译码法和硬件译码法两种 软件译码: 方案1 共阳极LED显示器与同相驱动器接口

  25. a a f b g f b a g c e a a a a f a b c a e a g dp d f b f b f b f g b g dp f g b d g f b c f b g e g g c c e e c c e e dp d c c e e c e dp dp d d dp dp d d dp dp d d dp d LED显示器的工作原理 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 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 9(90H) 1 0 0 1 0 0 0 0

  26. a b c d e f g ep PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 8 2 5 5 DB7--DB0 方案2 共阳极LED显示器与反相驱动器接口

  27. a a f b g f b a g c e a a a a f a b c a e a g dp d f b f b f b f g b g dp f g b d g f b c f b g e g g c c e e c c e e dp d c c e e c e dp dp d d dp dp d d dp dp d d dp d 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 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 9(6FH) 0 1 1 0 1 1 1 1

  28. LED显示器的字形代码表存放在TABLE单元开始的内存中.LED显示器的字形代码表存放在TABLE单元开始的内存中. TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H DB 80H, 98H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH 编程: 实现操作的具体程序如下: MOV DX,0EEH ;设置8255A工作方式 MOV AL,81H OUT DX,AL MOV DX,0ECH ;指向端口C,读开关状态 IN AL,DX AND AL,0FH LEA BX,TABLE ;显示代码表首地址送BX XLAT ;查表,取出相应的字形码送AL MOV DX, 0E8H ;指向端口A OUT DX, AL ;输出字形码显示 HLT

  29. 5V 5V +5V 13 12 11 10 9 15 14 1. 5V 7447 a b c d e f g 3 4 5 +5V 16 8 RBI RBO LT Vcc GND I=20mA R A B C D 7 1 2 6 0. 2V 硬件译码: 利用专用接口芯片7447驱动LED显示器 7447为BCD—七段译码器 与单个LED的连接 R=(5–1.5 – 0.2)V/ 20mA=168 取R=150 

  30. LED显示器的电路设计分为两种,静态显示和动态显示,两种电路各有长处和缺点,在不同情况下可采用不同的连接方式。 下面是两种连接方式:

  31. 7447BCD—七段译码器与多个LED的连接 DB0——DB7 DB0——DB7 PA0PA1PA2PA3 PA4 PA5PA6 PA7 PB0PB1PB2PB3 PB4 PB5PB6 PB7 A B C D A B C D A B C D A B C D 7447 7447 7447 7447 a b c d e f g a b c d e f g a b c d e f g a b c d e f g 5V 器件多,输出显示后若不改变显示内容CPU不用干预 静态显示器的设计

  32. 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

  33. 初始化 取显示数据 送段通道口 位码送位通道口 延时 修改指针,位码 N 是否最后一位 Y 结束 动态显示器控制程序的设计 LEA SI,BUFF MOV CX,07H MOV DL,01H MOV AL,[SI] OUT POTB,AL MOV AL,DL OUT POTA,AL INC SI ROL DL

  34. a PB0 • • • • • • • • • • • • g PB7 • • • • • • • • • • • • • • • • • • • • • 74LS07 PA0 PA1 PA2 PA3 PA4 PA5 PA6 8 2 5 5

  35. 初始化 取显示数据 查表得段码送段通道 位码送位通道 延时 修改指针,位码 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

  36. 二、并行打印机接口电路

  37. PC总线 8255 打印机 DB DB PA DB PC7 PC6 PC3 WR STB ACK A0 A1 A0 A1 RD AB 去8259IR2 译码器 IOW CS IOR 例:用8255实现与打印机的接口,8255的PA口作为数据输出端口,工作在方式1;PC7作为OBF#信号输出端;PC6作为ACK信号输入端; PC3作为INTR信号输出端,接8259的IR2,因此中断类型号为0AH。8255的端口地址为0FCH-0FFH。 输出时,先输出一个空字符,以引起中断,在中断服务程序中输出打印字符。打印机接收到打印字符后,发出ACK#响应信号,清除OBF#标志,使8255产生新的中断请求,再输出下一个打印字符。

  38. 打印机接口信号

  39. BUSY DATA 0.5s 0.5s 0.5s 5s ACKNLG STROBE 打印机接口信号

  40. 主程序完成中断的准备工作和设置8255A的工作方式控制字等主程序完成中断的准备工作和设置8255A的工作方式控制字等 中断服务程序完成字符的输出。 ROUT:PUSH AX MOV AL,[BX];取字符 OUT 0FCH,AL;输出 INC BX POP AX IRET PUSH DS LEA DX,ROUT MOV AX,SEG ROUT MOV DS,AX MOV AL,0AH MOV AH,25H INT 21H POP DS; 设置中断向量 MOV AL,0A0H;方式字 OUT 0FFH,AL MOV AL,0DH;PC6置1 OUT 0FFH,AL;中断允许 MOV AL,20H;输出空格字符 OUT 0FCH,AL MOV BX,FLAG STI

  41. 三、键盘接口 键盘是微型计算机系统中最常用的一种输入设备。键盘有两种类型:编码键盘和非编码键盘。 编码键盘能自动提供对应于被按键的编码,如ASCII码,并能同时产生一个脉冲通知CPU。编码键盘还具有处理抖动和多键串键的保护电路。这种键盘的优点是使用方便,但需要较多的硬件,价格昂贵。 非编码键盘有一组开关组成,提供行和列的键盘矩阵,其工作过程:按键的识别;按键代码的产生;防止串键和消除抖动等均由程序来实现。故这种键盘的优点是所需要的硬件较少,价格便宜,宜用微机化仪表的面板的键盘。 这里只介绍非编码键盘

  42. 4行×4列16个按键的键盘 +5V 5 F C 9 8 D 4 E 6 1 B 2 7 3 A 0 PA0 PA1 PA2 PA3 8255A PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 8 2 5 5 A 工作原理

  43. 键盘扫描过程: (1)检测键盘上所有的键是否都松开,反复检测直至全松开。 (2)检测键盘上是否有键按下,反复检测直至有键按下。 (3)若有键按下,则消除键抖动后(硬件消抖动电路,软件延时消抖动下),再确认该键是否按下。 (4)对按下的键进行编码,即将该键所在的行号和列号转换成16进制代码。 (5)检测该键是否松开,反复检测直至松开。 (6)根据代码转相应功能子程序。 注:若在按键时,多个键盘同时按下,可取最后松开的按键作为本次按下的键。

  44. 初始化: 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 ;写入控制字

  45. MOV DX, PORT-A ;DX指向A口 MOV AL, 00H OUT DX, AL 所有行置“0” 读入列值 N 键松开 读入列值 N 有键按下 延时20ms消抖动 Y 键仍按下 逐行逐列查按键 查表得键代码 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 ;否,等待

  46. 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 ;扫描下一行

  47. ENCODE: MOV BX,000FH ;置键代码初值 IN AL,DX ;读入行列号 NEXT-T: COM AL, TABLE[BX] ;与表中行列号相等吗 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

  48. +5V 38 7行 6行 5行 4行 3行 2行 1行 0行 30 28 20 18 10 F 8 7 0 1 7列 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 6列 5列 8 2 5 5 A 8 2 5 5 A 4列 3列 2列 1列 0列 8行×8列 键盘 CPU向端口A送全“0”到行线,再从B口读入列状态。若读入的状态为全“1”,表示无键按下。 CPU向端口A的PA0送“0” ,其余行线送“1”,再从B口读入列状态。若读入的状态为全“1”,表示第0行无键按下;否则闭合键在第0行上。 在第0行无键按下的情况下,依此对行1,行2,…行7进行上述操作,找出按键所在的行和列的编号。

  49. 初始化: PORT-A EQU 0FFF8H ;8255A口地址 PORT-B EQU 0FFFAH ;8255B口地址 PORT-CTL EQU 0FFFEH ;8255控制口地址 8255初始化:方式0,A口输出,B口、C口输入 MOV DX, PORT-CTL ;DX指向控制口 MOV AL, 10000011B ;控制字 OUT DX, AL ;写入控制字

  50. WAITK:MOV DX, PORT-A ;DX指向A口 MOV AL, 00H OUT DX, AL MOV DX, PORT-B ;DX指向B口 IN AL, DX ;输入B口 COM AL, 0FFH ;各键均未按下 JZ WAITK ;无键按下继续等 MOV CX, 16EAH DELAY: LOOP DELAY ;延时20ms MOV BL,0 ;送键号初值 MOV BH,11111110B ;置初始扫描模式 MOV CX,8

More Related