1 / 57

第七章 单片机 I/O 口扩展及应用

第七章 单片机 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 口的编址技术

clarke
Download Presentation

第七章 单片机 I/O 口扩展及应用

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. 第七章 单片机I/O口扩展及应用

  2. 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操作要求。

  3. 7.1.2 I/O口的编址技术 用户可以通过对I/O口进行读和写操作来完成数据的输入和输出。 例如:P0口的地址为80H。用户可以使用MOV指令对P0口进行写操作。 MOV P0,A 7.1.3 单片机I/O传送的方式 1. 无条件传送方式

  4. 2. 查询方式 3. 中断方式 中断方式大大提高了单片机系统的工作效率,所以在单片机中被广泛应用。 7.2 简单I/O口扩展 7.2.1 简单输入口扩展 1. 两个输入口扩展 简单输入口扩展使用的集成芯片,比较典型的如74LS244缓冲驱动芯片。图7.1为74LS244芯片的引脚。

  5. 80C31 P2.7 • 图7.1 74LS244芯片的引脚 图7.2 74LS244扩展两个输入口 • 多输入口扩展 • 使用多片74LS244实现多个(例如5个)输入口扩展的电路连接如图7.3。

  6. 图7.3 多个(例如5个)输入口扩展的电路 7.2.2 简单输出口扩展 1. 简单输出口扩展使用的典型芯片 简单输出口扩展通常使用74LS377芯片,该芯片是一个具有“使能”控制端的锁存器。其信号引脚如图7.4所示。其中:1D~8D为8位数据输入线,1Q~8Q为8位数据输出线,CK为时钟信号上升沿数据锁存,为使能控制信号,低电平有效。VCC为+5V电源。74LS377的逻辑电路如图7.5所示。

  7. 图7.4 74LS377引脚图 图7.5 74LS377的逻辑电路 由逻辑电路可知,74LS377是由D触发器组成的,D触发器在上升沿输入数据,即在时钟信号(CK)由低电平跳变为高电平时,数据进入锁存器。其功能表如表7-1所示。

  8. 表7-1 74LS377功能表 输出口扩展连接: 扩展单输出口只需要一片74LS377,其连接电路如图7.6所示。 图7.6 74LS377作输出口扩展

  9. 7.3 8255可编程通用并行接口芯片 7.3.1 8255的外部引脚和内部结构 1. 外部引脚 8255的外部引脚如图7.7所示,其中: :A口的输入输出信号线。该口是输入还是输出或双向,由软件决定。 :B口的输入输出信号线。该口是输入还是输出,由软件决定。 :C口信号线。该口可作输入、输出、控制和状态线使用,由软件决定。 :双向数据信号线,用来传送数据和控制字。 :读信号线。 :写信号线。

  10. 图7.7 PA3 PA3 PA4 PA2 PA1 PA7 PA0 RESET GND D0 A1 A0 PC7 D7 PC4 Vcc PC0 PB7 PC3 PB0 PB3 PB3

  11. 端口 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 地址编码

  12. 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 读写逻辑

  13. 2. 内部结构 8255的内部结构框图如图7.8所示。从图可以看到,左边的信号与系统总线相连。而右边是与外设相连接的三个口。三个口均为8位。其中A口输出有锁存能力,输入亦有锁存能力。B口输入输出均有锁存能力。C口输出有锁存能力,输入没有锁存能力,在使用上要注意到这一点。

  14. 图7.8 8255的内部结构框图 为了控制方便,将8255的三个口分成A,B两组。其中A组包括A口的8条口线和C口的高四位 。B组包括B口的8条口线和C口的低四位 。A组和B组分别由软件编程来加以控制。

  15. 7.3.2 8255的扩展逻辑电路 MCS-51单片机可以和8255直接连接,图7.9给出了一种扩展电路。 图7.9 8255的扩展逻辑电路

  16. 7.3.3 8255的工作方式 8255共有三种工作方式,这些工作方式可用软件编程来指定。 1. 工作方式0,又称基本输入输出方式 2. 工作方式1,又称选通输入输出方式 在这种方式下,A口和B口仍作为数据的输出或输入口而同时要利用C口的某些位作为控制和状态信号,从而实现这种工作方式。 (1)方式1下,A口和B口均为输出 各条控制引线的定义如图7.10所示。 各控制信号的含义如下:

  17. : 输出缓冲器满信号,低电平有效。用来告诉外设,在规定的接口上CPU已输出一个有效的数据,外设可以从该口取走此数据。 :外设响应信号,低电平有效。用来通知接口外设已经将数据接收,并使 。 INTR:中断请求信号,高电平有效。当外设已从接口取走数据,口的缓冲器变空,且接口允许中断时,INTR有效。即, 且允许中断,则INTR=1。

  18. (2)方式1下,A口和B口均为输入 这种情况和两口均为输出类似,各条控制引线的定义如图7.11所示。 图7.10 A口和B口作输出口时, C口提供的控制引线 图7.11 A口和B口作输入口时, C口提供的控制引线

  19. 各控制信号的含义如下: :输入选通信号,低电平有效。它由外设提供,利用该信号可以将外设数据锁存于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所示。

  20. 图7.12 工作方式2时,C口提供的控制线 7.3.4 8255的控制字及初始化程序 8255是编程接口芯片,通过控制字(控制寄存器)对其端口的工作方式和C口各位的状态进行设置。8255共有两个控制字,一个是工作方式控制字,另一个是C口置位/复位控制字。这两个控制字共用一个地址,通过最高位来选择使用那个控制字。 1. 工作方式控制字 主要功能:确定8255接口的工作方式及数据的传送方向。 各位的控制功能如图7.13所示。

  21. 图7.13 8255工作方式控制字

  22. 对工作方式控制字作如下说明: lA口可工作在方式0、方式1和方式2,B口可工作在方式0和方式1 l在方式1或方式2下,对C口的定义(输入或输出)不影响作为控制信号使用的C口各位功能 l最高位是标志位,作为方式控制字使用时,其值固定为1。 2. 置位/复位控制字 在某些情况下,C口用来定义控制信号和状态信号,因此C口的每一位都可以 进行置位或复位。对C口的置位或复位是由置位/复位控制字进行的。各位的功能如图7.14所示。其中,最高位必须固定为“0”。

  23. 1 0 图7.14 8255置位/复位控制字

  24. 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)所示。

  25. 图7.15 七段LED显示器 使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。用LED显示器显示16进制数的编码已列在表7-4所示。

  26. 表7-4 LED显示器16进制数编码 为了实现LED显示器的动态扫描除了要给显示器提供段码(字形编码)的输入之外,还要对显示器加位的控制(控制LED显示器亮灭),这就是通常所说的位控和段控。

  27. 2. 应用举例 具体要求: l6个LED采用共阴极连接 l79H~7EH分别存放6位显示器的显示数据(0~9) l8255的A口接LED显示器位控 l8255的B口接LED显示器段控 (1)电路设计

  28. 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)编写程序

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

  30. 7.4 8155可编程通用并行接口芯片 7.4.1 8155的外部引脚及内部逻辑结构 1. 外部引脚 8155芯片为40引脚双列直插封装,单一的+5V电源,其引脚排列如图7.16所示。其中: : A口的输入输出信号线。该口作输入还是输出,由软件决定。 : B口的输入输出信号线。该口作输入还是输出,由软件决定。 :C口信号线。该口可作输入、输出口外,还可以传送控制和状态信号,因此C口共有四种工作方式,即:输入方式(ALT1),输出方式(ALT2),A口控制端口方式(ALT3)以及A口和B口控制端口方式(ALT4)。其工作方式由软件决定。

  31. :地址数据复用线。 :片选信号。低电平有效。 :IO和RAM的选择信号。 =0,选中RAM; =1,选中IO口。 :地址锁存信号。除了进行 的地址锁存控制外还用于把片选信号 和 等信号进行锁存。 :读选通信号。 :写选通信号。 RESET:复位信号。复位后A口、B口和C口均为数据输入方式。

  32. TIMERIN:定时器/计数器的计数脉冲输入端。 TIMEROT:定时器/计数器。 2. 内部逻辑结构 8155的内部逻辑结构如图7.17所示。由图可以看出,8155由三部分组成,即:存储单元为256字节的静态RAM;3个可编程的I/O,其中2个口(A口和B口)为8位口,1个口(C口)为6位口;1个14位的定时器/计数器

  33. 图7.17 8155的内部逻辑结构 由以上可知8155有A口、B口、C口和定时器/计数器低8位以及定时器/计数器高8位五个端口,另外8155内部还有一个命令/状态寄存器,所以8155内部共有6各端口。对它们只需要使用即可实现编址,如表7-5所示。

  34. 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的端口地址编码

  35. 7.4.2 8155的命令/状态字 1. 8155的命令字 由以上内容可知,8155的A口有输入和输出两种工作方式,B口也有输入和输出两种工作方式,而C口有输入方式(ALT1),输出方式(ALT2),A口控制端口方式(ALT3)以及A口 和B口控制端口方式(ALT4)四种工作方式。这些端口的工作方式是由8155内部的命令寄存器(命令字)来控制的。命令字除了规定端口的工作方式还规定了定时器/计数器的工作方式。命令字只能进行写操作。其格式如图7.18所示。

  36. 图7.18 8155的命令字 当A口或者B口以中断方式进行数据传送时,所需要的联络信号由C口提供,其中为A口提供,为B口提供。各联络信号的定义如表7-6所示。

  37. 表7-6 联络信号

  38. 联络信号共有三个,其中: INTR:中断请求信号(输出),高电平有效。送给MCS-51单片机的外中断请求 BF :缓冲器满状态信号(输出),高电平有效。 :选通信号(输入),低电平有效。数据输入时, 是外设送来的选通信号;数据输出时, 是外设送来的应答信号。 以中断方式进行数据输入输出时,其过程和8255基本相同,在此不作赘述。 2. 8155的状态字 状态字只能读不能写,所以8155的命令字和状态字共用一个地址。当对命令/状态字进行写操作时,写进去的是命令,当对命令/状态字进行读操作时,读出来的是状态。状态字用于寄存各端口及定时器/计数器的工作状态。其格式如图7.19所示。

  39. 图7.19 8155的状态字 7.4.3 8155的扩展逻辑电路 8155与MCS-51单片机的连接比较简单,因为8155的许多信号与MCS-51单片机兼容,可以直接连接。表7-7列出了这些信号的对应关系。

  40. 8155 MCS-51单片机 8155 MCS-51单片机 口 ALE ALE RESET RST 表7-7 8155与MCS-51单片机兼容的信号 这种方法实际就是编址技术中的线选法。例如以 接 ,则8155与8051的连接如图7.20所示。 这种 信号产生方法中,对8155需要使用16位地址进行编址。这种方法适应于有多片I/O扩展及存储器扩展的较大单片机系统中,因此要使用片选信号。例如图中使用 作为片选信号与直接相连。

  41. 图7.20 高位地址直接作为信号 假设没有用到的地址位其值为系统复位后的值,即为1。则 时,端口地址范围为:0FDF8H~0FDFDH; 时,8155内部RAM地址范围是:0FC00H~0FCFFH。 7.4.48155的定时器/计数器 1. 8155定时器/计数器的计数结构

  42. 8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成,如图7.21所示。以其中的低14位组成计数器,剩下的两个高位( , )用于定义计数器输出的信号形式。 图7.21 8155定时器/计数器的计数结构 2. 定时器/数器的使用 ①8155的定时器/计数器是减法计数,而MCS-51单片机的定时器/计数器却是加法计数,因此确定计数初值的方法是不同的。

  43. ②   MCS-51单片机的定时器/计数器有多种工作方式,而8155的定时器/计数器只有一种固定的工作方式,即14位计数。通过软件方法进行计数初加载。 ③MCS-51单片机的定时器计数器有两种计数脉冲。定时功能时,以机器周期为计数脉冲;计数功能时,从芯片外部引入计数脉冲。但8155的定时器/计数器,不论是定时功能还是计数功能都是由外部提供计数脉冲,其信号引脚是TIMERIN。 ④ MCS-51单片机的定时器/计数器,计数溢出时,自动置位TCON寄存器的计数溢出标志位(TF),供用户查询或中断方式使用;但8155的定时器/计数器,计数溢出时向芯片外部输出一个信号(TIMEROUT)。而且这一信号还有脉冲和方波两种形式,可由用户进行选择。具体由 , 两位定义:

  44. =00 单个方波 =01 连续方波 =10 单个脉冲 =11 连续脉冲 这四种输出形式如图7.22所示。 图7.22 8155信号输出形式

  45. 3. 定时器/计数器的控制 8155定时器/计数器的工作方式由命令字中的最高两位进行控制(见图7.18)。具体说明如下: D7D6=00 不影响计数器工作。 D7D6=01 停止计数。如计数器未启动则无操作,如计数器正运行则停止计数。 D7D6=10 达到计数值(计数器减为0)后停止。 D7D6=11 启动,如果计数器没运行,则在装入计数值后开始计数;如果计数器已运行,则在当前计数值计满后,再以新的计数值进行计数。

  46. 7.4.5 8155的初始化 要求使用8155定时器/计数器对计数脉冲进行千分频,即计数1000后,TIAMEROUT端电平状态发生变化,并重新置数以产生连续方波。此外假定A口为输出方式,允许中断;B口为输入方式,不允许中断;C口为对A口控制方式(ALT3)。请编写初始化程序。 解:要求输出连续方波,所以定时器/计数器的最高两位M2 M1=01。计数器的其它14位装入计数初值。8155为减法计数,所以计数初值为1000,化为16进制数为03E8H。则定时器/计数器的高8位为:43H,低8位为:0E8H。 命令名字的设置如下:

  47. 计数器 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。则初始化程序为:

  48. 7.4.6 8155的应用举例 8155有很强的功能,在此以8155作单片机键盘接口为例进行说明。在讲此例之前首先说明单片机的键盘接口和键功能的实现。 1. 单片机的键盘接口处理 单片机的键盘接口处理的内容包括以下几个方面: 键扫描 图7.23 键扫描示意图

  49. 去抖动 图7.24 键闭合和断开时的电压抖动 键码计算 例如图7.25所示的键号是按从左到右、从上向下的顺序编排的。 图7.25 键码图

  50. 这样安排,使键码既可根据行号列号以查表求得,也可通过计算得到。图7.25所示的键码编排规律,各行首号依次是00H、08H、10H、18H,如列号按0~7顺序,则键码的计算公式为:这样安排,使键码既可根据行号列号以查表求得,也可通过计算得到。图7.25所示的键码编排规律,各行首号依次是00H、08H、10H、18H,如列号按0~7顺序,则键码的计算公式为: 等待键释放 计算键码后,再以延时后进行行扫描的方法等待键释放。等待释放是为了保证键的一次闭合仅进行一次处理。 2.键盘接口的控制方式 在单片机的运行过程中,何时执行键盘扫描和处理,可有下列三种情况: l随机方式,每当CPU空闲时执行键盘扫描程序 l中断方式,每当有键闭合时才向CPU发出中断请求中断响应后执行键盘扫描程序 l 定时方式,每隔一定时间执行一次键盘扫描程序,定时可由单片机的定时器完成。

More Related