基于某51单片机的多机通信系统
MCGS软件与MCS51单片机多机通信的几种方法
MCGS软件与MCS51单片机多机通信的几种方法Multi-machineSerialCommunicationMethodbetweenConfigurationSoftwareMCG SandMCS51SCMLiaoningMechanicAndElectricityProfessionTechnologyAcademy InformationInstrumentliunaPostcode:118002[摘要]MCGS是目前较常见的一种工业控制通用组态软件,可以利用它十分方便地构成了分布式系统的监控画面,动态显示控制设备的运行状态、实时、历时曲线和报表、上下限报警等。
在该系统中对于由多个MCS51单片机控制的下位机仪表,其工作由MCMulti-machine Serial Communicat io n Method between Configuration Software MCGS and MCS51 SCM Liaoning Mechanic And Electricity Profession Technology Ac ad emy Information Instrument liunaPostcode:118002[摘要] MCGS是目前较常见的一种工业控制通用组态软件,可以利用它十分方便地构成了分布式系统的监控画面,动态显示控制设备的运行状态、实时、历时曲线和报表、上下限报警等。
在该系统中对于由多个MCS51单片机控制的下位机仪表,其工作由MCGS远程监控,充分利用计算机的资源进行各种管理。
那么对于MCGS与MCS51单片机多机组成的系统如何设计其通信方式,本文介绍几种工程中可用的通信方法。
[abstract] MCGS is the normal industry configuration software. We can use it to consist apicture of DCS system , it can display the device’s dynamic moving state, the moment 、history curves and reports、high and low alarm。
单片机多机通信课程设计
1设计任务多机串行通信的设计基本任务1.设计三个以上单片机实现主从式串行通信的系统,主机发送数据到指定站号的从机端,也可以群发到所有从机端,并在LED数码管上显示。
2.可通过接在主机上的键盘输入数据,通过主机发送到从机。
3.从机也可输入数据,并可在查询到主机空闲时将数据发送给主机。
4*.从机间可相互通信(从机—)主机 另一从机),通信协议遵从modbus规范。
4@. 其他功能(创新部分)仿真模块例2设计方案2.1设计任务本文在参考了现在普遍的多机通信系统的基础上,设计了一种基于51单片机STC89C51的多机通信系统。
在proteus上设计并仿真电路图。
进入proteus程序仿真,启动程序系统,首先主机通过按键选择准备通信的从机,接通后,主机通过矩阵键盘上的数字按键与从机通信,使从机上的数码管显示对应的数字,以此实现多机通信。
如,与2号机通信并传输“8”这个数字。
首先主机从选择从机按键上按“2号机”键,与2号机连通后按下主机矩阵键盘上的“8”键,对应的2号机数码管上会显示数字“8”,证明通信成功。
2.2串行通信简介串行通信可以分为同步通信和异步通信两类。
同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。
这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。
它们均由同步字符、数据字符和校验字符(CRC)组成。
其中同步字符位于帧开头,用于确认数据字符的开始。
数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。
同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。
异步通信中,在异步通行中有两个比较重要的指标:字符帧格式和波特率。
数据通常以字符或者字节为单位组成字符帧传送。
字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。
发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。
51单片机的双击通信
一设计题目:双机通信系统二实验描述:设计一个双机通信系统,实现按键数据的互发及显示功能。
三实验要求:利用两片8051单片机完成双机通信(A机和B机),A、B机发至对方数据可用数码管显示,通信过程用按键控制,发送内容自定。
四实验元件:ST89C51(两片)、电容(30PF*4、10UF*4)、数码管(共阳)、晶振(11.059 2MHZ)、小按键等。
五具体设计:1:设计介绍1.1 串行通信介绍广义地讲,终端(如计算机等)与其他终端、终端与外部设备(如打印机、显示器等)之间的信息交换称为数据通信(Data Communication)。
数据通信方式有两种:串行通信和并行通信。
并行通信:数据的各位同时进行传送(接收和发送),其优点是传递速度快、效率高,多用在实时、快速的场合。
串行通信:数据逐位传送,优点是数据只需要一根数据线就能完成传送,联结介质简单,成本低。
1.2 8051简介51内部结构:8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,·中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
·数据存储器(RAM):8051内部有128个8位用户数据存储单元 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
·程序存储器(ROM):8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
基于SPI总线的51单片机多机互连编程技术
关 键 词 :单 片 机 ; UART; P SI 中 图分 类 号 :TP 1 34 文 献 标 识 码 :A
Co mu c ton Pr r m m ig Tec n q e Be we u t M CU s n SPI m n a i og a n h i u t en M li — Ba ed o 鲞
图 1 S 工 作 方 式 PI
图 1中 , M0S ( se ta d Sa e n I Ma tr0u n lv rI )和 MI 0 S
L a g , a j n i n ' P nQi z Qi u
( 1. Sc olo m put rSce c ho fCo e i n e,Sha gu n U nie st o a v r iy,Sha gu n 51 0 o a 2 00, i a; Ch n
2 Op ia a i g Me s r n n r l c n q eI s i t fS a g a ) . t l c Gr t a u e a d Co to n Te h i u n t u e o h o u n t
mu ia in i t r a e ,a d i i p r iu a l o i h s e d c mm u ia in b t e CU. tt e wo k mo e i v r i e e tfo t e nc t efc o n n t s a t lry f rh g — p e o c n c to e we n M Bu h r d s e y d f r n r m h f
串行 接 口, 而且 还 有 S IIC 总线 等 串行 接 口 。S I 口是 一 种 高速 串行 通 信 接 口, 别 适 合 于 单 片机 之 间 的 高速 通 信 , P、 P接 特 但 其 工作 方 式较 之 传 统 的 UAR 串行 通 信 方 式 有 很 大 的 不 同 。本 文 给 出 S I 口基 础 上 的 各 种 串行 通 信 工 作 方 式 配 T P接
基于51单片机 毕业设计
基于51单片机毕业设计基于51单片机的毕业设计在计算机科学与技术领域,毕业设计是学生完成学业的重要一环。
对于电子信息工程专业的学生而言,基于51单片机的毕业设计是一种常见的选择。
51单片机是一种经典的单片机芯片,广泛应用于各种嵌入式系统中。
本文将探讨基于51单片机的毕业设计的一些可能方向和实现方法。
一、智能家居控制系统设计智能家居是当今社会的热门话题,通过将各种家电设备连接到互联网,实现远程控制和自动化管理。
基于51单片机的毕业设计可以设计一个简单的智能家居控制系统。
系统可以通过手机APP或者网页界面控制家中的灯光、电视、空调等设备。
通过学习和研究相关的通信协议和电路设计,学生可以实现这个功能。
二、智能车设计智能车是一个非常有趣和实用的项目。
基于51单片机的毕业设计可以设计一个能够自主避障、跟随线路行驶的智能车。
学生可以通过学习红外传感器、超声波传感器等硬件知识,实现智能车的避障功能。
同时,学生还可以学习线路规划算法,使得智能车能够按照预定的路径行驶。
三、温湿度监测系统设计在许多实际应用中,温湿度的监测是非常重要的。
基于51单片机的毕业设计可以设计一个温湿度监测系统。
学生可以通过学习温湿度传感器的原理和使用方法,实现对环境温湿度的实时监测。
同时,学生还可以设计一个简单的数据存储和显示系统,将温湿度数据保存到存储器中,并通过LCD屏幕显示出来。
四、无人机控制系统设计无人机是近年来非常热门的领域之一。
基于51单片机的毕业设计可以设计一个简单的无人机控制系统。
学生可以通过学习无人机的控制原理和飞行动力学知识,实现对无人机的遥控和自主飞行功能。
同时,学生还可以学习无线通信协议,将无人机与遥控器进行通信。
五、智能医疗设备设计智能医疗设备是医疗行业的一个新兴领域。
基于51单片机的毕业设计可以设计一个简单的智能医疗设备。
学生可以通过学习心电图传感器、血压传感器等硬件知识,实现对患者的生理参数监测。
同时,学生还可以设计一个简单的报警系统,当患者的生理参数异常时,及时发出警报。
计算机与51系列单片机多机通讯的实现
图 1 5 单 片 机 主 从 式 多 机 通 讯 原 理 1
Fi 1 P ii e frMu t o ue mmu c to y 51 e is Mirc mp tr g. rcpl o li mp trCo c nia in b S re c o o u e
予 理 睬 , 能 激 活 中 断 标 志 . E 允 许 串 行 接 收 , 软 件 控 制 , R N: 1 , 许 接 收 . B 不 R N 由 当 E 时 允 T 8在 方 式 2和
方 式 3时 , 送 的第 9位 数 据 , 发 由软 件 置位 或 复位 .B =1表 示 该 帧 数 据 为地 址 帧 ;B =0表 示 发送 的 T8 T8
数 据 帧 .B R 8在 方 式 2和方 式 3时 , 收 的是 第 9位数 据 . I I 送/ 收 中 断标 志位 , 须 由软 件 清 0 接 T/ 发 R 接 必 .
12 5 . 1系列 单片 机 主从 式 多机 通 讯原 理
主 从 式 多 机 通 讯 系 统 是 由 1台 主 机
和 多 台 从 机 组 成 的 , 机 发 送 信 息 可 被 各 主 个 从 机 接 收 , 从 机 只 能 对 主 机 发 送 信 而
息, 机 问不 能互 相通 讯 . 原理 如 图 1 从 其
所 示 . 各从 机 串行 口工 作 方 式 为 方 式 2 当 或 方 式 3时 , S 若 M2= 1 R N= 1 利 用 此 ,E , 5 1系 列 单 片 机 串 行 口 的 通 讯 性 能 , 实 现 可
储 和 检索 、 示 界 面 的更新 、 显 从机 的 调度 等 ) 这 类 系统 中计 算 机 与单 片机 的数 据通 讯 技 术是 决 定 整 个 系 .
51单片机的多机通信原理
51单片机的多机通信原理1. 什么是51单片机的多机通信?51单片机的多机通信是指在多个51单片机之间进行数据传输和通信的过程。
通过多机通信,可以实现不同单片机之间的数据共享和协作,从而实现更加复杂的功能。
2. 多机通信的原理是什么?多机通信的原理是通过串口进行数据传输。
在多个单片机之间,可以通过串口进行数据的发送和接收。
通过定义好的协议,可以实现数据的传输和解析,从而实现多机之间的通信。
3. 多机通信的步骤是什么?多机通信的步骤包括以下几个方面:(1)定义好通信协议:在多机通信之前,需要定义好通信协议,包括数据的格式、传输方式等。
(2)设置串口参数:在单片机中,需要设置好串口的参数,包括波特率、数据位、停止位等。
(3)发送数据:在发送数据之前,需要将数据按照协议进行格式化,然后通过串口发送出去。
(4)接收数据:在接收数据之前,需要设置好串口的中断,然后在中断中接收数据,并按照协议进行解析。
(5)处理数据:在接收到数据之后,需要对数据进行处理,包括数据的存储、显示等。
4. 多机通信的应用场景有哪些?多机通信的应用场景非常广泛,包括以下几个方面:(1)智能家居系统:通过多机通信,可以实现智能家居系统中不同设备之间的数据共享和协作。
(2)工业控制系统:在工业控制系统中,多机通信可以实现不同设备之间的数据传输和控制。
(3)智能交通系统:在智能交通系统中,多机通信可以实现不同设备之间的数据共享和协作,从而实现更加智能化的交通管理。
(4)机器人控制系统:在机器人控制系统中,多机通信可以实现不同机器人之间的数据传输和控制,从而实现更加复杂的任务。
5. 多机通信的优缺点是什么?多机通信的优点包括以下几个方面:(1)实现数据共享和协作:通过多机通信,可以实现不同设备之间的数据共享和协作,从而实现更加复杂的功能。
(2)提高系统的可靠性:通过多机通信,可以实现数据的备份和冗余,从而提高系统的可靠性。
(3)提高系统的扩展性:通过多机通信,可以实现系统的模块化设计,从而提高系统的扩展性。
基于51的MODBUS-RTU多机主从通信
基于51的MODBUS-RTU多机通信实验环境:Proteus编程语言:汇编编程环境:KEIL单片机: AT89C51,AT89C52晶振:11.0592MHz功能说明:本实验运用了MODBUS-RTU通信协议的功能码03多寄存器读和功能码10多寄存器写,其中主机首先通过03功能码读取1号从机的时,分和秒的值,并将它们用液晶LCD显示器显示出来。
然后利用10功能将读取的值送入2号从机,2号从机在接收到主机送来的数据后再将它们以与1号从机相同的方式显示出来。
为1号从机设置了按钮,可调节它的时间,同是主机和2号从机也随之显示相同的时间。
图示:部分程序源代码:1、主机ORG 000HLJMP MAINORG 000BHLJMP TMR0ORG 0023HLJMP USARTORG 0040HMAIN: ACALL INITHERE: CLR RS0CLR RS1JB FLAG2.7,TXWORKJB UFLAG.7,RXWORK;AJMP HERETXWORK: AJMP TXWORK1RXWORK: CLR UFLAG.7;**********接收完成,显示操作JB UFLAG.3,RXWMB03RXWMB10: JNB UFLAG.5,HEREAJMP RXMBW101RXWMB03: CLR UFLAG.3MOV R0,#HOUR1MOV A,CND3CLR CRRC AMOV R7,AMOV R1,#CND5 RWORK1: MOV A,@R1MOV @R0,AINC R1INC R1INC R0DJNZ R7,RWORK1MOV DSPC,#8 TIMDIS: MOV A,DSPCMOV DPTR,#DISTBMOVC A,@A+DPTRMOV LCDD,AACALL LCDWPMOV A,#HOUR1ADD A,DSPCMOV R1,AMOV A,@R1MOV B,#10DIV ABACALL DISPMOV A,BACALL DISPDEC DSPCJNB DSPC.7,TIMDIS CLR RENSETB URDMOV CND1,#0A1H MOV CND2,#10H MOV CND3,#0MOV CND4,#50H MOV CND5,#0MOV CND6,#3MOV CND7,#6MOV CND8,#0MOV CND9,HOUR1 MOV CND10,#0 MOV CND11,MIN1 MOV CND12,#0 MOV CND13,SEC1MOV CND15,#0A5HMOV CNDT,#0MOV CNDT1,#15SETB TB8MOV SBUF,CND1AJMP HERE;******************************** RXMBW101: CLR UFLAG.5MOV CNDT,#0MOV CNDT1,#8AJMP HERE;************************************** TXWORK1:CLR FLAG2.7;1S定时CLR RENSETB URD/* MOV CND1,#30HMOV CND2,#31HMOV CND3,#32HMOV CND4,#33HMOV CND5,#34HMOV CND6,#35HMOV CND8,#37HMOV CND9,#38H*/MOV CND1,#0A0H;地址MOV CND2,#03H ;功能码MOV CND3,#0 ;起始地址2字节MOV CND4,#3BHMOV CND5,#0 ;数据长度MOV CND6,#3MOV CND7,#5AHMOV CND8,#0A5HMOV CNDT,#0MOV CNDT1,#8SETB TB8MOV SBUF,CND1AJMP HERE;*******************************DISTB: DB81H,84H,87H,0C1H,0C4H,0C7H,91H,94H,97H,0D1H,0D4H,0D 7H;*************USART: PUSH PSWPUSH ACCSETB RS0SETB RS1JBC RI,RXINT;发送中断,清中断标志位并转中断处理TXINT: CLR TIINC CNDTMOV A,CNDTCJNE A,CNDT1,TXGN;必须在发送前检测,若在后的话,则最后一个字节可能不能正确传输TXSTP: SETB UFLAG.6;发送结束标志MOV CNDT,#0MOV CNDT1,#8CLR URDSETB RENAJMP UOUT;********************TXGN: MOV A,#CND1ADD A,CNDTMOV R0,ACLR TB8MOV SBUF,@R0UOUT: POP ACCPOP PSWRETI;*************************RXINT: MOV RXDT,SBUFMOV A,CNDTCJNE A,#1,RXINT1MOV A,RXDTCJNE A,#03H,RXMD10MOV CNDT1,#5SETB UFLAG.3;MODBUS03功能AJMP RXSTOR;********************** RXMD10: CJNE A,#10H,RXERORMOV CNDT1,#8SETB UFLAG.5;MODBUS10功能AJMP RXSTOR;********************** RXINT1: JNB UFLAG.3,RXSTORCJNE A,#2,RXSTORMOV A,RXDTADD A,CNDT1MOV CNDT1,ARXSTOR: MOV A,#CND1ADD A,CNDTMOV R0,AMOV @R0,RXDT;CLR RIINC CNDTMOV A,CNDTCJNE A,CNDT1,RXOUTCRCCK: MOV A,@R0 ;发送来的数据变形与否的最简单校验SWAP ADEC R0XRL A,@R0JNZ RXERORSETB UFLAG.7MOV CNDT1,#16MOV CNTM_OV,#200RXEROR: MOV CNDT,#0AJMP UOUTRXOUT: MOV CNTM_OV,#200AJMP UOUT;****************************** DELA Y: MOV R2,#250DELA Y1: DJNZ R2,DELA Y1RET;***************************;**************定时器0中断处理程序TMR0: PUSH PSWPUSH ACCCLR RS1SETB RS0/*MOV A,CNTM_OVJZ TMR01DEC CNTM_OVMOV A,CNTM_OVJNZ TMR01CLR URDSETB REN*/TMR01: DJNZ TM0T1,RETIFMOV TM0T1,#10 ;1msDJNZ TM0TB,RETIFMOV TM0TB,#100DJNZ TM0TS,RETIFMOV TM0TS,#10SETB FLAG2.7;***************** ;中断返回RETIF: CLR RS0POP ACCPOP PSWRETI;***********HD44780读写子程序BUSY: MOV P0,#0FFHCLR LCDRSSETB LCDRWSETB LCDEMOV BIT0,P0CLR LCDEJB BIT0.7,BUSYRETLCDWP: ACALL BUSYCLR LCDRSSJMP LCD1LCDWD: ACALL BUSYSETB LCDRSLCD1: CLR LCDRWSETB LCDEMOV P0,LCDDNOPCLR LCDESETB LCDRSRETLCDW: MOV A,@R0ACALL LCDWDINC R0DJNZ R2,LCDWRET;***************DISP: MOV DPTR,#TIMETBMOVC A,@A+DPTRMOV LCDD,AACALL LCDWDRETTIMETB: DB "0123456789:/abcd" ;****************初始化子程序INIT: MOV SP,#0EFHMOV R1,#TM0TCLR0: MOV @R1,#0INC R1CJNE R1,#FRAM_OV,CLR0LCDINT: MOV LCDD,#38H;LCD初始化子程序ACALL LCDWPMOV LCDD,#01HACALL LCDWPMOV LCDD,#06HACALL LCDWPMOV LCDD,#0CHACALL LCDWPMOV LCDD,#83HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#86HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#0C3HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#0C6HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#93HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#96HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#0D3HACALL LCDWPMOV A,#10ACALL DISPMOV LCDD,#0D6HACALL LCDWPMOV A,#10ACALL DISP;***********************MOV TMOD,#22H;定时器0和1均工作于方式2,定时器1用于串口波特率MOV TH0, #0A3H;11.0592M,100usMOV TL0,#0A3HMOV TM0T,#1MOV TM0T1,#1MOV TM0TB,#5MOV TM0TS,#10;USART初始化MOV TH1,#0FDHMOV TL1,#0FDH; SETB P3.0MOV SCON,#0D0H;串行工作方式3,9为数据传输MOV PCON,#00HSETB URDMOV CNDT,#0MOV CNDT1,#8MOV DSPC,#8MOV UFLAG,#0MOV FLAG2,#0SETB TR0SETB ET0SETB TR1;运行定时器1,但不开中断SETB ES;开串行口中断SETB PSSETB EARET;*************************** END2、1号从机ORG 000HAJMP MAINORG 000BHAJMP TMR0ORG 0023HAJMP USARTORG 0040HMAIN: ACALL INITHERE: CLR RS0CLR RS1JNB UFLAG.7,TIMDC HERE2: CLR UFLAG.7CLR RENSETB URDMOV A,CND6MOV R7,ACLR CRLC AMOV CND3,AADD A,#5MOV CNDT1,AMOV R0,CND4MOV R1,#CND4 MDBS03T:MOV @R1,#0INC R1MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R7,MDBS03TMOV @R1,#5AHINC R1MOV @R1,#0A5HMOV CNDT,#0ACALL DELA YCLR TB8MOV SBUF,CND1TIMDC: JB FLAG2.7,KEYSCAN TIMEDC: MOV A,HOURMOV B,#10DIV ABJNZ TIMH1MOV DIS7,#11AJMP TIMH2;************************ TIMH1: MOV DIS7,ATIMH2: MOV DIS6,B TIMEM: MOV A,MINUTEMOV B,#10DIV ABMOV DIS4,AMOV DIS3,BTIMES: MOV A,SECONDMOV B,#10DIV ABMOV DIS1,AMOV DIS0,BAJMP HERE;*************************KEYSCAN:CLR FLAG2.7MOV A,P1ORL A,#0E0HMOV P1,ANOPNOPMOV A,P1ANL A,#0E0HXRL A,#0E0HJZ NKEYMOV KTEMP,AAJMP HERENKEY: JB KTEMP.KEY0,KSET JB KTEMP.KEY1,KADDJNB KTEMP.KEY2,KOUTAJMP KSUBKSET: JB FLAG2.0,KSET1SETB FLAG2.0AJMP KOUTKSET1: INC FLAG2SETB FLAG2.0JNB FLAG2.2,KOUTMOV FLAG2,#0 KOUT: MOV KTEMP,#0AJMP TIMEDCKADD: JNB FLAG2.0,KOUT MOV R0,#MINUTEJNB FLAG2.1,KADD1MOV R0,#HOURKADD1: INC @R0JB FLAG2.1,HOURACJNE @R0,#60,KOUT KADD2: MOV @R0,#0AJMP KOUTHOURA: CJNE @R0,#24,KOUT AJMP KADD2KSUB: JNB FLAG2.0,KOUTMOV R0,#MINUTEJNB FLAG2.1,KSUB1MOV R0,#HOURKSUB1: DEC @R0MOV A,@R0JNB ACC.7,KOUTJB FLAG2.1,KSUBH0MOV @R0,#59AJMP KOUTKSUBH0: MOV @R0,#23AJMP KOUT;****************定时器0中断处理TMR0: PUSH PSWPUSH ACCSETB RS0CLR RS1DJNZ TM0T,TIMEMOV TM0T,#20T0DIS: MOV P0,#0MOV A,P1ANL A,#0F8HORL A,DSPCMOV P1,AMOV A,#DIS0ADD A,DSPCMOV R0,AMOV A,@R0MOV DPTR,#LEDTBMOVC A,@A+DPTRMOV P0,ADEC DSPCJNB DSPC.7,TIMEMOV DSPC,#7;********************************************** TIME: DJNZ TM0T1,RETIFMOV TM0T1,#10 ;1msDJNZ TM0TB,RETIFMOV TM0TB,#100SETB FLAG2.7DJNZ TM0TS,RETIFMOV TM0TS,#10INC SECONDMOV A,SECONDCJNE A,#60,TIMEHMOV SECOND,#00HINC MINUTEMOV A,MINUTECJNE A,#60,TIMEHMOV MINUTE,#00HINC HOURMOV A,HOURCJNE A,#24,TIMEHMOV HOUR,#00HTIMEH:RETIF: POP ACCPOP PSWRETI;*********************;***********七段共阴数码管LEDTB: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,00H ;******************************/*TIMEH1: SETB URDSETB UFLAG.4MOV CND1,#0A0HMOV CND2,#10HMOV CND3,#0MOV CND4,#40HMOV CND5,#0MOV CND6,#3MOV CND7,#6MOV CND8,#0MOV CND9,HOURMOV CND11,MINUTEMOV CND12,0MOV CND13,SECONDMOV CND14,#5AHMOV CND15,#0A5HMOV CNDT,#0MOV CNDT1,#15SETB UFLAG.6CLR UFLAG.5AJMP RETIF;******************/;*************USART: PUSH PSWPUSH ACCSETB RS0SETB RS1JBC RI,RXINT;发送中断,清中断标志位并转中断处理TXINT: CLR TIINC CNDTCJNE A,CNDT1,TXGN;必须在发送前检测,若在后的话,则最后一个字节可能不能正确传输TXSTP: MOV CNDT,#0MOV CNDT1,#8CLR URDSETB RENAJMP UOUT;********************TXGN: MOV A,#CND1ADD A,CNDTMOV R0,ACLR TB8MOV SBUF,@R0UOUT: POP ACCPOP PSWRETIRXAD: MOV A,RXDTCJNE A,#0A0H,RXERORCLR SM2AJMP RXSTORRXINT: MOV RXDT,SBUFJZ RXADCJNE A,#1,RXSTORMOV CNDT1,#8RXSTOR: MOV A,#CND1ADD A,CNDTMOV R0,AMOV @R0,RXDTINC CNDTMOV A,CNDTCJNE A,CNDT1,RXOUTCRCCK: MOV A,@R0 ;接收到的数据变形与否的简单校验SWAP ADEC R0XRL A,@R0JNZ RXERORSETB UFLAG.7MOV CNDT1,#16RXEROR: SETB SM2MOV CNDT,#0RXOUT: AJMP UOUT;***********************DELA Y: MOV R2,#250DELA Y1: DJNZ R2,DELA Y1RET;****************初始化子程序INIT: MOV SP,#5FHMOV R1,#DIS0MOV DSPC,#0CLR URDCLR0: MOV @R1,#0INC R1CJNE R1,#HOUR,CLR0MOV DSPC,#7MOV DIS2,#10MOV DIS5,#10MOV TMOD,#22H;定时器0和1均工作于方式2,定时器1用于串口波特率MOV TH0, #0A3H;11.0592M,100usMOV TL0,#0A3HMOV TM0T,#1MOV TM0T1,#1MOV TM0TB,#5MOV TM0TS,#10;USART初始化MOV TH1,#0FDHMOV TL1,#0FDHMOV SCON,#0F0H;串行工作方式2,9为数据传输MOV PCON,#00HCLR URDMOV CNDT,#0MOV CNDT1,#8MOV UFLAG,#0MOV FLAG2,#0SETB TR0SETB ET0SETB TR1;运行定时器1,但不开中断SETB ES;开串行口中断SETB PSSETB EARET;***************************END3、2号从机ORG 000HLJMP MAINORG 000BHLJMP TMR0ORG 0023HLJMP USARTORG 0040HMAIN: ACALL INITHERE: CLR RS0CLR RS1JB UFLAG.7,HERE2 AHERE: AJMP HEREHERE2: CLR RENCLR UFLAG.7;**********接收完成,显示操作MOV R0,CND4MOV R7,CND6MOV R1,#CND9HERE1: MOV A,@R1MOV @R0,AINC R1INC R1INC R0DJNZ R7,HERE1 TIMEDC: MOV A,HOURMOV B,#10DIV ABJNZ TIMH1MOV DIS7,#11AJMP TIMH2TIMH1: MOV DIS7,A TIMH2: MOV DIS6,B TIMEM: MOV A,MINMOV B,#10DIV ABMOV DIS4,AMOV DIS3,B TIMES: MOV A,SECMOV B,#10DIV ABMOV DIS1,AMOV DIS0,BSETB URD;从机接收指令后回复报文SECHO: MOV CND7,#5AHMOV CNDT,#0MOV CNDT1,#8CLR TB8MOV SBUF,CND1AJMP HERE;*******************************DISTB: DB81H,84H,87H,0C1H,0C4H,0C7H,91H,94H,97H,0D1H,0D4H,0D7H;*************USART: PUSH PSWPUSH ACCSETB RS0SETB RS1JBC RI,RXINT;发送中断,清中断标志位并转中断处理TXINT: CLR TIINC CNDTMOV A,CNDTCJNE A,CNDT1,TXGN;必须在发送前检测,若在后的话,则最后一个字节可能不能正确传输MOV CNDT1,#8CLR URDSETB RENAJMP UOUT;******************** TXGN: MOV A,#CND1ADD A,CNDTMOV R0,ACLR TB8MOV SBUF,@R0 UOUT: POP ACCPOP PSWRETIRXAD: MOV A,RXDTCJNE A,#0A1H,RXERORCLR SM2AJMP RXSTOR RXINT: MOV RXDT,SBUFMOV A,CNDTJZ RXADCJNE A,#1,RXINT1AJMP RXSTORRXINT1: CJNE A,#6,RXSTORMOV A,RXDTADD A,CNDT1MOV CNDT1,ARXSTOR: MOV A,#CND1ADD A,CNDTMOV R0,AMOV @R0,RXDTINC CNDTMOV A,CNDTCJNE A,CNDT1,RXOUTCRCCK: MOV A,@R0 ;接收到的数据变形与否的简单校验SWAP ADEC R0XRL A,@R0JNZ RXERORSETB UFLAG.7MOV CNDT1,#16RXEROR: SETB SM2RXOUT: AJMP UOUT;****************************** DELAY: MOV R2,#250DELAY1: DJNZ R2,DELAY1RET;***************************;**************定时器0中断处理程序TMR0: PUSH PSWPUSH ACCSETB RS0CLR RS1DJNZ TM0T,TIMEMOV TM0T,#20T0DIS: MOV P0,#0MOV A,P1ANL A,#0F8HORL A,DSPCMOV P1,AMOV A,#DIS0ADD A,DSPCMOV R0,AMOV DPTR,#LEDTBMOVC A,@A+DPTRMOV P0,ADEC DSPCJNB DSPC.7,TIMEMOV DSPC,#7;********************************************** TIME: DJNZ TM0T1,RETIFMOV TM0T1,#10 ;1msDJNZ TM0TB,RETIFMOV TM0TB,#100SETB FLAG2.7DJNZ TM0TS,RETIFMOV TM0TS,#10;***************** ;中断返回RETIF: CLR RS0POP ACCPOP PSWRETI;***********七段共阴数码管LEDTB: DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,00H ;****************初始化子程序INIT: MOV SP,#05FHCLR URDMOV R1,#TM0TCLR0: MOV @R1,#0INC R1CJNE R1,#RXDT,CLR0;***********************MOV TMOD,#22H;定时器0和1均工作于方式2,定时器1用于串口波特率MOV TH0, #0A3H;11.0592M,100usMOV TL0,#0A3HMOV TM0T,#1MOV TM0T1,#1MOV TM0TB,#5MOV TM0TS,#10;USART初始化MOV TH1,#0FDHMOV TL1,#0FDH; SETB P3.0MOV SCON,#0F0H;串行工作方式3,9位数据传输MOV PCON,#00HMOV CNDT,#0MOV CNDT1,#16MOV DSPC,#7MOV DIS2,#10MOV DIS5,#10MOV UFLAG,#0SETB TR0SETB ET0SETB TR1;运行定时器1,但不开中断SETB ES;开串行口中断SETB PSSETB EARET;***************************END。
基于51单片机的多机通信系统设计
基于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.通信协议:需要定义主机和从机之间的通信协议,包括数据的格式、传输方式等,以便实现正确的数据交互。
MCS51单片机双机并行通信的实现
CLK
8位端 口
B
P0
BUSY
2.1 主 从 并 行 通 信 接 口 的 实 现 主 从 并 行 通 信 接 口 的 特 点 是 ,两 个 单 片 机 之 间
能 够 通 过 并 行 接 口 将 数 据 发 送 到 对 方 ,但 其 中 一 个 单 片 机 处 于 主 机 状 态 .而 另 一 个 单 片 机 处 于 从 机 状 态 。 在 这 种 通 信 方 式 下 ,工 作 状 态 有 两 种 ,即 主 机 发 送 从 机 接 收 和 主 机 接 收 从 机 发 送 。 下 面 我 们 讨 论 主 机 发 送 、接 收 数 据 和 从 机 发 送 、接 收 数 据 的 工 作 流
第 3期 总 第 205期 2010年 2月
内 蒙 古 科 技 与 经 济 Inner M ongolia Science Technology & Economy
N o.3,the 205th issue Feb.2010
M CS S 1单 片机 双机 并 行 通信 的实 现
麻 桃 花
(内 蒙古 机 电 职 业技 术 学 院 ,内蒙 古 呼 和 浩 特 01000o)
摘 要 :针 对 M CS 单 片 机 具 有 的 特 性 ,介 绍 了 在 一 个 系 统 内 的 两 个 M CS 单 片 机 可 以 采 用 不 同 的 并 行 互 联 方 式 来 实 现 它 们 之 间 通 信 的 简 便 方 法 。
关 键 词 :M CS 单 片 机 ;并 行 通 信 ;工 作 流 程 中 图 分 类 号 :TP368.1 文 献 标 识 码 :B 文 章 编 号 :1【)O7— 6921(2010)O3— 01OO— O1
单片机多机通信
单片机多机通信在单片机多机通信过程中,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范围内都能正常工作。
基于MCS-51单片机的串行通信实现
数 据 一 位 一 位 地 依 次 传 输 ,每 一 位 数 据 占 据 一个 固定 的 时 间
2串行 通 信 的 实现
串行 通 信 通 过 串行 接 口来 实现 ,串行 通 信 按信 息传 送 的
长 度 。 用 串 行 通 信 进行 自动 控 制 信 号 的 传 输 时 。 需 要 少数 应 只 几 条 线 就 可 以 在 系统 间 交换 信 息 ,特 别 适 用于 计 算 机 与 计 算
b u a e ig,a d a a z s c m nct n p oo o sd fr mi o o t l r a d P m n o ue ( C) a d o a d rt s t s n nl e o mu a o r tc l ue o c c nr l s n e o a C mp tr P ,b s n e tn y i i r oe l e
通 信 论 坛
计 算 机 与 网 络 创 新 生 活 51
基 于 MC 一 1单片机 的 串行通信 实现 S5
徐 小涛
( 通信指挥学院 湖北 武汉 4 01 ) 3 00
【 要】 行通信是 目 摘 串 前应 用比较广 泛的一种 通信模 式 , 根据单 片机 的 串 通信原 理 , 绍 了单片机 串行通信模 式和单 片 行 介 机 的波特率设置方法, 分析 了单片机双机通信 、 单片机多机通信 以及单 片机 与个人计 算机 (c机之 间的通信协议 , P) 利用 P c良好
机 、 算 机 与 外 设之 间 的远 距 离 通 信 。串行 通 信 是 计 算机 主机 计 与 外 设之 间以 及 主 机 系 统 与 主 机 系统 之 间 数 据o o I tue f mmuiao mma d, u a b i4 0 1) ni C nct nCo i n sW hnHu e 30 0 ,
proteus仿真51单片机串口双机通讯
51单片机的串口双机通讯一、什么是串口串口是串行发送数据的接口,是相对于并口来说的,是一个广泛的定义。
本期我们说的串口指的是指UART或是RS232。
二、什么是波特率波特率是指串行端口每秒内可以传输的波特位数。
这里所指的波特率,如标准9600不是每秒种可以传送9600个字节,而是指每秒可以传送9600个二进位。
一个字节需要8个二进位,如用串口模式1来传输,那么加上起始位和停止位,每个数据字节就要占用10个二进位。
9600bps用模式1传输时,每秒传输的字节数是9600÷10=960个字节,发送一个字节大概需要1ms时间。
三、51单片机串口相关寄存器1、SCON串口控制寄存器(1)SM0和SM1:方式选择寄存器SM0 SM1 工作方式功能波特率0 0 方式0 8位同步移位寄存器晶振频率/ 120 1 方式1 10位UART 可变1 0 方式2 11位UART 晶振频率/32或晶振频率/64 1 1 方式3 11位UART 可变多机通信是工作在方式2和方式3的,所以SM2主要用于方式2和方式3,多级通信时,SM2=1,当SM2=1时,只有当接收到的数据帧第9位(RB8)为1时,单片机才把前八位数据放入自己的SBUF中,否则,将丢弃数据帧。
当SM2=0时,不论RB8的值是什么,都会把串口收到的数据放到SBUF中。
(3)REN:允许接收位REN用于控制是否允许接收数据,REN=1时,允许接收数据,REN=0时,拒绝接收数据。
(4)TB8:要发送的第9位数据位在方式2和方式3中,TB8是要作为数据帧第9位被发送出去的,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址。
(5)RB8:接收到的第9位数据位当单片机已经接收一帧数据帧时,会把数据帧中的第9位放到RB8中。
方式0不使用RB8,在方式2和方式3中,RB8为接收到的数据帧的第9位数据位。
(6)TI:发送中断标志位方式0中,不用管他。
51单片机多机通信过程
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个从机。
该程序主机发送端与多个从机的接收端相接,主机的接收端与多个从机的发送端相接。
51单片机的串口通信分析
51单片机的串口通信分析1. 简介串口通信是51单片机中常用的通信方式之一,它能够实现通过串行端口将数据传输到其他设备或与其他设备进行通信。
本文将对51单片机的串口通信进行分析与讨论。
2. 串口通信原理串口通信主要包括数据传输、数据格式和通信协议三个方面。
在51单片机中,串口通信使用了UART(通用异步收发传输)协议。
UART协议通过选择适当的波特率、数据位、校验位和停止位等参数,实现串口数据的稳定传输。
3. 串口通信硬件连接在51单片机中,串口通信需要将单片机的串行端口与外部设备连接起来。
一般情况下,串口通信需要使用串口线连接单片机的TXD引脚和RXD引脚与外部设备的对应引脚。
4. 串口通信程序设计51单片机的串口通信程序设计主要包括串口初始化和数据发送与接收两个步骤。
在程序设计中,需要设置适当的波特率、数据位、校验位和停止位等参数,并编写相应的发送和接收函数来实现数据的发送和接收功能。
5. 串口通信应用实例串口通信在51单片机的应用非常广泛,可以用于与PC机的通信、与传感器的通信、与其他单片机的通信等等。
在实际应用中,可以通过串口通信实现数据的传输、控制信号的发送与接收等功能。
6. 总结51单片机的串口通信是一种常用且有效的通信方式,通过合理设置通信参数和编写相应的程序,可以实现稳定的数据传输和通信功能。
在应用中,可以根据具体需求选择适当的串口方式和协议来实现串口通信功能。
以上为本文对51单片机的串口通信进行的简要分析与讨论,希望对读者有所帮助。
参考文献:1. 参考书籍12. 参考书籍2。
单片机多机通信的原理
单片机多机通信的原理单片机多机通信是指通过一组单片机进行信息传输和交换的过程。
单片机多机通信可以实现不同单片机之间的数据传输、控制和协调工作。
在多机通信中,每个单片机都有独立的功能和任务,并通过通信方式进行协作完成工作。
1.通信协议:通信协议是单片机多机通信的重要基础。
在多机通信中,需要定义一套协议,规定数据帧的格式,数据的传输方式和操作的流程。
常见的通信协议有SPI、I2C、UART等。
选择合适的通信协议可以根据传输距离、传输速度、设备复杂度等需求来进行选择。
2.总线结构:多机通信中常使用总线结构,将多个单片机连接在同一总线上。
总线结构包括三种类型:并行总线、串行总线和混合总线。
并行总线是指在总线的每条线上同时传输一个单元(八位),速度较快;串行总线是指数据逐位的传输,速度较慢但可以实现长距离传输;混合总线则结合了并行总线和串行总线的优点。
根据具体应用需求,选择合适的总线结构。
3.通信方式:在多机通信中,可以采用半双工通信或者全双工通信方式。
半双工通信是指通信双方交替发送和接收数据,在同一时刻只能进行发送或接收操作;全双工通信是指通信双方可以同时进行发送和接收操作。
根据通信需求和硬件条件,选择合适的通信方式。
4.帧同步:在多机通信中,数据的传输需要进行帧同步,即接收端需要识别出每个数据帧的起始和结束位置。
帧同步可以通过在传输数据中插入特定的起始标识符和结束标识符来实现。
当接收到起始标识符后,接收端开始接收数据帧,直到接收到结束标识符,表示数据帧传输完成。
5.编码和解码:多机通信中,发送数据的单片机需要将数据进行编码,接收数据的单片机需要对接收到的数据进行解码。
编码和解码方式有很多种,如二进制编码、格雷码编码等。
编码和解码的目的是确保数据的可靠传输和正确接收。
6.冲突检测和处理:在多机通信中,由于多个单片机共享同一总线,可能会出现冲突和竞争的情况。
为了避免冲突,需要设计冲突检测和处理机制。
常见的机制有仲裁器、优先级检测和时间片轮转等。
MCS-51单片机的多机通信方式
多机通信原理
每台从机一个地址(编号) 系统中的通信总是由主机发起 主机向从机发送的信息分为地址字节和数据字节两种。地址字
节用于寻址从机,数据字节为发给从机的实际数据,二者可以 使用第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,申请中断
基于单片机的多机通信系统设计
基于单片机的多机通信系统设计作者:刘涛来源:《中国新通信》2014年第08期【摘要】随着社会经济的不断发展进步,科技的不断飞升,在新时代的背景下网络通信已经成了人们最为常用的科学技术产品之一,由于生活水平得到了提高人们在日常的追求上也发生着变化,而对于通信的产品可以说是有着日新月异的变化,人们在网络通讯以及工业自动化和数据传输等这方面的实践操作中会需要一个控制系统对于所运行的数据来进行有效地控制与检测,以此来让通信系统能够及时高速的进行正常通讯,基于它的种种优点在当下已经得到了较为广泛的应用。
在不影响控制系统功能的情况下本文对于多机通信系统的相关软件设计的部分以及硬件部分作出了分析研究。
【关键词】单片机多机通信系统设计在当前的科学技术发展的形势下,随着单片机以及计算机相关方面技术的不断革新进步,单片机是微型计算机的一个分支部分,应用比较的广泛,单片机的多机通信系统就是在单片机的发展上创新而来的,这也是一个方向。
一、单片机概念所谓的单片机就是一种集成电路的芯片,它是采用了超大规模的集成电路技术将有着数据处理能力的CPU和RAM以及ROM等等多种内容集中在一个硅片上而构成的微型计算机系统,这种单片机在工业的控制得到了较为广泛的应用。
在很多的方面对于单片机来说它要比专用的处理器更加的适用于嵌入型的系统,这也是其广泛应用的一个重要的原因,其实单片机是世界上数量最多的一个处理器,伴随着单片机家族的发展规模的壮大单片机与专用的处理器的发展已经是分道扬镳了[1]。
二、关于单片机多机通信的现状对于现代所见到的的单片机基本上都是带有通信接口的,能够方便的和计算机在信息数据上进行通信这给通信设备以及计算机网络之间在应用的层面上提供了有力的物质基础条件,在当下的通信设备的使用上都已经实现了对于单片机的智能控制,像手机、列车无线通信、无线电对讲机等等,在单片机的通信应用应该说是从两片单片机间的通信开始的,再往后就有了主从式的通信设备,在后就出现了基于单片机的多机通信系统的应用,同时得到了广泛的应用,虽然说在单片机的多机通信上面有了很长的研究史但是在形式上也基本都是主从式的,对于平权式的就相对较少[2]。
51单片机与PC机通信
51单片机与PC机通信随着嵌入式系统和物联网技术的发展,51单片机在许多应用中扮演着重要的角色。
这些单片机具有低功耗、高性能和易于编程等优点,使其在各种嵌入式设备中得到广泛应用。
在这些应用中,与PC机的通信是一个关键的需求。
本文将探讨51单片机与PC机通信的方法和协议。
串口通信是51单片机与PC机进行通信的最常用方式之一。
串口通信使用一个或多个串行数据线来传输数据,通常使用RS232或TTL电平标准。
在硬件连接方面,需要将51单片机的串口与PC机的串口进行连接。
通常使用DB9或USB转TTL电路来实现这一连接。
在软件编程方面,需要使用51单片机的UART控制器来进行数据的发送和接收。
具体实现可以使用Keil C51或IAR Embedded Workbench 等集成开发环境进行编程。
USB通信是一种比较新的通信方式,它具有传输速度快、支持热插拔等优点。
在51单片机中,可以使用USB接口芯片来实现与PC机的通信。
在硬件连接方面,需要将51单片机的USB接口芯片与PC机的USB接口进行连接。
通常使用CH340G或FT232等USB转串口芯片来实现这一连接。
在软件编程方面,需要使用51单片机的USB接口芯片来进行数据的发送和接收。
具体实现可以使用相应的USB库来进行编程。
网络通信是一种更加灵活和高效的通信方式。
在51单片机中,可以使用以太网控制器来实现与PC机的网络通信。
在硬件连接方面,需要将51单片机的以太网控制器与PC机的网络接口进行连接。
通常使用ENC28J60等以太网控制器来实现这一连接。
在软件编程方面,需要使用51单片机的以太网控制器来进行数据的发送和接收。
具体实现可以使用相应的网络库来进行编程。
需要注意的是,网络编程涉及到更多的协议和数据格式,需要有一定的网络基础知识。
本文介绍了51单片机与PC机通信的三种常用方式:串口通信、USB 通信和网络通信。
每种方式都有其各自的优缺点和适用场景。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程单片机技术题目串口通信-多机通信系统系别年级07级专业电子科学与技术班级学号学生姓名指导教师职称设计时间目录1 题设要求分析 (1)2 硬件电路的设计 (3)2.1 系统的组成 (3)2.2 系统的工作原理 (3)2.3 硬件电路原理图设计 (4)2.4 硬件电路的实现 (7)3 软件电路的设计 (8)3.1 通信协议的设计 (8)3.2 主机程序设计 (9)3.3 从机程序设计 (14)4 系统的调试与实现 (18)4.1 从机模块调试 (18)4.2 LED显示模块调试 (19)4.3电平转换模块功能调试 (19)4.4主机模块功能调试 (20)4.5整体设计功能调试 (20)参考文献 (23)1 题设要求分析本小组的试验题目如下:一、任务:设计实现多台单片机系统之间的串行通信二、基本要求(难度系数0.8):(1)设计一个主从式多机通信系统,包含1台主机和3台从机,主机和从机全部为单片机;(2)选择合适总线接口芯片,正确连接主机和从机;(3)编程实现分布式数据采集功能,主机可以获取各分机当前AD转换结果,并显示。
三、发挥部分:(1)完善通信功能。
(根据完成情况加分,上限+0.2)经过本小组成员对本课题认真讨论先做出如下分析:对课题分析后本小组认为本次实验的目的是就是应用单片的串口通信功能实现一个分布式采集系统。
整个系统中包含一片主机和三片从机,主机的任务是实现对三片从机的AD转换结果的采集并在数码管上显示之。
这样从硬件的角度上将整个系统分为两个模块——主机模块和从机模块。
主机模块中包含单片机模块、led数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。
就本次试验而言硬件电路的设计难点在于串口电平转换芯片的选择及其连接,而软件的设计难点在于串口通信协议的制定及相关程序的编写。
实现多机通信方案的实现。
不同于双机通信多机通信系统中需要识别通信信息发出者或是接受者是谁。
经过查阅资料发现在大多数的多机通信系统中都是才采用地址识别的方法实现的。
所谓地址识别方法就是在发送或接受信息前先发送和校验地址帧。
就本题目而言,先要对通信系统中的每台机器分配一个唯一的地址作为识别信息。
具体的识别过程如下:⏹首先,从机处于只接收地址帧的状态;⏹主机发送一帧地址信息;⏹从机接受到地址帧后,将本机地址与地址帧中的地址进行比较,如果地址相同准备接受数据,否则丢弃当前帧,依然处于只接受地址帧的状态;⏹主机发送数据帧,相应的从机接受数据,数据传送完毕后,从机继续回到只接受地址帧的状态,在这个过程中其他从机不受影响;⏹当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫从机,重复这一过程[1]。
对于本题而言可通过此过程实现主机对从机的绝对控制。
这样在主机中编写一个循环程序就可以实现对三台从机的AD转换结果的不停采集。
至于地址帧与数据帧的区别则可通过串口工作方式三下的第九位的置1或置0来实现。
在完成通信的基础上,再将采集到的三路结果分别用两个led数码管显示即可试验预期目的。
2 硬件电路的设计2.1 系统的组成根据题目分析可知硬件电分为主机模块和从机模块。
主机模块中包含单片机子模块、led数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。
在主模块中由AT89S51单片机担任主机,六个led数码管担任显示设备和一片MAX485担任串口的电平转换。
在整个主机系统中有三个从机模块三个从机模块结构一样,有一片AT89S51单片机担任从机外接一片ADC0809转换芯片和一片MAX485担任串口的电平转换。
串口采用单工及异步通信方式。
整个硬件结构原如图1所示。
图1 系统结构原理图2.2 系统的工作原理主机AT89S51编程可实现循环访问个从机,当从机接受主机访问后启动AD转换设备ADC0809对外部模拟信号进行转换。
当从机获得转换结果后通过串口将其发送到主机,主机接受到转换结果后再将其发送到相应的led数码管显示。
2.3 硬件电路原理图设计(1)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将自动完成对数码管的刷新工作。
具体的电路如图2所示。
图2 led显示电路(2)串口电平转换电路串口电平转换电路的电路图如图3所示:本实验中采用MAX485的电平转换芯片。
MAX485是一种RS-485标准接口的电平转换芯片。
RS-485采用差分式半双工通信方式,真正实现多点总线连接,具有传输距离远可靠性高的特点。
基于以上原因本小组选择该芯片实现电平转换。
MAX485的1号引脚RO为接收端接单片RXD, 4号引脚DI为发送端接单片TXD, 2、3号引脚分别为发送接收使能端端接单片P1.3引脚。
6、7号引脚总线接线口。
根据设计要求绘制从机模块电路图如图5所示。
实用标准文案1234ABCD4321DCBATitleN u mb erR ev isio nSize A 4D ate:20-Ju n -2010Sh eet o f File:C :\U sers\y an g \D esk to p \从机\A DD A _test2.DD B D raw n B y :IN31IN42IN53IN64IN75ST AR T6EO C 7D 38OE 9C LK10V CC11V RE F(+)12G ND13D 114D 215V RE F(-)16D 017D 418D 519D 620D 721A LE 22A DD C 23A DD B 24A DD A25IN026IN127IN228A DC 0809V CC C B1V CCR 1V CCO E 1LE 111D 22D 33D 44D 55D 66D 77D 88D 91Q192Q 183Q 174Q 165Q 156Q 147Q 138Q 12V CC 20G ND 10U 374AL S573EO CA DC LK V CCA LE C B2A LE 12345678910111213141516A IN 7~AIN 0H EA DE R 8X 2123A74AL S02456B74AL S028910C74AL S02A DCR DEO CW R P1.01P1.12P1.23P1.34P1.45(MOS I)P1.56(MIS O)P1.67(SC K)P1.78R ST 9(RX D )P 3.010(TX D)P3.111(IN T0)P 3.212(IN T1)P 3.313(T0)P3.414(T1)P3.515(W R )P 3.616(RD )P3.717X TA L218X TA L119G ND 20P2.0(A 8)21P2.1(A 9)22P2.2(A 10)23P2.3(A 11)24P2.4(A 12)25P2.5(A 13)26P2.6(A 14)27P2.7(15)28PS EN 29A LE/PR O G30EA /VP P 31P0.7(A D 7)32P0.6(A D 6)33P0.5(A D 5)34P0.4(A D 4)35P0.3(A D 3)36P0.2(A D 2)37P0.1(A D 1)38P0.0(A D 0)39V CC 40U 1A T89S51A LE A DC W R R DEO CV CCC 122p fY 111.0592MC 222p fV CC V CC 8B 7A 6G ND5D I18D E 3R O 1R E 2MA X485R RC 310u FR 28.2KV CC123JP1H EA DE R 3V CCU 2图 5 从机模块电路图2.4 硬件电路的实现首先是主从机电路的实现。
主机的电路的搭建采用主CPU 板、键盘显示接口板各一块。
照实验原理图将主CPU 板的P0口接到键盘显示接口板的位码接口,P1口接到键盘显示接口板的段码的接口。
从机的电路由CPU 板和ADDA 转换板构成。
其次是电平转换电路的焊接。
电平转换的路的实现是通过自己搭建电路完成。
电平转换的电路主要有四块MAX485和两个100Ω电阻构成。
四块MAX485采用总线方式连接,每个芯片分别引出三个引脚用于单片的连接。
最后将各个模块的按照原理图连接起来。
图 6 硬件电路的连接3 软件电路的设计3.1 通信协议的设计通信协议的设计的设计是本题的重点难点,本题通信协议主要是区别主机和从机。
由于串口的方式2、3发送和接收都是11位其第九为可编程置位可以此作为区分地址帧与数据帧从而实现主机与从机,从机与从机的区别。
通信协议同样要规定相同通信速率。
参考相关资料后编写如下的通信协议。
⏹数据传输的双方均使用9600kb/s的速率传送数据,使用主从式通信,主机发送数据,从机接受数据,双方在发送数据时使用查询方式。
⏹双机开始数据传输时,主机发送地址帧呼叫从机。
⏹各从机开始都处于只收地址帧状态。
接收到地址帧后,将接收到的地址内容和本机地址比较,如果地址相同,则向主机返回本机地址作为确认信息,并开始接收数据;如果不同,则继续等待。
⏹主机在发送地址帧后等待,如果接收到的应答信息中的内容和所发地址帧的内容相同,就开始发送数据,如果不一致,主机将继续发送地址帧。
如多次应答仍无回应则认为出错则主机跳出本次通信。
⏹从机在接收完数据后,将根据最后的校验结果判断数据接收是否正确,若校验真确,则向主机发送2AH信号,同时点亮led灯半秒钟,表示本次通信成功;若校验错误,则发送F0H信号,表示接收数据错误,并请求从发。
⏹主机接收到2AH信号,则通信结束,否则主机将重新发送这组数据。
3.2 主机程序设计依据试验要求及相应的通信协议现绘制如下的主机程序流程图:图7 主机程序流程图主机程序:#include<stdio.h>#include<reg51.h>unsigned char LED_seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char LED_bit[6]={0x01,0x02,0x04,0x08,0x10,0x20};unsigned char LED_buf[6]={0x00,0x00,0x00,0x00,0x00,0x00};void delay(unsigned long n) //延时子程序{unsigned int i;for(i=1;i<n;i++){ ; }}void convert(unsigned char a ,unsigned char j) //电压转换子程序{unsigned char m,n,i;unsigned char b=0;for(i=0;i<51;i++){b=i*5;if(b<a){i++;}else{break;}}m=i/10;n=i%10;j=j*2;LED_buf[j]=LED_seg[n];LED_buf[j+1]=LED_seg[m]+0x80;}void sbuf_init(void) //串口初始化子程序{SCON=0xd0; //工作方式3PCON=0x00;TMOD=(TMOD&0xf)|0x20;TH1=0xfd;TL1=0xfd;TR1=1;}void flash_led(void) //led显示子程序{unsigned char i;for(i=0;i<6;i++){P2=LED_buf[i];P0=LED_bit[i];delay(200);}P0=0x00;}void main(void) //主函数{ unsigned char ADDR=0x00;unsigned char tmp;unsigned char a=0;unsigned char i=0;unsigned char j=0;sbuf_init();while(1){tmp = ADDR+1;while(tmp!=ADDR){/* 发送从机地址*/TI = 0;TB8 = 1; // 发送地址帧P1 = 0xff; //发送使能delay(20);SBUF = ADDR;while(!TI);TI = 0;delay(20);/* 接收从机应答*/P1 = 0x00; //接受使能delay(50);while(!RI);tmp = SBUF;RI = 0;delay(20);}P1 = 0x00; //接受使能delay(10);while(!RI);a = SBUF;RI = 0;delay(10);j=ADDR;i++;ADDR++;if (i>=3){i=0;ADDR=0x00;}convert(a,j);flash_led();}}3.3 从机程序设计从程序流程图如下:图8 从机模块流程图从机程序:#include<reg51.h>#include<absacc.h>#include<stdio.h>#define INO XBYTE[0x0000]#define ADDR 0x02 //从机地址0x00、ox01、0x02 sbit AD_BUSY=P3^3;void delay(unsigned long n) //延时子程序{ unsigned int i;for(i=1;i<n;i++){ ; }}void sbuf_init(void) //串口初始换子程序{ SCON=0xd0; //工作方式3 PCON=0x00;TMOD=(TMOD&0xf)|0x20;TH1=0xfd;TL1=0xfd;TR1=1;}void main(void) //主程序{ unsigned char a;unsigned char tmp=0xff;sbuf_init();while(1){ SM2=1; // 只接收地址帧/* 如果接收到的地址帧不是本机地址,则继续等待*/tmp=ADDR+1;P1=0x00; //接受使能while(tmp!=ADDR){ while(!RI);tmp=SBUF;RI=0;}delay(20);/* 发送本机地址作为应答信号,准备接收数据*/P1=0xff; //发送使能delay(40);TI=0;TB8=0; // 主机不检测该位SBUF = ADDR;delay(10);while(!TI);TI = 0;//SM2 = 0; //允许接收数据/* 数据发送*/delay(40);/*INO=0;i=i;i=i;while(AD_BUSY==0);a=INO;*/a=0x88;SBUF=a;while(TI==0);TI=0;delay(60);}}4 系统的调试与实现对本课题的设计思路清晰之后,我们接下来所需要做的工作就是依据我们的方案编程实现功能。