微机原理及接口技术-第10章-外围接口.ppt

上传人:s****8 文档编号:93808984 上传时间:2023-07-13 格式:PPT 页数:56 大小:423.50KB
返回 下载 相关 举报
微机原理及接口技术-第10章-外围接口.ppt_第1页
第1页 / 共56页
微机原理及接口技术-第10章-外围接口.ppt_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《微机原理及接口技术-第10章-外围接口.ppt》由会员分享,可在线阅读,更多相关《微机原理及接口技术-第10章-外围接口.ppt(56页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第十章 可编程外围接口芯片8255A 及 其应用8255A:可编程并行I/O芯片,40引脚 INTEL 系列微处理器配套接口电路 广泛应用于:开关电路,键盘 七段LED显示器,打印机 软盘接口电路 CRT控制电路 及A/D,D/A接口电路10-1 8255A 的工作原理一、结构,功能 P340 图10-1 8255A的引脚图 P341 图10-2 8255A的内部结构内部数据总线A组端口AA组端口C高四位B组端口C低四位B组端口BPA7PA0PC7PC4PC3PC0PB7PB0A组控制逻辑B组控制逻辑数据总线缓冲器读/写逻辑控制D7-D0RDWRA1A0RESETCS8255A的内部结构1、数

2、据端口A,B,C A口:内含 一个8位输出锁存器/缓冲器和一 个8位输入锁存器 故I/O数据均能锁存 A组:PA7PA0与PC7PC4组成 B口:内含一个8位数据输入/输出锁存器/缓冲 器和一个8位输入缓冲器 B组:PB7PB0与PC3PC0组成 C口:内含 一个8位输出锁存器/缓冲器(输出数据 能锁存)和一个8位输入缓冲器(不能锁存)当C口分为两个4位端口时,每个端口有一个 4位输 出锁存器。2.控制逻辑:其功能:接收CPU送来的命令字,确定A/B 组工作方式;set or reset each bit of Port C C口(PC7PC0):可作普通I/O使用 C口也可作两个4位I/O口

3、,还可以输出A口和B口的控制信号及状态。3.数据总线缓冲器 双向三态8位缓冲器 直接接到CPU的D7D0,其功能:接收数据和控制字 发送外设到CPU的数据及状态等4.读/写控制逻辑 管理内/外部的数据、控制字、状态字的传递过程 RESER 复位信号:高有效RESET=1时:8255A内的控制R清0 A、B、C均为输入方式CS 片选信号:由CPU地址总线经译码产生 CS=0 时:RD=0CPU 读8255A数据,状态 WR=0CPU向8255A写数据,控制字RD读信号:CPU读8255A数据、状态WR写信号:CPU向8255A写入数据、控制字 8255A内部端口地址的确定 A1A0=00 选中A

4、口 A1A0=01 选中B口 A1A0=10 选中C口 A1A0=11 选中控制端口二、8255A的控制字 两类控制字:方式选择控制字 定义端口工作方式 置位复位控制字C口任一位置位/复位在控制字中 D7=1 方式选择字 D7=0 置位复位控制字方式选择控制字:方式基本方式Basic IO方式选通方式 Strobe IO方式双向总线方式 Bidirectional Bus口:可工作于方式,任何一种口:只能工作于方式,(不能为方式2)口:分成双位,可基本,还可输 出,口控制信号,输入,的 状态。方式控制字的格式:D7 D6 D5 D4 D3 D2 D1 D0C 口低4位I/O1=输入0=输出B

5、口I/O1=输入0=输出B 口方式0=方式01=方式1C 口高4位I/O1=输入0=输出A 口I/O1=输入0=输出A 口方式00=方式001=方式11X=方式2D7=1标志位置位复位控制字:口的数位常用来产生控制信号(如应答式数据传送中断请求信号)或其他应答信号如:在i位产生电平控制信号只需简单编程即可编程前应写入置位复位字置位复位控制字:D7 D6 D5 D4 D3 D2 D1 D0任意值D7=0,标志位位选择1 置位0 复位000 选中PC0001 选中PC1111 选中PC7图10-4 置位/复位控制字格式例:设端口地址:要求从上输出一正脉冲编程:,三、工作方式和口状态字工作在方式和方

6、式时,口为,口联络信号.方式 在方式0下:(basic),口为位口。口作个位端口,任一位可作输入或 输出,口也可作为位口。注意:方式时:输出数据可锁存 输入数据不锁存例:设控制口为,要求设置,口为方式,输入数据,4为输入,为输出编程:,方式:(strobe 方式)口,口为位口,数据均能锁存,但必须在选通信号下才能完成操作(口产生或接收选通信号)。选通方式的几种情况 选通输入方式:口为方式,输入口 4STB:选通信号,外设提供5IBF:输入缓冲器满,供CPU查询10 1 1/0 1D7 D6 D5 D4 D3 D2 D1 D0CONTROL WORDPC6,71=INPUT0=OUTPUTPA7

7、PA0PC4PC5PC6,7INTE ABI/OINTRAIBFASTBA2MODE 1(PORT A)RDPC3图10-6 选通输入方式 外设数据准备好后有效数据输入缓冲器已满(查询用)读数据置位允许外设向提供数据。INTEnable 中断请求信号:只有当均为高时才能发出(即:数据进入缓冲器不再接收外设数据,中断允许的情况下发)口为方式输入口,工作过程类似于口的情况 区别在于:方式字:D7 D6 D5 D4 D3 D2 D1 D011 1I/O1:PC3输入 0:PC3输出选通输出方式:口方式输出(、作一般I/O)PC7OBF输出缓冲器满。PC6ACR外设回答信号。PC3INTR 方式字 1

8、0 1 1/0 0D7 D6 D5 D4 D3 D2 D1 D0CONTROL WORDPC4,51=INPUT0=OUTPUTPA7PA0PC7PC6PC4,5INTE AINTRAACKAOBFA2MODE 1(PORT A)WRPC3B B口为方式输出 PC1OBF输出缓冲器满。PC2ACR外设回答信号。PC0INTR(3)选通I/O组合方式:10 1 1/0 1D7 D6 D5 D4 D3 D2 D1 D0CONTROL WORDPC6,71=INPUT0=OUTPUT1 0RDWRPA7-PA0PC4PC5PC3PC6,7PB7-PB0PC1PC2PC088STBAIBFAINTRA

9、I/OOBFBACKBINTRB2WRRDPA7-PA0PC7PC6PC3PC4,5PB7-PB0PC2PC1PC088STBAIBFAINTRAI/OSTBBIBFBINTRB210 1 1/0 0D7 D6 D5 D4 D3 D2 D1 D0CONTROL WORDPC4,51=INPUT0=OUTPUT1 1方式1组合端口状态和控制字(a)A口输入B口输出(b)A口输出B口输入3、BB方式2:仅限A口,A口分时输出/输入11 1/0D7 D6 D5 D4 D3 D2 D1 D0CONTROL WORDPC2-01=INPUT0=OUTPUTPA7PA0PC7PC6PC2-0INTE 1A

10、CKAOBFA3WRPC4B1/01/0PORTB1=INPUT0=OUTPUTGROUP B MODE0=MODE01=MODE1ADPC3PC5INTRASTBAIBFAI/O+INTE 2与与4、C口状态字 8255A工作于方式0c口各位可I/O使用 当在方式1、方式2时,c口内容为联络信号 CPU读入c口状态字:1)方式1时c口状态字 输入状态字:输出状态字:I/OD7 D6 D5 D4 D3 D2 D1 D0IBFB IBFA INTEA I/O INTRA INTEB INTRBI/OD7 D6 D5 D4 D3 D2 D1 D0OBFB OBFA INTEA I/O INTRA

