51单片机 多机通讯原理+代码

多机通讯

具体目的及原理

目的:使用一个51单片机作为主机通过面包板链接达到同时控制3个从机的目的。
原理:主机按下任意一个按键通过串口传输协议给所有的从机发送一个数据当做从机是否执行相应指令的开关,每个从机收到对应的指令后执行相对应的操作就行。
注意事项:
面包版的链接须在同一行内进行,因为面包版的同一行是互相连通的,若分开链接则从机不会收到信号的传输
接线时注意是会三合一杜邦线的可以主机的TX接口接到从机的RX接口,不会三合一杜邦线的可以通过面包板来达到同样的效果。

实现代码

主机发送代码:

#include<reg52.h>
sbit k1 = P3^4;
sbit k2 = P3^5;
sbit k3 = P3^6;
void delay(unsigned int xms)	//延迟函数
{
	unsigned i,j;
	for(i=xms;i>0;i--)
		for(j=112;j>0;j--);
}

void Send (unsigned char date)	//发送函数
{
		SBUF = date;
		while (!TI);
		TI = 0;
}

void main (void)
{
	TMOD = 0x20; //设置计数器工作方式2
	SCON = 0x40; //设置工作方式1
	PCON = 0x00; //SMOD=0.32分频
	TH1 = 0xfd;	 //波特率为6900
	TL1 = 0xfd; 
	TR1 = 1;	 //打开计数器
	ES = 1;		//打开接收中断
	EA = 1;		//打开总中断
	while(1)
	  {
	    if(k1==0)	//判断k1是否按下
			{
				delay(20); //延时20ms 
				if(k1==0)  //再次判断k1是否按下
				{
					SBUF=0xA1; //发送0xA1 
				}
				while(!k1);		//直到k1松开
			}
			if(k2==0)	//判断k2是否按下
			{
				delay(20);
				if(k2==0)
				{
					SBUF=0xA2;	//发送0xA2 
				}
				while(!k2);
			}
			if(k3==0)	//判断k3是否按下
			{
				delay(20);
				if(k3==0)
				{
					SBUF=0xA3; //发送0xA3
				}
				while(!k3);
			}
		}
	}

从机流水灯代码:

#include<reg52.h>
#define uint unsigned int
#define on 0
#define off 1
unsigned char date;
sbit led1=P1^0;	//初始化流水灯
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit led6=P1^5;
sbit led7=P1^6;
sbit led8=P1^7;
void delay(uint xms)
{
	uint i,j;
	for(i=xms;i>0;i--)
		for(j=112;j>0;j--);
}

void ConfigUART(u
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C51单片机多机通信是指通过C51单片机实现多个单片机之间的数据传输和通讯。在实际应用中,我们可以通过几种方式来实现C51单片机多机通信。 首先,我们可以使用串行通信方式来实现C51单片机多机通信。通过配置C51单片机的串行口,可以通过串行通信协议(如UART)来实现多个C51单片机之间的数据传输。其中一个单片机负责发送数据,其他单片机负责接收数据,通过设定不同的地址,可以实现多个单片机之间的通信。 其次,我们还可以使用并行通信方式来实现C51单片机多机通信。通过配置C51单片机的并行口,可以将多个单片机连接在一起,通过共享数据总线来实现数据的传输和通讯。不同的单片机使用不同的时序和地址来进行操作,从而确保多个单片机之间的数据传输的准确性。 另外,我们还可以使用无线通信方式来实现C51单片机多机通信。通过使用无线模块(如WiFi、蓝牙、Zigbee等),可以实现多个C51单片机之间的无线数据传输和通讯。通过配置并调试无线模块,可以实现多个C51单片机之间的远程通信和控制。 需要注意的是,在实现C51单片机多机通信过程中,我们需要合理设计通信协议、地址分配和数据传输方式,以确保通信的稳定性和可靠性。另外,还需要注意电源供应和防干扰措施,以保证系统的正常运行和数据的准确传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值