深度解读MCS51单片机时序分析及系统扩展

发布者:BlissfulMoon最新更新时间:2023-08-30 来源: elecfans关键字:MCS51  单片机  时序分析  系统扩展 手机看文章 扫描二维码
随时随地手机看文章

AT89C51单片机是ATMEL公司设计生产的与MCS51内核兼容的51系列单片机之一,该系列单片机以其优越的性能和成熟的技术在控制和自动化应用领域占有着较大的市场;除此以外,51单片机有着计算机系统中经典的总线结构,即:数据总线、地址总线和控制总线。


在实际应用中,单片机的4个端口中,P0口通常是作为地址/数据总线复用;P2口作为高8位地址总线,高8位地址线在有多余I/O的情况下,配合外部的组合逻辑电路一起构成外部总线译码使用;P3口通常作为第二功能使用,则提供给用户使用的I/O仅仅是P1口。在多数应用场合下是不能满足要求的,因此51单片机系统就或多或少地需要进行系统扩展。另外,由于其内部的RAM只有128 B,在使用C语言进行程序设计时显得比较不足,必要时需进行外部RAM扩展,方法与扩展外部I/O相同。实际应用中,使用总线方法可以较容易地实现51单片机外部的I/O、RAM、LCD、ADC、DAC等等外设的操作,以弥补51单片机片内外设的不足。


1 MCS51单片机系统的四要素

1.1 51单片机系统的启动

MCS51单片机上电正常工作,需具备以下四点:

(1)电源。AT89S51系列单片机的第40引脚为VCC,外加电压5 V工作电压,另外,单片机的第20引脚是GND,须连接到系统的地。

(2)复位电路。任何处理器都需要在上电时进行自身的复位,51单片机也不例外,上电复位电路是较为简单可靠的电路之一,不可缺少。复位电路如图1所示,该图为带上电复位及手动复位两种结合,二极管D1在系统瞬间掉电能帮助系统快速放电,使系统重新复位,以提高系统的可靠性。

o4YBAGAwq7qAfMtUAAAzHRRJTW4576.png

(3)振荡电路。如图2所示,51单片机的第18脚和第19脚为两个外接振荡的引脚,是内部振荡方式的典型电路, 外接的33 pF电容可以提高振荡的稳定性。

o4YBAGAwq9mAOUttAAAoqY9JoeE383.png

(4)EA。AT89S51单片机内部有4 KB的程序存储器,不需要外部的ROM空间,如果不够可以选择AT89S52或其他内部存储器更大的单片机,所以接高电平,即:不使用外部ROM,只使用内部的存储器。


1.2 MCS51单片机系统的存储器结构

MCS51单片机的存储器分为片内和片外两个部分,即:内部的ROM/RAM和外部的ROM/RAM,编写程序时必须清楚每一个存储单元的用途和功能,这样才能更好地进行系统存储器资源的分配。51单片机的另一个特点是外部的RAM空间和I/O空间共用外部的64 KB空间,因为外部总线的地址线为16 bit,所以能够访问的最大地址空间为64 KB。51单片机系统在进行外部扩展时,所有外设的地址都分布在这64 KB的地址范围内,对于RAM来说,地址是连续的;而对于LCD、ADC等等部件,地址是不连续的。


1.3 51单片机的中断系统

AT89S51单片机为用户提供了可屏蔽中断源有5个,分别是:外部中断0(入口地址为:0003H)、外部中断1(入口地址为:000BH)、定时器0(入口地址为:0013H)、定时器1(入口地址为:001BH)和串行中断(入口地址为:0023H);不可屏蔽中断为复位(入口地址为:0000H)。51系列单片机的其他型号所提供的中断个数不尽相同,所有的单片机都包括上述这6个最基本的中断源,不同公司生产的51内核单片机中断源上有略微的区别。


1.4 51单片机的总线结构