11、INTEB INTRB 2)方式2时c口状态字:(仅限A口)D7 D6 D5 D4 D3 D2 D1 D0OBFA INTE1 IBFA INTRA INTE2 State B group style 1I/O B group style 010-2 8255A 应用举例一、基本I/O应用:用8255A的A口检测8个开关状态(A口输入)Ki合PAi0 Ki断PAi1 B口输出8个开关的状态(B口输出)Ki合PBi0 LED灭 Ki断PBi1 LED亮D7-D0 RD WRRESETM/IO A7 A6 A5 A4 A3 A0 A2 A18086D7-D0RDWRRESET8255AG1G2AG

12、2BCBA74LS138Y4 A1 A0CSPA7PA6PA0PB7PB6PB0+5VK7K6K0LED7LED6LED0读开关状态连线图根据连接图确定端口地址:因为CS=y4 所以A4A3A2=100 A7A6A5(必为)1118255A的4个端口地址:A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 1 0 0 0 0 F0H(A口)1 1 1 1 0 0 1 0 F2H(B口)1 1 1 1 0 1 0 0 F4H(C口)1 1 1 1 0 1 1 0 F6H(控制口)确定控制字(方式选择字):编程:MOV DX,OF6H;控制口DX MOV AL,90H;方式选择字AL OU

