380 likes | 488 Views
《 单片机原理与应用 》. 第七章 I/O 扩展. I/O 口的直接应用. 例:如图所示电路中请编程实现将开关的开闭状态显示在四个 LED 上,即 K0 闭合, LED0 亮; K1 闭合, LED1 亮 … 分析: K0 闭合,则读到: P1.0=0 ; LED0 亮,则需使 P1.4=0 P1.0 P1.4 P1.0~P1.3 P1.4~P1.7. I/O 口的直接应用. 例:如图所示电路中请编程实现将开关的开闭状态显示在四个 LED 上, 即 K0 闭合, LED0 亮; K1 闭合, LED1 亮 ….
E N D
《单片机原理与应用》 第七章 I/O扩展
I/O口的直接应用 • 例:如图所示电路中请编程实现将开关的开闭状态显示在四个LED上,即K0闭合,LED0亮; K1闭合,LED1亮… 分析:K0闭合,则读到:P1.0=0;LED0亮,则需使P1.4=0 • P1.0 P1.4 • P1.0~P1.3 P1.4~P1.7 yjia@zjip.com
I/O口的直接应用 • 例:如图所示电路中请编程实现将开关的开闭状态显示在四个LED上, 即K0闭合,LED0亮; K1闭合,LED1亮… • MOV A,P1 • SWAP A • MOV P1,A yjia@zjip.com
I/O口的直接应用 • 单片机I/O口的直接应用,可以使用下面指令: • MOV A,P1 或 MOV P1 ,A • MOV C,P1.0 或 MOV P1.0 ,C • MOV P1,#data • MOV P1,direct 或 MOV direct ,P1 • MOV R0,P1 或 MOV P1 ,R0 yjia@zjip.com
§7.1 I/O扩展概述 • 一、为什么要扩展I/O口 1、单片机本身I/O口有限(回忆四并行口分工) • 2、外部设备的不同 • 速度差异大 • 外设种类多 机械式、机电式、电子式 • 数据形式多样 串行、并行数据 模拟量、数字量数据 电压信号、电流信号 yjia@zjip.com
§7.1 I/O扩展概述 • 一、为什么要扩展I/O口 1、单片机本身I/O口有限 2、外部设备的不同 • 3、扩展I/O口的功能 • 速度协调 • 输出数据的锁存 • 输入数据的三态缓冲 • 数据转换 P169 yjia@zjip.com
§7.1 I/O扩展概述 • 二、I/O扩展相关技术 1、接口与端口的概念 • 接口:inteface,有“界面,相互联系”含义, 如接口板,接口电路等 • (端)口:port,接口电路中可读写的寄存器,常见的有数据口,命令口、状态口,一个接口电路含有多个可读写的端口,即有多个口地址。 yjia@zjip.com
§7.1 I/O扩展概述 • 二、I/O扩展相关技术 2、总线隔离技术: • 目的:任何时刻只有一个源和一个负载之间的数据传输。 • 对于输出设备的接口电路,要提供锁存器 • 对于输入设备的接口电路,要提供三态门 yjia@zjip.com
§7.1 I/O扩展概述 • 二、I/O扩展相关技术 3、I/O编址技术:在计算机系统中,有两类需编址的子系统:I/O、存储器 • 独立编址:I/O与存储器分开编址,用不同的指令分别访问I/O和存储器的地址空间,如X86 • 统一编址: I/O与存储器合在一起编址, I/O地址空间+存储器地址空间=总空间 优点:不需要设专门的I/O指令。 • MCS-51单片机采用统一编址方式 I/O地址空间+存储器地址空间=总空间64KB 访问I/O和存储器都使用 MOVX 指令 yjia@zjip.com
§7.1 I/O扩展概述 四、I/O口的控制方式 1、无条件传送方式 • 适用于随时处于准备好、工作速度非常快的外部设备, • 如:开关、LED发光管、数码管、存储器、ADC、DAC等 • 使用指令:MOV P1,#DATA MOV A,P1 yjia@zjip.com
§7.1 I/O扩展概述 二、I/O口的控制方式 1、无条件传送方式 2、有条件传送方式 也称为查询方式 即外设准备好时数据传送 yjia@zjip.com
§7.1 I/O扩展概述 二、I/O口的控制方式 3、中断方式 yjia@zjip.com
§7.1 I/O扩展概述 二、I/O口的控制方式 1、无条件传送方式 2、有条件传送方式(查询方式) 3、中断方式 • 4、DMA方式(单片机无该方式) yjia@zjip.com
§7.2 简单I/O扩展 一、简单输入接口的扩展 1、74LS244介绍 74LS244是2个四位的三态缓冲器 当/1G=/2G=0时,Y=A 即:1Y1=1A1,1Y2=1A2 1Y3=1A3,1Y4=1A4 … 2Y1=2A1 …2Y4=2A4 yjia@zjip.com
一、简单输入接口的扩展2、使用74LS244进行输入接口的扩展硬件连接图一、简单输入接口的扩展2、使用74LS244进行输入接口的扩展硬件连接图 地址: P2:0XXX,XXXX;P0:XXXX,XXXX 即7FFFH yjia@zjip.com
一、简单输入接口的扩展2、使用74LS244进行输入接口的扩展一、简单输入接口的扩展2、使用74LS244进行输入接口的扩展 • 读输入设备的程序控制方法: MOV DPTR,#7FFFH MOVX A,@DPTR yjia@zjip.com
§7.2 简单I/O扩展 一、简单输入接口的扩展 3、使用两片74LS244进行多输入接口的扩展 硬件连接图: • 地址: 1#:7FFFH 2#:BFFFH • 读入A、B和C、D输入设备的状态,分别放入R4、R5中。 yjia@zjip.com
§7.2 简单I/O扩展 一、简单输入接口的扩展 二、简单输出接口的扩展 1、74LS377介绍 当G=0,CLK↑时,Q=D 即:Q0=D0,Q1=D1… Q7=D7 P78表7-2 yjia@zjip.com
§7.2 简单I/O扩展 • 一、简单输出接口的扩展 2、使用74LS377进行输出接口的扩展 下图中,若地址译码信号为P2.6,则 地址:P2:X0XX,XXXX;P0:XXXX,XXXX 即BFFFH yjia@zjip.com
§7.2 简单I/O扩展 • 一、简单输出接口的扩展 • 将数据#DATA传向输出设备的程序控制方法: MOV DPTR,#0BFFFH MOV A,#DATA MOVX @DPTR,A yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 一、8155介绍 1、功能 • 内有静态RAM256字节 • 3个可编程的I/O口 PA口(8位) PB口(8位) PC口(6位)共22位口线 • 14位减法计数结构计数器 • 内有地址锁存器 另外:8155和81C55 8155和8156 yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 一、8155介绍 2、引脚(P143~144) Vss、Vcc:电源、地 I/O口线: PA0~7、PB0~7、PC0~5 AD0~7、ALE 片选/CE /RD、/WR Time In、Time Out IO/M RESET yjia@zjip.com
AD7~AD0 A7 A6 A5 A4 A3 A2 A1 A0 选中的寄存器 ×× × × × 0 0 0 × × × × × 0 0 1 × × × × × 0 1 0 × × × × × 0 1 1 × × × × × 1 0 0 × × × × × 1 0 1 命令/状态寄存器 A口(PA0~PA7) B口(PB0~PB7) C口(PC0~PC5) 定时器/计数器低8位寄存器 定时器/计数器高6位寄存器及输出波形方式 §7. 3 8155可编程并行I/O扩展 一、8155介绍 3、RAM和I/O的编址 • 256字节的RAM由AD0~AD7编址,00H~FFH • I/O由AD0~AD2编址 yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 二、8155与8051单片机的连接 8051 8155 • 数据总线:P0 AD0~AD7 • 地址总线:P0 AD0~AD7 • 控制总线:ALE ALE /RD /RD /WR /WR 高位不用的地址线IO/M yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 二、8155与8051单片机的连接 如图连接后8155的 RAM、I/O的地址 • RAM:0000H~00FFH • 命令/状态口:0100H • A口:0101H • B口:0102H • C口:0103H • T/C低8位:0104H • T/C高6位:0105H yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 三、8155RAM的使用 如图连接后:如何对RAM的读写操作 例:编程实现将8155的256个RAM清0 yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 四、8155I/O口的使用 1、 8155 I/O口初始化:命令字写入命令寄存器 命令字格式: • C口方式 • ALT1:输入 • ALT4:输出 • ALT2: A口控制方式 • ALT3: A、B口控制方式 P185 yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 四、 8155I/O口的使用 • 2、应用举例:如图连接后,编程实现初始化8155的PA、PB口为输出口,PC口为输入口 命令字: XXXX,0011,即03H 初始化程序: MOV A,#03H MOV DPTR,#0100H MOVX @DPTR,A yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 四、8155I/O口的使用 3、 8155的状态口:读状态寄存器得状态字 状态字格式格式: yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 五、8155定时器/计数器的使用 1、 8155的定时器/计数器特点: • 14位的减法计数结构, 计数长度:1~16384 • 8155计数器与8051计数器的区别 yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 五、8155定时器/计数器的使用 2、 8155的定时器/计数器的计数结构: 输出方式 14位计数器 3、定时器输出方式:(Time Out 引脚的输出,P190) M2M1=00:单个方波 M2M1=01:连续方波 M2M1=10:单个脉冲 M2M1=11:连续脉冲 yjia@zjip.com
§7. 3 8155可编程并行I/O扩展 • 五、8155定时器/计数器的使用 • 5、应用举例:使用8155T/C对计数脉冲进行千分频,并使Time Out 引脚产生连续方波信号,若设定PA、PC为输入口,PB口输出口,并禁止中断,编写初始化程序。命令口、计数器低8位和高6位的地址分别为FD00H、 FD04H、 FD05H yjia@zjip.com
五、8155定时器/计数器的使用 • 5、应用举例:使用8155T/C对计数脉冲进行千分频,并使Time Out 引脚产生连续方波信号,若设定PA、PC为输入口,PB口输出口,并禁止中断,编写初始化程序。(8155的命令口、计数器低8位和高6位的地址分别为FD00H、 FD04H、 FD05H)。 8155命令字: 1 1 0 0 0 0 1 0 即C2H yjia@zjip.com
五、8155定时器/计数器的使用 • 5、应用举例:使用8155T/C对计数脉冲进行千分频,并使Time Out 引脚产生连续方波信号,若设定PA、PC为输入口,PB口输出口,并禁止中断,编写初始化程序。(8155的命令口、计数器低8位和高6位的地址分别为FD00H、 FD04H、 FD05H)。 M2M1=00:单个方波 M2M1=01:连续方波 M2M1=10:单个脉冲 M2M1=11:连续脉冲 计数器低8位寄存器:43H 计数器高6位寄存器:E8H yjia@zjip.com
初始化程序: MOV DPTR,# 0FD00H MOV A,#0C2H MOVX @DPTR,A MOV DPTR,# 0FD04H MOV A,#0E8H MOVX @DPTR,A MOV DPTR,# 0FD05H MOV A,#43H MOVX @DPTR,A 五、8155定时器/计数器的使用 • 5、应用举例:使用8155T/C对计数脉冲进行千分频,并使Time Out 引脚产生连续方波信号,若设定PA、PC为输入口,PB口输出口,并禁止中断,编写初始化程序。命令口、计数器低8位和高6位的地址分别为FD00H、 FD04H、 FD05H yjia@zjip.com
8155应用1——键盘接口 • 如图所示以8155作4×8键盘接口,A口为输出口,接键盘列线;C口为输入口,接键盘行线。8155说明各端口地址,编写初始化程序 • 8155各口地址 命令口:0100H A口:0101H C口:0103H • 命令字: 03H 初始化程序: MOV DPTR,#0100H MOV A,#01H MOVX @DPTR,A yjia@zjip.com
8155应用2——显示器接口 • 使用8155构成的共阳极LED 接口电路,A口为输出口,C口为输出口。8155说明各端口地址,编写初始化程序 • 地址:命令口—0100H;A口—0101H;C口—0102H • 命令字:0DH yjia@zjip.com