7 单片机的外部基本扩展与应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图 7-7 6264SRAM的引脚图和逻辑符号图
从图7-7可以看出,只需要13根地址线即可表示该芯片的所有存储单元。 而51系列单片机的地址总线是16位,从图7-4中可以看出单片机的26~28 引脚没有使用,则存储器的某个存储单元就存在多个地址同时与之相对 应的关系,如下表所示。 表 7-1 6264SRAM某个单元地址编码
7.1.1
系统扩展总线
所谓总线,就是连接系统中各扩展部件的一组公共信号线。以单片机为核 心,通过总线把各扩展部件连接起来,各扩展部件“挂”在总线上,主要 形式有存储器扩展、I/O口的扩展,以及人机接口所必须的键盘与显示器 件接口扩展等,如图7-1所示。
在图中,按总线接口的类型可分为传统的并行传送数据的三总线结构(控 制总线、数据总线和地址总线),以及后来发展起来的串行传送数据的 SPI总线、I2C总线和单总线等总线形式。本章只讨论传统的并行传送总线 结构。
7.2.2
利用KEIL软件如何查看各种存储器中的数据
通过PROTEUS软件硬件仿真可以看到内或外数据存储器中的数据,但无 法查看程序存储器的指令或表格数据。
利用KEIL软件的存储器窗口可以显示系统中各种存储器中的值,只要在地址 (Address)后的编缉框内输入“字母:数字”即可显示相应内存值。
说明如下:其中 字母可以是 C、 D、I、X,分别 代表代码存储空 间、直接寻址的 片内存储空间、 间接寻址的片内 存储空间、扩展 的外部 RAM 空 间,数字代表想 要查看的地址 图 7-5 查看程序存储器中的指令或表格数据
7.2.1
并行扩展总线连接说明
地址总线的连接说明:P0口引脚输出的8位信号,作地址总线送 74HC373地址锁存器,为6264提供低8位地址信号;P2口的21~25 脚直接与6264的A12~A8脚相连接,提供了高5位地址。 数据总线的连接说明:P0口引脚作数据总线,直接与 6264相连接,用于传送8位数据信号。 控制总线的连接说明:地址锁存信号ALE与74HC373地址锁存 器输入选通端LE相连,用于锁存P0口的送出的低8位地址信号; 读信号 ()与6264的输出使能端 ()相连,用于单片机读 数据控制;写信号 ()与6264的输入使能端()相连,用于单片机写 数据控制。 由于片外只扩展了一片芯片,故不存在片选问题,6264的片选 信号 ()直接接地,保持常通。
该窗口的显示值能以各种形式显示,默认以“无符号单字节方式“显示。可 利用右键快捷菜单选择,如图7-6所示。 说明如下: 该菜单用 分隔条分 成二部份, 其中第一 部份与第 二部份的 三个选项 为同一级 别。 选中第一部份的任一选项,窗口中的值以整数形式显示。如:“ Decimal ”项是一个开 关,选中它,表示窗口中的值将以十进制形式显示,否则按默认的十六进制显示。 “Unsigned”和 “Signed ” 分别代表无符号形式和有符号形式,各有三个选项:Char、 Int、Long,分别代表以单字节字符形式、双字节整数形式、四字节长整数形式显示。 选中第二部份的“Ascii码”项则将以字符形式显示,选中“Float”项将相邻四字节组 成的浮点数形式显示,选中 “Double ”项则将相邻八字节组成双精度形式显示。
想一想,试一试?
1、我们是否可以将源代码中的下列代码行,如下所示: MOV DPTR,#0200H; 设置外存储器的首个 存储地址
将首地址0200H换成表7-1中的最右边一列中的任 意一个16位地址编码是否都可以?
7.3 单片机片外扩展多片数据存储器
【例7-2】将程序存储器的表格数据送给片外的数据存储器
7.4 单片机片外扩展简单I/O接口
【例7-3】按键控制LED灯的亮灭
程序说明:51单片机的P0~P3口具有输入数据可以缓冲,输出数据可以锁存 的功能,并有一定的负载能力,可以直接与外设相接(详见第2章示例), 如:开关、发光二极管等。 但有时出于节省I/O端口使用或需要提高系统带负载能力的情况下,常采用 “输入三态, 输出锁存”原则进行片外扩展简单I/O口芯片,这是单片机应 用系统设计中常采用的方法。
7 单片机的外部基本扩展与 应用
任务与知识点
• 任务
– – – –
– – – – – –
单片机片外扩展单片数据存储器 单片机片外扩展多片数据存储器 单片机片外扩展简单I/O接口 单片机采用8255芯片外扩展I/O接口
单片机系统扩展总线 片外扩展芯片是如何被访问的 介绍利用KEIL软件如何查看各种存储器中的数据、 讲解MOV、MOVX、MOVC三类传送指令及数据的寻址方式 一些常用扩展芯片的接口方法和访问控制方法 多位数据码静态显示及动态显示知识
从图中可以看出, 以P0口的8位口线 作地址线低8位/ 数据线,通过8位 锁存器进行数据信 号和地址信号的分 离;以P2口的口线 作高8位地址线, 可以访问外部程序 和数据存储最大空 间分别为64KB。
除了地址线和数据线之外,在扩展系统中还需要一些控制信号线,以 构成扩展系统的控制总线。这些信号有的是单片机引脚的第一功能信 号,有的则是第二功能信号。其中包括:使用ALE作为地址锁存的选 通信号,以实现低8位地址的锁存;以PSEN信号作为扩展程序存储 器的读选通信号;以EA信号作为内、外程序存储器的选择信号;以 RD和WR作为扩展数据存储器和I/O端口的读/写选通信号。
7.3.2
多个存储器扩展的片选问题
多个存储器扩展时,为了找到确切的存储器单元,必须考虑两个方面的 的问题:存储芯片的选择和芯片内部存储单元的选择。芯片内部存储单 元的选择在上一节里,我们已经做了介绍。 存储芯片的选择一般采用两种方法:线选法和译码法。在大容量多芯 片扩展时,一般采用译码法。常用的译码芯片有:74HC139(双2-4译 码器)、74HC138(3-8译码器)和74HC154〔4-16译码器)等。电路原理 图使用了74HC138译码器,下面做一介绍。 74HC138译码器具有3个选择输入端,可组成8种输入状态;具有8个输出端, 分别对应8种输入状态,且0电平有效,即:对应于每种输入状态,仅允许1 个输出端为0电平,其余全为1。
7.2.3
外部存储器存储单元地址编码
常用的外部数据存储器有静态RAM和动态RAM两种。一般情况下,SRAM用 于仅需要小于64KB数据存储器的小系统,DRAM经常用于需要大于64KB的 大系统。 6264是8 K×8位的静态RAM芯片, 采用CMOS工艺制造, 为 28 引脚双列直插式封装,如图7-7所示。
地址总线的连接说明:P0口引脚输出的8位信号,作地址总线送 74HC373地址锁存器,为6264提供低8位地址信号;P2口的21~25 脚直接与6264的A12~A8脚相连接,提供了高5位地址;P2口的26~ 28脚做为138译码器的输入信号。 数据总线的连接说明:P0口引脚作数据总线,直接与6264相连接, 用于传送8位数据信号。 控制总线的连接说明:地址锁存信号ALE与74HC373地址锁存器输 入选通端LE相连,用于锁存P0口的送出的低8位地址信号;读信号 ( RD)与6264的输出使能端 ( OE )相连,用于单片机读数据控制;写信 WR)与6264的输入使能端( W E)相连,用于单片机写数据控制。 号( 由于片外扩展了两片芯片,必须进行芯片选择,故片选信号 ( CE ) 通过译码器74HC138进行片选,在某一时刻只有一片可以工作。
E1 74HC138译码器还有3个使能端E3、 和 E 2,必须同时输入有效电平,译码器 才能被选通;否则译码器的输出全为高。很明显ቤተ መጻሕፍቲ ባይዱ采用译码器寻址可节省单 片机的I/O口线,其引脚图和逻辑功能真值表如图7-9所示。
图 7-9 74HC138译码器的引脚图与真值表 结合电路原理图7-8可知,U3芯片的寻址空间固定在0000H~1FFFH之间,而 U4芯片的寻址空间固定在2000H~3FFFH之间。 如果此时再将MOV DPTR,#0200H;设置外存储器的首地址代码中的外部存 储器首地址0200H换成表7-1中的最右边一列中的任意一个16位地址编码, 则结果就会发生变化了,同学们可以试一试?
A1 A1 A13 5 4
0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 6264SRAM的0200H单元 用13位二进制表示为 (0001000000000)2 A12——————————A0
16位地址编码
0200H 2200H 4200H 6200H 8200H A200H C200H E200H
当数据是在片外的数据存储器或I/O接口时,我们将使用MOVX指令进 行访问,指令格式简单易记,只有四种,如下图7-11所示。
当数据是在程序存储器中的常量数据,我们将使用MOVC指令进行访问, 指令只有两种,如图7-12所示。
想一想,做一做?
1、在电路原理图7-4和7-8中,片外没有扩展程序存储器。为 什么片外不去扩展程序存储器?如果要扩展,则相应的硬件电 路连线要注意什么事项?会不会和片外数据存储器的存储单元 地址发生冲突?
• 知识点
7.1 单片机系统扩展的基本概念
在由单片机构成的实际测控系统中,最小应用系统往往不能 满足要求,就要在设计系统时进行相应的系统扩展。
在单片机系统总体设计时,必须综合考虑接口器件的电气参数、 时序要求、功能、体积、成本等方面因素,选择合适外部扩展 方式,适当预留扩展空间,还要兼顾系统改进设计、产品升级 等方面的要求。
程序功能将程序中的表格数据送 给片外存储器。需要注意程序中 表格数据的访问和片外存储器单 元的访问都要用到DPTR数据指针, 本例通过堆栈保护方式加以区分。
电路原理图
电路分析如下:当PROTEUS仿真执行完成后,D1灯会点亮,可以通过 DEBUG菜单查看外存中的数据。
7.3.1
并行扩展总线连接说明
7.1.2
片外扩展芯片是如何被访问的
当单片机片外扩展了存储器、I/O接口等外围接口芯片之后,如何用地址来表 示这些芯片位置,以及通过地址来访问它们,就是接下来要考虑的问题了。
从图中,可以 看出由地址总 线通过译码器 决定访问四个 存储单元的哪 一个,由控制 总线给出读写 控制信号,由 数据总线来传 送数据。
图 7-2 存储器单元示意图
在并行总线结构外部扩展芯片时,所有外部芯片都看做为一个或多个存储 单元,通过系统三总线进行访问。
而51单片机中的程序和数据是按哈佛结构分别存储,所以要进一步区别 芯片中的内容是程序和数据了。 如果外部芯片存放的是程序指令,PC指针会自动 访问,此芯片是程序存储器 如果存放的是数据,则通过相关指令进行访问, 此芯片是或看做数据存储器了 7.1.3 51单片机对片外芯片的访问
通常情况下,微机的CPU外部都有单独的并行地址总线、数据总线和控制总 线,而AT89S51单片机由于受引脚的限制,数据线和地址线是复用的,而且 由I/O口线兼用。为了将它们分离出来,以便同单片机片外的芯片正确地 连接,需要在单片机外部增加地址锁存器,从而构成与一般CPU相类似的片 外三总线,如图7-3所示。
7.3.3
对数据进行访问的MOV、MOVX和MOVC指令比较
通过前两例程序代码的学习,我们知道单片机要进行处理的数据可能存在于 三种存储空间:内部数据存储器(包括工作寄存器区、位寻址区、通用工作 区,以及一些特殊功能寄存器SFR),外部数据存储器和程序存储器。如果 我们要对它们进行访问,就涉及了MOV、MOVX和MOVC三种指令。 当数据是在内部数据存储器或指令队列中,我们将使用MOV指令进行访问。 指令的访问形式多种多样,非常灵活。如图7-10所示。
想一想,做一做?
1、如果片外扩展的存储器并没有64KB空间,是不是可以用少于16根 地址线进行访问?
7.2 单片机片外扩展单片数据存储器
RAM是用来存放各种数据的, 51单片机内部有128字节RAM,但当单 片机用于实时数据采集或处理大批量数据时,就必须进行单片机的外部 数据存储器扩展。 【例7-1】单片机的外存储器与内存储器进行数据传送
以上程序代码的作用是:(1)先将“STUDY HARD”这一个字符串逐行代 码送入内存储器30H单元地址开始的内存空间;(2)然后将这一字符串以 循环结构代码形式送入外部SRAM的200H地址开始的存储空间;(3)内存 中的这一字符串要连续送100趟次。
电路原理图
图 7-4 外部扩展一片数据存储器6264电路原理图