13、T DX,AL;写入方式字TEST_IT:MOV DX,OF0H;指向A口 IN AL,DX;从A口读入开关状态 MOV DX,OF2H;指向B口D7 D6 D5 D4 D3 D2 D1 D01 0 0 1 0 0 0 0 OUT DX,AL;B口输出,指示开关状态 JMP TEST_IT;循环检测 二、键盘接口 A口:输出行扫描低电平 PA0 PA1 PA2 PA3 B口:PB7PB4 输入行码 PB3PB0 输入列码 扫描码的获得:0键:当PA30 PB70 0键按下PB30 所以,0键的键值编码为77H.PB7 6 5 4 3 2 1 PB00 1 1 1 0 1 1 1=77H F键:

14、当PA00 PB40 F键按下PB00键盘扫描程序框图:PB7 6 5 4 3 2 1 PB01 1 1 0 1 1 1 0=EEHSTART设堆栈,数据段 8255A初始化 8255A初始化 Y 所有键松开?N有键按下 Y N 延时20ms去抖动 N键仍在按下?确定是哪一个键Y键扫描程序见P355 确定是哪一个键 查表得到键码 结束程序如下:;端口地址PORT_A EQU OFF9H;8255A口地址PORT_B EQU OFFBH;8255B口地址PORT_CTL EQU OFFFH;8255控制口地址;数据段,键盘扫描编码表DATA SEGMENT;0 1 2 3 4 5 6 7 TAB

15、LE DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH;8 9 A B C D E FDB 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHDATA ENDS;堆栈段STACK SEGMENT STACKDW 50 DUP(0)TOP_STAC LABEL WORDSTACK ENDS;代码段CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,STACKMOV SS,AXLEA SP,TOP_STACKMOV AX,DATAMOV DS,AX;初始化8255A,方式0,A口左

16、输出,B口和C口为输入MOV DX,PORT_CTL;指向控制口MOV AL,10001011B;控制字OUT DX,AL;写入控制字;向所有行送0MOV DX,PORT_A;A口MOV AL,00HOUT DX,AL;向A口各位输出0;读列,查看是否所有键均松开MOV DX,PORT_BWAIT_OPEN:IN AL,DX;键盘状态读入B口 AND AL,0FH;只查看低四位(列值)CMP AL,0FH;是否都为1(各键均松开)?JNE WAIT_OPEN;否,继续查;各键均已松开,再查列是否有0,即是否有键压下WAIT_PRES:IN AL,DX;读B口 AND AL,0FH;只查低4位

17、CMP AL,0FH;是否有键压下 JE WAIT_PRES;无,等待;有键压下,延时20ms,消抖动 MOV CX,16EAH DELAY:LOOP DELAY;延时20ms;再查列,看键是否仍被压着IN AL,DXAND AL,0FH CMP AL,0FH JE WAIT_PRES;已松开,转出等待压键;键扔被压着,确定哪一个键被压着MOV AL,0FEH;先使D0=0MOV CL,AL;CL=1111 1110BNEXT_ROW MOV DX,PORT_A;A口 OUT DX,AL;向一行输出低电平 MOV DX,PORT_B;B口 IN AL,DX;读入B口状态AND AL,OFH;只

