51单片机总线时序

发布者:CyberJolt最新更新时间:2013-03-04 来源: 21IC 关键字:51单片机  总线时序  编址电路 手机看文章 扫描二维码
随时随地手机看文章

一、总线概述

计算机系统是以微处理器为核心的,各器件要与微处理器相连,且必须协调工作,所以在微处理机中引入了总线的概念,各器件共同享用总线,任何时候只能有一个器件发送数据(可以有多个器件同时接收数据) 。

计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。

二、单片机的三总线结构

51系列单片机具有完善的总线接口时序,可以扩展控制对象,其直接寻址能力达到64k( 2的16次方) 。在总线模式下,不同的对象共享总线,独立编址、分时复用总线,CPU 通过地址选择访问的对象,完成与各对象之间的信息传递。

单片机三总线扩展示意如图1 所示。

1、数据总线

51 单片机的数据总线为P0 口,P0 口为双向数据通道,CPU 从P0 口送出和读回数据。

2、地址总线

51 系列单片机的地址总线为16 位。

为了节约芯片引脚,采用P0 口复用方式,除了作为数据总线外,在ALE 信号时序匹配下,通过外置的数据锁存器,在总线访问前半周期从P0口送出低8位地址,后半周期从P0 口送出8 位数据。

高8位地址则通过P2 口送出。

3、控制总线

51 系列单片机的控制总线包括读控制信号P3.7 和写控制信号P3.6 等,二者分别作为总线模式下数据读和数据写的使能信号。

三、单片机总线时序分析

51 单片机总线时序如图2 所示。

从图2 中可以看出,完成一次总线( 读写) 操作周期为T,P0 口分时复用,在T0 期间,P0 口送出低8 位地址,在ALE 的下降沿完成数据锁存,送出低8位地址信号。在T1 期间,P0 口作为数据总线使用,送出或读入数据,数据的读写操作在读、写控制信号的低电平期间完成。

需要注意的是,在控制信号( 读、写信号) 有效期间,P2 口送出高8位地址,配合数据锁存器输出的低8 位地址,实现16 位地址总线,即64kB 范围的内的寻址。

由于CPU不可能同时执行读和写操作,所以读、写信号不可能同时有效。[page]

四、常见单片机编址电路

1、简单地址扩展

51 单片机的P2 口可以直接作为高8位地址总线使用,在一些简单系统电路中,常使用P2口直接编址驱动。

下面以使用数据缓冲器74LS273 驱动数码显示为例,分析P2 口编址驱动的静态数码显示电路的设计。

一位LED 数码显示单元电路如图3 所示。

 

WR 与A8( P2.0) 相或提供74LS273的时钟信号,当执行“MOVX @DPTR,A”指令时,地址信息由DPTR 寄存器确定,会出现有效的写信号WR,只有当地址A8 为满足“0”时,写信号才可以作为74LS273 的时钟信号输入,完成数据锁存。

P2 口为A8~A15 的8 位地址线,很容易扩展到8 只LED 数码管,WR 信号分别与A8~A15 按或关系连接,每位地址线均为低电平有效,即可实现8 个有效地址。

该方案电路简单,但有效地址数太少,不适用于复杂系统设计。

2、低8 位地址锁存

通常的设计电路是使用8D 锁存器74LS373 实现地址锁存,74HC573 与之逻辑功能相同,只是引脚布局不一样,使用74HC573 布线更容易。

74LS373 真值表如图4所示。

在输出允许OE 为L、控制使能LE 为H 时,输出为跟随状态;

OE 为L、LE 为L 时,输出为保持状态。

地址锁存电路如图5 所示。OE 接地,LE 接单片机的ALE脚将产生满足时序的低8 位地址信号。

执行以下三条指令会得到如图6所示的时序图。

MOV DPTR,# 0FF55H; 低8 位地址为55H

MOV A,# 0AAH; 待发送数据0AAH→A( 55H 取反)

MOVX,@DPTR,A; A 中的0AAH送地址为0FF55H 的对象中会。

从图6 中可以看出,P0 口先送55H,在ALE 下降沿实现地址锁存,随后送出数据0AAH,在WR 有效( 低电平) 期间锁存器输出低8 位地址55H,P0 口送出数据0AAH。