由于51单片机真正可以作为双向I/O口应用的只有P1口,假设系统需要扩展外部的键盘,I/O就所剩无几了。因此,MCS51单片机应用系统设计都不可避免地需要进行系统的扩展,而I/O的扩展则是与系统总线紧密结合的。由于MCS51单片机的外部RAM和I/O口是统一编址的,因此,可以把单片机外部64 KB RAM空间的一部分作为扩展外围I/O口的地址空间。这样,单片机系统就可以把额外的RAM空间用来进行I/O空间的扩展,使用总线方式对外设进行访问[1]。


本文重点之一是介绍采用具有三态缓冲的74HC244芯片和输出带锁存的74HC573芯片来扩展一个4×4的小键盘,缓冲器和锁存器分别占用外部I/O空间中的两个地址。而无论是访问外部的RAM空间还是I/O空间,在进行汇编语言编程时都是通过MOVX指令来实现读写的。在使用C语音进行单片机程序设计时,虽然语言改变了,但是C语言程序反汇编后,访问外部仍然使用的是MOVX指令。因此,分析过程及使用中,都是以汇编语言为例进行扩展设计的。


2 MOVX指令的执行过程

MOVX指令是51单片机访问片外外设的唯一指令,与外部RAM或I/O空间进行数据的读写或者ADC和DAC等都需要使用这条指令。MCS51单片机外部RAM的地址空间为64 KB,地址总线为16 bit,访问外设可执行4条汇编指令:(1)MOVX A,@DPTR;(2)MOVX @DPTR, A;(3)MOVX A, @RI; (4)MOVX @RI, A。其中DPTR为16 bit地址寄存器,地址高8 bit存于DPH,地址低8 bit存于DPL,Ri(i=0,1)是8 bit寄存器,作为地址指针时仅存低8 bit地址。


MCS51执行上述指令时分为两个阶段:首先,是从程序存储器中取出指令代码,并进行译码;然后,执行对外设数据的读写操作。在这两个阶段中,P0口在指令执行过程中是分时复用口,指令前半个周期,低8 bit地址由地址锁存允许信号ALE控制一个8 bit的锁存器输出,接着输出8 bit数据至外部数据总线,P2口在此过程中一直输出高8 bit地址。


由上所述,假设使用R0和R1对外设的进行间接寻址方式的访问,那么可看作是一种页面寻址,将外部的64 KB空间分成了256页,每一页有256 B地址。寄存器P2的当前值决定了当前的页地址。MCS51单片机在复位时,P2端口寄存器数值为FFH,若程序运行中没有改变P2中的值,则R0和R1只能对FF00H~FFFFH范围的外部的间接寻址,即对第255个页面进行访问。往外部空间写1 B时序图如图3所示。

pIYBAGAwq-6AcY9oAACxJHHk4Ok433.png

因此,使用DPTR作为数据指针或者是RI,都可以实现对外部64 KB空间的访问。而指令都是使用MOVX,可见MCS51单片机系统中,MOVX指令有着非常重要的作用。


3 时序分析及系统扩展

MCS51单片机的外部总线时序扩展主要包括外部的译码电路、锁存电路等组合逻辑电路,形成整个系统的外部总线,即:数据总线、地址总线、控制总线。


译码电路采用常用的74系列3/8线译码器74LS138,该芯片的A、B、C分别接地址的最高3位,即A13、A14、A15,译码电路如图4所示;138的使能端E3接高电平,E1和E2接的是EN_138,该信号是由单片机系统的读写信号经过组合得来的,当系统对外部的总线进行读写时,读/写信号其中一个为低电平,使得EN_138控制信号输出为一个低电平脉冲信号,此时,3/8线译码器的输出Y0~Y7其中一个也会输出一个低电平脉冲,用此脉冲就可以有效地对外部设备进行片选。逻辑电路如图5所示。

通过这样的组合后就可以在总线上数据有效的时间内,通过74LS138的Y0~Y7控制外设的片选,实现有效的数据读写。尤其是在扩展外部I/O口使用的74系列的逻辑电路芯片时,这个方法尤为重要,因为这类芯片没有外部的读/写信号,只能通过单片机外部的组合逻辑电路输出一个读/写信号宽度的脉冲用以控制此类I/O芯片。若外设信号控制信号为低电平脉冲,则刚好与3/8线译码器的输出匹配,此时直接相连即可;若外设控制信号需要的是高脉冲信号,则必须在3/8线译码器的输出外面再加一级反相器电路,常用的反相器为74LS04。


