51单片机多个串口,当串口工作在方式3,TB8位保存到什么地方

获取程序从串口发送的数据(软件实现)

或者用一条交叉串口线连接两个串口,一个串口供被监控软件用一个串口供串口助手用,串口助手可以接收发送过来的信息串口助手可以使用格西烽火串口助手、SSCOM等软件。

串口一直发送数据,怎么用软件停止

PLC本体上自带的通讯口一般是485的,通常大家都用笔记夲电脑调试因笔记本电脑基本没有带串口的,所以你需要去买一根USB-485的线这样笔记本就有了一个串口。

然后查看一下你的PLC的通讯口说奣书,找到485通讯收发的那两根线然后和usb的串口线的对应的收发的两根线连起来,这样硬件连接就OK了

而后呢,你需要知道你PLC的通讯口被设置成怎么的通讯模式,比如9600 8 N 1这样你就需要在笔记本电脑的硬件找到你的COM口,也设置成9600 8 N 1当然,这里只是举例你需要保证电脑和PLC的參数设置是一样的。

完成了上述之后就随便下载一个串口调试软件,网上这个软件很多的打开软件,设置成你和PLC通讯的那个COM口当然參数也需要和上述一样,在串口软件中激活当前串口就可以接收PLC发来的信息了。

--顺便说一句如果你发现你在PLC中发送的数据和串口调试軟件中收到的数据,通常是16进制下不一致,那么多半就是485通讯的2根线需要对调一下。

祝你好运请采纳,谢谢!

串口调试助手模拟下位机发送数据可以吗为什么?望高手解答

现在的笔记本电脑是没有带串口的,所以注册的配置中是没有串口的当然提示你打不开串ロ。

如果你在自己的电脑上实现数据传输可以下载个虚拟串口的软件,自己建立一对连接起来的串口

如果你要实现PC对目标机的发送,伱可以去购买串口转USB的工具安装相关驱动

请问有没有可以模拟串口通信的软件是软件模拟串口发送,用PC端...

……这基本上是个串口调试软件嘟会支持吧!?以SSCOM32为例有一个发送间隔输入框,单位为ms

若你在输入框中输入预期的时间间隔,并且勾选前面的重复发送那么软件就會每隔该间隔时间发送一次发送缓冲区中的内容。

我用过的5、6种串口调试软件都支持这个功能的

另外,区区2400波特率也能导致写入流转不忣时很大程度上是你的软件设计问题。

请先分析你的程序流程找到瓶颈并解决。

51串口发送数据的格式是什么

可变(T1溢出率)其中fosc为振荡器的频率,UART为通用异步接收和发送器的英文缩写

串行口工作方式0:当设定SM0、SM1为00时,串行口工作于方式0它又叫同步移位寄存器输出方式。

在方式0下数据从RXD(P3.0)端串行输出或输入,同步信号从TXD(P3.1)端输出发送或接收的数据为8位,低位在前高位在后,没有起始位和停止位

數据传输率固定为振荡器的频率1/12,也就是每个机器周期传送一位数据

方式0可以外接移位寄存器,将串行口扩展为并行口也可以外接同步输入/输出设备。

执行任何一条以SBUF为目的寄存器指令就开始发送。

串行口工作方式1:当设定SM0、SM1为01时串行口工作于方式1,为数据传输率鈳变的8位异步通信方式由TXD发送,RXD接收一帧数据为10位,1位起始位(低电平)8位数据位(低位在前),1位停止位(高电平)

数据传输率取决于定时器1或2的溢出速率(1/溢出周期)和数据传输率是否加倍的选择位SMOD。

对于有定时器/计数器2的51单片机多个串口当T2CON寄存器中RCLK和TCLK置位時,用定时器2作为接收和发送数据传输率发生器而RCLK=TCLK=0时,用定时器1作为接收和发送的数据传输率发生器

2个定时器/计数器可以交叉使用,即发送和接收采用不同的数据传输率

发送过程是由执行任何一条以SBUF为目的的寄存器指令引起的。

串行口工作方式2:当设定SM0、SM12位为10时串荇口工作于方式2,此时串行口被定义为9位异步通信接口

采用这种方式可接收或发送11位数据,以11位为一帧比方式1增加了一个数据位,其餘相同

第9个数据即D8位可用作奇偶校验或地址/数据选择,可以通过软件来控制它再加特殊功能寄存器SCON中的SM2位的配合,可使MCS-5151单片机多个串ロ串行口适用于多机通信

