PLC与单片机IO口单线通信实例取代485

PLC与单片机IO口单线通信实例取代485
PLC与单片机IO口单线通信实例取代485

单片机IO输出方式

方式1、达到报警值输出为高,正常是为低。

方式2、输出方波,正常时频率为25HZ,报警是为100H,危险时为200HZ 方式3、输出47.67HZ(周期为24ms)高低数据序列来转换振动值。

整个数据帧长度为24=帧头(11位)+状态位(2位)+数据位(9位)+帧尾(2位) 帧头=11111111110

帧尾=00

状态位=00-正常,01-报警10-停机

数据位=振动值(0-51.1),000000000-111111111,数据位从高位到低位。

Fig.1中状态=00,振动值=1.5

Fig.2中状态=10,振动值=12.3

基于单片机的数据串口通信研究

龙源期刊网 https://www.360docs.net/doc/e23461619.html, 基于单片机的数据串口通信研究 作者:蒋信 来源:《电子技术与软件工程》2016年第06期 摘要科技的发展日新月异,机电一体化的发展对自动化系统的可靠性提出了更高的要 求,在这样的背景下,单片机在工业控制领域的应用越来越广泛也越来越重要。基于以上,本文从通信过程、显示设计、键盘接口等方面研究了基于单片机的数据串口通信。 【关键词】单片机数据串口通信研究 在计算机控制领域中,计算机与外设数据之间的通信主要依靠单片机来实现,单片机的串口功能能够实现数据的传输以及分析,这就属于串口通信,可以预见的是,单片机的数据串口通信将会得到更广泛的应用,单片机之间的通信也有赖于其数据串口通信功能。基于以上,本文简要研究了基于单片机的数据串口通信。 1 串口通信的实现方式 设备在实现通信的过程中,必须树立一个信息接发双方都认可的通信方式,只有这样才能够保证信息在传送的过程中不发生冲突,才能够实现设备之间的通信,对于串口通信来说,主要有以下两种方式。 1.1 异步通信方式 异步通信方式实现的过程中,数据传输方式为独立字节的形式,不同的字节前端有着不同的起始信号,不同字节的后端则会有不同的终止信号,起始信号只能是一个,而终止信号可以是一个也可以是多个。数据传输过程中,字节进行移动,一个字节的迁移过程表示一个字节的传输过程,传输之前使用起始信号进行传输,传输结束之后使用终止信号将传输线调回标准状态,一个字节传输完毕后进行下一个字节的传输,字节传输有着连续性,这就是异步传输方式。由于没一个字节都要附加起始信号信息和终止信号信息,因此异步传输方式的效率较低,但异步通信方式容许一定程度的频率漂移,有着一定的误差缓冲作用。 1.2 同步通信方式 同步通信方式指的是将所有字符和字节连接在一起进行传输的一种通信方式,多个字符相互连接组成数据块,在数据块前增加同步字符,以同步字符作为传输起始信号,在传输后增加校验字符,以校验字符作为传输终止信号,以此来校验传输过程中的错误和误差,数据块中的各个字符之间没有间隔,相较于异步通信方式来说,其传输效率较高,但其对于信息接收端和信息发送端的同步性要求较高,因此硬件的复杂程度也就更高。 2 基于单片机的数据串口通信

51系列单片机之串口通信

