51单片机总线时序概述

发布者:asd999ddd最新更新时间:2021-01-17 来源: eefocus关键字: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不可能同时执行读和写操作,所以读、写信号不可能同时有效。


四、常见单片机编址电路


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 所示。



使用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单片机的LED旋转显示器制作
下一篇:关于4×4矩阵式键盘路的改进

推荐阅读最新更新时间:2024-11-12 12:38

8051单片机指令系统按功能可分为几类?具有几种寻址方式?
MCS-51单片机 指令 系统按功能可分为5类: (1)数据传送指令  (2)算术运算指令   (3)逻辑运算和移位指令   (4)控制转移指令 (5)位操作指令 MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表: 立即寻址 程序存储器 直接寻址 内部RAM低128个字节; 特殊功能寄存器SFR 寄存器寻址 R0~R7;A、B、DPTR、C 寄存器间接寻址 @R0、@R1、SP 内部RAM、堆栈指针SP @R0、@R1、@DPTR 外部RAM 变址寻址 @A+PC、@A+DPTR 程序存储器 相对寻址 P
[单片机]
51单片机系列知识9--定时器、计数器(2)
二 1. 我们在对某一脉冲用单片机进行计数时,如何确定该脉冲允许的频率上限? 设置为计数工作方式时,通过管脚T0(P3、4)或T1(P3-5)对外部脉冲信号计数。当输入脉冲信号产生负跳变(或正跳变,具体情况要根据你对寄存器的设置),定时器的值加1。每个机器周期的S5P2期间,对外部输入进行采样,如在第一个周期中采得的值为1,而在下一个周期中采得的值为0,则在紧跟着的再下一个周期的S3P1期间,即24个振荡周期,因此外部输入的计数脉冲的最高频率为振荡频率的1/24。 对外部输入信号的占空比并设有什么限制,但为了确保某一给定的电平在变化之前至少被采样一次,则这一电平至少要保持一个机器周期。(Tcy为机器周期) △ 结论
[单片机]
ADC0832模数转换51单片机程序与电路图
#include AT89x51.h #include intrins.h #define uint unsigned int #define uchar unsigned char //******************adc0832****************************// sbit CS=P2^3; //使能。 sbit CLK=P2^2;// 时钟 sbit DO=P2^1; // 数据输出 sbit DI=P2^0;//数据输入 char CC = 11001001 ; uchar tab ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
[单片机]
ADC0832模数转换<font color='red'>51单片机</font>程序与电路图
51单片机-前期准备
1.学习前提 单片机是需要与程序打交道的,这个需要您先掌握很基础的C语言知识,即便我们讲解程序的执行过程尽量详细,但对于没有任何C语言知识基础的同学来说这将是举步维艰的。 所以您必须掌握以下最基本的知识 1.数据类型 2.十六进制,十进制,二进制之间的转换 3.程序的运行顺序 4.if,else,while,for,switch等语句 2.硬件 如果您对模电数电知识没有相关概念,以及对电子元器件尚不知晓,这些都不是学习单片机的困难,我们都会在教程里简单介绍硬件基础,您也可以参考学习宋老师的《手把手教你学51单片机》的前三章,这些只要您对中学物理电路和电路基础知识有一定的了解都可以看得懂。我们也鼓励大家学会在网上查找相关
[单片机]
51单片机之大杂烩
/************************************************************ 程序实现的功能: 用矩阵按键控制 8*8 LED 点阵和数码管, 实现按下1到9的数字键数码管从100或200。。。或900的 倒计时,一秒钟减1,直到减到0为止。 同时LED点阵以呼吸灯的方式渐明渐暗,显示“王”字, 当按下数字键0时,LED点阵关闭,同时数码管停止计数 并显示结果。 作者:宁静致远 ************************************************************/ #i
[单片机]
8051单片机两种减法指令的格式和使用
1.带借位减法 指令 SUBB A,Rn ;(A) (A)-(Rn)-(C),以下类同。 SUBB A,direct SUBB A,@Ri SUBB A,#data 注意:减法之前先清零C,减法指令无不带借位减法指令。 2.减1指令 DEC A ;(A) (A)-1 ,以下类同。 DEC Rn DEC @Ri DEC direct 例、设(R0)=7FH,在内RAM中,(7EH)=00H,(7FH)=40H 执行:DEC @R0 DEC R0 DEC @R0 结果为: (R0)= 7EH,(7EH)=0FFH,(7FH)=3FH。
[单片机]
基于51单片机实现74LS164串入并出移位寄存器
对于串入并出移位寄存器以下是我个人的理解和实际开发工程中得出的经验 图一: 由我上图所画 可以得出 一个8位串入数据输入, 8位并行输出。可以看出先移的是高位, 就是第一个位进去的到最后会在最高位。 图为时序图 A B 是输入 clean 是清0端,低电平有效。就是如果给个低电平那么输出都为0强制都输出0。一般接高电平 clock 是时钟 上升沿有效 由上图可以得出如果 A B 有一个为低电平 ,那么阻止新数据的进入,并在下一个时钟上升沿时,将 QA 端清0. 如果A B端都为高电平则会使能信号输入,并在下一个时钟脉冲的上升沿之前使输出端QA置1.每一个时钟脉冲上升沿到来时,输出端的数据会移动一个位
[单片机]
基于<font color='red'>51单片机</font>实现74LS164串入并出移位寄存器
51单片机(利用return)实现判断数据头来接收
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: return ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200808 ---- @ModifiedTime: 20200808 ----
[单片机]
<font color='red'>51单片机</font>(利用return)实现判断数据头来接收
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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