发送时,第9位数据为TB8接收时,第9位数据送入RB8

方式2数据传输率固定,只有2个选择为振荡器的1/64或1/32,可由PCON的最高位选择

串行口工作方式3:当设定SM0、SM1二位为11时,串行口工作于方式3

方式3与方式2类似,唯一的区别是方式3的数据传输率是可变的而帧格式与方式2一样为11位一帧。

方式3也适用于多机通信

SM2:多机通信控制位多机通信时工作于方式2和方式3,SM2位主要用于方式2和方式3。

接收状态當串行口工作于方式2或方式3,以及SM2=1时只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF且置位RI发出中断请求,否则会将接收到的数据放弃

当SM2=0时,就不管第9位数据是0还是1都将数据送入SBUF,并发出中断请求

工作于方式0,SM2必须为0。

REN:允许接收位REN用于控制数据接收嘚允许和禁止REN=1允许接收,REN=0禁止接收

TB8:发送数据位8在方式2和方式3中,TB8是要发送的第9位数据位在多机通信中同样需要传输这一位,TB8=0表示傳输的为数据TB8=1代表传输的为地址。

RB8:接收数据位8在方式2和方式3中RB8存放接收到的第9位数据,用以识别接收到的数据特征

TI:发送中断标誌位可寻址标志位。

方式0时发送完第8位数据后,由硬件置位其他方式下,在发送或停止位之前由硬件置位TI=1表示帧发送结束, 向CPU发中斷申请

在中断服务程序中,必须用软件将其清0取消此中断申请。

RI:接收中断标志位可寻址标志位

方式0时,接收完第8位数据后该位甴硬件置位,在其他工作方式下该位由硬件置位,RI=1表示帧接收完成向CPU发中断申请。

在中断服务程序中必须用软件将其清0,取消此中斷申请

串行发送中断标志TI和接收中断标誌RI是同一个中断源CPU事先不知道是发送中断TI还是接收中断RI产生的中断请求,所以在全双工通信时,必须由软件来判别复位时SCON所有位都清0.

电源控制位寄存器PCON中只有SMOD位与串口工作有关,如下图所示

SMOD:波特率倍增位在方式1、2、3中,当SMOD = 1时波特率提高一倍。

根据实际需要89c51串ロ可以设置四种工作方式,可有8位、10位或11位帧格式

方式0:8位同步移位寄存器以8位数据为一帧,不设起始位和停止位先发送或接收最低位(用于I/O口扩展)。

※TXD:同步脉冲输出端每个脉冲对应一个数据位

基本很少用到方式0,一般都是用到方式0是通过串口扩展8位并行I/O输出口如下图所示

方式1:10位异步通信模式

一帧10位:起始位+8位数据位+停止位

波特率:定时器1作为波特率发生器,公式为

方式2和方式3:11位异步通讯方式

一帧11位:起始位+9位数据位+停止位

第九位数据位在TB8/RB8中常用作校验位或者多机通信地址标识位或者数据标识位

发送:先填写TB8,写入SBUF(启動发送)发送完TI = 1.

接收:REN = 1,RI = 0且第9位为1(或SM2 = 0)将接收数据装入SBUF,第9位装入RB8使RI = 1,否则丢弃接收数据不置位RI。

接下来我用串口通信来实现計算机与之间的串口通信计算机给51单片机多个串口发送一个数,51单片机多个串口接收后把这个数加1再发送给计算机具体操作如下

**函数功能:串口初始化函数

**函数名称:串口中断函数

我用串口助手循环发送从1-8,51单片机多个串口会返回2-9实现现象如下:

编辑:什么鱼 引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一聯系确认版权者如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用请及时通过电子邮件或电话通知峩们,以迅速采取适当措施避免给双方造成不必要的经济损失。

本文章将简要说明5151单片机多个串口扩展ram的方法为了避免以后再扩展ram,峩一步到位的将ram扩展到64KB一、原理图说明:1. 图中未提供电源部分由外部排针供电2. 图中未提供串口下载部分,由外部串口模块插到P30, P31实现下载②、实物图三、Keil设置

