570 likes | 686 Views
第七章 单片机 I/O 口扩展及应用. 7.1 I/O 口扩展概述 7.1.1 I/O 口扩展的原因 MCS-51 系列单片机共有四个并行 I/O 口,分别是 P 0 、 P 1 、 P 2 和 P 3 。其中 P 0 口一般作地址线的低八位和数据线使用; P 2 口作地址线的高八位使用; P 3 是一个双功能口,其第二功能是一些很重要的控制信号,所以 P 3 一般使用其第二功能。这样供用户使用的 I/O 口就只剩下 P 1 口了。另外,这些 I/O 口没有状态寄存和命令寄存的功能,因此难以满足复杂的 I/O 操作要求。. 7.1.2 I/O 口的编址技术
E N D
第七章 单片机I/O口扩展及应用
7.1 I/O口扩展概述 7.1.1 I/O口扩展的原因 MCS-51系列单片机共有四个并行I/O口,分别是P0、P1、P2和P3。其中P0口一般作地址线的低八位和数据线使用;P2口作地址线的高八位使用;P3是一个双功能口,其第二功能是一些很重要的控制信号,所以P3一般使用其第二功能。这样供用户使用的I/O口就只剩下P1口了。另外,这些I/O口没有状态寄存和命令寄存的功能,因此难以满足复杂的I/O操作要求。
7.1.2 I/O口的编址技术 用户可以通过对I/O口进行读和写操作来完成数据的输入和输出。 例如:P0口的地址为80H。用户可以使用MOV指令对P0口进行写操作。 MOV P0,A 7.1.3 单片机I/O传送的方式 1. 无条件传送方式
2. 查询方式 3. 中断方式 中断方式大大提高了单片机系统的工作效率,所以在单片机中被广泛应用。 7.2 简单I/O口扩展 7.2.1 简单输入口扩展 1. 两个输入口扩展 简单输入口扩展使用的集成芯片,比较典型的如74LS244缓冲驱动芯片。图7.1为74LS244芯片的引脚。
80C31 P2.7 • 图7.1 74LS244芯片的引脚 图7.2 74LS244扩展两个输入口 • 多输入口扩展 • 使用多片74LS244实现多个(例如5个)输入口扩展的电路连接如图7.3。
图7.3 多个(例如5个)输入口扩展的电路 7.2.2 简单输出口扩展 1. 简单输出口扩展使用的典型芯片 简单输出口扩展通常使用74LS377芯片,该芯片是一个具有“使能”控制端的锁存器。其信号引脚如图7.4所示。其中:1D~8D为8位数据输入线,1Q~8Q为8位数据输出线,CK为时钟信号上升沿数据锁存,为使能控制信号,低电平有效。VCC为+5V电源。74LS377的逻辑电路如图7.5所示。
图7.4 74LS377引脚图 图7.5 74LS377的逻辑电路 由逻辑电路可知,74LS377是由D触发器组成的,D触发器在上升沿输入数据,即在时钟信号(CK)由低电平跳变为高电平时,数据进入锁存器。其功能表如表7-1所示。
表7-1 74LS377功能表 输出口扩展连接: 扩展单输出口只需要一片74LS377,其连接电路如图7.6所示。 图7.6 74LS377作输出口扩展
7.3 8255可编程通用并行接口芯片 7.3.1 8255的外部引脚和内部结构 1. 外部引脚 8255的外部引脚如图7.7所示,其中: :A口的输入输出信号线。该口是输入还是输出或双向,由软件决定。 :B口的输入输出信号线。该口是输入还是输出,由软件决定。 :C口信号线。该口可作输入、输出、控制和状态线使用,由软件决定。 :双向数据信号线,用来传送数据和控制字。 :读信号线。 :写信号线。
图7.7 PA3 PA3 PA4 PA2 PA1 PA7 PA0 RESET GND D0 A1 A0 PC7 D7 PC4 Vcc PC0 PB7 PC3 PB0 PB3 PB3
端口 0 0 A口 0 1 B口 1 0 C口 1 1 控制寄存器 :片选信号线,低电平(有效)时, 才选中该芯片,才能对8255进行操作。 RESET:复位输入信号,高电平有效时,复位8255。复位后8255的A口、B口和C口均被定为输入。 :口地址选择信号线。8255内部共有三个口,A口、B口、C口和一个控制寄存器供用户编程。的不同编码可分别选择上述三个口和一个控制寄存器。地址编码如表7-2所示。 表7-2 地址编码
0 1 0 0 1 C口 所选断口 操作 读C口 0 0 0 0 1 0 0 1 1 0 A口 C口 读A口 写C口 0 0 0 0 1 1 1 1 0 0 控制寄存器 A口 写控制寄存器 写A口 1 0 × × 0 1 × 0 1 × ∕ B口 高阻状态 读B口 0 0 1 1 0 B口 写B口 由 、 、 和可以确定A口、B口、C口和控制寄存器的,如表7-3所示。 表7-3 读写逻辑
2. 内部结构 8255的内部结构框图如图7.8所示。从图可以看到,左边的信号与系统总线相连。而右边是与外设相连接的三个口。三个口均为8位。其中A口输出有锁存能力,输入亦有锁存能力。B口输入输出均有锁存能力。C口输出有锁存能力,输入没有锁存能力,在使用上要注意到这一点。
图7.8 8255的内部结构框图 为了控制方便,将8255的三个口分成A,B两组。其中A组包括A口的8条口线和C口的高四位 。B组包括B口的8条口线和C口的低四位 。A组和B组分别由软件编程来加以控制。
7.3.2 8255的扩展逻辑电路 MCS-51单片机可以和8255直接连接,图7.9给出了一种扩展电路。 图7.9 8255的扩展逻辑电路
7.3.3 8255的工作方式 8255共有三种工作方式,这些工作方式可用软件编程来指定。 1. 工作方式0,又称基本输入输出方式 2. 工作方式1,又称选通输入输出方式 在这种方式下,A口和B口仍作为数据的输出或输入口而同时要利用C口的某些位作为控制和状态信号,从而实现这种工作方式。 (1)方式1下,A口和B口均为输出 各条控制引线的定义如图7.10所示。 各控制信号的含义如下:
: 输出缓冲器满信号,低电平有效。用来告诉外设,在规定的接口上CPU已输出一个有效的数据,外设可以从该口取走此数据。 :外设响应信号,低电平有效。用来通知接口外设已经将数据接收,并使 。 INTR:中断请求信号,高电平有效。当外设已从接口取走数据,口的缓冲器变空,且接口允许中断时,INTR有效。即, 且允许中断,则INTR=1。
(2)方式1下,A口和B口均为输入 这种情况和两口均为输出类似,各条控制引线的定义如图7.11所示。 图7.10 A口和B口作输出口时, C口提供的控制引线 图7.11 A口和B口作输入口时, C口提供的控制引线
各控制信号的含义如下: :输入选通信号,低电平有效。它由外设提供,利用该信号可以将外设数据锁存于8255的口锁存器中。 IBF:输入缓冲器满信号,高电平有效。当它有效时,表示已有一个有效的外设数据锁存于8255的口锁存器中。可用此信号通知外设数据已锁存于接口中,尚未被CPU读走,暂不能向接口输入数据。 INTR:中断请求信号,高电平有效。当外设将数据锁存于接口之中,且又允许中断请求发生时,就会产生中断请求。 2. 工作方式2,又称双向输入输出方式I/O操作 只有A口才能工作在方式2。A口工作方式2时要利用C口的5条线才能实现。此时,B口只能工作在方式0或者方式1下,而C口剩余的3条线可作为输入线、输出线或B口方式1之下的控制线。C口提供的控制线如图7.12所示。
图7.12 工作方式2时,C口提供的控制线 7.3.4 8255的控制字及初始化程序 8255是编程接口芯片,通过控制字(控制寄存器)对其端口的工作方式和C口各位的状态进行设置。8255共有两个控制字,一个是工作方式控制字,另一个是C口置位/复位控制字。这两个控制字共用一个地址,通过最高位来选择使用那个控制字。 1. 工作方式控制字 主要功能:确定8255接口的工作方式及数据的传送方向。 各位的控制功能如图7.13所示。
对工作方式控制字作如下说明: lA口可工作在方式0、方式1和方式2,B口可工作在方式0和方式1 l在方式1或方式2下,对C口的定义(输入或输出)不影响作为控制信号使用的C口各位功能 l最高位是标志位,作为方式控制字使用时,其值固定为1。 2. 置位/复位控制字 在某些情况下,C口用来定义控制信号和状态信号,因此C口的每一位都可以 进行置位或复位。对C口的置位或复位是由置位/复位控制字进行的。各位的功能如图7.14所示。其中,最高位必须固定为“0”。
1 0 图7.14 8255置位/复位控制字
3. 8255初始化 8255初始化就是向控制寄存器写入工作方式控制字和C口置位/复位控制字。例如,对8255各口作如下设置:A口方式0输入,B口方式1输出,C口高位部分为输出,低位部分为输入。设8255的扩展电路如图7.8所示,则控制寄存器的地址为7FFFH。按各口的设置要求,工作方式控制字为10010101,即95H。所以初始化程序应为: MOV DPTR, #7FFFH MOV A, #95H MOVX @DPTR, A 7.3.5 8255的应用举例 1. 光二极管显示器的工作原理 LED显示器中的发光二极管共有两种连接方法,一种是共阴极连接,另一种共阳极连接。其连接图如图7.15(b)所示。
图7.15 七段LED显示器 使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。用LED显示器显示16进制数的编码已列在表7-4所示。
表7-4 LED显示器16进制数编码 为了实现LED显示器的动态扫描除了要给显示器提供段码(字形编码)的输入之外,还要对显示器加位的控制(控制LED显示器亮灭),这就是通常所说的位控和段控。
2. 应用举例 具体要求: l6个LED采用共阴极连接 l79H~7EH分别存放6位显示器的显示数据(0~9) l8255的A口接LED显示器位控 l8255的B口接LED显示器段控 (1)电路设计
MOV DPTR,#7FFFH MOV R0, #79H MOV A,#80H MOVX @DPTR, A ;写控制字 MOV R3, #0FEH MOV A, R3 LD: MOV DPTR, #7FFCH MOVX @DPTR, A ;最左边灯亮 INC DPTR ;指向B口 MOV A, @R0 ;取显示数据 ADD A, #13H MOVC A, @A+PC ;查数据编码 MOVX @DPTR, A ;写B口 ACALL DELAY ;延时 INC R0 经分析知:8255的A口、B口、C口、控制寄存器的地址分别为7FFCH、7FFDH、7FFEH、7FFFH。 (1)编写程序
MOV A, R3 JNB ACC.5, ED RL A MOV R3, A AJMP LD LEDTAB: DB 3FH DB 06H DB 5BH DB 4FH DB 66H DB 6DH DB 7DH DB 07H DB 7FH DELAY: MOV R7, #02H MOV R6, #FFH LOOP: DJNZ R6, LOOP DJNZ R7, DELAY
7.4 8155可编程通用并行接口芯片 7.4.1 8155的外部引脚及内部逻辑结构 1. 外部引脚 8155芯片为40引脚双列直插封装,单一的+5V电源,其引脚排列如图7.16所示。其中: : A口的输入输出信号线。该口作输入还是输出,由软件决定。 : B口的输入输出信号线。该口作输入还是输出,由软件决定。 :C口信号线。该口可作输入、输出口外,还可以传送控制和状态信号,因此C口共有四种工作方式,即:输入方式(ALT1),输出方式(ALT2),A口控制端口方式(ALT3)以及A口和B口控制端口方式(ALT4)。其工作方式由软件决定。
:地址数据复用线。 :片选信号。低电平有效。 :IO和RAM的选择信号。 =0,选中RAM; =1,选中IO口。 :地址锁存信号。除了进行 的地址锁存控制外还用于把片选信号 和 等信号进行锁存。 :读选通信号。 :写选通信号。 RESET:复位信号。复位后A口、B口和C口均为数据输入方式。
TIMERIN:定时器/计数器的计数脉冲输入端。 TIMEROT:定时器/计数器。 2. 内部逻辑结构 8155的内部逻辑结构如图7.17所示。由图可以看出,8155由三部分组成,即:存储单元为256字节的静态RAM;3个可编程的I/O,其中2个口(A口和B口)为8位口,1个口(C口)为6位口;1个14位的定时器/计数器
图7.17 8155的内部逻辑结构 由以上可知8155有A口、B口、C口和定时器/计数器低8位以及定时器/计数器高8位五个端口,另外8155内部还有一个命令/状态寄存器,所以8155内部共有6各端口。对它们只需要使用即可实现编址,如表7-5所示。
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 对应端口 × × × × × 0 0 0 命令/状态寄存器 × × × × × 0 0 1 A口 × × × × × 0 1 0 B口 × × × × × 0 1 1 C口 × × × × × 1 0 0 定时器/计数器低8位 × × × × × 1 0 1 定时器/计数器高8位 表7-5 8155的端口地址编码
7.4.2 8155的命令/状态字 1. 8155的命令字 由以上内容可知,8155的A口有输入和输出两种工作方式,B口也有输入和输出两种工作方式,而C口有输入方式(ALT1),输出方式(ALT2),A口控制端口方式(ALT3)以及A口 和B口控制端口方式(ALT4)四种工作方式。这些端口的工作方式是由8155内部的命令寄存器(命令字)来控制的。命令字除了规定端口的工作方式还规定了定时器/计数器的工作方式。命令字只能进行写操作。其格式如图7.18所示。
图7.18 8155的命令字 当A口或者B口以中断方式进行数据传送时,所需要的联络信号由C口提供,其中为A口提供,为B口提供。各联络信号的定义如表7-6所示。
联络信号共有三个,其中: INTR:中断请求信号(输出),高电平有效。送给MCS-51单片机的外中断请求 BF :缓冲器满状态信号(输出),高电平有效。 :选通信号(输入),低电平有效。数据输入时, 是外设送来的选通信号;数据输出时, 是外设送来的应答信号。 以中断方式进行数据输入输出时,其过程和8255基本相同,在此不作赘述。 2. 8155的状态字 状态字只能读不能写,所以8155的命令字和状态字共用一个地址。当对命令/状态字进行写操作时,写进去的是命令,当对命令/状态字进行读操作时,读出来的是状态。状态字用于寄存各端口及定时器/计数器的工作状态。其格式如图7.19所示。
图7.19 8155的状态字 7.4.3 8155的扩展逻辑电路 8155与MCS-51单片机的连接比较简单,因为8155的许多信号与MCS-51单片机兼容,可以直接连接。表7-7列出了这些信号的对应关系。
8155 MCS-51单片机 8155 MCS-51单片机 口 ALE ALE RESET RST 表7-7 8155与MCS-51单片机兼容的信号 这种方法实际就是编址技术中的线选法。例如以 接 ,则8155与8051的连接如图7.20所示。 这种 信号产生方法中,对8155需要使用16位地址进行编址。这种方法适应于有多片I/O扩展及存储器扩展的较大单片机系统中,因此要使用片选信号。例如图中使用 作为片选信号与直接相连。
图7.20 高位地址直接作为信号 假设没有用到的地址位其值为系统复位后的值,即为1。则 时,端口地址范围为:0FDF8H~0FDFDH; 时,8155内部RAM地址范围是:0FC00H~0FCFFH。 7.4.48155的定时器/计数器 1. 8155定时器/计数器的计数结构
8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成,如图7.21所示。以其中的低14位组成计数器,剩下的两个高位( , )用于定义计数器输出的信号形式。 图7.21 8155定时器/计数器的计数结构 2. 定时器/数器的使用 ①8155的定时器/计数器是减法计数,而MCS-51单片机的定时器/计数器却是加法计数,因此确定计数初值的方法是不同的。
② MCS-51单片机的定时器/计数器有多种工作方式,而8155的定时器/计数器只有一种固定的工作方式,即14位计数。通过软件方法进行计数初加载。 ③MCS-51单片机的定时器计数器有两种计数脉冲。定时功能时,以机器周期为计数脉冲;计数功能时,从芯片外部引入计数脉冲。但8155的定时器/计数器,不论是定时功能还是计数功能都是由外部提供计数脉冲,其信号引脚是TIMERIN。 ④ MCS-51单片机的定时器/计数器,计数溢出时,自动置位TCON寄存器的计数溢出标志位(TF),供用户查询或中断方式使用;但8155的定时器/计数器,计数溢出时向芯片外部输出一个信号(TIMEROUT)。而且这一信号还有脉冲和方波两种形式,可由用户进行选择。具体由 , 两位定义:
=00 单个方波 =01 连续方波 =10 单个脉冲 =11 连续脉冲 这四种输出形式如图7.22所示。 图7.22 8155信号输出形式
3. 定时器/计数器的控制 8155定时器/计数器的工作方式由命令字中的最高两位进行控制(见图7.18)。具体说明如下: D7D6=00 不影响计数器工作。 D7D6=01 停止计数。如计数器未启动则无操作,如计数器正运行则停止计数。 D7D6=10 达到计数值(计数器减为0)后停止。 D7D6=11 启动,如果计数器没运行,则在装入计数值后开始计数;如果计数器已运行,则在当前计数值计满后,再以新的计数值进行计数。
7.4.5 8155的初始化 要求使用8155定时器/计数器对计数脉冲进行千分频,即计数1000后,TIAMEROUT端电平状态发生变化,并重新置数以产生连续方波。此外假定A口为输出方式,允许中断;B口为输入方式,不允许中断;C口为对A口控制方式(ALT3)。请编写初始化程序。 解:要求输出连续方波,所以定时器/计数器的最高两位M2 M1=01。计数器的其它14位装入计数初值。8155为减法计数,所以计数初值为1000,化为16进制数为03E8H。则定时器/计数器的高8位为:43H,低8位为:0E8H。 命令名字的设置如下:
计数器 MOV DPTR, #0FDF8H B口 A口 ;命令/状态寄存器地址 C口 B口 A口 装入后启动 不允许中断 允许中断 ALT3 输入 输出 MOV A, #0D9H ;命令字 1 1 0 1 1 0 0 1 MOVX @DPTR, A ;装入命令字 MOV DPTR, #0FDFEH ;计数器低8位地址 MOV A, #0E8H ;低8位计数值 MOVX @DPTR, A ;写入计数值低8位 INC DPTR ;计数器高8位地址 MOV A, #43H ;高8位计数值 MOVX @DPTR, A ;写入计数值高8位 因此,命令字的内容为0D9H。假定命令/状态寄存器的地址为0FDF8H。则初始化程序为:
7.4.6 8155的应用举例 8155有很强的功能,在此以8155作单片机键盘接口为例进行说明。在讲此例之前首先说明单片机的键盘接口和键功能的实现。 1. 单片机的键盘接口处理 单片机的键盘接口处理的内容包括以下几个方面: 键扫描 图7.23 键扫描示意图
去抖动 图7.24 键闭合和断开时的电压抖动 键码计算 例如图7.25所示的键号是按从左到右、从上向下的顺序编排的。 图7.25 键码图
这样安排,使键码既可根据行号列号以查表求得,也可通过计算得到。图7.25所示的键码编排规律,各行首号依次是00H、08H、10H、18H,如列号按0~7顺序,则键码的计算公式为:这样安排,使键码既可根据行号列号以查表求得,也可通过计算得到。图7.25所示的键码编排规律,各行首号依次是00H、08H、10H、18H,如列号按0~7顺序,则键码的计算公式为: 等待键释放 计算键码后,再以延时后进行行扫描的方法等待键释放。等待释放是为了保证键的一次闭合仅进行一次处理。 2.键盘接口的控制方式 在单片机的运行过程中,何时执行键盘扫描和处理,可有下列三种情况: l随机方式,每当CPU空闲时执行键盘扫描程序 l中断方式,每当有键闭合时才向CPU发出中断请求中断响应后执行键盘扫描程序 l 定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机的定时器完成。