18、截取列值CMP AL,0FH;是否均为1?JNE ENCODE;否,表示有键压下,转去编码ROL CL,01;均为1,使下行输出0MOV AL,CLJMP NEXT_ROW;查看下行;已找到有一列为低电平,对压键的行列值编码ENCODE:MOV BX,000FH;建立地址指针,先指;向F键对应的地址 IN AL,DX;从B口读入行列号NEXT_TRY:CMP AL,TABLEBX;读入的行;列值与表中查得的相等吗?JE DONE;相等,转出 DEC BX;不等,转向下一个地址 JNS NEXT_TRY;若地址尚未减为负值,继续 MOV AH,01;若减为负值,置出错码01 AH中 JMP EX

19、IT;退出DONE:MOV AL,BL;BL中存有键的16进制代码 MOV AH,00;AH=0,读到有效键值EXIT:HLTCODE ENDS END三、七段LED显示器及接口电路 LED结构:各段额定电流20mA 共阳极LED:abcdefg阳极dpgfedcba共阳极LED显示码(不计dp):0亮 1灭 dp g f e d c b a 0 1 0 0 0 0 0 0 40H 0 1 1 1 1 0 0 1 79H 0 0 1 0 0 1 0 0 24H 0 0 0 0 1 1 1 0 0EH共阴极LED阴极dpfgedcba共阴极LED显示码:1亮 0灭 不讲dp的作用 dp g f

20、e d c b a 0 0 1 1 1 1 1 1 3FH 0 0 0 0 0 1 1 0 06H 0 1 1 1 0 0 0 1 71H1、软件译码法:用于简单的LED显示场合。根据接线图 某段亮PAi=0对于A口输出的代码,即为共阳极LED显示码fgedcba反 相 驱 动 器PA7PA6PA5PA4PA3PA2PA1PA08255ALEDDB编程:P358(详细讲解)2、专用芯片驱动 LED显示器1)显示单个数字15015013 12 11 10 9 15 14ab d e f g c7 1 2 6BCD码输入端VCCGNDRBIRBOLTA B C D7447+5V+5V168543+

21、5共阳极设16进制数字的七段代码表的首地址为TABLE,下面的程序段在LED显示器上显示16进制数中的一位数字(程序中为5)PORT_A EQU F0H;A口地址 COUNT EQU 05H;要显示的数字;16进制数字的七段代码表DATA SEGMENT;0 1 2 3 4 5 6 7 TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H 8 9 A b C d E F DB 00H,18H,08H,03H,46H,21H,06H,0EHDATA ENSA;16进制数字到七段代码的转换程序CODE SEGMENT DISPY:MOV BX,OFFSET TABLE;

22、七段代码表首;地址LEA AL,COUNTBX;取5位的偏移量XLAT;将被转换的七段代码 AL寄存器MOV DX,PORT_AOUT DX,AL;将七段代码段从A口输出,点亮响应;数字 CODE ENDS END 2)显示多个数字15013 12 11 10 9 15 14ab d e f g c7 1 2 6VCCGNDLTRBORBID C B A7447+5V+5V168 543+5VPA0PA1PA2PA3PA4PA5PA6输出端口A8255AR1 R2 R3 R4 R5 R6R7Q1Q2Q3 Q4 Q5 Q6 Q7NCNCNCDP9 3 14MSDPB0PB1PB2PB3输出端口B

23、8255ALSD共阳极LED:DL707R1-7:1KQ1-7:2N39061131087211150动态显示七位显示位在主程序中:初始化A口:方式0输出B口:方式0输出 主 程 序 CALL DISPA口:PORTA(1字节)B口:PORTB(1字节)显示存储单元 M1 M2 M3 内容为BCD码 M4 M5 M6 M7 个 十 百 千 万 十万 百万显示主程序 DISP:PUSH AX PUSH BX PUSH DX MOV DL,11111110B;指向个位 MOV AL,FFH OUT PORTA,AL 关显示 MOV BX,M;显示首地址BXLOOPA:MOV AL,BX OUT PORTB,AL;送显示内容 MOV AL,DL OUT PORTA,AL;送位控字 ROL DL;显示位左移一位 CALL 延时100ms MOV AL,0FFH OUT PORTA,AL;关显示 CALL 延时2ms INC BX;指针修改 CMP BX,M8;显示完?JNE LOOPA;未完,转!POP DX POP BX POP AX RET 四、8255A在PC/XT机中的应用(自学)五、PC/XT机中的扬声器接口电路(自学)六、并行打印机接口(自学)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com