串口通信-多机通信系统 - 单片机
单片机多机通信实现
![单片机多机通信实现](https://img.taocdn.com/s3/m/b6a9aded85254b35eefdc8d376eeaeaad1f316b5.png)
单片机多机通信实现随着科技的进步和应用的需求,单片机成为了嵌入式系统中不可或缺的一部分。
在很多应用场景中,我们需要将多个单片机之间进行通信,以实现数据的传输和协同工作。
本文将介绍单片机多机通信的实现方法。
一、串口通信串口通信是最常见和简单的单片机通信方式之一。
单片机通过串口将数据以字节的形式传输给另一个单片机。
常见的串口通信协议有RS232、RS485和UART等。
其中,RS232是单片机与计算机之间的标准通信协议,而RS485适用于单片机与多个设备之间的通信。
串口通信需要注意以下几个方面:1. 波特率的设置:通信双方需要设定相同的波特率,以确保数据的准确传输。
2. 数据格式的规定:包括数据位、校验位和停止位等,通讯双方需要设置相同的数据格式。
3. 通信控制的实现:通过编程控制单片机的串口发送和接收功能,实现数据的传输。
二、I2C通信I2C(Inter-Integrated Circuit)是一种串行总线协议,它可实现多个单片机的通信和协同工作。
I2C通信需要引入一个主设备和多个从设备的概念,主设备控制通信的起止和数据的传输,从设备用于接收和发送数据。
I2C通信需要注意以下几个方面:1. I2C地址的分配:每个从设备通过唯一的地址与主设备进行通信,地址的分配需要事先规划好。
2. 数据的读写操作:通过发送特定的控制信号,主设备可以向从设备发送读或写的命令,并接收从设备返回的数据。
3. 时序的控制:I2C通信依赖于时钟信号和数据信号的同步,通信双方需要根据协议规定好时序的控制。
三、SPI通信SPI(Serial Peripheral Interface)通信是一种全双工、同步的通信协议。
它通过4根线进行通信,包括时钟、数据输入、数据输出和片选信号。
SPI通信适用于多个主设备与多个从设备之间的通信,可以实现数据的传输和设备的控制。
SPI通信需要注意以下几个方面:1. 主从设备的选定:SPI通信中,每次只有一个主设备能够与从设备进行通信,其他设备通过片选信号进行选择。
单片机多机串口的通信
![单片机多机串口的通信](https://img.taocdn.com/s3/m/bd588357be23482fb4da4c88.png)
摘要本文详细介绍了基于RS-485总线的单片机与多台单片机间的串行通信原理、实现方法和相应的通信硬件、软件设计。
该设计是由单片机与单片机组成的主从控制系统,其中单片机做为上位机对下位单片机是实现控制和监视功能。
它包括通信和控制两个功能模块。
单片机作为下位机在整个系统中属于从属地位,主要用来接收上位机的命令。
由于此通信的单片接口是RS232的9针接口,且下位机数目有限(32台)。
所以本设计采用了RS485总线以及RS232转RS485的协议芯片以满足长距离多机通信,本文讨论了总线接口转换、主从式通信协议设计方法,给出了采用中断式处理的通信过程流程图,并叙述了设计过程中必备的绘图软件Protel DXP的应用,以及编辑源代码软件keil uVision2的应用,实现了单片机对多个单片机组成采集终端的通信与管理。
关键词:单片机单片机RS-485 通信AbstractThe communication 、realized method and corresponding design of hardware and software between 单片and multiple MCUs based on RS-485 is described in detai in the article. This design instroduces a pincipal and subordinate control system which is composed of 单片and single chip. Divided from its function, it includes two parts: communication and control, in which 单片is used as master, and MCUs is used as slave so as to receive the single order from the master.The bus interface conversion and the design of master-slave communication protocol is introduced and The program flowchart of communication with interrupt process is also given. In the process of design, the use of unnecessary painter software and code editor software is depicted so that realize the communication and administration between 单片and multiple MCUs which composed collection terminal.Keywords: 单片MCUs RS-485 communication目录第一章绪论 (1)第二章课题实施方案 (2)2.1 系统硬件设计 (2)2.2 系统软件设计 (3)第三章硬件电路设计 (9)3.1 C51单片机结构 (9)一CPU结构 (10)二ROM存储器 (11)三I/O端口 (11)四定时器/计数器 (12)五中断系统 (13)3.1.2 51单片机引脚功能及其连接 (13)3.1.3 51 中断系统 (15)3.1.4 C-51的串行通信 (15)3.2.1串行接口RS232结构与引脚功能 (21)3.3 Protel DXP 2004原理图设计 (23)3.3.1 Protel 2004的基本操作 (23)3.3.2绘制原理图 (25)3.3.3制作芯片原理图库 (27)第四章软件电路设计 (30)4.1 系统的通信协议 (31)4.2 C51编程实现单片机与单片机之间的串行通信 (31)4.3 Windows集成开发环境uVision2 (35)4.3.1启动uVision2 (35)4.3.2创建程序 (36)总结 (41)致谢 (42)参考文献 (43)第一章绪论单片机由于其具有控制功能强、设计灵活和性能价格比高的特点。
单片机多机通信代码
![单片机多机通信代码](https://img.taocdn.com/s3/m/e053e25d11a6f524ccbff121dd36a32d7375c7ae.png)
单片机多机通信代码单片机多机通信是指通过单片机实现多个设备之间的数据传输和通信。
在现代的智能家居系统、工业自动化系统以及物联网等领域,单片机多机通信扮演着重要的角色。
为了实现单片机多机通信,需要首先确定通信的方式和协议。
常见的通信方式包括串口通信、SPI通信、I2C通信等。
在选择通信方式时,需要考虑设备之间的距离、通信速率、通信复杂度等因素。
协议方面,可以使用现有的通信协议,如Modbus、CAN、TCP/IP等,也可以根据具体需求自定义通信协议。
在单片机多机通信的实现过程中,首先需要配置单片机的通信接口。
例如,在使用串口通信时,需要设置波特率、数据位数、停止位数等参数。
接下来,需要编写相应的程序代码来实现数据的发送和接收。
发送数据时,可以使用单片机的串口发送函数将数据发送给其他设备;接收数据时,则需要使用单片机的串口接收函数来接收其他设备发送的数据。
在多机通信中,一台设备可以充当主机,负责控制其他设备的工作,也可以充当从机,接收主机发送的指令并执行相应的操作。
主机和从机之间可以通过发送和接收数据来实现通信。
例如,在智能家居系统中,主机可以控制灯光的开关、温度的调节等操作,而从机则负责接收主机发送的指令并执行相应的操作。
在实际应用中,单片机多机通信可以实现设备之间的信息交互和协同工作。
例如,在工业自动化系统中,可以通过多机通信实现各个设备之间的数据共享和协作,提高生产效率和质量。
在物联网中,可以通过多机通信实现各个物联设备之间的联动和互联,实现智能化控制和管理。
单片机多机通信是一种重要的通信方式,可以实现设备之间的数据传输和通信。
通过合理选择通信方式和协议,并编写相应的程序代码,可以实现设备之间的信息交互和协同工作,从而提高系统的功能和性能。
51单片机多机通信
![51单片机多机通信](https://img.taocdn.com/s3/m/9d5beefd9e31433239689333.png)
一、多机通信原理在多机通信中,主机必须要能对各个从机进行识别,在51系列单片机中可以通过SCON 寄存器的SM2位来实现。
当串口以方式2或方式3发送数据时,每一帧信息都是11位,第9位是数据可编程位,通过给TB8置1或置0来区别地址帧和数据帧,当该位为1时,发送地址帧;该位为0时,发送数据帧。
在多机通信过程中,主机先发送某一从机的地址,等待从机的应答,所有的从机接收到地址帧后与本机地址进行比较,若相同,则将SM2置0准备接收数据;若不同,则丢弃当前数据,SM2位不变。
二、多机通信电路图此处,U1作为主机,U2为从机1,U3为从机2。
三、C语言程序(1)主机程序#include<reg51.h>#include<string.h>#define _SUCC_ 0x0f//数据传送成功#define _ERR_ 0xf0//数据传送失败unsigned char Table[9]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; unsigned char Buff[20]; //数据缓冲区unsigned char temp=0xff;sbit KEY1=P1^6;sbit KEY2=P1^7;//unsigned char addr;//延时1ms函数void delay_1ms(unsigned int t){unsigned int x,y;for(x=t;x>0;x--)for(y=110;y>0;y--);}//缓冲区初始化void Buff_init(){unsigned char i; //将Table里的数据放到缓冲区里for(i=0;i<9;i++){Buff[i]= Table[i];delay_1ms(100);}}//串口初始化函数void serial_init(){TMOD=0x20; //定时器1工作于方式2TH1=0xfd;TL1=0xfd; //波特率为9600PCON=0;SCON=0xd0; //串口工作于方式3TR1=1; //开启定时器TI=0;RI=0;}//发送数据函数void SEND_data(unsigned char *Buff){unsigned char i;unsigned char lenth;unsigned char check;lenth=strlen(Buff); //计算数据长度check=lenth;TI=0; //发送数据长度TB8=0; //发送数据帧SBUF=lenth;while(!TI);TI=0;for(i=0;i<lenth;i++) //发送数据{check=check^Buff[i];TB8=0;SBUF=Buff[i];while(!TI);TI=0;}TB8=0; //发送校验字节SBUF=check;while(!TI);TI=0;}//向指定从机地址发送数据void ADDR_data(unsigned addr){while(temp!=addr) //主机等待从机返回其地址作为应答信号{TI=0; //发送从机地址TB8=1; //发送地址帧SBUF=addr;while(!TI);TI=0;RI=0;while(!RI);temp=SBUF;RI=0;}temp=_ERR_; //主机等待从机数据接收成功信号while(temp!=_SUCC_){SEND_data(Buff);RI=0;while(!RI);temp=SBUF;RI=0;}}void main(){Buff_init();serial_init();while(1){if(KEY1==0){delay_1ms(5);if(KEY1==0){while(!KEY1);ADDR_data(0x01);}}if(KEY2==0){delay_1ms(5);if(KEY2==0){while(!KEY2);ADDR_data(0x02);}}}}(2)从机1程序#include<reg51.h>#include<string.h>#define addr 0x01//从机1的地址#define _SUCC_ 0x0f//数据传送成功#define _ERR_ 0xf0//数据传送失败unsigned char aa=0xff;//主机与从机之间通信标志unsigned char Buff[20];//数据缓冲区//串口初始化函数void serial_init(){TMOD=0x20; //定时器1工作于方式2TH1=0xfd;TL1=0xfd; //波特率为9600PCON=0;SCON=0xd0; //串口工作于方式3TR1=1; //开启定时器TI=0;RI=0;}//接收数据函数unsigned char RECE_data(unsigned char *Buff) {unsigned char i,temp;unsigned char lenth;unsigned char check;RI=0; //接收数据长度while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;lenth=SBUF;RI=0;check=lenth;for(i=0;i<lenth;i++) //接收数据{while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;Buff[i]=SBUF;check=check^(Buff[i]);RI=0;}while(!RI); //接收校验字节if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;temp=SBUF;RI=0;check=temp^check; //将从主机接收到的校验码与自己计算的校验码比对if(check!=0) //校验码不一致,表明数据接收错误,向主机发送错误信号,函数返回0xff {TI=0;TB8=0;SBUF=_ERR_;while(!TI);TI=0;return 0xff;}TI=0; //校验码一致,表明数据接收正确,向主机发送成功信号,函数返回0x00 TB8=0;SBUF=_SUCC_;while(!TI);TI=0;return 0;}void main(){serial_init();while(1){SM2=1; //接收地址帧while(aa!=addr) //从机等待主机请求自己的地址{RI=0;while(!RI);aa=SBUF;RI=0;}TI=0; //一旦被请求,从机返回自己的地址作为应答,等待接收数据 TB8=0;SBUF=addr;while(!TI);TI=0;SM2=0; //接收数据帧aa=0xff; //从机接收数据,并将数据保存到数据缓冲区while(aa==0xff){aa=RECE_data(Buff);}if(aa==0xfe)continue;P1=Buff[1]; //查看接收到的数据}}(3)从机2程序#include<reg51.h>#include<string.h>#define addr 0x02//从机2的地址#define _SUCC_ 0x0f//数据传送成功#define _ERR_ 0xf0//数据传送失败unsigned char aa=0xff;//主机与从机之间通信标志unsigned char Buff[20];//数据缓冲区//串口初始化函数void serial_init(){TMOD=0x20; //定时器1工作于方式2TH1=0xfd;TL1=0xfd; //波特率为9600PCON=0;SCON=0xd0; //串口工作于方式3TR1=1; //开启定时器TI=0;RI=0;}//接收数据函数unsigned char RECE_data(unsigned char *Buff){unsigned char i,temp;unsigned char lenth;unsigned char check;RI=0; //接收数据长度while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;lenth=SBUF;RI=0;check=lenth;for(i=0;i<lenth;i++) //接收数据{while(!RI);if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;Buff[i]=SBUF;check=check^(Buff[i]);RI=0;}while(!RI); //接收校验字节if(RB8==1) //若接收到地址帧,则返回0xfereturn 0xfe;temp=SBUF;RI=0;check=temp^check; //将从主机接收到的校验码与自己计算的校验码比对if(check!=0) //校验码不一致,表明数据接收错误,向主机发送错误信号,函数返回0xff {TI=0;TB8=0;SBUF=_ERR_;while(!TI);TI=0;return 0xff;}TI=0; //校验码一致,表明数据接收正确,向主机发送成功信号,函数返回0x00 TB8=0;SBUF=_SUCC_;while(!TI);TI=0;return 0;}void main(){serial_init();while(1){SM2=1; //接收地址帧while(aa!=addr) //从机等待主机请求自己的地址{RI=0;while(!RI);aa=SBUF;RI=0;}TI=0; //一旦被请求,从机返回自己地址作为应答,等待接收数据TB8=0;SBUF=addr;while(!TI);TI=0;SM2=0; //接收数据帧aa=0xff; //从机接收数据,并将数据保存到数据缓冲区while(aa==0xff){aa=RECE_data(Buff);}if(aa==0xfe)continue;P1=Buff[2]; //查看接收到的数据}}。
51单片机的多机通信原理
![51单片机的多机通信原理](https://img.taocdn.com/s3/m/52f97b7fc950ad02de80d4d8d15abe23482f03dc.png)
51单片机的多机通信原理1. 什么是51单片机的多机通信?51单片机的多机通信是指在多个51单片机之间进行数据传输和通信的过程。
通过多机通信,可以实现不同单片机之间的数据共享和协作,从而实现更加复杂的功能。
2. 多机通信的原理是什么?多机通信的原理是通过串口进行数据传输。
在多个单片机之间,可以通过串口进行数据的发送和接收。
通过定义好的协议,可以实现数据的传输和解析,从而实现多机之间的通信。
3. 多机通信的步骤是什么?多机通信的步骤包括以下几个方面:(1)定义好通信协议:在多机通信之前,需要定义好通信协议,包括数据的格式、传输方式等。
(2)设置串口参数:在单片机中,需要设置好串口的参数,包括波特率、数据位、停止位等。
(3)发送数据:在发送数据之前,需要将数据按照协议进行格式化,然后通过串口发送出去。
(4)接收数据:在接收数据之前,需要设置好串口的中断,然后在中断中接收数据,并按照协议进行解析。
(5)处理数据:在接收到数据之后,需要对数据进行处理,包括数据的存储、显示等。
4. 多机通信的应用场景有哪些?多机通信的应用场景非常广泛,包括以下几个方面:(1)智能家居系统:通过多机通信,可以实现智能家居系统中不同设备之间的数据共享和协作。
(2)工业控制系统:在工业控制系统中,多机通信可以实现不同设备之间的数据传输和控制。
(3)智能交通系统:在智能交通系统中,多机通信可以实现不同设备之间的数据共享和协作,从而实现更加智能化的交通管理。
(4)机器人控制系统:在机器人控制系统中,多机通信可以实现不同机器人之间的数据传输和控制,从而实现更加复杂的任务。
5. 多机通信的优缺点是什么?多机通信的优点包括以下几个方面:(1)实现数据共享和协作:通过多机通信,可以实现不同设备之间的数据共享和协作,从而实现更加复杂的功能。
(2)提高系统的可靠性:通过多机通信,可以实现数据的备份和冗余,从而提高系统的可靠性。
(3)提高系统的扩展性:通过多机通信,可以实现系统的模块化设计,从而提高系统的扩展性。
51单片机串口通信
![51单片机串口通信](https://img.taocdn.com/s3/m/4838296a561252d380eb6ed7.png)
一、串口通信原理串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。
由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。
串口通信的工作原理请同学们参看教科书。
以下对串口通信中一些需要同学们注意的地方作一点说明:1、波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。
MSC-51串行端口在四种工作模式下有不同的波特率计算方法。
其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。
在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。
在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1))其中,SMOD——寄存器PCON的第7位,称为波特率倍增位;TH1——定时器的重载值。
在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。
这要根据系统的运作特点,确定通信的频率范围。
然后考虑通信时钟误差。
使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。
为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。
下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。
则TH1=256-62500/波特率根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。
列计数器重载值,通信误差如下表:因此,在通信中,最好选用波特率为1200,2400,4800中的一个。
2、通信协议的使用通信协议是通信设备在通信前的约定。
单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。
假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。
基于51单片机的多机通信系统设计
![基于51单片机的多机通信系统设计](https://img.taocdn.com/s3/m/cf5db828dcccda38376baf1ffc4ffe473368fd96.png)
基于51单片机的多机通信系统设计多机通信系统是指通过一台主机与多台从机之间进行数据交互和通信的系统。
在本设计中,我们将使用51单片机实现一个基于串行通信的多机通信系统。
系统硬件设计如下:1.主机:使用一个51单片机作为主机,负责发送数据和接收数据。
2.从机:使用多个51单片机作为从机,每个从机负责接收数据和发送数据给主机。
3.串口:主机和从机之间通过串口进行通信。
我们可以使用RS232标准通信协议。
系统软件设计如下:1.主机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。
b.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。
c.接收数据:接收从机发送的数据,并存储在接收缓冲区中。
2.从机设计:a.初始化串口:设置串口参数,如波特率、数据位、停止位等。
b.接收数据:接收主机发送的数据,并存储在接收缓冲区中。
c.发送数据:将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。
系统工作流程如下:1.主机启动,执行初始化操作,包括初始化串口。
2.从机启动,执行初始化操作,包括初始化串口。
3.主机发送数据给从机:主机将需要发送的数据存储在发送缓冲区中,通过串口发送给从机。
4.从机接收并处理数据:从机接收主机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。
5.从机发送数据给主机:从机将需要发送的数据存储在发送缓冲区中,通过串口发送给主机。
6.主机接收并处理数据:主机接收从机发送的数据,并存储在接收缓冲区中,对接收到的数据进行处理。
7.主机和从机循环执行步骤3-6,实现多机之间的数据交互和通信。
多机通信系统的设计考虑到以下几个方面:1.硬件设计:需要合理选择单片机和串口的类型和参数,确保系统的稳定性和可靠性。
2.软件设计:需要设计适应系统需求的通信协议和数据处理提取方法,保证数据的准确性和完整性。
3.通信协议:需要定义主机和从机之间的通信协议,包括数据的格式、传输方式等,以便实现正确的数据交互。
单片机教程 第9章-串口通信
![单片机教程 第9章-串口通信](https://img.taocdn.com/s3/m/5cb729c69ec3d5bbfd0a74b6.png)
9.2
MCS-51单片机串行接口
方式1所传送的波特率取决于定时器T1的溢出 率和特殊功能寄存器PCON中SMOD的值,即方式1的
波特率=(2SMOD/32)×定时器T1的溢出率。
②方式1接收:当串行口置为方式1,且REN=1 时,串行口处于方式1输入状态。它以所选波特率 的16倍的速率采样RXD引脚状态。
示字符的结束。异步传送的字符格式如图所示。 ①字符帧:也叫数据帧,由起始位、数据位、奇 偶校验位和停止位4个部分组成。
9.1
串行通信基础
9.1
串行通信基础
②波特率:就是数据的传送速率,即每秒钟传送的 二进制位数,单位:位/秒。 说明:要求发送端与接收端的波特率必须一 致。波特率越高,传送速度越快。
9.1
串行通信基础
下图为以上两种通信方式的示意图。由图可知, 假设并行传送N位数据所需时间为T,那么串行传送 的时间至少为NT,实际上总是大于NT的。
9.1
串行通信基础
9.1.1
串行通信的分类
1、异步通信
异步传送的特点是数据在线路上的传送不连
续。在传送时,数据是以一个字符为单位进行传送
的。它用一个起始位表示字符的开始,用停止位表
;清0接收中断标志 ;接收数据 ;取奇偶校验位 ;偶校验时转L1 ;奇校验时RB8为0转出错处理
;偶校验时RB8为1转出错处理 ;奇偶校验对时存入数据 ;修改指针 ;恢复现场 ;中断返回 ;出错处理 ;中断返回
L1: L2:
ERR:
9.2
MCS-51单片机串行接口
4、方式3 方式3为波特率可变的9位异步通信方式,除了
fOSC 2 SMOD 64
T 1溢出率2 SMOD 32
51单片机双机通信原理(一)
![51单片机双机通信原理(一)](https://img.taocdn.com/s3/m/bd448b643a3567ec102de2bd960590c69ec3d817.png)
51单片机双机通信原理(一)51单片机双机通信简介•什么是51单片机双机通信•双机通信的作用和应用场景基本原理•单片机串口通信原理–串口通讯协议–数据帧的构成•串口通信的硬件连接–引脚连接方式–串口信号格式设置单向通信实现•主从模式–主机发送数据–从机接收数据•编程实现–主机端程序设计–从机端程序设计双向通信实现•主从模式–主机发送数据–从机接收数据–主机接收数据–从机发送数据•编程实现–主机端程序设计–从机端程序设计通信协议的设计•自定义通信协议–协议的格式–数据的解析与封装高级功能扩展•多机通信实现•数据加密与解密•异常处理与误码纠错总结•51单片机双机通信的基本原理和实现方式•可能遇到的问题及解决方案•双机通信的进一步应用展望简介51单片机双机通信是指使用51系列单片机实现两台或多台单片机之间的数据传输和通信。
双机通信可以实现在多个单片机之间传递数据、完成控制指令的下发、数据的采集和处理等功能。
在各种电子设备和嵌入式系统中,双机通信被广泛应用,可以实现设备之间的互联和协同工作,提高系统的灵活性和智能化水平。
基本原理单片机串口通信原理串口通信是一种将数据通过串行线路进行传输的通信方式。
在51单片机的串口通信中,常用的是UART(通用异步收发传输器)通信协议。
UART通信采用的是异步传输方式,数据按照固定的数据帧格式进行传输。
串口通信的硬件连接在51单片机的串口通信中,需要将主机和从机的UART引脚连接起来。
常用的连接方式是通过一对直线的串行数据线(TXD和RXD)连接主从机,其中TXD是发送数据的引脚,RXD是接收数据的引脚。
为了确保数据的正确传输,还需要进行串口信号格式的设置,包括波特率、数据位数、停止位数和校验位等。
单向通信实现主从模式在单向通信中,主机负责发送数据,从机负责接收数据。
主机通过串口发送数据帧,从机通过串口接收数据帧,并进行相应的处理。
编程实现在主机端程序设计中,需要配置串口通信的参数,并使用串口发送数据的相关函数来发送数据。
单片机多机通信
![单片机多机通信](https://img.taocdn.com/s3/m/881ea4e6195f312b3169a536.png)
单片机多机通信在单片机多机通信过程中,PC机将指令打包后发给智能接口单元(以下简称主单片机)。
主单片机收到完整一包后将包解开,按对每个从机的指令分别发送,同时将各从机发给PC机的指令送给PC机。
由于64个从机和主单片机使用同一串口通信线,为避免发生冲突,主单片机处于主动状态,按一定的定时间隔与每一台从机顺序通信。
主单片机在与每一台从机通信过程中先发送地址,从机收到地址后若与自己的地址一致,则继续接收主单片机发来的一个字节的命令码,从机收到命令后,将自己的一个字节的命令发送到主单片机。
主单片机完成与64个从机的通信需要64个定时间隔,只要定时间隔足够短,主单片机与从机基本上可以实现实时通信。
在整个通信过程中,主单片机起着通信枢纽的作用。
单片机多机通信过程安排如下:使所有从机的SM2位置1,处于只接收地址帧的状态;主机发送一帧地址信息,其中包含8位地址,第9位为地址、数据标志位,第9位置1表示发送的是地址;从机接收到地址帧后,各自将所接收的地址与本从机的地址相比较,对于地址相符的从机,使SM2清0以接收主机随后发来的信息,对于地址不相符的从机,仍保持SM2=1状态,对主机随后发送的数据不予理睬,直至发送新的地址帧;主机发送控制指令与数据,给被寻址的从机数据帧的第9位置0,表示发送的是数据。
�单片机程序采用PLM51语言设计,主单片机定时中断服务程序框图如图4所示。
主单片机RS-485串行口接收和发送中段服务程序框图如图5所示。
主单片机RS-232C串行口接收中断服务程序如图6所示。
从单片机RS-485串行口接收和发送中段服务程序框图如图7所示。
主单片机在主程序中以查询方式将各从机送来的数据从内存中读出后顺序发送给上位PC机。
程序清单略。
图1 RS485通信接口原理图2 单片机多机通信硬件电路设计中需注意的问题2.1 电路基本原理某节点的硬件电路设计如图1所示,在该电路中,使用了一种RS-485接口芯片SN75LBC184,它采用单一电源Vcc,电压在+3~+5.5 V范围内都能正常工作。
单片机与pc机串口通信
![单片机与pc机串口通信](https://img.taocdn.com/s3/m/d857b7a4f605cc1755270722192e453610665bb0.png)
单片机与pc机串口通信单片机与 PC 机串口通信在现代电子技术领域,单片机与 PC 机之间的串口通信是一项非常重要的技术。
它为各种应用场景提供了便捷的数据传输方式,使得单片机系统能够与强大的 PC 机进行有效的信息交互。
首先,让我们来了解一下什么是单片机。
单片机,也被称为微控制器(MCU),是一种集成了 CPU、内存、I/O 接口等多种功能于一体的小型芯片。
它在各种电子设备中扮演着“大脑”的角色,负责控制和协调设备的运行。
而 PC 机,作为功能强大的通用计算机,拥有丰富的资源和强大的处理能力。
那么,为什么要实现单片机与 PC 机的串口通信呢?原因有很多。
一方面,通过串口通信,PC 机可以向单片机发送控制指令,实现对单片机所控制设备的远程操作。
另一方面,单片机可以将其采集到的数据实时传输给 PC 机,以便在 PC 机上进行进一步的处理、分析和存储。
串口通信的原理其实并不复杂。
它是一种基于串行数据传输的通信方式,通过发送和接收一系列的二进制位来实现信息的传递。
在串口通信中,数据以一位一位的顺序依次传输,相比于并行通信,虽然速度较慢,但具有线路简单、成本低、可靠性高等优点。
要实现单片机与 PC 机的串口通信,需要一些硬件和软件的支持。
在硬件方面,通常需要一个串口转换芯片,将单片机的 TTL 电平(通常为 0 5V)转换为 PC 机所使用的 RS232 电平(通常为-10V 到+10V)。
常见的串口转换芯片有 MAX232 等。
此外,还需要连接相应的数据线,将单片机的串口引脚与 PC 机的串口接口相连。
在软件方面,对于单片机来说,需要编写相应的串口通信程序,设置串口的工作模式、波特率、数据位、停止位等参数,并实现数据的发送和接收功能。
而对于 PC 机,通常可以使用各种编程语言,如 C++、C、Python 等,通过调用操作系统提供的串口通信库来实现与单片机的通信。
```cinclude <reg52h>void initUART(){TMOD = 0x20; //设置定时器 1 为模式 2TH1 = 0xfd; //波特率 9600TL1 = 0xfd;TR1 = 1; //启动定时器 1SCON = 0x50; //工作方式 1,允许接收}void sendByte(unsigned char dat){SBUF = dat;while (!TI);//等待发送完成TI = 0; //清除发送标志}void main(){initUART();while (1){sendByte('A');delay_ms(1000);}}```在这个示例中,首先通过`initUART` 函数对串口进行初始化设置,包括波特率等参数。
单片机课程设计题目
![单片机课程设计题目](https://img.taocdn.com/s3/m/1f2266f5fab069dc5022015e.png)
单片机课程设计题目一览产品类1、存储示波器★★★★2、数字万用表★★★3、x-y记录仪★★★★4、心率计★★★5、OSD 字符叠加视频信息发布★★★★6、gsm短信网关★★★★7、SMS转232 ★★★★8、嵌入式GPRS数据通信★★★★★★9、GPS+SMS远程定位★★★★★★10、GPS+GPRS货物跟踪★★★★★★★11、GIS车辆监控调度系统★★★★★★★★12、GSM汽车防盗报警器★★★★13、GSM电梯预呼叫器★★★★14、LBS定位★★★★★★★15、TCP/IP转485 232 ★★★★★★16、GPS语音导盲★★★★★17、音乐喷泉★★18、数字MORSE编解码★★19、视频中频调制选频通讯系统★★★★★20、激光测径仪★★★★★21、自动滚动广告机★★★22、LED点阵大屏★★★23、高速路况信息发布系统★★★★★★24、GPS公交车自动报站器★★★★★★25、GPS公交车站牌预告系统★★★★★★26、排队叫号机★★★★★★27、无线温度测量系统★★★★28、嵌入式控制网关★★★★★★29、心电图仪ECG ★★★★★30、智能家居★★★物理量检测显示系列1、温度检测控制★2、湿度检测★★3、电压、电流检测★8、光电计数、开关计数★9、速度、加速度检测★★10、高度检测★★★11、方位检测★★4、声音检测★5、煤气、酒精检测★★6、亮度检测★7、水分检测★★12、红外释热检测★13、频率检测★★14、超声波测距★★★15、压力检测★★16、电阻测量★★17、电容量测量★★★18、电感量测量★★★19、液位检测★★★信号采集类指纹识别★★★声音辨别★★★单色图像识别★★★★DAQ ★★★★★★RFID身份识别★★★条码阅读器★★★★信号发生语音合成系列1、正弦波发生器★2、方波发生器★3、三角波发生器★4、演奏音乐(蜂鸣器)手机铃声★5、真人发生文字阅读★★★6、MP3语音及音乐合成及播放★★★★7、ADPCM声音采集及回放录音笔★★8、模拟DTMF ★9、DDS ★★★数据传输及通信系列1、串口通信-多机通信系统★2、USB与PC通信★★★3、蓝牙模块通信★★★★4、CAN通信★★★5、485通信★6、无线数传Nrf9e5 ★★★7、红外通信★★8、TCP ★★★★★★9、SMS通信★★★★10、GPRS通信★★★★★★11、电力载波通信★★★12、电话线DTMF通信★★13、光纤通信★★★★★14、Zibee ★★★★★★★控制类1、自动温度控制系统★★★2、运动自动控制与测量★★★3、SMS远程控制★★★★★4、红外控制器★★5、远程电话控制系统★★★6、无线控制★★★★7、数码相机★★★★★8、单色视觉机器人★★★★★★★9、PS2键盘驱动★★10、RFID ★★★11、五子棋游戏★★★12、Nokia 手机键盘★★★13、多功能数字电子钟★★★14、俄罗斯方块★★★★★15、扫雷★★★★★其他题目8、函数信号发生器的设计9、水温电子控制系统设计10、数字频率计11、数字电压表12、数字时钟13、出租汽车里程计价表14、数字电子秤15、红外线数字转速表16、数字温度计17、电容数字测量仪18、大电流测量仪19、加/减法运算电路20、数字定时声光报警抢答器的设计21、高速并行A/D转换系统22、四位LED显示器动态扫描驱动电路的设计23、数字式自动调节电路的设计24、直流电机的数字脉冲控制电路设计25、调频接收机的设计26、LC正弦振荡器的设计与实验27、50W高频宽带功率放大器的设计28、CATV干线放大器设计29、频率合成器的设计与实验30、小功率调幅高频发射机的设计与实验31、收、录/放、扩四位一体机的设计32、测量放大器设计33、数字式工频有效值多用表设计34、频率特性测试仪设计35、数字化语音存储与回放系统36、高效率音频功率放大器设计37、简易智能电动车设计38、液体点滴速度监控装置设计计39、电压控制LC振荡器设计40、智能调制接收机设计41、交通灯控制器42、中文字符显示器43、光控计数器44、调制与解调45、功率测量仪46、可编程字符发生器47、数字电容测试仪48、数字式相位差测量仪注意:(星号多少表示题目难度)。
51单片机多机通信过程
![51单片机多机通信过程](https://img.taocdn.com/s3/m/56e2a9eaac51f01dc281e53a580216fc700a53e6.png)
51单片机多机通信过程51单片机具有多机通信的功能,可实现一台主机于多台从机的通信。
多机通信充分利用了单片机内部的多机通信控制位SM2。
当从机SM2,1时,从机只接收主机发出的地址帧(第九位为1),对数据帧(第九位为0)不予理睬;而当SM2=0时,可接收主机发送过来的所有信息。
多机通信的过程如下:(1)所有从机SM2均置1,处于只接收地址帧状态。
(2)主机先发送一个地址帧,其中前8位数据表示地址,第9位为1表示该帧为地址帧。
(3)所有从机接收到地址帧后,进行中断处理,把接收到的地址与自身地址相比较。
地址相符时将SM2清成0,脱离多机状态,地址不相符的从机不作任何处理,即保持SM2,1。
(4)地址相符的从机SM2=0,可以接收到主机随后发来的信息,即主机发送的所有信息。
收到信息TB8=0,则表示是数据帧,而对于地址不符的从机SM2=1,收到信息TB8=0,则不予理睬,这样就实现了主机与地址相符的从机之间的双机通信。
(5)被寻址的从机通信结束后置SM2=1,恢复多机通信系统原有的状态。
主机:设置为SM2=0。
这是双机通信的形式,可以任意的发送和接收发送:以TB8=1发送,将发送到所有SM2=1的分机。
这是呼叫某个从机。
以TB8=0发送,将发送到SM2=0的分机。
这是双机通信的形式。
------从机:先设置为SM2=1。
这是多机通信的形式,只能收到RB8=1的。
接收:仅能收到RB8=1的数据,确认是呼叫本机时,令SM2=0。
设置为SM2=0后,是双机通信的形式。
追问那从机的RB8要怎么设,是需要软件设置还是单片机自己识别,在编程的时候要怎么写, 回答从机的RB8,不需要编程。
从机的RB8,是接收到的,它是主机发送出来的TB8。
想要对TB8进行控制,需要在主机中编程。
单片机多机通讯说明:该程序为多机通讯程序,最多可以挂255个从机。
该程序主机发送端与多个从机的接收端相接,主机的接收端与多个从机的发送端相接。
MCS-51单片机的多机通信方式
![MCS-51单片机的多机通信方式](https://img.taocdn.com/s3/m/cfd0fe007275a417866fb84ae45c3b3566ecdd42.png)
多机通信原理
每台从机一个地址(编号) 系统中的通信总是由主机发起 主机向从机发送的信息分为地址字节和数据字节两种。地址字
节用于寻址从机,数据字节为发给从机的实际数据,二者可以 使用第9位来区分。地址字节帧的第9位为1,数据字节帧的第9 位为0 系统初始化时,将所有从机的SM2位置为1,并允许串行口接收 中断。这样,只有主机送来的地址帧才会被接收
单片机原理与应用
MCS-51单片机的多机通信方式
SCON中的SM2位可以作为多处理机通信位,使单片机方便地 应用于集散式分布系统中
集散式分布系统,或者称为分布式控制系统(DCS),是相对于 集中式控制系统而言的一种新型计算机控制系统,它是在集中 式控制系统的基础上发展、演变而来的。这种系统中,有一台 主机和多台从机。主机负责全局运行情况的监视、统计、控制 等,各从机负责本地信号的采集处理、本地资源的控制。主机 和从机通过通信线路相联系
1.2 通信协议的设计
通信协议中,除规定命令、数据的格式,还有以下一些方面需 要特别考虑
命令的顺序 差错处理 超时处理
单片机原理与应用
ห้องสมุดไป่ตู้
1.1 多机通信原理
主从式多机通信连接方式
多机通信原理
当串行口工作在方式2或3时 若SM2=1,则只有接收到的第9位数据(RB8)为1时,才将数据
送入接收缓冲器SBUF,并置位RI,申请中断,否则丢弃接收 到的数据 若SM2=0,则无论第9位数据(RB8)是1还是0,都将数据装入 SBUF,置位RI,申请中断
串口屏(触摸屏)组态软件+多台51单片机MODBUSRTU多机串口通信程序源码
![串口屏(触摸屏)组态软件+多台51单片机MODBUSRTU多机串口通信程序源码](https://img.taocdn.com/s3/m/68cb9aa270fe910ef12d2af90242a8956becaa95.png)
串口屏(触摸屏)组态软件+多台51单片机MODBUS RTU多机串口通信程序源码串口屏(触摸屏)组态软件+多台51单片机MODBUS RTU多机串口通信程序源码实现触摸屏(串口屏)与单片机的通讯,主要是解决通讯协议的问题。
本文使用开放的Modbus通讯协议,以广州易显的HMImaker触摸屏作主机(Master),单片机作从机(Slaver)。
HMImaker触摸屏本身支持Modbus通讯协议,只要单片机按照Modbus 协议进行收发数据,就可以进行通信了。
触摸屏与单片机之间采用RS-485标准接口直接连接,与多台51单片机MODBUS RTU多机串口通信一、包括如下实例:二、串口屏(触摸屏)组态软件HMImaker实现功能:01、对4台51单片机4路数字量输入实现读操作,通过MODBUS RTU的02功能码实现; 02、对4台51单片机4路继电器输出实现读操作,通过MODBUS RTU的01功能码实现; 03、对4台51单片机4路模拟量输入实现读操作,通过MODBUS RTU的04功能码实现; 04、对4台51单片机4路模拟量输出实现读操作,通过MODBUS RTU的03功能码实现; 05、对4台51单片机4路继电器输出实现写操作,通过MODBUS RTU的05功能码实现; 06、对4台51单片机4路模拟量输出实现写操作,通过MODBUS RTU的06功能码实现; 07、组态工程以串口屏(触摸屏)组态软件HMImaker为例,如下所示:三、单片机从站支持的MODBUS RTU功能码:01、功能码01:此功能可对单片机4路(甚至更多,可扩展)数字量输出多路进行读操作; 02、功能码02:此功能可对单片机4路(甚至更多,可扩展)数字量输入多路进行读操作; 03、功能码03:此功能可对单片机4路(甚至更多,可扩展)模拟量输出多路进行读操作; 04、功能码04:此功能可对单片机4路(甚至更多,可扩展)模拟量输入多路进行读操作; 05、功能码05:此功能可对单片机4路(甚至更多,可扩展)数字量输出一路进行写操作; 06、功能码06:此功能可对单片机4路(甚至更多,可扩展)模拟量输出一路进行写操作; 07、功能码15:此功能可对单片机4路(甚至更多,可扩展)数字量输出多路进行写操作; 08、功能码16:此功能可对单片机4路(甚至更多,可扩展)模拟量输出多路进行写操作。
单片机与pc机的串口通信
![单片机与pc机的串口通信](https://img.taocdn.com/s3/m/d5be07687e21af45b307a8fc.png)
单片机与pc机的串口通信曹元山07电信工220071201010一.PC与单片机串行通信控制背景和意义:计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。
由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。
在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。
RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。
它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。
它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。
随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。
PC 机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。
因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。
二.串行通信接口常用PC机串行接口有3种:PS/2接口用于连接键盘和鼠标;RS232C串行接口一般用来实现PC机与较低速外部设备之间的远距离通信;USB通用串行总线接口是现在比较流行的接口,它最大的好处在于能支持多达127个外设,外设可以独立供电,也可以通过USB接口从主板上获得500 mA@+5 V的电流,并且支持热拔插,真正做到即插即用。
PC机的3种串行接口都可以用于与外设之间的数据通信,PS/2接口由于是专用于键盘和鼠标,在PC机的编程处理上要麻烦一些,而且在多数情况下,其他外设还不能占用。
MCS单片机多机通信的工作原理解析
![MCS单片机多机通信的工作原理解析](https://img.taocdn.com/s3/m/8bc72cd15ff7ba0d4a7302768e9951e79b8969c2.png)
MCS单片机多机通信的工作原理解析随着科技的不断发展,单片机(Microcontroller)在各个领域的应用越来越广泛。
在某些应用场景下,需要多个单片机之间进行通信,实现数据传输和共享操作。
而MCS单片机多机通信技术,正是专门用来实现多台单片机之间的高效通信的一种技术。
1. MCS单片机多机通信的基本原理MCS单片机多机通信的基本原理是通过引入中间介质来实现多个单片机之间的数据传输。
常见的中间介质包括串口、SPI总线、I2C总线等。
接下来我将重点介绍一种常用的MCS单片机多机通信原理,即基于串口通信的方式。
2. 基于串口通信的MCS单片机多机通信原理解析在基于串口通信的MCS单片机多机通信中,通常会选择一台单片机作为主控,其他单片机作为从设备。
主控单片机负责发送指令和接收数据,而从设备单片机则负责执行指令,并返回相应的数据。
具体实现过程如下:- 主控单片机通过串口发送指令给从设备单片机。
- 从设备单片机接收到指令后,执行相应的操作,并将执行结果发送回主控单片机。
- 主控单片机接收到从设备单片机发送的数据后,进行相应的处理。
为了保证通信的稳定性和可靠性,通常会在通信协议中添加数据校验位和帧头帧尾等标志位。
这样可以在通信过程中检测并纠正错误,保证数据的正确传输。
3. MCS单片机多机通信的应用场景MCS单片机多机通信广泛应用于各种领域,其中一些常见的应用场景包括:- 工业控制系统:用于监控设备状态、实现设备间的数据共享和协调控制等。
- 自动化设备:用于实现各个模块之间的数据交换和传输。
- 无线通信系统:用于实现多个无线设备之间的数据传输和通信。
4. 实例分析:电梯控制系统以电梯控制系统为例,介绍MCS单片机多机通信在实际应用中的工作原理。
电梯控制系统通常由一个主控单片机和多个从设备单片机组成,主控单片机负责控制电梯的运行、调度和故障检测等功能,而从设备单片机则负责电梯的各个部件的控制。
在电梯控制系统中,主控单片机通过串口发送指令给从设备单片机,例如指令可以包括电梯的上行、下行、停止等操作。
第5章 单片机串口通信
![第5章 单片机串口通信](https://img.taocdn.com/s3/m/59611aac69eae009591bec5c.png)
RS-232C标准总线为25根,可采用标准的DB-25和DB-9的D型插 头。目前计算机上只保留了两个DB-9插头,作为提供多功能I/O卡 或主板上COM1和COM2两个串行接口的连接器。
引脚 名称
功能
引脚 名称
功能
1 DCD 载波检测
6 DSR 数据准备完 成
2 RXD 发送数据 7 RTS 发送请求
数据位:要传输的数据信息,可以是字符或数据,一般为 5~8位,由低位到高位依次传送。
可编程位:位于数据位之后,占1位,用于发送数据的校验, 或传送多机串行通信的联络信息。
停止位:位于数据位末尾,占1位,始终为高电平,用于向 接收端表示1帧数据已发送完毕。
异步通信特点:
对收发双方的时钟精度要求较低(收发双方不同步时,能 依靠在每帧开始时的不断对齐,自行纠正偏差); 传送速度较低(每个字节都要建立一次同步)。
串行口的四种工作方式对应三种波特率。由于 输入的移位时钟的来源不同,所以,各种方式的波 特率计算公式也不相同。
方式0的波特率 = fosc/12
方式2的波特率 =(2SMOD/64)·fosc
方式1的波特率 =(2SMOD/32)·(T1溢出率)
方式3的波特率 =(2SMOD/32)·(T1溢出率)
第5章 单片机的串口通信
知识
5.1 单片机串行口通信
一、串口工作原理
1. 并口通信和串口通信(数据通信的两种常用形式)
(1)并口方式——数据的各位同时发送或同时接收。
并行传送特点:传送速度快,但因需要多根传输线, 故一般只在近距离(3米、5米、7米)通信中使用。 否则,相互干扰大,无法快速传送
(2)串行方式——数据的各位依次逐位发送或接收。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录一、题目要求与功能分析 (1)1.1题目要求 (1)1.2功能及整体模块分析 (1)二方案论证 (2)2.1设计目的 (2)2.2设计思路 (2)2.2.1原理分析和讨论 (2)2.2.2题设分析 (3)三、电路设计 (5)3.1 整体功能框架设计 (5)3.2 硬件电路设计 (6)3.2.1 主机硬件电路设计 (7)3.2.2 从机硬件电路设计 (10)3.3软件电路设计 (12)3.3.1 协议设计 (12)3.3.2 主机程序流程图设计 (13)3.3.3 从机程序流程图设计 (14)四系统的调试与实现 (16)4.1主机模块功能调试 (16)4.2从机模块调试 (16)4.3整体设计功能调试 (16)五总结与体会 (18)参考文献 (18)附录 (19)一、题目要求与功能分析1.1题目要求本小组的试验题目如下:一、任务:设计实现多台单片机系统之间的串行通信二、基本要求(难度系数0.8):(1)设计一个主从式多机通信系统,包含1台主机和3台从机,主机和从机全部为单片机;(2)选择合适总线接口芯片,正确连接主机和从机;(3)编程实现分布式数据采集功能,主机可以获取各分机当前AD转换结果,并显示。
三、发挥部分:(1)完善通信功能。
(根据完成情况加分,上限+0.2)1.2功能及整体模块分析随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,多机通信系统设计的监控系统逐步普及。
此多机通信系统具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。
在检测大量模拟量的工业现场使用相似的多机通讯系统;单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。
本次实验的目的是就是应用单片机的串口通信功能实现一个分布式采集系统。
整个系统中包含一片主机和三片从机,主机的任务是实现对三片从机的AD 转换结果的采集并在数码管上显示之。
这样从硬件的角度上将整个系统分为两个模块—主机模块和从机模块。
主机模块中包含单片机模块、数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。
就本次实验而言硬件电路的设计难点在于串口电平转换芯片MAX485的连接,而软件的设计在于串口通信协议的设定及其相互通信的过程。
二方案论证2.1设计目的(1) 进一步掌握串行接口控制寄存器SCON及波特率选择、工作方式的设置方法。
(2) 理解串行接口的多机通信系统的原理和异步串行通信标准接口RS-485的使用。
(3) 进一步掌握C语言程序调试的的方法。
(4) 熟悉多机通信设置从机地址来识别从机的一种方法。
2.2设计思路2.2.1原理分析和讨论单片机构成的多机系统常采用总线型主从式结构。
所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机要服从主机的调度、支配。
80C51单片机的串行口方式2和方式3适于这种主从式的通信结构。
当然采用不同的通信标准时,还需进行相应的电平转换,有时还要对信号进行光电隔离。
在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输。
图1 多机通信的主从式示意图所有从机的SM2位置1,处于接收地址帧状态。
主机发送一地址帧,其中8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。
所有从机收到地址帧后,都将接收的地址与本机的地址比较。
对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并把本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。
从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志。
主机接收数据时先判断数据接收标志(RB8),若RB8=1,表示数据传送结束,。
若接收帧的RB8=0,则存数据到缓冲区,并准备接收下帧信息。
主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。
从机收到复位命令后回到监听地址状态(SM2=1)。
否则开始接收数据和命令。
[1]2.2.2题设分析1.从机识别给多点分别设置地址信息,在数据前加地址字段或直接在数据传输钱发送地址帧,主机通过不同的地址信息识别数据源。
首先,从机应处于只接受地址帧信息的状态;然后主机发送一帧地址信息;从机接收到地址帧后,将本机的地址与地址帧中的地址惊醒比较,如果地址相同,则准备接收数据,否则对其当前帧。
依然处于只接受地址帧状态;主机发送地址帧后,相应的从机接收数据,数据传输完毕后,从机继续回到只接受地址帧的状态。
在这一过程中,其他从机不受影响;当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫主机,重复这一过程。
2.51单片机串口的多机通信功能根据MCS-51串行口的多机通信能力,多机通信可以按照以下协议进行:(1) 首先使所有从机的SM2位置1处于只接收地址帧的状态。
(2) 主机先发送一帧地址信息,其中8位地址,第9位为地址/数据信息的标志位,该位置1表示该帧为地址信息。
(3) 从机接收到地址帧后,各自将接收的地址与本机的地址比较。
对于地址相符的那个从机,使SM2位清零,以接收主机随后发来的所有信息;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据不予理睬,直至发送新的地址帧。
(4) 当从机发送数据结束后,发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束标志。
(5) 主机接收数据时先判断数据结束标志(RB8),若RB8=1,表示数据传送结束,并比较此帧校验和,若正确,则会送正确信号00H,此信号令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,令该从机重发数据。
若接收帧的RB8=0,则原数据到缓冲区,并准备接收下帧信息。
(6) 若主机向从机发送数据,从机在第(3)步中比较地址相符后,从机令SM2=0,同时把本站地址发回主机。
作为应答之后才能收到主机发送来的数据。
其它从机(SM2=1),无法收到数据。
(7) 主机收到从机的应答地址后,确认地址是否相符。
如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。
(8) 从机接收到复位命令后回到监听地址状态(SM2=1)。
否则开始接收数据和命令。
[2]三、电路设计3.1 整体功能框架设计本设计是将各分机当前AD转换结果传送给主机,实际应用中为实现分布式数据采集功能即主机(一般为PC机)对各个不同的地点的环境进行实时测量,主机间隔的发送地址呼叫各个从机,从机进行地址验证后启动AD转换,由AD 转换芯片将电压值转换成数字量,最后把当前AD转换结果由串口MAX485传送给主机,主机经过处理在发送给PC机显示。
分析可知硬件电分为主机模块和从机模块。
主机模块中包含单片机子模块、LED数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。
在主模块中由AT89S51单片机担任主机,六个LED数码管担任显示设备和一片MAX485担任串口的电平转换。
在整个主机系统中有三个从机模块三个从机模块结构一样,有一片AT89S51单片机担任从机外接一片ADC0809转换芯片和一片MAX485担任串口的电平转换。
串口采用单工及异步通信方式。
设计大体思路流程图程如下:图2 多机通信的分布式数据采集功能应用示意图3.2 硬件电路设计本设计是实现包含1台主机和3台从机主从式多机通信系统,所以硬件电路也分为主机电路和从机电路。
主机和从机的电路原理图基本一致,都是由单片机电路和接口电平转换电路,只是从机电路中需要增加有关本机地址的设置电路。
主机的电路的搭建采用主CPU板、键盘显示接口板各一块。
照实验原理图将主CPU板的P0口接到键盘显示接口板的位码接口,P1口接到键盘显示接口板的段码的接口。
从机的电路由CPU板和ADDA转换板构成。
其次是电平转换电路的焊接。
电平转换的路的实现是通过自己搭建电路完成。
电平转换的电路主要有四块MAX485和两个100Ω电阻构成。
四块MAX485采用总线方式连接,每个芯片分别引出三个引脚用于单片的连接。
最后将各个模块的按照原理图连接起来。
图3 多机通信整体模块电路连接图3.2.1 主机硬件电路设计如图所示,U1为单片机芯片AT89S51,它工作于11.0592MHz时钟,此时钟决定了串口传输波特率的设置。
单片机的Rxd(P3.0)和TxD(P3.1)和电平转换芯片MAX485,他们是单片机的串行输入、输出信号。
其中P0的作用如下:对于发端,P0口用于主机的数据采集,通过读取P0口的内容完成对发送数据区的初始化,每隔定时读取一次,如果读到00H,则表明数据读取完毕。
对于收端,P0口用于判断从机是否处于忙状态。
当读到P0口为BBH时,认为当前从机忙,需要向主机发送忙应答。
主机部分的连接示意图:PORT端口部分为与从机的串行接口MAX485对应图 6 MAX485接口芯片数据手册的典型连接图LED数码管显示电路: LED数码管显示电路如图2所示显示子模块由六个数码管和相应的启动芯片构成。
其中每路通道的采集值用量为数码管显示。
为了节约单片机的I/O口本题的数码管采用MAX7219芯片。
给芯片的优点在于可完成电路的刷新。
MAX7219芯片的SEG A-SEG DP为数码管段码接口,DIG0-DIG7为位码接口,CLK、DIN、LOAD分别与单片机P1.0、P1.1、P1.2连接。
单片机通过串行的方式将要显示的数据通过CLK、DIN、LOAD三个接口送入相应的显示寄存器内,MAX7219将自动完成对数码管的刷新工作。
具体的电路如图所示。
图7 LED显示电路3.2.2 从机硬件电路设计从机AT89S51的P1口的低四位用于本机的地址设定,其他的设置基本与主机相似。
通过跳线开关的闭合与打开的组合可以最多设定16种地址。
比如,四位开关全部断开时,对应的P0为1111,此时本机的地址即为1111H。
从机在开始加电工作前需要根据整个系统的要求设定自己的地址,也就是将开关状态设置好。
这样从机在开机自检时就可以获得本机的地址。
其中将模拟电压信号转换成数字量的AD转换芯片ADC0809的连接如图中,将数据选择三个控制端都设为低电平,即选择输入通道IN-0;然后将8位数据输出口D0-D8与从机8051的P2口相连,将ADC0809的CLOCK端与从机8051的ALE相连,将ADC0809的STATRT、ENABLE、ALE端分别与从机8051的P0口的P0-3相连;并加入设置参考电压。
从机部分的连接示意图:两个PORT端口部分为与主机的串行接口MAX485其中AD转换芯片ADC0809与从机8051的连接具体如下:图9 ADC0809与8051连接图ADC0809芯片为8位A/D转换器(28PIN)IN0-IN7:8个模拟通道输入端。