要用5151单片机多个串口实现流水灯操作我想是每个初学者学习51单片机多个串口了解嵌入式的第一个动手的小实验吧,紟天在重新学习的时候遇到了一点小问题在这里和大家分享一下。要想控制流水灯操作其实是用51单片机多个串口给每个二极管高低电平來控制灯的亮与不亮我用的5151单片机多个串口学习板的二极管的硬件原理图如下图所示板子上电之后,J2是跳线帽一般是连接上的,再过來是LED1~LED8共8个发光二极管然后经过电阻连接到5151单片机多个串口的8个P1端口上。电阻的作用是为了限流是为了达到二极管规定的电压与电流,避免烧坏二极管5151单片机多个串口上电引脚默认是高电平,所以我们通过给P1各个引脚低电平(即逻辑0)电路即导通则指定的二极管变亮(因为二极管的单向导电性,阳极电压高于阴极电压

89c5151单片机多个串口内部有两个16位的定时/计数器即定时器T0和定时器T1,51单片机多个串口的萣时功能其实就是通过计数来实现的当51单片机多个串口每一个机器周期产生一个脉冲时,计数器就加一定时器的应用涉及到中断方面嘚知识,可以先了解中断的概念再来看定时器如一个16位的定时器,它所能计数的范围是0~65535如果51单片机多个串口采用的是12M的晶振,那么定時器单次最长的时间为65535*((1/12)*12)因为一个一个机器周期等于12个振荡周期,那么定时器加一所用的时间是1/12M*12是1us也就是一个12MHz晶振的5151单片机多個串口单次最长时间约为65ms.定时器的控制89c51的定时器由两个寄存器控制,分别是工作模式寄存器TMOD和控制寄存器TCON

这篇文章主要来介绍一下5151单片机哆个串口的串口下面先来看一下与串口相关的寄存器。

图1 (该图来自5151单片机多个串口技术文档)

下面来逐个介绍个寄存器

SCON寄存器的SM1,SM2主要用来设置串行口的工作方式具体对应关系见图2,REN:串行口接受使能位当51单片机多个串口要接受数据时该位应该置一,TB8:发送数据嘚第九位在方式2或者方式3中TB8为发送的第九位数据。该位不是很常用具体介绍请查看5151单片机多个串口的技术文档,这里不多做介绍TI:發送中断标志,由硬件在方式0串行发送第8位结束时置位或在其它方式串行发送停止位的开始时置位,必须由软件清零RI:接受中断标志,由硬件由硬件在方式0串行发送第8位结束时置位或在其它方式串行发送停止位的中间时置位,必须由软件清零

在这里需要提醒的是,夶家在看技术文档是一定要注意那些必须由软件清零的标志位在写程序时一定要记得清零。

图2(本图来自5151单片机多个串口技术文档)

SBUF寄存器:(为了方便就直接截图说明了)

PCON寄存器D7位SMOD是串行波特率倍增位SMOD为一时,串行口在工作方式1方式2,方式3中波特率加倍复位时,SMOD=0.

寄存器IPHIPSADEN,SADDR不是很常用,在这里就不做介绍我下面的程序中也没有用到,感兴趣的可以自己查阅一下技术文档

接下来开始调试串口的方法和步骤。

1.STC—ISP下载软件自带串口调试功能下面是软件界面

2.在串口调试之前还必须知道自己学习板接的是电脑的哪个端口,查看端口的方法如下:

右键单击桌面上的:我的电脑—设备管理器如果学习板通过下载线连接到了电脑会显示如下界面:

从端口选项中可以看到我连接嘚是COM3.

3接下来的任务就是不程序下载到51单片机多个串口中开始调试了(程序我会在下面给出,先把调试步骤介绍完)

程序下载完毕之后单击STC-ISP丅载软件中的:串口助手按钮就会出现如下界面:

然后在点击打开串口按钮,上图中显示的是:关闭串口是因为我的串口已经打开了,接下来在单字符串发送区输入要传送的数据,例如传送:77选择十六进制发送,观察学习班上LED的亮灭情况,和数据接区的反应如下图:

需要注意的是必须要将COM(即端口号),比特率校验位,数据位停止位,设置正确否则会显示乱码

可以观察到的现象是:led的第八个囷第四个点亮了,原因也很简单因为发送的数据是77,选择的是十六进制发送即,可以看到第8位和第四位是零所以LED点亮了。接受单口顯示data recieve ok说明51单片机多个串口数据接受成功。

最后也是最重要的就是编写程序了:下面是我的调试程序希望对大家能有帮助。

(因为程序粘貼过来的时候注释会显示乱码没办法只好使用截图,请大家将就着看一下还有需要提醒的是程序的第57,58和第29行在截图时重复了请大家仔细对着行标号看就很清楚了)

程序的注释写的很清楚我在这里就不重复解释了,不懂的请大家仔细看注释

我要回帖

更多关于 51单片机多个串口 的文章

 

随机推荐