单片机双机通信完成的只是点对点之间的数据传输,但是,在实际应用中,经常会出现由多个单片机构成的多机通信系统。
单片机多机通信是指由两台以上单片机组成的网络结构,可以通过串行通信方式共同实现对某一过程的最终控制。多机通信的网络拓扑形式较多,可分为星型、环型和主从式多机型等多种,其中以主从式多机型应用较多。主从式多机通信系统中,一般有一台主机和多台从机。主机发送的信息可以传送到各个从机或指定从机,从机发送的信息只能被主机所接收,各从机之间不能直接通信,其结构形式如下图所示。
由图可知,主机的RXD、TXD与所有从机的TXD、RXD端相连接,主机发送的信号可被各从机接收,而各从机发送的信息则只能由主机接收。
在多机通信系统中,首先要解决的是如何识别从机的问题,其次才是如何发送数据等。
识别从机一般都是通过地址来实现,即给从机分别设定地址信息。MCS-51系列单片机串行通信中的SM2位(多机通信控制位)专门用来识别不同的从机。
MCS-51系列单片机串行口方式2、3很适合主从式的通信结构。当串口以方式2或方式3工作时,发送和接收的每一帧数据都是11位(如下图所示):1位起始位(0),8位数据位(低位在前),一位可设置的第9位数据和一位停止位。其中,第9位数据位可用于识别发送的前8位数据是地址帧还是数据帧,为1则为地址帧,为0则为数据帧,此位可通过对SCON寄存器的TB8位赋值来置位。当TB8为1时,单片机发出的一帧数据中的第9位为1,否则为0。
作为接收方的串行口同样工作在方式2或方式3状态,它的SM2和RB8(接收到的第9位)的组合有如下的特性。
·若从机的控制位SM2设为1,则当接收数据的第9位是l时,即地址帧时,数据装入SBUF,并置RI为l,向CPU发出中断申请;当接收数据的第9位是0时,即数据帧时,不会产生中断,信息被丢弃。
·若SM2设为0,则无论是地址帧还是数据帧都将产生RI=1中断标志,8位数据均装入SBUF。
利用这个特征,单片机在进行主从式多机通信时,系统初始化后,所有从机的SM2均置为1,并处于允许串行口中断接收状态;主机要与某一从机通信时,首先向所有从机发出地址帧,由于各从机的SM2=1,并处于允许串行口中断接收状态,各从机均接收该地址帧,从机接收到该地址帧后,申请中断,转向中断服务程序,各从机在中断服务程序里判断本机地址是否与主机所发送的地址相同,若相同,该从机将SM2置为0,并向主机发送回应答信号。此时,只有主机和被呼叫的从机之间能交换数据。因为若从机的地址与主机发送的地址不同,则该从机继续维持SM2为1,在主机后来发来的数据和命令时,其第9位数据位(RB8)为0,由于SM2为l,从机不会发生中断。
关键字:单片机 多机 串行通信方式
引用地址:
单片机间多机串行通信方式
推荐阅读最新更新时间:2024-03-16 15:56
基于51单片机的温度采集系统(Labview做上位机)
做该设计的初衷是为自己的毕设打基础,因为我的毕设要做一个探测机器人,需要对某一地区的各种环境参数进行检测,然后通过WIFI返回到上位机。所以为了搞懂温度传感器以及练习上位机的设计,花了几天时间做了一个很简单的采集系统。今天把它拿出来跟各位小伙伴们分享,希望对各位有所帮助,同时也希望大佬们指出不足,起到一个相互学习,相互促进的作用。该系统原理是:51单片机把ds18b20传感器将采集到的温度值(十六进制)通过串口发送到labview,labview对单片机发来的数据做简单的处理然后显示。 上位机界面 上位机(接受程序) 简单的硬件连接 数据纪录 串口部分: void main() {
[单片机]
新塘N76E003单片机在Keil中下载程序以及下载引脚复用
1.安装好下载器相关的其他驱动,就是用下载工具可以下载。 2.打开 Keil ,插上下载器,这时会提示升级固件,一路同意就好,最后还需要拔下再插上,然后在 Keil中选择: 3.点击“Settings”,如下图设置: 4.设置好之后就可以直接在 Keil 中下载程序了。 最后是关于两个下载引脚复用的问题: 在下载设置中这样选择,下载完成后,断电重新上电就可以当作正常IO使用了,程序中不用书写代码设置。
[单片机]
单片机(51) 数码管0-9循环显示(软件延时)
#include regx51.h unsigned char code led ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void delay_50ms(unsigned int i){ while(i--); } void main(void){ char i=0; while(1){ for(i=0;i 10;i++){ P1=led ; delay_50ms(60000); } } }
[单片机]
一种电模拟流场实验仪的设计
在采油过程中,分支井之间的相互干扰,成为影响分支井产能的主要因素。为了更好的研究分支井的相互干扰对产能的影响,本文根据水流和电流现象之间的相似性,设计了一种研究在采油过程中流压的实验仪。 针对采油过程中可能出现的对称式多分支井,任意夹角的双分支井和鱼骨型分支井,本文进行了一系列的模拟实验,实践证明实验仪操作简单,实验结果快速、准确,对油层流动的研究起到很好的辅助作用。 1.引言 为了更好的研究在采油过程中油气层在地层的流动情况,电模拟作为一种最广泛的实验模拟手段得到越来越多的应用。为了更好的研究,提高实验精度,本文在研究现有的实验装置的基础上,将实验电路进行改进,设计出一种新型的电模拟流场试验仪,目前该试验仪在长江大学石油工程学院
[单片机]
单片机开发中的C语言技巧(下)
4.防御性编程 嵌入式产品的可靠性自然与硬件密不可分,但在硬件确定、并且没有第三方测试的前提下,使用防御性编程思想写出的代码,往往具有更高的稳定性。 防御性编程首先需要认清C语言的种种缺陷和陷阱,C语言对于运行时的检查十分弱小,需要程序员谨慎的考虑代码,在必要的时候增加判断;防御性编程的另一个核心思想是假设代码运行在并不可靠的硬件上,外接干扰有可能会打乱程序执行顺序、更改RAM存储数据等等。 4.1具有形参的函数,需判断传递来的实参是否合法。 程序员可能无意识的传递了错误参数;外界的强干扰可能将传递的参数修改掉,或者使用随机参数意外的调用函数,因此在执行函数主体前,需要先确定实参是否合法。 1. int exam_fun( un
[单片机]
51单片机学前基础知识
一.单片机的概念: 在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 二.单片机的用途: 工业自动化:数据采集,测控技术; 智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等; 消费类电子产品:洗衣机、电冰箱、空调机、手机等; 凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等。 三.怎么学单片机: 实践第一;补充必要的理论知识,即缺什么补什么;做工程项目积累经验。(可在网络上搜索些题目,也可自己有什么想法大胆的去试验。)。
[单片机]
MB89163单片机及其在遥控器中的应用
MB89160/160A是日本富士通公司推出的新型8位单片机系列,由于它采用CMOS技术、高密集成工艺和模块化结构,所以具有功耗低、适用性广和性价比高的特点。因此,特别适合遥控器智能仪表和电池供电设备的应用。 MB89163是MB89160/160A系列中一种型号,它有QFE-80和MQFP-80两种封装。其片内具有16K字节的ROM、512字节的RAM。电源电压为2.2V-6.0V,主时钟和子时钟分别为4.194MHz和32.768KHz。 二、内部结构及特点 MB89163内部功能框图如图1所示。从图中看出,该芯片是多功能的单片机,它由LCD控制/驱动器、A/D转换器 、定时器、串行口、PWM控制器
[单片机]
pic单片机 TIMER0控制流水灯
p IC 单片机 TIMER0控制流水灯 #include pic.h __CONFIG(0x3B31); unsigned char num=0,i=0; void init() { TRISB=0x00; TRISC=0x00; PORTB=0xFE; PORTC=0xFE; } void TMR0_init() { OPTION=0x07; //0有 上拉电阻 000 0 111 1:256 分频 GIE=1; PEIE=1; T0IF=0; TMR0=250; T0IE=1; } void interrupt TIMER0() { T0IF=0; i
[单片机]