51系列单片机之串口通信 单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器, 与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了.而前面学 习过的定时器与中断将是单片机通信的基础. 单片机的中断系统中第4 个中断 就是串口中断,要进行串口通信首先就要打开CPU 总中断EA,还要打开串口通 信中断ES,这是串口通信的前堤,而串口通信也跟计时器一样有很多的模式,因此 我们还要设置SCON 寄存器来指定采用哪一种方式进行通信,而在通信的过程中,我们还要设定通信的波特率,不然的话,单片机是没办法进行采样的,这样也不会得 到正确的结果了.我在实验过程中用到的是1 号定时器来设定的波特率,用到了 计时器方式2,也就是8 位自动重装,这样可以简化编程,她的实现思想就是将常 数放入TH,而TL 中则是初始化参数,当溢出时,单片机会自动将TH 中的常数装 入TL 中. 再来说说波特率,我们为什么要设定波特率,因为单片机会以16 倍波 特率的速度进行采样,而在实验中我们用的是10 位异步收发方式,因此要将SM0 置0,SM1 置1.而其中的10 位有8 位数据位,第一位和最后一位是发送数据的起 始与结束.采用高的皮特率就不会出错啦.而波特率是有一个公式的:方式0 的波 特率= fosc/12 方式2 的波特率=(2SMOD/64)- fosc 方式1 的波特率=(2SMOD/32)-(T1 溢出率)方式3 的波特率=(2SMOD/32)-(T1 溢出率)T1 溢出率= fosc /{12 乘以[256 -(TH1)]}根据公式我们很容易就算出当晶 振为110592HZ 时,要达到9600 的波特率,我们只需要将TL1 置FDH 即可,如下图: 除此之外,你还要将SCON 中的REN 位置1,不然的话,单片机是不会接收数 据的. 还有不要忘了选择定时器的工作方式,设置TMOD 为0x20 既是工作方式2,8 位自动重装定时器. 这样一来,初始批工作算是差不多了.而串口通信分为中 断方式,和查询方式,如果你想用查询方式你也不用设置IE 寄存器了. 在串口通

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.360docs.net/doc/e23461619.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

S7-200通讯的编程步骤---自由口通讯

PLC 和变频器 频器博客原创(https://www.360docs.net/doc/e23461619.html,)
S7通讯的编程步骤-----自由口通讯 S7-200 通讯的编程步骤---自由口通讯
S7-200 自由口通讯是基于 RS485 通讯基础的半双工通讯, 因此, 发送和接收指令不能同时执行。 自由口通讯使用 SMB30(口 0)和 SMB130(口 1)来定义通讯口 的工作模式。SMB30/SMB130 各位的定义如下:
图 1:通讯口工作模式寄存器
使用自有口通讯,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0) 必须分别为 1 和 0。 发送指令(XMT) 一、 发送指令(XMT) 使用 XMT 发送指令可以把存于缓冲区中的数据, 一次发送一个或
1

