原创 基于MCU的多机并行通信

2009-8-13 19:33 2643 5 5 分类: MCU/ 嵌入式
摘要:单片机的多机串行通信应用十分广泛,但在串行口被占用又要进行多机通信时就要采取其它措施。本文介绍了一种使用并口进行多机通信的方法,在实践中已得到验证。 电子园51单片机学习网].c!W7_4gZ OV
关键词:MCU,并口通信 电子园51单片机学习网U6|/E.N Q(}'CaVZH
电子园51单片机学习网@B_7A"vK([8i4D$L
1. 问题的提出 电子园51单片机学习网&UrYK2\l1l#V$iW^ h
    某系统中使用了三路串行接口的传感器(GPS、压力和风向)及三路模拟电流(4~20mA)接口的传感器(湿度、温度和水位)。现需要将这些数据汇总后通过串口上传给PC机,并且要求每路信号数据都能够实时独立的接收。 电子园51单片机学习网m.M2[ Y#f SfLJ!f)`
电子园51单片机学习网`k-B%_Cd
2.系统设计
)^%ZC?&?1M^#f7~44606
    经过分析,我们分别使用一块2051单片机接收各路串口传感器的数据,同时使用一块多路高精度ADC对转换成电压的温度等信号采样,系统结构图如图1所示。主从机之间的具体管脚连接参见图2。 电子园51单片机学习网G)J4[5FB.U+X)i9ZoZ
6136_2009040613324916CAd.jpg
.tD6oAzi44606
R*B_@,ci([r44606
1H"tmX9ill DQ44606    图1 系统结构框图 电子园51单片机学习网 Ub(c8u|`$Q]
电子园51单片机学习网~F:v#n[!S
    系统中51单片机作为主机控制着整个系统的动作并发起每次通信,每块2051作为实时从传感器获取数据并在主机控制下完成通信。主机和各从机之间通过并口连接通信。主从机工作流程如下:
!s!{|)H l#S4d44606
a%S#K$N [-?+mFW(S w44606·   主机上电初始化后,通过P0口发送从机地址选中一路从机并等待应答。
r\5r?7RAnyrR44606·   各从机上电初始化后接收传感器串行数据,然后通过P1口接收主机地址,当地址与自己相符后,调整245方向并由245向主机发送传感器数据,此过程由握手线负责控制。 电子园51单片机学习网 A ML5Qf#z
·   从机发送完所有数据后再次将245方向改为接收,重新开始接收传感器数据和主机发送的地址。 电子园51单片机学习网 DS [$Z4KF*Wc^
·   主机按照同样方式接收所有各路2051数据。 电子园51单片机学习网ZtII4{$gi
·   串口数据接收完毕后,主机控制AD转换并获取三路信号数据。 电子园51单片机学习网.a%L8VVo+ZF W
·   主机将所有数据集合成规定格式后通过232发送给PC机。
!vtz ESV U0m44606电子园51单片机学习网-mHu;I-N!b C
     主从机的工作流程图如图3所示: 电子园51单片机学习网DE |Q7E\~0fZ,T
6136_200904061332492KaFR.jpg
N Rc2s_f44606                     图2 主从机间的管脚连接
*R I_GJ#Lq446066136_2009040613324938U23.jpg
+{!qi5GTP!o4c44606           图3 主从机工作流程图
7N[0E0B4TQj e*h;c1|44606电子园51单片机学习网Lq#x4Yk [A(_6z+A
主要程序代码分别如下,主机为: 电子园51单片机学习网 Lv_%Xoy u)N
 
/S`a|Gi44606…… 电子园51单片机学习网 S'q$G}#D Y [6RB%R
sbit adc_busy=P3^2; 电子园51单片机学习网y;|c.w2mE~
sbit adc_hben=P3^3; 电子园51单片机学习网5b-G-X\WF7Q:_9uY.`
sbit hand1=P2^0;//GPS 电子园51单片机学习网^ ~&\ Su9\O6NP~
sbit hand2=P2^1;//PRESSURE
z\ t$x+`BsQ I4X X44606sbit hand3=P2^2;//WIND
X q3~+z y5m d44606sbit hand4=P2^3;//BAK1
6rgo7Y.j*Yd44606电子园51单片机学习网?9~_ U@Wx
uchar idata gps[96]; 电子园51单片机学习网6H@5~7i.i y
uchar idata pressure[9]; 电子园51单片机学习网RN$LSCy
uchar idata wind[26]; 电子园51单片机学习网 _cK+Bl BG
uchar idata tem[6];
Wk5hh9MP44606uchar idata hum[6]; 电子园51单片机学习网3R'fO:p2Kw
uchar idata water_tem[7]; 电子园51单片机学习网,TDX5\%r
…… 电子园51单片机学习网qgRVGA
P1=0x01;
IpLOLf c44606for(i=0;i<96;i++){ 电子园51单片机学习网R.KBdI wx9W
    while(hand1!=0); 电子园51单片机学习网"PA0B a H;o5~ g
    gps=P1;
/E cu t,f44606    while(hand1==0); 电子园51单片机学习网N'K4k.l)}R+}bD
} 电子园51单片机学习网6| V5[tK:R{
sendbyte2pc(’#’); 电子园51单片机学习网YJ5ffJI)f*Q9{
sendbyte2pc(’#’); 电子园51单片机学习网q!W#~ nx{ H%u?#w
sendbyte2pc(’1’);
8|-cg9xR:D[44606sendbyte2pc(’ ’);
c1Ma [)Ir-\44606sendbyte2pc(’ ’); 电子园51单片机学习网7r2o$q#a8U(?:c.g
send2pc(gps,96); 电子园51单片机学习网;g0l5l7T0\.p Sy
…… 电子园51单片机学习网&d-oD_'r
从机为:
5ElHsV?8Oo44606……
(A ^#x*K"\.j,{)D i,H44606sbit dir=P3^2; 电子园51单片机学习网 C BQY0?
sbit en=P3^3; 电子园51单片机学习网#BOS.HR7n
sbit hand=P3^4; 电子园51单片机学习网ng L2_&X+_+Cd
…… 电子园51单片机学习网\u2SvTN
loop:
E4K0dD:d;D7hg Mr44606    RI=0;i=0; 电子园51单片机学习网N0?'[+s!Re
    while(!RI);//wait for receiving ready
:Y)[rV u;{%]-I44606    if (SBUF!=0x40)//data head 电子园51单片机学习网 Vwth6REA\+N J
        goto loop; 电子园51单片机学习网.^ Ju9nQ%I_
    data_str=0x40;i++;
n#`7|F L y44606电子园51单片机学习网?tv~Pmm#E%s&t
    RI=0;
/S0U*i9o7_^%b44606    while(!RI);//wait for receiving ready 电子园51单片机学习网~*SlRi
    if (SBUF!=0x40)//data head 电子园51单片机学习网cL@#e:QU#C
        goto loop;
r2x7AJ h44606    data_str=0x40;i++;
;I;C8Y5Q4[?:X1TwB44606    do{
b%[L#O7T ii:|44606        RI=0;
M+|q"_uy jc8]wE44606        while(!RI);
q |1k ?(By(i]8P @44606        data_str=SBUF; 电子园51单片机学习网W"`.cb9Kw ?&v:V
        i++; 电子园51单片机学习网#cQ1pq(cK1W~
    } 电子园51单片机学习网N8lWzE"a!W
    while(i!=96); 电子园51单片机学习网 nf*J!y~b)d f4a

B8Wl:ri7t W0k2e44606    dir=0;en=0;//enable data receiving    P1=0xff;
sT,e%S4[*fC44606    for(i=0;i<100;i++){
1@2zuP&C,Y @44606        if(P1==0x01)
0[YGEZ-k |@44606            goto send; 电子园51单片机学习网%|.vt*^$D!]}6OY
    }
}4Ua"pFqN44606    en=1; 电子园51单片机学习网MU|z,^o*{+} i
    goto loop; 电子园51单片机学习网yr Zgc([]
send: 电子园51单片机学习网#|Wm}hQ\(h6T}
    for(i=0;i<96;i++){ 电子园51单片机学习网-q)e1C8J.m{PXwQ
        dir=1;
Q?t8u zE)vo.J$Cs'n)A44606        P1=data_str;
.]h2F TGndoy/E44606        hand=0;
d#GY!Sj7m44606        for(j=0;j<5;j++){;} 电子园51单片机学习网#H)Zu6G @|5l `8P(`
        hand=1; 电子园51单片机学习网$J&J ZQi8fT uI
    } 电子园51单片机学习网u7|^?T1Z/svo
    en=1;dir=0;
Pj~3j6ur2j-`$F*XA44606    goto loop; 电子园51单片机学习网 S9O6@5BE&n
……
-h6u*b'GR9W u44606  电子园51单片机学习网w3X:Ktq
3.结语 电子园51单片机学习网Z&o8]6Rc?w
    本文中提出的并行通信方法具有电路结构简单清晰、程序容易实现等特点,已经在实际中证明可行。在调试过程中可以借用串口助手等软件接收数据来验证通信的可靠性。
j'EY S YJ"x44606
A5z1PA ~ZE44606参考文献 电子园51单片机学习网 Z[ nn7sQ`:Ol
[1]    王建校,王建国.51系列单片机及C51程序设计[M].北京:科学出版社,2002. 电子园51单片机学习网&t%^g,c _
[2]    徐维祥,刘旭敏.单片机微型计算机原理及应用[M].大连:大连理工大学出版社,2002.7.
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条