以写数据往外设为例,得到的时序流程如图6所示。读数据的时序与写数据一致,只是将写信号换成读信号。

o4YBAGAwrGmAB0M8AAAzmE-aN7M470.png

4 I/O扩展实例

4.1 行列键盘扩展

如前所述,51单片机供用户使用的I/O只有P1端口的8个引脚,远不能满足系统的需求,这样就必须通过总线的方法进行外部I/O扩展。在这里需要注意的是,51单片机系统外部I/O空间是和外部的RAM空间共用外部64 KB空间的。使用74LS573和74LS244分别进行行列的扩展,其中573锁存行信号,244读回数据,扩展了端口,实现了4×4的矩阵式行列扫描键盘,如图7所示。在此程序略,主要介绍扩展的方法。

pIYBAGAwrIiASGxeAADGBes2rys372.png

图8所示为4×4矩阵键盘连接图。

o4YBAGAwrKSABJRHAACeUiN_cfk331.png

4.2 大于64 KB空间的扩展

MCS51单片机是8位的微控制器,外部地址总线共16 bit地址,能访问的空间共为64 KB,但是如果系统中所有的外设加起来需要的地址空间超过64 KB时(如128 KB、256 KB的RAM或者需要更多的I/O空间等情况出现)就需要使用P1口或者是P3口不使用的I/O口进行线选法译码或者译码法进行额外的扩展来实现。


这种情况在单片机系统中经常会遇到,本文中介绍一种基于分页原理的扩展方法。51单片机系统虽然只有16条地址总线,在系统需要较大的RAM或I/O空间时,可以将系统中空余的I/O口作为额外的外部地址使用,例如:使用P1.0时进行线选法译码时,就可以扩展外部的128 KB空间。当P1.0为低电平时,选择第1个64 KB空间;当P1.0为高电平时, 选择第2个64 KB空间。


以此类推,假设有更多的空间需求时,还可使用专用译码器进行译码,来进行更多的选择


关键字:MCS51  单片机  时序分析  系统扩展 引用地址:深度解读MCS51单片机时序分析及系统扩展

上一篇:深入理解51单片机串口通信及通信实例
下一篇:怎么去设计一种基于51单片机的便携式恒温箱

推荐阅读最新更新时间:2024-11-09 21:21

