登录站点

用户名

密码

51单片机的串行口扩展方法

已有 170 次阅读  2013-04-16 14:57   标签单片机 

摘要:在以单片机为核心的多级分布式系统中,常常需要扩展单片机的串行通信口,本文分别介绍了基于SP2538专用串行口扩展芯片及Intel8251的两种串行口扩展方法,并给出了实际的硬件电路原理及相应的通信程序段。电子园51单片机学习网KB*M.w })z3H3c5_


#Kk-g2C c-g$Ug44606
io0F*^ S L44606关键词:串口扩展;单片机;SP2538;Intel8251

F M7X7n f-s44606

(SI3[!T ` b `.y44606 

!^e0`*? dc/Je ?44606电子园51单片机学习网!p PF^ W/P


*?8~I9P t9Zf(W446061 引言电子园51单片机学习网W q(\0^ M Q#a"t


-V+_3HX*r(l44606
.{wB(ZZ ??0y-D O44606   
A#v5~vI'H)X44606    在研究采场瓦斯积聚模拟试验台的过程中,笔者设计了主从式多机采控系统结构。主从式多机控制系统是实时控制系统中较为普遍的结构形式,它具有可靠性高,结构灵活等优点。当选用单串口51单片机构成这种主从式多机系统时,51单片机一方面可能要和主机Computer通信,一方面又要和下位机通信,这时就需要扩展串行通道。本文具体介绍了两种串行通道的扩展方法。

%U3G|#i/x%]1W!n$E"N44606

;XUs#p#jdll#i44606 

4lax7qzmn @[ [44606

8{6T zU%kj?446062 串行口的扩展方法

{`L&FG-`6H44606电子园51单片机学习网7V+|w!?t;Z:?^Q

电子园51单片机学习网(aYn` p
   电子园51单片机学习网JEf+dAL"Y6H
    常用的标准51单片机内部仅含有一个可编程的全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。当以此类型单片机构成分布式多级应用系统时,器件本身的串口资源就不够用了。笔者在实际开发中,查阅了有关资料,总结出如下两种常用而有效的串行通道扩展方法。

BLc9p%F}+i.r5rLK#U44606电子园51单片机学习网1qy.HB)cUV:tP


m#J2b*iK44606电子园51单片机学习网_SOk g1j'C WPJ
2.1 基于SP2538的扩展方法

C@ v fB(w*G;U jF44606电子园51单片机学习网a p7Zlx9B xd8a-E k

电子园51单片机学习网\qDh D5omD ?
    SP2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于UART串口通信的外围智能模块及器件较多,而单片机或DSP原有的UART串口又过少的问题而推出的。利用该器件可将现有单片机或DSP的单串口扩展至5个全双工串口。使用方法简单、高效。电子园51单片机学习网%SEj(z"^-wB NYS


8` B/L6Ts%kZ44606电子园51单片机学习网gtJq9AV
在应用SP2538扩展串行通道时,母串口波特率K1=2880*Fosc_in,单位是MHz,且Fosc_in小于20.0MHz, 在SP2538输入时钟Fosc_in =20.0MHz时母串口可自适应上位机的56000bps和57600bps两种标准波特率输入。子串口波特率K2=480*Fosc_in。

6qO8@a xnQ~5[3rk44606

7dQ;lt? y44606
B/va,o p44606    母串口和所有子串口都是TTL电平接口,可直接匹配其他单片机或TTL数字电路,如需连接PC机则必须增加电平转换芯片如MAX202 、MAX232 等。SP2538具有内置的上电复位电路和可关闭的看门狗监控电路。上位机写命令字0x10可实现喂狗,写命令字0x15关闭看门狗,初次上电后看门狗处于激活状态或写命令字0x20激活看门狗监控功能。上位机可通过芯片复位指令0x35在任何时候让芯片进行指令复位,也可通过芯片睡眠指令0x55在任何时候让芯片进入微功耗睡眠模式以降低系统功耗。初次上电后芯片不会自行进入睡眠模式,但只能由上位机通过母串口任意发送一个字节数据将其唤醒,其他子串口不具备这一功能。电子园51单片机学习网li,x{&_9RvVtO

电子园51单片机学习网&y X;P$?1Qu

电子园51单片机学习网)vX)t2i g
      图(1)是AT89C52单片机与SP2538的电路连接,图中,AT89C52的全双工串口与SP2538的母串口5相连,该串口同时也作为命令/数据口。SP2538的ADRI0、ADRI1、ADRI2分别与AT89C52的P2.3、P2.4、P2.5口相连,可用于选择发送数据是选择相应的串口0~4;ADRO0、ADRO1、ADRO2与P2.0、P2.1、P2.2相连,用于判断接收的数据来自哪一个串口。 SP2538的时钟频率选为20.0MHZ,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。电子园51单片机学习网Hy Q\Lh

电子园51单片机学习网X^0E-{0L$b(y0Q-X9`sY

电子园51单片机学习网Y;i-k-Y!T/K
    下面是与上述硬件电路相关的接口程序,该程序用A51汇编语言编制,程序仅说明了中断方式下对子串口0(TX0、RX0)的操作,其它子串口类似。

#l#G-`%V*H3X44606

?4rY$jo!S q44606
9[d7tg(s8|-w5V6T44606TBLOCK  DATA   20H
8O$rb/X6hi:y44606RBLOCK  DATA   30H电子园51单片机学习网){q{q \
LENGTH  DATA   14H
F0^9w6r?-rp44606               …
`5Aorb{!|44606TXR_REV_SEND:  CLR   ES
.`In8^Q44606               JBC   RI,RECEIVE电子园51单片机学习网8@2g S4kjOt x*h2S
               CLR   TI电子园51单片机学习网A r*`^lSjHaC)U
               MOV   A,@R0
5S;vFo:vh3P44606               CLR   P2.0  ; 写数据到"SBUF"前必须先置欲发送子串口的地址
5hu(E5mA Ph44606               CLR   P2.1电子园51单片机学习网%JLv\;})j*`i(be
               CLR   P2.2
/m$Q'^`zo44606               MOV   SBUF,A电子园51单片机学习网6JR*T&AUl;Wq
               DJNZ  R2,NEXT电子园51单片机学习网N.|d"} lC
               SJMP  $
rE6XTA }.T)aE5v44606NEXT:          INC   R0电子园51单片机学习网~Lra+P"IV
               RETI
n#h"g%aWTSQ44606RECEIVE:       MOV   A,P2
{|'\\;B&Q^ Qn44606               AND   A,#31H   ;判断是否为子串口0电子园51单片机学习网fS:_7y8o
               JNZ   ELSE
}mwOkr qO44606               MOV   A,SBUF电子园51单片机学习网)_a`3a%s9N1r(XH1a K
               MOV   @R1,A电子园51单片机学习网*YW S#Es4N
               INC   R1电子园51单片机学习网x3_uh Ui3S/u
               RETI
Y1{wLt7cV44606 电子园51单片机学习网hb'O3s9tV i5MN*a

电子园51单片机学习网4Y{"M?+]e`$S$c

 电子园51单片机学习网 A"hRC Tn'ZlM P


1@/F#O6u,?5\44606电子园51单片机学习网 |!We4I)BGf8y`^
图(1) AT89C52与SP2538的电路连接

&Q"P~4GJDV44606

#Eg"? Fb(`44606 电子园51单片机学习网J7S oe)` U

电子园51单片机学习网 D*l6?#D w!SRA

2.2 基于Intel8251的串行口扩展方法

f GK zd(r44606

#q1j1_@&{ t V;A+U44606
4D#w/C@wy0f7At44606    上面基于SP2538的串口扩展方法可以说是一种串行的扩展方法,这里基于Intel8251的扩展方法则是一种并行的方法。Intel8251是一种通用的同步/异步发送器(USART),它的工作方式可以通过编程设置。能够以同步或异步串行通信方式工作,能自动完成帧格式。电子园51单片机学习网AUnlO:r

电子园51单片机学习网rKexA? [


0N2D @ `'K'XEHo:T44606    Intel8251具有独立的接收/发送器。在异步方式下,用于产生8251内部时序的时钟CLK输入至少应为发送或接收时钟的4.5倍。接收/发送(RXC/TXC)时钟应为波特率的1倍、16倍或64倍(由8251的工作方式字设定)。

\QxssyPu/i3{44606电子园51单片机学习网)Y4?#X1Ajq

电子园51单片机学习网'GT]jD)e
    图(2)是用Intel8251扩展一个串行通道的电路原理,图中,11.0592MHZ晶振经ALE6分频后于、组合,产生1.8432MHZ的时钟频率,分别作为8251与8253的时钟输入,若设定8251通信波特率为9600bps,波特率因子为16,则需要 153.6KHZ的接收/发送时钟频率,该频率可由8253的OUT0产生。电子园51单片机学习网aLcnk$UB{


dW_$h3CK44606电子园51单片机学习网$Z[(YF"[!~;b5d
    下面的A51程序段说明了如何设置8253使其产生153.6KHZ的方波,以及如何用8251收/发数据:
U{2Cz#X;j44606;设置8253的程序段:电子园51单片机学习网+Dd)L[/Iq b|:L


)l(N1b"m_~44606电子园51单片机学习网d`/g8]:|
MOV   A,#36H         ; 计数器0输出方波控制字
!Mc+kU;Q9sw(t44606                   MOV   DPTR,#0FFFFH   ; 指向控制字寄存器电子园51单片机学习网8N q+Ys"Ag#Q]
MOVX  @DPTR,A
)P)Ror$o,v8qN M44606MOV   DPTR,#0FFFCH   ; 指向0计数器地址电子园51单片机学习网x.``Fw7fz7A)C(`
                   MOV   A,#0DH
%N6Jv6o~44606                   MOVX  @DPTR,A电子园51单片机学习网!N4r} tW
                   MOV   A,#0
%e(U*T.AZ%o!v8]44606                   MOVX  DPTR,A电子园51单片机学习网4[[`@*M\E `/r
                   SETB  P1.0电子园51单片机学习网:f t.F&n0A#sG~1Q$f(P
;操作8251的程序段:
EcW }[R;Z^{O2M44606                   …
Q2U gjoY1])A;Y;C4_LOB44606       START:      MOV   DPTR,#7FFFH   ;8251控制、命令口地址电子园51单片机学习网8?"~Io;z8hQ8}t
                   MOV   A,#5EH        ;一个停止位,奇校验,8位数据,异步*16电子园51单片机学习网 z:JBQ(n+~
                   MOVX  @DPTR,A       ;写入方式字
}3j&k1S3C |U g;L44606                   MOV   A,#15H
~)aPF5W]zC44606                   MOVX  @DPTR,A       ;命令字,启动发送和接收器电子园51单片机学习网%FJe:?(AK Y
                   …
q1vt E3_"O n#d44606        LOOP:      SJMP  LOOP          ;等待8251中断
6G%O(Tt b$m#L44606        8251_INT:  ;现场保护
q"DD0m4|#P44606                   MOV   DPTR,#7FFFH
:rW {}'}H;eG1q44606                   MOV   A,@DPTR电子园51单片机学习网)~ _ktR9Sqa0pe2y
                   JB    ACC.0,TX_INT电子园51单片机学习网L2S4M_(l \#vdDru
                   JB    ACC.1,RX_INT
Y/Sc-S v%R@s-L!Kn44606        INT_EXIT:  ;恢复现场
2xd!Ha2A,t)]#DF44606                   RETI电子园51单片机学习网;`Fy@5o bj Y
        ;发送数据
/@6{WMq2_q8lpq8T._44606TX_INT:    MOV   DPTR,#7FFEH     ;8251数据口地址电子园51单片机学习网?#E%A9Ljy'~
                   MOV   A,20H
gL S*v.H E#N_44606                   MOVX  @DPTR,A电子园51单片机学习网fl4lmI
                   …
NU0cIf44606                   AJMP  INT_EXIT
T+\ao"\ZE V l44606        ;接收数据
,B%zz{B44606RX_INT:    MOV   DPTR,#7FFEH
.F-fb%I8UX/{%c44606                   MOVX  A,@DPTR电子园51单片机学习网f3]4TQC ^,\
                   MOV   30H,A
f\S^$~ ]44606                   …电子园51单片机学习网+ZS#o~c3rnyQ&m-V
                   AJMP  INI_EXIT电子园51单片机学习网w [ S'C{;MY
    电子园51单片机学习网b$`q7eea)|E0g
  
?HEDCI,_44606图(2)用8251扩展串行通道的硬件电路原理电子园51单片机学习网"d TwlVg-g8_;E5s V


On j^i/oVF44606
[]"e7p&b9H*U44606                电子园51单片机学习网|.bx(]Q4?&p
3 结束语

a+}9hcj44606

a5Q{*JtA5yH1oD(wO44606电子园51单片机学习网B&w1gG"M-f{:w3u
    以单片机为核心的多级分布式系统的应用越来越广泛,上面讨论的两种串行口的扩展方法为此类多串口应用领域提供了一个良好的解决方案。笔者在实际中采用基于SP2538的扩展方法,设计了采场瓦斯积聚模拟试验台的多级分布式采控系统,效果良好。

(f%Qg2P5V&m44606电子园51单片机学习网^!x5f|] F

 

,| f]~4rS0W44606电子园51单片机学习网|hno [ ^2Ad)WP

参考文献电子园51单片机学习网 K*[xW&]s

电子园51单片机学习网Q p#H+q'MY7cA

[1] 孙和平,杨宁,白晶  单片微机原理与接口技术  冶金工业出版社  2003.1
`5bkT&jKq44606[2] 胡汉才  单片机原理及其接口技术  清华大学出版社  1996.7
"Fo O1D N)RC44606[3] SP2538数据手册  成都视普科技有限公司  2003.2.12

UH3P c A44606

上一篇: stm32应用例程 下一篇: 51单片机串行通讯中波特率的自动检测

分享 举报