,C6FQ#S8P43630 关键词:单片机; 多机通讯;I/O口电子园51单片机学习网Es+ot;i5Q#l X
电子园51单片机学习网|`D9QfU/z3r&k电子园51单片机学习网K f.U[+C1[)`!t3MJ
电子园51单片机学习网/NN4Vi,y7q1 传统的多机通信方式电子园51单片机学习网 E'O&C%a7lQ@,Hj
电子园51单片机学习网G,P'dKX)Vv:\,Q在实际工业应用中,经常遇到需要多台计算机配合才能完成的数据采集与控制系统的任务,而多台计算机配合主要是通过多台计算机之间的通信来实现的。为此必须将它们按实际需要组成一定形式的网络。多机通信网络通常有5种网络形式:星型、树型、总线型、环型、分散型网络结构。它们各有优缺点,其中总线型网络结构以可靠性好、接口简单、组成灵活和控制简单等优势,在实际应用中使用最多。
j0J0F:},}*Z^1T43630 电子园51单片机学习网6CD3V+] Th#_ V总线型网络结构中主机与分机进行串行通信可以利用查询方式或中断方式。用查询方式工作时,所有分机只能处于监听或通讯状态,资源比较浪费。实际使用时大都采用中断方式。图1是采用中断方式,利用单片机的串行口方式3及SM2和RB8的配合完成主从式的多机通信的网络结构图。从图中可以看出,原则上主机可以管理N台分机,但考虑到各机的发送端的驱动能力,一台主机一般可以管理8台分机。对于串行口方式2和3,每帧11位,其中第9位是可编程的,利用它的奇偶校验,也可以进行多机通信。用作多机通信时,对于方式2和3,若SM2=1,且接收的第9位RB8=0,则RI不启动,即接收到的全帧作废,当接收到的RB8=1时,接收有效;而当SM2=0时,无论接收到的RB8是什么,接收都有效。电子园51单片机学习网#in8kK/un
_W-{0h#^43630与查询方式不同,采用中断方式时,分机不必一直处于监听状态,而可以进行相应的数据采集或控制等其他工作。当主机有通讯要求时,可通过P10向各分机发送中断请求(要求通讯)信号;而从机在工作时,如果允许主机与之通讯,则可开外部中断及总中断1,否则关闭中断1。
Z T7vD#D8g/i*B43630 电子园51单片机学习网|*|K X2n-a G7d这种中断方法解决了分机盲目等待的问题,分机也能立即响应主机的通讯请求,但在某些应用场合有相当的局限性。
l;L5}E)Z'kA43630!E`1}'W.T8gIQ|9m43630 (1)当分机通信波特率要求不一样时;
Q N Tfh;Dc,V43630 电子园51单片机学习网R7Qmc-h)H#_(2)主机(或分机)还要通过串行口与别的设备进行数据交换时。
2li M!byb*L qb43630 电子园51单片机学习网6@!b+Z ss;xwD以上介绍的方法就难以实现。这是因为:不管是主机还是从机它们的串行口已被使用,跟远程计算机或串行设备进行通信已没有串口用。下面介绍的方法就很好地解决了这些问题。电子园51单片机学习网ix4XwjC"Y5_1P
l0}7O/S~#qml _(W'Qqy43630电子园51单片机学习网9o-US Mu9]/u x A9[Bl{M7Y
电子园51单片机学习网Vjr(gU1w} }E'h
电子园51单片机学习网tO] f:l%vT{ A2 利用单片机的P1口进行串行通信
"jJ8Z*P1S3h mu#c9a43630 电子园51单片机学习网1t9R N,_C$~L为实现单片机之间的串行通讯,同时主机、分机还与其他串行设备进行通信,作者利用AT89C51的P1口中的3条普通I/O线来模拟进行异步串行数据通信,取得了很好的效果,串行通信网络结构见图2。
)_uA;d%a Y1}"xE:K!j43630 电子园51单片机学习网/[-`+kC_K c R其中:主单片机的P1.0作为发送端,P1.1作为接收端,P1.2作为中断请求端,而各分机也以P1.0作为发送端,P1.1作为接收端;并事先为每一个分机确定一个地址编码信息。当主机要与某一个分机进行通信时,主机通过P1.2发出一个中断请求信号,延时相应的时间后,向P1.0发送模拟的数据帧,数据帧中包含要进行通讯的分机地址编码信息。各分机接收了来自INT1的中断请求信号后,进入中断服务程序,分机检测P1.1端,当P1.1端由高变低时,说明主机发送的数据帧的起始位开始,分机模拟异步接收方式跳过起始位依次接收各数据位。接收完来自主机的地址信息后,与本机地址信息比较,如果与本机地址相同,则等待准备接收数据或命令;如果接收到的地址与本机地址不符,则跳出中断服务程序,返回到主程序继续原来的工作。电子园51单片机学习网7n ]"c0G o][
*R kq:u(j z0zC;~43630电子园51单片机学习网`oe3@ udV
u3b2x5t?43630电子园51单片机学习网O"APChP|!R
电子园51单片机学习网S|7j-Q3Nw[!z这种方式特别适用于主单片机要循环与各个分机进行数据通信的场合。这样就解决了波特率不能随意设置的问题,同时各单片机的串口可以当作它用。其中波特率可以随意设定包含下面三重含义:电子园51单片机学习网S~ i0HW|7@$H7V2e1D
]p} YV+B#D43630(1)主机可以利用RXD、TXD同远程PC机或数传电台等进行通信,波特率可任意设置;
b`$o mwh43630"r3m?F3o43630(2)分机也可与其他的串行设备进行通讯,波特率也可以随意设置;
O#Ll W^L b43630(dw9Ln$kF@43630(3)主机和分机之间的波特率可以任意设置。
0T[1SZ H/d9^43630 电子园51单片机学习网v7s7RW#{!J)sz3 具体编程实现
(x+dD6m}[G43630 电子园51单片机学习网"k U{R!uXc*U#]!sE下面给出通过P1.0发送一帧和通过P1.1接收一帧数据的子程序,供参考。
,]#M,W*Z-sl/Hn436305X{ B3^/iD+D U2[43630
0u&c-OItZ:L43630 电子园51单片机学习网5a3RE Zs/\电子园51单片机学习网4O5K,P?$t-Iv*@$o }
电子园51单片机学习网vuOX ^7yA;p电子园51单片机学习网XZ)G!N%W
电子园51单片机学习网cq+khn sY E4 使用中应注意的一些问题
N'[UW]9s[W"NE43630$Qh,BYs+_3uj/Xz m43630(1)延时时间的长短是根据波特率的变化而变化的,延时子程序的循环次数与单片机所采用的晶振频率有关。电子园51单片机学习网y#G$`a4GC?w |x
电子园51单片机学习网"W| F&t/Xg(2)以上提供的程序是针对12 MHz晶振、9600 b/s通讯的。DELA子程序延时时间为50 μs 。实际应用时,可以根据不同波特率和不同的晶振选择不同的延时时间来模拟异步串行通讯。<!--[endif]-->电子园51单片机学习网;N m:U!l3z3UF9|
T | Fg*y(`[%uq43630(3)上面的多机通信是利用P1口来模拟异步串行通信,每一帧都有起始位,同时数据采集在一位的中间进行的,所以延时时间允许有一定的误差,而不影响接收数据的准确性。工程上常用波特率传送一个二进制数据位所需要的时间见下表。电子园51单片机学习网 @r|3o K
3Kh/P iw |*Aw43630 电子园51单片机学习网F8`&GR:D U&Y
电子园51单片机学习网T$XF'\!a_
6c^o3L,x{ B-\Hn436305 结语电子园51单片机学习网A3gW d#?Ktrx!w
a7Yd&fC9n43630该项技术已经成功应用于海洋领域深海数据采集系统中,不同的分机连接了不同的进口仪器设备,实现串行数据采集,取得了满意的效果。电子园51单片机学习网 V bs4b7P:x3E^
5b)W|8@2y:G@S43630电子园51单片机学习网)x8@ mq0M;R
电子园51单片机学习网d6Da+y$R9D{Ft.~参考文献
A3j%j6?:qR6~ |43630 电子园51单片机学习网AV.`P5\_8WG1 陈汝全,等.单片机实用技术.北京:电子工业出版社,1993
hV J3Ww43630z%w'dc,].m bQ1n436302 陈粤初,等.单片机应用系统设计与实践.北京:航空航天大学出版社,1993
3GiQ p5tBFv8A/[43630
文章评论(0条评论)
登录后参与讨论