3、带译码器的复杂地址接口电路

理论上高8 位地址线可以产生256 个有效地址,如何实现地址“扩展”呢? 地址扩展准确描述是地址译码,例如3 根地址线可以译码成8 个地址,4根译码成16 个有效地址。这里选择3-8 译码器实现地址译码,电路图以及对应的编址如表1 所示。

五、单片机总线编址电路实例

带总线扩展接口的单片机系统,包括外部32k RAM 扩展、LCD1602 接口、输入输出口。

带编址扩展的单片机最小系统电路如图7 所示。[page]

使用74HC573 锁存低8 位地址;74138 实现8 个地址扩展,74138 的A、B、C 接A8 ~A10,E1 接A15, E2、E3 接地常有效,得到0F8FFH 到0FFFFH8 个地址( 无关位用1 表示) 或者8000H 到8700H( 无关位用0 表示) 。

32k RAM 接口如图8 所示。

D0~D7 接数据总线P0 口,地址线A0~A14接单片机地址总线低15 位,单片机地址线A15 接RAM 片选信号,低电平有效,这样RAM 地址分配从0000H 到7FFFH,与74138 译码地址不冲突。

LCD1602 接口电路如图9 所示。

RS、RW 分别接A12、A13,使能信号编址为Y7,这样LCD 的四个驱动地址( 数据读写和命令读写) 为0CFFFH 到0FFFFH ( 无关位为1) 或者8700H 到0B700H( 无关位为0)。

有些时候单片机引脚不够用,还要进行扩展,输入口扩展电路如图10 所示。

利用74HC573( 74LS373) 的高阻态功能,将其输出Q0~Q7 接P0 口,在满足总线地址读操作中,可以把输入InPORT的数据读入单片机的累加器,地址为0F8FFH 或8000H。

输出口扩展电路如图11 所示。

利用74LS273 数据锁存功能,在满足总线地址写操作中,可以把单片机累加器里的数据写入273 锁存输出,地址为0F8FFH 或8000H。由于所用控制总线不同,可以和输入共用地址。

六、结束语

总线扩展是设计单片机控制电路必须掌握的技术,大量的特殊功能IC都支持总线接口, 如ADC0809,TLC7528,DDS 器件AD9851 等。

总线接口的要点就是在严格的控制时序下,总线被分时复用,以实现复杂系统设计。

关键字:51单片机  总线时序  编址电路 引用地址:51单片机总线时序

上一篇:51单片机片外扩展RAM
下一篇:单片机动态扫描显示器电路

推荐阅读最新更新时间:2024-03-16 13:19

ARMLinux(mini2440)串口与51单片机的9位串口通讯
当51单片机的串口模式在方式2或方式3时为9位通讯方式,即当串行数据第9位为 1 时,前8位数据指示的是用来和主机通讯的从机地址;当串行数据第9位为 0 时,前8位数据则用为真正的数据。具体请参考: https://www.eeworld.com.cn/mcu/2011/0621/article_4424_1.html 而FriendlyARM的mini2440可以设置的数据位数为5~8位,即CS5,CS6,CS7,CS8。关于Linux串口的编程教学请参见: http://www.adamjiang.com/pukiwiki/index.php?Linux串口编程详解#ec39e271 查阅了一下前人的做法,有两种:1.硬方
[单片机]
ARMLinux(mini2440)串口与<font color='red'>51单片机</font>的9位串口通讯
基于51单片机的数控电源设计
  本文介绍了以51系列单片机为控制单元,以数模转换器DAC0832输出参考电压,以该参考电压控制电压转换模块LM350的输出电压大小。该电路设计简单,应用广泛,精度较高等特点。 引言   目前所使用的直流可调电源中,几乎都为旋纽开关调节电压,调节精度不高,而且经常跳变,使用麻烦。利用数控电源,可以达到每步0.1V的精度,输出电压范围0~15V,电流可以达到2A。   系统结构 图1:硬件系统结构图   对选用芯片说明   DAC0832是一款常用的数摸转换器,它有两种连接模式,一种是电压输出模式,另外一种是电流输出模式,为了设计的方便,选用电压输出模式,如电路图所示,Iout1和 Iout2之间接一参考电压,VREF输