2013英飞凌XMC1000全国巡回研讨会圆满落幕
2013年8月14日——近日,英飞凌科技股份公司(FSE: IFX / OTCQX: IFNNY)在全国六大城市成功举办了“2013英飞凌XMC1000全国巡回研讨会” 。 XMC1000是英飞凌基于ARM Cortex-M0内核的32位单片机家族,旨在用8位的价格挑战中低端的应用领域。XMC1000分为三个系列:XMC1100入门系列、XMC1200特色系列和XMC1300控制系列。XMC1000采用65nm嵌入式闪存技术、300mm晶圆,这项工艺为单片机的低价提供了可能。64MHz MATH协处理器使XMC1000缩短了和ARM Cortex-M3产品在运算能力方面的距离。针对传感器/执行器、LED控制、功率转换、低端
[单片机]
PIC单片机ADC的简单应用
#include pic.h __CONFIG(0X1F71); #define uchar unsigned char #define uint unsigned int const uchar Tab = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; const uchar Tab1 = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带小数点的代码 void DisPlay(uchar date1,uchar date2,uchar date3,uchar date4); void DelayMS(uin
[单片机]
【51单片机快速入门指南】5.1:SPI与DS1302时钟芯片
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 摘自《普中 51 单片机开发攻略》、《DS1302中文手册》。 DS1302 简介 DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和 31 字节静态 RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用 24 或 12 小时格式。DS1302 与 单片机之间能简单地采用同步串行
[单片机]
【51<font color='red'>单片机</font>快速入门指南】5.1:SPI与DS1302时钟芯片
适合于STC单片机的EEPROM读写程序
程序经过测试,可以直接引用就可以。欢迎大家下载使用。 12C5AS32单片机测试过。 EEPROM。H文件。。。 #ifndef _EEPROM_H_ #define _EEPROM_H_ #include AT89X52.H #define uint16 unsigned int #define uint8 unsigned char //---------------------------------------------------- //STC单片机IAP定义 sfr IAP_DATA = 0xC2; sfr IAP_ADDRH = 0xC3; sfr IAP_ADDRL = 0xC4; sfr IAP_CMD =
[单片机]
基于ATmega8 单片机控制的正弦波逆变电源
本文正是 基于 这种情况下而设计的一种 基于 单片机 的智能化正弦 逆变电源 。 1正弦 逆变电源 的设计方案 本文所设计的逆变器是一种能够将DC 12 V直流电转换成220 V正弦交流电压,并可以提供给一般电器使用的便携式电源转换器。目前,低压小功率逆变电源已经被广泛应用于工业和民用领域。特别是在交通运输。野外测控作业。机电工程修理等无法直接使用市电之处,低压小功率逆变电源便成为必备的工具之一,它只需要具有一块功率足够的电池与它连接,便能产生一般电器所需要的交流电压。由于低压小功率逆变电源所处的工作环境,都是在荒郊野外或环境恶劣。干扰多的地方,所以对它的设计要求就相对很高,因此它必须具备体积小。重量轻。成本低。可靠性高。抗
[电源管理]
基于ATmega8 <font color='red'>单片机</font>控制的正弦波逆变电源
键盘电路实例分析:上拉电阻错误导致51单片机无法正常运行
在电路设计中,为了将电阻钳位维持在高电平,会借助上拉电阻来实现电阻的稳定,因此上拉电阻开始大量出现在电路设计中。本文从以键盘电路实例为切入点,为大家分析一种由于上拉电阻位置原因导致51单片机电路无法正常运行的情况。 首先让我们来看一看这个键盘电路的原理图,如图1所示。 图1 在按键没有被按下时,端口为低电平,按下按键的时候端口上接高电平。但电路却没有正常工作,出现了问题。 下面就来分析一下问题所在。首先,将电源直接接到端口上是绝对不可以的。当按下按键时,会有很大的电流进入单片机。在工程上,这种往往应该加限流电阻,一般选择1K即可。 但也不能选择太大的电阻,因为电阻上面压降太大,造成输入低于应有的高电平,造成错
[单片机]
键盘电路实例<font color='red'>分析</font>:上拉电阻错误导致51<font color='red'>单片机</font>无法正常运行
MCS-51单片机输入输出口
8051有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线: P0口和P2口: 右图为P0口和P2口其中一位的电路图,由图可见,电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。参考图2。 P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB
[单片机]
MCS-51<font color='red'>单片机</font>输入输出口
AVR单片机的智能家居监控系统提高生活水平
随着科技的发展和人民生活水平的提高,智能家居成为了一个热门的研究领域。智能家居问题中面临的主要问题就是安全防盗、电器控制等问题。 智能 家居不仅能够完成出现问题对主人进行的报警功能,还应提供智能家居设备执行主人的命令操作,比如通过手机或是平板电脑等终端控制电器进行做饭或是空气清洁等工作。 因此, 智能 家居中用到的传感器主要有红外传感器、门磁传感器、实时时钟芯片等。 1 家居监控系统工作原理 系统主要由门磁报警、红外传感器报警、煤气传感器报警、正常工作、用户命令执行动作构成。 1.1 门磁报警 门磁系统完成对门出入安全的监测,主要有磁铁和干簧管组成。当主人离开房子的时候可以启动防盗功能,如果两者保持正对,那么在磁铁的作用下
[电源管理]
AVR<font color='red'>单片机</font>的智能家居监控<font color='red'>系统</font>提高生活水平
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved