单片机 扩展模块设计
单元9 扩展模块
回顾
1,数据通信有哪些方式?
2,8051单片机串行通信通过哪些管脚完成?
3,8051单片机串行通信有几种工作方式?
4,波特率的定义是什么?8051单片机设置波特率的步骤?
5,Max232芯片作用是什么?
本单元任务
任务1 扩展程序存储器
任务2 扩展数据存储器
任务3 扩展I/O
任务1 扩展程序存储器
任务描述:
任务分析:
客户要求程序存储的容量不能少于8KB,以便项目今后能够程序升级,并能进行功能扩充
8...
单元9 扩展模块
回顾
1,数据通信有哪些方式?
2,8051单片机串行通信通过哪些管脚完成?
3,8051单片机串行通信有几种工作方式?
4,波特率的定义是什么?8051单片机设置波特率的步骤?
5,Max232芯片作用是什么?
本单元任务
任务1 扩展程序存储器
任务2 扩展数据存储器
任务3 扩展I/O
任务1 扩展程序存储器
任务描述:
任务分析:
客户要求程序存储的容量不能少于8KB,以便项目今后能够程序升级,并能进行功能扩充
8051单片机片内程序存储器的存储容量只有4KB,不能满足客户需求,因此必须进行存储扩展,8051单片机有8位数据线,16位地址线,因此可以通过外部扩展的
来增大程序存储器容量
1.半导体存储器基本知识
只读存储器ROM :ROM(Read Only Memory)是只读存储器。ROM中所存储的信息是固定的、非易失性的,不会因为停电而消失。在正常工作状态下,ROM中的信息只能读不能写,即不能修改ROM的内容,数据读出后原数据不变。ROM通常用来存储控制程序和控制常量
掩模ROM
PROM
EPROM (EEPROM )
Flash Memory
随机存取存储器RAM
RAM(Random Access Memory)是随机存取存储器。正常工作时信息既可读出又可写入。数据读出后原数据不变,新数据写入后,原数据自然消失,并被新数据代替。因此,RAM存储器可以用来存储实时数据、中间数据、最终结果或作为程序的堆栈区使用。但是,RAM是易失性存储器,掉电后其数据随即消失。
RAM通常可分为静态RAM和动态RAM两大类,其差别主要在于基本存储电路存储信息的方式不同。静态RAM依靠触发器来存储二进制信息,存储容量较小。动态RAM依靠存储电容来存储二进制信息,存储容量大
2.单片机存储器扩展的实现
P0口线用作数据线/低8位地址线
P0口线具有地址线/数据线双重复用功能,以ALE为锁存控制信号,选择高电平或下降沿选通的锁存器作为地址锁存器(通常使用的锁存器是74LS373或74LS273),确保低8位地址信息在消失前被送入锁存器暂存起来,从而实现了对地址和数据的分离
P2口线用作高8位地址线
P2口线用于进行高8位地址线的扩展。由于只具有地址线扩展的功能,P2口线可直接与存储器芯片的地址线相连,无需锁存。P2与P0提供的16根地址线实现了51单片机系统64KB的寻址范围
控制信号
(1)ALE是锁存信号,用于进行P0口地址线和数据线的隔离。
(2) 是程序存储器读选通控制信号。
(3) 是程序存储器访问控制信号。当它为低电平时,对程序存储器的访问仅限于外部存储器;为高电平时,对程序存储器的访问从单片机的内部存储器开始延至外部存储器。
(4) 、 是外部数据存储器的读/写选通控制信号
3.片选方式及地址映像
片选方式研究多个芯片扩展时的连线,从而保证对存储芯片访问的惟一性。地址映像则研究各存储器芯片在整个存储空间中所占据的地址范围,从而为存储器的使用提供依据
片选方式
存储器编址是扩展存储器的重点。所谓存储器编址,就是使用系统提供的地址线,通过适当的连接,最终达到一个编址唯一地对应存储器中一个存储单元的目的。通常的单片机系统都会扩展多片存储器芯片,因此存储器编址应从两个方面进行考虑:
(1)存储芯片的选择,即片选。用来解决与芯片的片选端连接问题;
(2)芯片内部存储单元的选择,用来解决与芯片的地址线连接问题。
芯片的选择有两种方式:线选和译码
(1)线选方式 :直接以系统的高地址作为存储芯片的片选信号,为此只需把用到的地址线与存储器的片选端直接连接即可。同时最多只能有一个存储器芯片被选中,此时,与被选中芯片相连的地址线有效,其他用于线选的地址线均无效
(2)译码方式 :使用译码器对系统的高位地址进行译码,以译码输出作为存储芯片的片选信号。这是一种最常用的片选方式,能有效利用存储空间,适用于大容量多芯片存储器的扩展
当扩展的同类存储器芯片的存储容量相同时,译码方式可产生连续的地址映像,充分利用存储空间。具体做法是:
(1)若用于地址线扩展的P2口线是~,则从起与译码器输入选择端依照高低次序进行连接。
(2)多个芯片的片选端依次与相邻的译码输出端相连。
下面以扩展多片存储容量为2KB的存储器芯片为例进行说明。则每片存储器的地址线数量为11条(A10~A0),即P0经锁存器后为地址低8位(A7~A0),P2口的~用于地址扩展(A10~A8),译码电路则从P2.3起始,若采用74LS138作为译码器,电路如下
地址映像
对存储器芯片进行地址映像,是对存储器进行访问的前提。现在以扩展2KB存储容量的芯片进行说明。如图9-3所示,设4片存储芯片的片选端分别与Y0、Y1、Y2、Y3相连,则扩展4片存储器芯片时,P2、P0口各引脚连线对应关系如下
其中 ~ 、 ~ 用于片内地址的选择,范围从000 0000 0000B到111 1111 1111B。 ~ 用于芯片的选择,由于4#芯片的片选端与Y3相连, ~ 为011B时,用于选中4#芯片。这里设P2.7和P2.6为全0,则4#芯片的地址范围是1800H~1FFFH。同样地,3#芯片的地址范围是1000H~17FFH,2#芯片的地址范围是0800H~0FFFH,1#芯片的地址范围是000H~07FFH。这4片芯片的地址是完全连续。
4.地址锁存器及EPROM,EEPROM芯片介绍
地址锁存器
由于51单片机的P0口是数据和地址总线分时复用的,因此在进行单片机的程序存储器外部扩展时,就必须应用地址锁存器将P0口送出的低8位地址信号从地址/数据总线中分离出来。
程序存储器扩展时,地址锁存信号为ALE,地址锁存器可使用带有三态缓冲输出的8D74LS373,也可以使用带清除端的8D74LS273等
74LS373作为地址锁存器使用时,它们的锁存控制端G可直接与单片机的锁存控制信号ALE相连,以便在ALE的下降沿信号到来时进行地址锁存;当应用74LS273作为地址锁存器时,由于该芯片要求CLK端上沿锁存,因此单片机输出的ALE控制信号必须经过一个反相器后才能连接到74LS273的CLK端
常用程序存储器EPROM、EEPROM简介
紫外线擦除电可编程只读存储器EPROM,以前常用作51系列单片机的外部程序存储器,常见的型号有:2764(8K×8),27128(16K×8),27256(32K×8),27512(64K×8)等。现在这种存储器基本已被淘汰,代替它们的是型号中间带C的CMOS电可擦除程序存储器:27C64,27C128,27C256,27C512
电擦除可编程只读存储器EEPROM是常用的另一种单片机外扩程序存储器。其主要特点有(1)对硬件电路没有特殊的要求,操作十分简便。由于EEPROM片内设有编程所需的高电压脉冲产生电路,因而无需外加编程电源和编程脉冲即可完成写入工作;(2)采用+5V电擦除的EEPROM后,通常不需要设置单独的擦除操作,在对芯片进行编程同时完成自动擦除工作;(3)不仅可用于外扩程序存储器也可用于外扩数据存储器。常用的EEPROM有2816,2817A,2864,28C04,28C16,28C17,28C64等
【课堂思考】请分别查找芯片27C128、2817A、28C64的引脚及其功能
1.引脚功能
2.逻辑连线
3.地址映像
任务实施(扩展1片27C64 )
引脚功能 :
27C64是一种8K×8位的电可擦除只读存储器,其工作电压是+5.0V,存取时间为120ns,容量为64K位,动作电流20mA,采用单独的芯片允许和输出允许控制。常用的27C64为28管脚PID(双列直插)封装
逻辑连线
(1)8051的引脚P0.7~P0.0直接与27C64的数据线D7~D0相连,完成数据线扩展。
(2)8051的引脚P0.7~P0.0经过锁存器与27C64的地址线A7~A0相连,P2.4~P2.0直接与27C64的地址线A12~A8相连,完成地址线扩展。
(3)8051的程序存储器访问控制 与27C64的输出允许端相连完成控制线的扩展。
(4)8051的引脚P2.5经非门与27C64片选端相连,进行芯片选择控制。
(5)8051的端接地,对程序的访问完全在片外进行
地址映像
P2.7、P2.6与寻址无关,均设为“1”。P2.5经非门与片选端相连,当它为“1”时,可使片选段有效。因此,此片27C64的地址范围是0E000H~0F000H
【课堂思考】若扩展三片27C64,地址范围从0A000H开始,应如何实现?
【Task9-1】扩展1片27C64,程序装在27C64,运行点亮LED流水灯。
(1)电路设计:单片机EA脚接地,通过74LS373扩展1片27C64。流水灯安装在P1口上。
(2)程序设计
void main()
{
while(1)
{
P1=led_light[i++];
delay();
if(i==8)i=0;
}
}
void delay()
{
unsigned char t1,t2;
for(t1=0;t1<200;t1++)
for(t2=0;t2<200;t2++);
}
任务2扩展数据存储器
任务描述:
任务分析:
客户同时还要求数据存储的容量不能少于2KB,以方便项目今后能满足扩充要求。
当一个项目涉及到大量的数据时,就可能会超过单片机片内数据存储器的存储容量(8051单片机数据存储容量实际只有128B),然而由于其16位地址线,最大可寻址64KB字节,因此仍可以通过外部扩展的方法来增大数据存储器容量
1. RAM扩展原理
扩展RAM和扩展ROM类似,由P2口提供高8位地址,P0口分时地作为低8位地址线和8位双向数据总线。片外RAM的读 和写 由8051的 和 信号控制,所以,虽然与ROM的地址重叠,但不会发生混乱
2.常见的数据存储器
目前,常用的数据存储器SRAM芯片有6116、6264、62256等,
Ai~A0:地址输入线,i=10/12/13/14(6116/6264/62128/62256)。
D7~D0:三态双向数据线。
:片选信号输入线,低电平有效。
:读选通信号输入线,低电平有效。
:写选通信号输入线,低电平有效。
:6264的片选信号输入线,,高电平有效,可用于掉电保护。
示该管脚不用。
1.逻辑连线
2.地址映像
任务实施(扩展1片6116 )
逻辑连线
①数据线扩展。8051的引脚P0.7~P0.0直接与6116的数据线D7~D0相连。
②地址线扩展。8051的引脚P0.7~P0.0经过锁存器与6116的地址线A7~A0相连,P2.4~P2.0直接与6116的地址线A12~A8相连。
③8051读访问控制端 与6116的输出允许端 相连;写访问控制端 与6116写选通信号端 相连;P2.3与片选信号 相连完成控制线的扩展。
④芯片选择。
外部数据存储器扩展时的数据线扩展、地址线扩展、芯片选择方法与程序存储器扩展时的方法完全相同
地址映像
P2.7~P2.4与寻址无关,均设为“1”,P2.3为0选中芯片,因此,此片6116的地址范围是0F000H~0F700H
【Task9-2】扩展1片27C512、1片6264。程序全部装在27C512,通过向6264存储器地址1000h、1001h写入点亮LED编码,再读取1000h、1001h编码点亮LED灯。
(1)电路设计:单片机EA脚接地,通过74LS373扩展1片27C512、1片6264 。LED灯安装在P1口上。
(2)程序设计
#define LED1 0x1000
#define LED2 0x1001
unsigned char led_light[]={0x55,0xaa}; //点亮LED编码
unsigned char i;
void main()
{
XBYTE[LED1]=led_light[0]; //写入外部RAM地址1000h、10002h
delay1(); //写入延时
XBYTE[LED2]=led_light[1];
delay1();
while(1)
{
i=XBYTE[LED1];
P1=i;
delay();
i=XBYTE[LED2];
P1=i;
delay();
}
}
任务3扩展I/O
任务描述:
任务分析:
客户提出项目今后可能需要接更多的外部设备,因此需要预留更多的IO口,才能满足项目的扩展需求。
8051单片机有4个IO,共32位IO,然而其LED模块,显示模块,按键模块等电路已经占用了不少IO,要满足今后的扩展需要,唯一的办法就是扩展IO,即让单片机能使用的IO口超过本身自有的32位
1.扩展IO基础知识
由于MCS-51单片机的外部数据存储器RAM和I/O是统一编址的,因此,用户可以把外部64KB的数据存储器RAM空间的一部分作为扩展外部I/O的地址空间。这样,单片机就可以像访问外部RAM一样访问外部接口芯片,对其进行读写操作
2. 8255A可编程并行IO电路
8255A的结构及功能
(1)3个8位的I/O接口:A口、B口、C口
A口 具有一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。可编程为8位输入/输出或双向寄存器。
B口 具有一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。可编程为8位输入或输出寄存器,但不能双向输入/输出。
C口 具有一个8位数据输出锁存器/缓冲器和一个8位数据输入锁存器。C口可分作两个4位口使用。它除了作为输入/输出口外,还可作为A口、B口选通方式工作时的状态控制信号。
(2)读/写控制逻辑
读/写控制逻辑的功能用于管理所有的数据、控制字或状态字的传送。它接收来自CPU的地址信号及一些控制信号来控制各个口的工作状态,这些控制信号有:
(片选信号) 低电平有效。允许8255A与CPU交换信息。
(读信号) 低电平有效。允许CPU从8255A端口读取数据或外设状态信息。
(写信号) 低电平有效。允许CPU将数据、控制字写入8255A中
(复位) 高电平有效。有效时,控制寄存器全部清0,所有端口置成输入方式
(端口选择信号) 它们与 、 信号相配合用来选择端口及内部控制寄存器,并控制信息传送的方向
A1 A0 操作
0 0
0 1
1 0
0 0
0 1
1 0
1 1
x x
1 1
x x 0 1 0
0 1 0
0 1 0
1 0 0
1 0 0
1 0 0
1 0 0
x x 1
0 1 0
1 1 0 A口→数据总线
B口→数据总线
C口→数据总线
数据总线→A口
数据总线→B口
数据总线→C口
数据总线→控制寄存器
数据总线为三态
非法状态
数据总线为三态
(3)A组和B组控制电路
这是两组根据CPU命令控制8255A工作方式的电路。每组控制电路从读、写控制逻辑接收各种命令,从内部数据总线接收控制字(指令),并发出适当的命令到相应的端口。
A组控制电路控制A口及C口的高4位。
B组控制电路控制B口及C口的低4位。
(4)数据总线缓冲器
这是一个双向三态的8位缓冲器,用于和系统的数据总线直接相连,以实现CPU和8255A间传送信息
8255A的工作方式选择
(1)方式0(基本输入/输出方式)
这种工作方式不需要任何选通信号。A口、B口及C口的高4位和低4位都可以设定为输入或输出。作为输出口时,输出的数据被锁存;作为输入口时,输入数据不锁存。
(2)方式1(选通输入/输出方式)
这种工作方式下,A、B、C3个口分为两组:A组包括A口和C口的高4位,A口可由编程设定为输入口或输出口,C口的高4位用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低4位,B口同样可由编程设定为输入口或输出口,C口的低4位用来作为输入/输出操作的控制和同步信号。A口和B口的输入数据或输出数据都被锁存。
(3)方式2(双向总线方式)
在这种工作方式下,A口为8位双向总线口,C口的PC3~PC7用来作为输入/输出的同步控制信号。在这种情况下,B口和PC0~PC2只能编程为方式0或方式1工作
8255A的控制字
例9-1:将B8H(10111000B)写入控制寄存器后,则8255A设置A口为方式1输入,B口为方式0输出,C口高4位为方式1输入,C口低4位为方式0输出。
例9-2:将0BH(00001011B)写入控制寄存器后,则8255A的PC5置1
8255A与MCS-51单片机的连接电路如图9-13所示。图中:8255A的片选信号 及端口地址选择线A1、A0分别由8051的P0.7、P0.1、P0.0经74LS373锁存后提供;8255A的 、分别接8051的 、 ;8255A的D0~D7接8051的P0.7~P0.7。该电路中8255A的A口、B口、C口以及控制口的地址分别为FF7CH、FF7DH、FF7EH和FF7FH
任务实施(扩展1片8255A )
【Task9-3】扩展1片8255A。按键和LED灯安装在8255A中,通过读入B口按键状态,输出点亮A口相连的LED灯的过程。
(1)电路设计:扩展1片8255A 。LED灯安装在PA口上,按键安装在PB口中。
(2)程序设计
#define PORTA 0x7CFF //A口 注意:8255A的A1、A0与单片机的P2.1、P2.0相连
#define PORTB 0x7DFF //B口
#define PORTC 0x7EFF //C口
#define CADDR 0x7FFF //控制字地址
unsigned char i;
void main()
{
XBYTE[CADDR]=0x82; //设置8255A工作方式0,A、C口输出,B口输入
while(1)
{
i=XBYTE[PORTB]; //读入B口
XBYTE[PORTA]=i; //输出到A口
}
}
小结
8051单片机内部只有4K程序存储器、128B可用的数据存储器,对16位地址总线的51系列单片机,其寻址空间为216=65535,即64K字节,地址从0000H~0FFFFFH,因此8051单片机程序存储器和数据存储器均可扩展为64KB。
8051单片机共有32位I/O,当采用外部程序存储器或数据存储器时,由于地址总线的应用,致使单片机可用I/O减少到14个左右,因此单片机外围要连接的设备较多时,势必会出现I/O口不够用的情况,因而在实际应用中,也需要对单片机的I/O口作一定的扩展。I/O扩展常选用8255A或8155芯片
作业
技能拓展一选择题
技能拓展二设计题
谢谢!
本文档为【单片机 扩展模块设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。