|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、总线概述
. m( f3 ]; ` G+ B: T计算机系统是以微处理器为核心的,各器件要与微处理器相连,且必须协调工作,所以在微处理机中引入了总线的概念,各器件共同享用总线,任何时候只能有一个器件发送数据(可以有多个器件同时接收数据) 。% i' g2 S. f. \. Q
计算机的总线分为控制总线、地址总线和数据总线等三种。而数据总线用于传送数据,控制总线用于传送控制信号, 地址总线则用于选择存储单元或外设。) U$ a7 _% B6 P
二、单片机的三总线结构
$ s$ c6 ~( t9 p' o51系列单片机具有完善的总线接口时序,可以扩展控制对象,其直接寻址能力达到64k( 2的16次方) 。在总线模式下,不同的对象共享总线,独立编址、分时复用总线,CPU 通过地址选择访问的对象,完成与各对象之间的信息传递。
7 Y7 j. r* x3 i' H# Z& ~ 3 O3 ~/ Y7 X' Q4 b |" l R
单片机三总线扩展示意如图1 所示。
: G2 }( x" ^9 j3 y1、数据总线; S- H2 m8 C3 n- r& b8 H1 o
51 单片机的数据总线为P0 口,P0 口为双向数据通道,CPU 从P0 口送出和读回数据。
( E1 I3 J/ y Z- a* M" S2、地址总线- h. U2 }4 T2 d3 H( \ j
51 系列单片机的地址总线为16 位。3 g+ |8 W; u0 C1 ]2 r( `: D: O6 b! Z
为了节约芯片引脚,采用P0 口复用方式,除了作为数据总线外,在ALE 信号时序匹配下,通过外置的数据锁存器,在总线访问前半周期从P0口送出低8位地址,后半周期从P0 口送出8 位数据。
1 q/ g ?/ U: [高8位地址则通过P2 口送出。. Y% w0 ~) p* o+ U
3、控制总线
2 Z, O$ \, z# P1 r) }1 b51 系列单片机的控制总线包括读控制信号P3.7 和写控制信号P3.6 等,二者分别作为总线模式下数据读和数据写的使能信号。! W$ G% I4 r' \/ d; j* _$ @
三、单片机总线时序分析* v! _9 c, E- O% ]
51 单片机总线时序如图2 所示。
: ?* [2 K2 y& X7 n1 k* n![]()
% f0 Y8 T7 r& |- {6 x从图2 中可以看出,完成一次总线( 读写) 操作周期为T,P0 口分时复用,在T0 期间,P0 口送出低8 位地址,在ALE 的下降沿完成数据锁存,送出低8位地址信号。在T1 期间,P0 口作为数据总线使用,送出或读入数据,数据的读写操作在读、写控制信号的低电平期间完成。
) {5 ]7 T5 ]. c/ V# q; x3 p+ v需要注意的是,在控制信号( 读、写信号) 有效期间,P2 口送出高8位地址,配合数据锁存器输出的低8 位地址,实现16 位地址总线,即64kB 范围的内的寻址。$ D T6 Y" b& W9 ^) y4 U& C' _
由于CPU不可能同时执行读和写操作,所以读、写信号不可能同时有效。
. Q) s5 a# \' H' O& G8 }四、常见单片机编址电路6 v3 W9 u/ v) Z# x5 b4 ~# H9 l* c% n
1、简单地址扩展
* U% h. u3 R5 A8 Z7 Z* k) V8 \& d51 单片机的P2 口可以直接作为高8位地址总线使用,在一些简单系统电路中,常使用P2口直接编址驱动。 _! ?1 B" @ d: a5 W5 Y3 D2 J+ D
下面以使用数据缓冲器74LS273 驱动数码显示为例,分析P2 口编址驱动的静态数码显示电路的设计。
) {! r( U3 i& h; E; |% H* k一位LED 数码显示单元电路如图3 所示。3 m& F! P4 C6 e; `4 _, y
![]()
9 `9 j3 c* B# G3 W; k; hWR 与A8( P2.0) 相或提供74LS273的时钟信号,当执行“MOVX @DPTR,A”指令时,地址信息由DPTR 寄存器确定,会出现有效的写信号WR,只有当地址A8 为满足“0”时,写信号才可以作为74LS273 的时钟信号输入,完成数据锁存。6 {; Q4 m; X5 c9 p# w( N, v6 B! S
P2 口为A8~A15 的8 位地址线,很容易扩展到8 只LED 数码管,WR 信号分别与A8~A15 按或关系连接,每位地址线均为低电平有效,即可实现8 个有效地址。9 h1 _7 O4 m) i) A, t
该方案电路简单,但有效地址数太少,不适用于复杂系统设计。
2 ]5 D. x6 u$ G. i! b2 J# \2 f- x7 ]2、低8 位地址锁存" P$ @. f2 o( s! K6 Z9 ?
通常的设计电路是使用8D 锁存器74LS373 实现地址锁存,74HC573 与之逻辑功能相同,只是引脚布局不一样,使用74HC573 布线更容易。6 X$ t# o; @% V
74LS373 真值表如图4所示。
' C1 Y [: N6 X0 R$ V![]()
6 Z3 R$ l( c( i- O; F在输出允许OE 为L、控制使能LE 为H 时,输出为跟随状态;- R- `, ^% [" o. T# K W4 @, N
OE 为L、LE 为L 时,输出为保持状态。
. ^7 t6 V: w* C4 K5 Z地址锁存电路如图5 所示。OE 接地,LE 接单片机的ALE脚将产生满足时序的低8 位地址信号。6 r, [, X/ X; E0 ~
执行以下三条指令会得到如图6所示的时序图。
" S0 z' N& [& M5 h, Y) ]% b' GMOV DPTR,# 0FF55H; 低8 位地址为55H
" M3 c' K) h6 z. q O0 H( QMOV A,# 0AAH; 待发送数据0AAH→A( 55H 取反)1 L [3 h6 L3 Y
MOVX,@DPTR,A; A 中的0AAH送地址为0FF55H 的对象中会。: e7 G+ g8 N( w5 ]) F$ N% q" R
![]()
' p# ]3 F; }( f* M' ?从图6 中可以看出,P0 口先送55H,在ALE 下降沿实现地址锁存,随后送出数据0AAH,在WR 有效( 低电平) 期间锁存器输出低8 位地址55H,P0 口送出数据0AAH。% P* G1 H- e" u( Q% K
3、带译码器的复杂地址接口电路
+ ]# I7 f) x4 n" Q6 h& o" P理论上高8 位地址线可以产生256 个有效地址,如何实现地址“扩展”呢? 地址扩展准确描述是地址译码,例如3 根地址线可以译码成8 个地址,4根译码成16 个有效地址。这里选择3-8 译码器实现地址译码,电路图以及对应的编址如表1 所示。
8 y9 k: z) u. l8 G: t1 s2 u) Q![]()
; o4 S5 N) a9 t6 f1 }7 i五、单片机总线编址电路实例" l/ h6 w0 T9 P3 f. K: G7 e9 R
带总线扩展接口的单片机系统,包括外部32k RAM 扩展、LCD1602 接口、输入输出口。
9 m; P" I6 |# L, I' a带编址扩展的单片机最小系统电路如图7 所示。
$ u- U! o; k; q; d( k8 H; v! v![]()
4 B" k5 S2 h$ @. `4 ? \% ~! m使用74HC573 锁存低8 位地址;74138 实现8 个地址扩展,74138 的A、B、C 接A8 ~A10,E1 接A15, E2、E3 接地常有效,得到0F8FFH 到0FFFFH8 个地址( 无关位用1 表示) 或者8000H 到8700H( 无关位用0 表示) 。0 _( e3 v9 Z( D( r4 o k
32k RAM 接口如图8 所示。
( A) U! u& b9 |2 F+ H I( [( E9 Q) M
D0~D7 接数据总线P0 口,地址线A0~A14接单片机地址总线低15 位,单片机地址线A15 接RAM 片选信号,低电平有效,这样RAM 地址分配从0000H 到7FFFH,与74138 译码地址不冲突。
4 g! [9 t) }1 S$ ULCD1602 接口电路如图9 所示。$ l! }5 ?- D& o/ l' C) @/ R+ f
![]()
3 E8 K2 N! a3 X) a* v% eRS、RW 分别接A12、A13,使能信号编址为Y7,这样LCD 的四个驱动地址( 数据读写和命令读写) 为0CFFFH 到0FFFFH ( 无关位为1) 或者8700H 到0B700H( 无关位为0)。
$ z( @ g8 s1 Q$ i ^- b+ @+ N9 A有些时候单片机引脚不够用,还要进行扩展,输入口扩展电路如图10 所示。/ P* \4 \8 m4 p' }+ L( D+ W& N
![]()
: l# | o( y( i' X0 ~1 c- M利用74HC573( 74LS373) 的高阻态功能,将其输出Q0~Q7 接P0 口,在满足总线地址读操作中,可以把输入InPORT的数据读入单片机的累加器,地址为0F8FFH 或8000H。! |8 J8 {7 Y: c$ E x1 B
输出口扩展电路如图11 所示。* K7 v& u2 h: V4 [
![]()
P, r) ^8 A* n6 O$ t9 K V利用74LS273 数据锁存功能,在满足总线地址写操作中,可以把单片机累加器里的数据写入273 锁存输出,地址为0F8FFH 或8000H。由于所用控制总线不同,可以和输入共用地址。
. u3 u, |+ `0 A/ \; T六、结束语
: K! U1 L8 J. r) O" N7 j总线扩展是设计单片机控制电路必须掌握的技术,大量的特殊功能IC都支持总线接口, 如ADC0809,TLC7528,DDS 器件AD9851 等。
! N, \7 @- P! ?8 f' P总线接口的要点就是在严格的控制时序下,总线被分时复用,以实现复杂系统设计。
: q2 l* B# z7 m9 l |
|