[单片机]
基于<font color='red'>51单片机</font>的数控电源设计
51单片机模拟串口的三种方法
随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51系列只提供一个串口,那么另一个串口只能靠程序模拟。 1. 本文所说的模拟串口, 就是利用51的两个输入输出引脚如P1.0和P1.1,置1或0分别代表高低电平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置1,各种数据位和校验位则根据情况置1或置0。 2. 串口通信的波特率,说到底只是每位电平持续的时间,波特率越高,持续的时间越短。如波特率为96
[单片机]
C51单片机在电机转速测量仿真系统中的设计
单片机电机转速测量系统仿真系统采用单片机中T1计数器对转速脉冲进行计数。定时器T1 工作于外部事件计数方式,对转速脉冲计数; T0 工作于定时器方式。每到1 s 读1 次计数值,此值即为脉冲信号的频率,根据式( 1) 可计算出电机的转速。转速检测装置的软件系统主要包括: 测速主程序、数据处理子程序和显示子程序。单片机上电后,系统进入准备状态。首先进行初始化,然后读取脉冲数据进行运算,将转速显示在LCD上。需要这款仿真及C语言程序的爱好者可从文章配图左上角网址上了解。 该单片机电机转速测量系统仿真仿真采用测频法“M法”测量电机转速。即在一定测量时间T内,测量脉冲发生器(替代输入脉冲)产生的脉冲数m1来测量转速,计算式如下:n=
[单片机]
C<font color='red'>51单片机</font>在电机转速测量仿真系统中的设计
51单片机 1602液晶显示静态字符
#include reg52.h #define LCD1602_DB P0 typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; sbit LCD1602_RS = P1^0; sbit LCD1602_RW = P1^1; sbit LCD1602_E = P1^5; void initLCD1602(); void LCDShowStr(uchar i, uchar j, uchar * pCh); void LCDWaitRdy(); void
[单片机]
51单片机中断入口地址在c语言中的表示
函数类型 函数名(随便) 中断标识(不同的数字代表不同中断入口) 例如: void INT () interrupt 0 //外部中断0 {} void INT () interrupt 1 //定时/计数器0 {} void INT () interrupt 2 //外部中断1 {} void INT () interrupt 3 //定时/计数器1 {} void INT () interrupt 4 //串口 {} interrupt X 其中X表示中断号, 0表示外部中断0 1表示定时器0溢出中断 2表示外部中断1(/INT1) 3表示定时器1溢
[单片机]
51单片机快速入门指南】4.4.3:Madgwick AHRS 九轴姿态融合获取四元数、欧拉角
STC15F2K60S2 22.1184MHz Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 上位机:Vofa+ 1.3.10 移植自AHRS —— LOXO,算法作者:SOH Madgwick 传感器的方向 源码 所用MCU为STC15F2K60S2 使用内部RC时钟,22.1184MHz stdint.h见【51单片机快速入门指南】1:基础知识和工程创建 软件I2C程序见【51单片机快速入门指南】4: 软件 I2C 串口部分见【51单片机快速入门指南】3.3:USART 串口通信 MPU60
[单片机]
【<font color='red'>51单片机</font>快速入门指南】4.4.3:Madgwick AHRS 九轴姿态融合获取四元数、欧拉角
AT89S51单片机并行I/O端口的扩展
1 引言 单片机面向工业控制领域,控制功能强,在工业测控系统、智能仪表、智能通信产品、智能家用电器和智能终端设备等领域得到广泛应用。最常用的80C51系列单片机有4个并行端口(P0,P1,P2,P3端口),但对稍复杂的应用系统,真正可供用户使用的并行端口只有P1端口,且常因扩展I2C和SPI的器件需占用P1端口,迫使用户不得不扩展并行端口以满足实际需要。 这里研究80C51系列单片机中的AT89S51并行I/O端口的扩展,采用并行可编程接口器件Intel 8155扩展并行I/O端口,并在扩展的I/O端口上实现数码管动态显示。 2 系统设计 2.1 系统硬件设计 Intel 8155与AT89S51接口方法(图1):P
[单片机]
AT89S<font color='red'>51单片机</font>并行I/O端口的扩展
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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