找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5660|回复: 5
收起左侧

两个51单片机,两机的串口交叉连线,双机互发数据

[复制链接]
ID:53011 发表于 2013-8-13 17:21 | 显示全部楼层 |阅读模式
两个51单片机,两机的串口交叉连线,双机互发数据串口通信是单片机和其它系统交换数据的主要形式。
上周有几位网友问到单片机双机通信的问题,做而论道为此特意设计了软件、硬件,进行了测试。
下列程序,经过编译、硬件仿真调试成功。
要点如下:
两个51单片机,两机的串口交叉连线,双机互发数据;
发送方大约每隔 1s 发送一个字节,内容递增(或递减);
接收方采用两位数据显示器显示收到的数据。
网友实验时,显示函数应该根据自己的设备进行改写。
下面的程序,既包括了发送功能,也包括了接收功能,也就是说:进行双机通信实验时,两个单片机使用同一个程序就可以。
//=========================================
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Rbuf = 0;
uchar code dis_7[] = {
    0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,         //共阴段码
    0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71, 0x00};
    //段码表 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, off
//-------------------------------
void delay(uint k)
{
    uint i, j;
    for(i = 0; i < k; i++)  for(j = 0; j < 200; j++);
}
//-------------------------------
void Display(uchar x)
{
    P2 = 0xFF;
    P0 = dis_7[x / 16];      //输出高四位
    P2 = 0xFE;  delay(2);
    P2 = 0xFF;
    P0 = dis_7[x % 16];      //输出低四位
    P2 = 0xFD;  delay(2);
}
//-------------------------------
void UART()interrupt 4
{
    if(RI) {
      RI = 0;                //清除中断标志
      Rbuf = SBUF;
    }
    if(TI) {
      TI = 0;                //清除中断标志
    }
}
//-------------------------------
void main()
{
    uchar t1, i;
    SCON = 0x50;             //串口工作在方式1
    PCON &= 0x7F;            //SMOD=0
    TMOD = 0x20;             //定时器1当做波特率发生器
    TH1 = 0xFD;              //初值, 9600 @ 11.0592MHz
    TL1 = 0xFD;
    TR1 = 1;
    ES = 1;
    EA = 1;
    while (1) {
      for (i = 0; i < 100; i++)//多次循环,便于观察与发送
        Display(Rbuf);       //显示收到的数据
      SBUF = t1;             //发送数据
      P1 = ~t1;              //本机显示
      t1++;
      // t1--;
    }
}
//=========================================

回复

使用道具 举报

ID:51827 发表于 2013-8-17 01:00 | 显示全部楼层
学习了
回复

使用道具 举报

ID:245554 发表于 2017-12-11 09:16 | 显示全部楼层
怎么没有原理图,没有原理图。
回复

使用道具 举报

ID:260637 发表于 2017-12-18 16:06 | 显示全部楼层
双机通信can通信可以实现吗?
回复

使用道具 举报

ID:72088 发表于 2018-7-2 09:18 | 显示全部楼层
xbd1763688799 发表于 2017-12-11 09:16
怎么没有原理图,没有原理图。

看程序就知道了,原理图不需要,只看IO功能就行了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表