PLC 和变频器 频器博客原创(https://www.360docs.net/doc/e23461619.html,)
多个字节的数据,最多为 255 个。发送完最后一个字符后还可以连接 到一个发送完中断(端口 0 为 9,端口 1 位 26,见下表) 。
图 2:中断事件表
2

PLC 和变频器 频器博客原创(https://www.360docs.net/doc/e23461619.html,)
发送缓冲区的格式如下表所示:
图 3:发送缓冲区的格式 说明: T+0:发送信息的字节个数需要提前定义。 T+1~T+255:要发送的数据字节
和 XMT 有关的寄存器:SMB4 的 SM4.5 和 SM4.6。SM4.5=1 时,口 0 发送完毕;SM4.6=1 时,口 1 发送完毕。 由以上可以看出,有两种方法可以检测端口 0 或 1 的数据发送 状态:一种是利用中断,一种是利用寄存器 SMB4 的第 5 位(口 0) 和第 6 位(口 1) 。 接收指令(RCV) 二、 接收指令(RCV) 使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的 数据(最多 255 个) ,并存于数据缓冲区。接收完最后一个字节后可 以连接到一个接收完中断(口 0 是 23,口 1 是 24,见图 2 所示) 。 接收缓冲区的格式如下表所示:
3

实现S-SMART自由口通讯

如何实现S-SMART自由口通讯

————————————————————————————————作者:————————————————————————————————日期:

如何实现S7-200SMART自由口通讯 自由口通讯协议的关键条件 定义开始接收消息和停止接收消息的条件。 1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0 空闲线条件定义为传输线路上的安静或者空闲的时间。SMW90/SMW190中是以ms为单位的空闲时间。在该方式下,从执行接收指令开始起动空闲时间检测。在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的第一个字符作为新信息的起始字符。接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。 空闲线时间应大于以指定波特率传送一个字符所需要的时间。空闲线时间的典型为以指定的波特率传送3个字符所需要的时间。传输速率为19200bit/s时候,可设置空闲时间为2ms。对于二进制协议,没有特定起始字符的协议或指定了消息之间最小时间间隔的协议,可以将空闲线检测用作开始条件。 2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190 起始字符是消息的第一个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。起始字符检测一般用于ASCII协议。 3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0 满足空闲线条件之后,接收消息功能查找指定的起始字符。如果接收到的字符不是 smB88/smb188指定的起始字符,将开始重新检测空闲线条件。在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。这种方式尤其适合用于通讯链路上有多台设备的情况。 4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188以接收到的break(断开)作为接收消息的开始。当接收到的数据保持为0的时间大于完整字符(包含起始位,数据位,奇偶校验位和停止位)传输的时间,表示检测到break。断开条件之前接收到的字符将忽略,断开条件之后接收到的任意字符都会存储在消息缓冲区中。 5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190 断开条件满足后,接收消息功能将查找指定的起始字符。如果接收到的字符不是起始字符,将重新搜索断开条件。所有在断开条件满足之前在接收到起始字符之前接收的字符都会忽略。起始字符和所有后续字符一起存入消息缓冲区 6、任何字符开始接受:设置il=1,sc=0,bk=0,smw90/smw190=0 忽略smb88/smb188中的起始字符。应为smw90/smw190中的空闲线时间为0,接收指令已经执行,便将立即开始强制接收所有的任意字符,并将存入消息缓冲区。

基于单片机的串口通信模块设计

1 绪论 1.1 研究背景 通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换。在现代工业控制中,通常采用计算机作为上位机与下层的实时控制与监测设备进行通讯。现场数据必须通过一个数据收集器传给上位机,同样上位机向现场设备发命令也必须通过数据收集器。串行通信因其结构简单、执行速度快、抗干扰能力强等优点,已被广泛应用于数据采集和过程控制等领域。 计算机与外界的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。串行通信的特点是:数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度快,串行通信的距离可以从几米到几千米。 随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行监测和控制。PC机具有强大的监控和管理能力,而单片机则具有快速及灵和的控制特点,通过PC 机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。而随着USB接口技术的成熟和使用的普及,由于USB 接口有着 RS-232(DB-9)串口无法比拟的优点,RS-232(DB-9)串口正在逐步地为USB 接口所替代。而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232(DB-9)串口已不再设置,这就约束了基于RS-232(DB-9)串口与PC 机联络的单片机设备的使用围。当前USB接口逐步取代RS-232(DB-9)串口已是大势所趋,单片机同计算机的USB通信在实际工作中的应用围也将越来越广。本文所介

单片机各种通信方式的特点和主要应用场合

单片机各种通信方式的特点和主要应用场合 串口用的比较多: RS232,用于与标准的RS232设备通讯 网卡,用于互联网或采用网卡端口的设备通讯 I2C,用于单片机自己外设或多个单片机之间通讯 CAN,工业标准,汽车中常用 并口: 并口就是直接将数据输入或输出,多少位数据就要用多少根线,此外还要加上控制线2根以上。 例如8位的数据通讯,至少用10根线。由于单片机的引脚数目有限,这种方法很不实用。 并行口现在计算机都几乎不用了。如果感兴趣,你就找以前的计算技术方面的书上还有介绍。 并口线路复杂,可靠性低,速度低,除了早期的打印机还用,也几乎没有这样的外设了。 大家好,通过前一期的学习,我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管等资源,体会到了学习板的易用性与易学性,看了前几期实例,大部分都是基于单片机端口操作原理呢? 大家是否觉得这样一个单片机系统似乎缺少点什么呢?不错,本期我们将介绍单片机与电脑通讯,使单片机与PC 机能够联机工作。 单片机除了需要控制外围器件完成特定的功能外,在很多应用中还要完成单片机和单片机之间、单片机和外围器件之间,以及单片机和微机之间的数据交换和指令的传输,这就是单片机的通信。单片机的通信方式可以分为并行通信和串行通信。并行方式传送一个字节的数据至少需要8 条数据线。 一般来讲单片机与打印机等外围设备连接时,除8条数据线外,还要状态、应答等控制线,当传送距离过远时电线要求过多,成本会增加很多。单片机的串行通信方法较为多样,传统的串行通信方式是通过单片机自带的串行口进行RS232 方式的通信。 串行通信是以一位数据线传送数据的位信号,即使加上几条通信联络控制线,也比并行通信用的线少。 因此,串行通信适合远距离数据传送,如大型主机与其远程终端之间,处于两地的计算机之间,采用串行通信就非常经济。 串行通信又分为异步传送和同步传送两种基本方式。 异步通讯:异步通信传输的数据格式一般由1个起始位、7 个或8 个数据位、1 到2 个停止位和一个校验位组成。它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如图1 所示。

200的自由口通讯说明

自由口通讯概述 S7-200PLC的通讯口支持RS485接口标准。采用正负两根信号线作为传输线路。 工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。 数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。 传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。 字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。 字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。字符传输时间取决于波特率。 数据发送可以是连续的也可以是断续的。所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。 示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图1.: 示例说明: 16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时,先发送该字符帧的起始位(低电平),

再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。因为本例中PLC连续的发送两个字符,所以第一个字符帧的停止位结束后便立即发送下一个字符帧的起始位,之间数据线没有空闲状态。假如PLC断续的发送这两个字符,那么当PLC发送完第一个字符帧的停止位后,数据线将维持一段时间空闲状态,再发送下一个字符帧。 字符传输的时间取决于波特率,如果设置波特率为9.6k,那么传输一个字符帧中的一位用时等于1/9600*1000000=104us,如果这个字符帧有11位,那么这个字符帧的传输时间等于11/9600*1000=1.145ms. 通讯口初始化 SMB30(对于端口0)和SMB130(对于端口1)被用于选择波特率和校验类型。SMB30和SMB130可读可写。见下图2. 图2.特殊存储器字节SMB30/SMB130 示例:定义端口0为自由口模式,9600波特率,8位数据位,偶校验,程序如下图3.:

基于51单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级:xxxxxx 学号:13xxxxxxxxx 姓名:xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计

1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下: 图1.AT89C51(52) (1)数据缓冲器(SBUF) 接受或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,

单片机与pc串口通信

课程设计报告书课程名称:MCS-51单片机课程设计题目:单片机与PC机之间的通信 姓名:高永强 学号:010700830 学院:电气工程与自动化学院专业:电气工程与自动化 年级:2007级 指导教师:张丽萍

目录 1.引言与系统结构 (2) 2.硬件实现 2.1.AT89C52 (2) 2.2.MAX232芯片 (3) 2.3. 9针串口 (5) 3.虚拟串口调试 (7) 4.Proteus仿真原理图及元件清单 (14) 5.软件设计 (15) 6.主程序代码 (16) 7.心得体会 (18) 8.参考文献 (18)

1.引言与系统结构:利用PC 机配置的异步通信适配器,可以方便的完成 PC 机遇89C52单片机的数据通信。由于89C52单片机输入、输出电平为TTL 电平,而PC 机配置的是RS-232标准串行接口,二者的电器规范不一致,因此采用MXA232单芯片 实现89C52单片机于PC 机的RS-232标准接口通信电路。 如今,在很多场合中,要求单片机不仅能独立完成单机的控制任务,还要能与其他数据控制设备(单片机、PC 机等)进行数据交换。串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如可以很直观地把红外遥控器键值的数据码显示在电脑上,可以使编写红外遥控程序时方便不少,起到仿真器的某些功效。 89C52有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL 电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND.第2脚的RXD.第3脚的TXD 。 图 1 系统结构 2.硬件实现: 2.1 .AT89C52: AT89C52是51系列单片机的一个型号,它是ATMEL 公

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

实验十 自由口通信实验

实验十自由口编程实验 一、实验目的 了解PLC通信功能;初步掌握PLC自由口通信编程方法。 二、实验设备 1、THSMS-A型实验装置二台 2、安装了STEP7-Micro/WIN4.0编程软件的计算机一台 3、PC/PPI编程电缆,网络连接器。 4、锁紧导线若干 三、实验内容与步骤 (1)输入以下程序,通过串口调试软件(可从网上下载,下图为某一款软件主界面)或windows超级终端(使用方法附后,如果你的计算机中没有,请找老师或者从网上下载)观察现象。 Network 1 // 网络标题 // 传送:“S7-200你好”到VW100开始的五个字(十个字节) LD SM0.1 MOVB 16#09, SMB30 //9600,8,N,1 MOVW 16#5337, VW100 //“S”和“7”的ASCII码 MOVW 16#2D32, VW102 //“-”和“2”的ASCII码 MOVW 16#3030, VW104 //两个“0”的ASCII码 MOVW 16#C4E3, VW106 //“你”字的汉字机内码,产生办法:找到汉字区位码,将区码和位码分别变为16进制,再分别加上A0即得 MOVW 16#BAC3, VW108 //“好”的机内码 MOVB 10, VB99 //缓冲区有10个字节(即“S7-200你好”),缓冲区格式见教材P145图7-22 Network 2 LD SM0.5 //秒脉冲,占空比50% EU XMT VB99, 0 //上升沿发送VB99中写明的字节数,从端口0发送 (2)输入以下程序,通过串口调试软件(可从网上下载,下图为某一款软件主界面)或windows超级终端(使用方法附后,如果你的计算机中没有,请找老师或者从网上下载)观察现象。 主程序: Network 1 // 网络标题 // 网络注释 LD SM0.1 MOVB 9, SMB30 MOVB 1, VB100 MOVB 'A', VB101 Network 2 LD SM0.1 ATCH INT0, 8 ENI Network 3 LD I0.1

51单片机与串口通信(含代码)

51单片机与串口通信(含代码) 串口调试 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude #i nclude #i nclude #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3 , flag,temp,ch; bit read_flag=0; sbit cp=P1^1; sbit DIR=P1^2; int i; unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; void init_serialcomm(void) { SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收

PCON=0x00; ES=1; TMOD=0x21; //定时器工作于方式2,自动装载方式TH0=(65536-1000)%256; TL0=(65536-1000)/256; TL1=0xfd; TH1=0xfd; ET0=1; TR0=1; TR1=1; // TI=0; EA=1; // TI=1; RAMDATA=0x1F45; } void serial () interrupt 4 using 3 { if(RI) { RI=0; ch=SBUF; TI=1; //置SBUF空 switch(ch) { case 0x01 :printf("A"); TI=0;break; case 0x02 :printf("B"); TI=0;break; case 0x03 :printf("C"); TI=0;break; case 0x04 :printf("D"); TI=0;break; default :printf("fg"); TI=0;break; } }

51单片机与PC串口通讯

目录 第1章需求分析 ............................................................................................................................ - 1 - 1.1课题名称 (1) 1.2任务 (1) 1.3要求 (1) 1.4设计思想 (1) 1.5课程设计环境 (1) 1.6设备运行环境 (2) 1.7我在本实验中完成的任务 (2) 第2章概要设计 ............................................................................................................................ - 2 - 2.1程序流程图 (2) 2.2设计方法及原理 (3) 第3章详细设计 ............................................................................................................................ - 3 - 3.1电路原理 (3) 3.1.1STC89C52芯片 ............................................................................................................. - 3 -3.2串口通信协议 (4) 3.3程序设计 (5) 3.3.1主程序模块 .................................................................................................................... - 5 - 3.3.2串口通讯模块 ................................................................................................................ - 6 - 3.3.3控制部分文件 ................................................................................................................ - 8 - 3.3.4公共部分模块 .............................................................................................................. - 11 -3.4电路搭建 (12) 3.4.1电路原理图 .................................................................................................................. - 12 -第4章上位机关键代码分析 ...................................................................................................... - 12 - 4.1打开串口操作 (12) 4.2后台线程处理串口程序 (15) 4.3程序运行界面 (18) 第5章课程设计总结与体会 ...................................................................................................... - 19 -第6章致谢 .................................................................................................................................. - 19 -参考文献........................................................................................................................................... - 19 -

S7-200自由口通讯程序

S7-200自由口通讯程序 MAIN:S7200自由口通讯程序 LD SM0.1 CALL SBR_0:SBR0 //初始化子程序 LD SM0.7 = SM30.0 SBR_0:初始化子程序 LD SM0.0 MOVW +2, VW8 //PLC自由口地址,此处每台机器需设不同的地址 LD SM0.0 MOVB 9, SMB30 //通讯参数,波特率9600,自由口通讯 MOVD &VB100, VD40 MOVW +10, VW54 MOVB 12, VB150 MOVB VB9, VB151 MOVD &VB151, VD60 MOVB 6, SMB34 中断间隔6毫秒 ATCH INT_0:INT0, 10 连接定时中断 ATCH INT_1:INT1, 8 连接字符接收中断 ENI INT_0:中断程序入口定时中断 LD SM0.0 DTCH 10 解除定时中断 MOVD VD40, VD46 VB100的地址送VD46 MOVW +10, VW44 MOVW +10, VW54 ATCH INT_2:INT2, 8 //接收中断起用服务程序INT2 INT_1: 延时转向INT0 LD SM0.0 MOVB 5, SMB34 ATCH INT_0:INT0, 10 INT_2: 接受地址,并判断 LDB= SMB2, VB9 //地址和本机相符 MOVW VW8, AC0 累加器 MOVB 255, SMB34 ATCH INT_3:INT3, 8 //起用中断服务INT3,接受包 ATCH INT_5:INT5, 10 //起用延时监控服务INT5 CRETI LDB= SMB2, VB9 //地址和本机不符 NOT ATCH INT_0:INT0, 10 //返回中断入口

基于51单片机的双机串行通信课程设计 1000110061

基于AT89C51单片机的双机串行通信设计 姓名:杨应伟 学号:100110061 专业:机械设计制造及其制动化 班级:机电二班

前言 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。 在通信过程中,使用通信协议进行通信。在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。

单片机之间的串行通讯

桂林电子科技大学微机与单片机接口 设 计 报 告 指导教师:吴兆华 学生:王晓鹏 学号:092011211 2010 年6月25日

一、设计题目 单片机之间的串行通讯 二、设计内容与要求 实现两个单片机之间的串行通讯,并用数码管分别显示两个单片机的数据,以验证通讯是否成功。 三、设计目的意义 当前,各种简单实用的通讯系统,使其达到数据传送稳在测控系统和工程应用中,常遇到多项任务需同时执行的情况,即主从式多机分布式系统成为现代工业广泛应用的模式。由于单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表等方面都有广泛的应用。利用单片机的串行通信技术设计一定可靠,使用方便,可扩展为DCS系统应用于工业领域,将有广泛的实际应用价值。单片机除了需要外围器件完成特定的功能外,在很多的应用中单片机之间通讯及单片机和外围器件之间的数据交换,多年来国内外在信息的处理特别是控制和信息传输通讯领域有着十分广泛的应用。 四、系统硬件原理图 图 1 系统硬件原理图 五、程序流程图与源程序 软件的设计是重要的。它的好坏直接关系设计的成功与否。软件是用C

语言完成的,需要能熟练的掌握C语言,还要熟悉AT89S52单片机。从程序流程图、通信协议、波特率计算、编写程序、编译、和烧入软件的操作,到最后的调试,是很复杂的。下面作详细介绍: 1、程序流程图 图2 程序流程图 2、 C语言程序 (1)主机的程序 #include /********变量说明***********/ unsigned char i,j,k,KEY,flag; unsigned char time1,time2,time3; unsigned int code ; a[11]={0x00,0x3F,0x7D,0x5B,0x5B,0x00,0x76,0x79,0x38,0x38,0x3f

实验单片机与PC机串口通信

实验单片机与PC机串口通信(C51编程)实验 要求: 1、掌握串行口的控制与状态寄存器SCON 2、掌握特殊功能寄存器PCON 3、掌握串行口的工作方式及其设置 4、掌握串行口的波特率(bondrate)选择 任务: 1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。 采用软件仿真的方式完成,用串口调试助手和KEIL C,或串口调试助手和PROTEUS分别仿真。 需要用到以下软件:KEIL,VSPDXP5(虚拟串口软件),串口调试助手,Proteus。 (1)虚拟串口软件、串口调试助手和KEIL C的联调 首先在KEIL里编译写好的程序。

打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。 接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入 modecom39600,0,8,1 %分别设置com3的波特率、奇偶校验 位、数据位、停止位 assigncom3sout %把单片机的串口和COM3绑定到一 起。因为所用的单片机是

(以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。 实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。 2、以下在Proteus和串口调试助手实现的结果: 将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。 点击串口,可以对串口进行设置: 用串口调试助手发送数据,即可看到仿真结果。 实验参考程序源文件在exp2-comm文件夹中。

西门子自由口通讯

一、串口特性设置 SMB30: ppdb bbmm pp:奇偶校验选择,00=不校验,01=偶校验,10=不校验,11=奇校验; d:每个字符的数据位,0=8位/字符,1=7位/字符; bbb:自由口通讯波特率(bit/s) 000=38400,001=19200,010=9600,011=4800,100=2400,101=1200,110=115.2K,111=57.6K;mm:协议选择,00=PPI/从站模式,01=自由端口协议,10=PPI/主站模式,11=保留(默认设置为00=PPI/从站模式); 二、报文接收的状态字 SMB86:nre0 0tcp; n=1:通过用户禁止命令终止报文接收。 r=1:接收报文终止,输入参数错误或无起始或结束条件。 e=1:收到结束字符。 c=1:接收报文终止,超出最大字符数。 t=1:接收报文终止,超时。 p=1:接收报文终止,奇偶校验错误。 三、报文接收的控制字 SMB87:报文接收的控制字,en,sc,ec,il c/m,tmr,bk,0; en:0=禁止报文接收,1=允许报文接收,每次执行RCV指令时检查允许/禁止接收报文位。sc:0=忽略SMB188,1=使用SM1B188的值检查报文的开始。 ec:0=忽略SM189,1=使用SM189的值检查报文的结束。 il:0=忽略SMW190,1=使用SMW190的值检测空闲状态。 c/m:0=定时器是字符间超时定时器,1=定时器是报文定时器。 tmr:0=忽略SMW192,1=超过SMW192中设置的时间时终止接收。 bk:0=忽略break(间断)条件,1=用break条件来检测报文的开始。 报文接收控制字节位用来定义识别报文的标准,报文的起始和结束标准均需定义。 SMB88=报文的起始字符 SMB89=报文的结束字符 SMW90=以ms为单位的空闲线时间间隔。空闲线时间结束后接收到的第一个字符是最新报文的起始字符。 SMW92=字符间/报文间定时值(用ms表示),如果超时停止接收报文。 SMW94=接收最大字符数(1-255),即使不用字符数计算来终止报文,这个值也应按希望的最大缓冲区来设置 四、接收指令的参数设置 RCV指令允许选择报文开始和结束的条件,SMB86-SMB94用于端口0,SMB186-SMB194用于端口1。

相关文档
最新文档