-
2021-08-04 22:43:55
串口通讯
前言
计算机是一种现代化的信息处理工具,它对信息进行处理并提供结果,其结果(输出)取决于所接收的信息(输入)及相应的处理算法。
随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。
通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。一.通讯理论
串行通信和并行通信
并行通信:将数据字节的各位用多条数据线同时进行传送。
串行通信:将数据字节分成一位一位的形式在一条传输线上逐个地传送。串行通信
串行通信又分为异步通信和同步通信。
同步通信:
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。
发送方对接收方的同步可以通过两种方法实现:外同步和自同步。
外同步:外同步法使指由发送端发送专门的同步信息(常被称为导频),接收端把这个导频提取出来作为同步信号的方法。外同步法主要在载波同步及位同步系统中应用。
自同步:发送端不发送专门的同步信息,接收端设法从接收到的信号中提取同步信息的方法。效率高,但收端设备相对外同步法较为复杂。异步通信:
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。异步通信特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2-3位用于起止位,各帧之间还有间隔,因此传输效率不高。
串行通信的传输方向:
单工:数据传输仅能沿一个方向,不能实现反向传输。
半双工:数据传输可以沿两个方向,但需要分时进行。
全双工:是指数据可以同时进行双向传输。串行通信的错误校验:
1.奇偶校验
2.代码和校验
3.循环冗余校验串行通信的接口标准:
一,RS-232C:RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
1.机械特性
RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)
2.功能特性
3.过程特性
过程特性规定了信号之间的时序关系,以便正确地接收和发送数据。远程通信连接:
近程通信连接:
RS-232C电平与TTL电平转换驱动电路:
4.采用RS-232C接口存在的问题:
a.传输距离短,传输速率低
RS-232C总线标准受电容允许值约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米)。最高传输速率为20Kbpsb.有电平偏移
RS-232C总线标准要i去收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。c.抗干扰能力差
RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中,为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。二,RS-422A接口
RS-422A输出驱动器为双端平衡驱动器。如果其中一条线为逻辑“1”状态,另一条线就为逻辑“0”,比采用单端不平衡驱动对电压的放大倍数大一倍。差分电路能从地线干扰中拾取有效信号,差分接收器可以分辨200mV以上的电位差。若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互抵消,因此可以避免或大大减弱地线干扰和电磁干扰的影响。RS-422A传输速率(90Kbps)时,传输距离可达1200米。三,RS-485接口
RS-485是RS-422A的变型:RS-422A用于全双工,而RS-485则用于半双工。RS-485是一种多发送器标准,在通信线路上最多可以使用32对差分驱动器/接收器。如果在一个网络中连接的设备超过32个,还可以使用中继器。
RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑。由于发送方需要两根传输线,接收方也需要两根传输线。传输线采用差分信道,所以它的干扰抑制性极好,又因为它的阻抗低,无接地问题,所以传输距离可达1200米,传输速率可达1Mbps。
RS-485是一点对多点的通信接口,一般采用双绞线的结构。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL.RS-485的电平转换。在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成,上位机为普通的PC机,负责监控下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场被控设备的工作状况。系统中各节点(包括上位机)的识别是通过设置不同的站地址来实现的。二.串口通讯实现
1.打开串口;
2.设置串口模式;
3.设置波特率;
4.运用串口;初始化部分:
晶振频率是11.0592MHz;
定时器1设置为模式2,8位自动重装
打开串口,设置模式1;
波特率算法:
TMOD=0x21; //定时器1设置为模式2,8位自动重装 SCON=0x50; //串口设置成模式1,8位UART ,波特率可变 PCON=0x80; //----SMOD=1;//串行通信波特率加倍 TH1=0xFA; //晶振频率是11.0592MHz时,设置串行通信波特率为9600bit/s。 TL1=0xFA; ES=1; //打开串口 TR1=1; //打开定时器1
串口中断设置:
void SerialPortInterrupt(void)interrupt 4 { u8 numData=0; if(RI) { //receiveData=SBUF;//出去接收到的数据 DDCBuffer[numData]=SBUF; // numData++; RI = 0;//清除接收中断标志? } SBUF=DDCBuffer[numData];//将接收到的数据放入到发送寄存器 while(!TI); //等待发送数据完成 TI=0; //清除发送完成标志位 }
结果:
更多相关内容 -
单片机与DSP中的关于89C51单片机I/O口模拟串行通信实现方法
2020-11-08 12:15:44本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。 1.串行接口的基本通信方式 串行接口的有异步和同步两种基本通信方式。异步通信采用... -
java 串口通信实现流程示例
2020-08-28 18:24:14主要介绍了java 串口通信实现流程示例,具有一定参考价值,需要的朋友可以了解下。 -
实现串口通信,能够实现无线串口通讯
2019-01-10 10:42:37实现无线串口通讯,串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其... -
C++实现的串口通信
2021-01-19 22:43:18上位机和下位机通信的问题,使用的协议rs485协议. 题目是用VC++让上位机和下位机进行通信. 接在电脑上的rs232口,使用了232和485的转换器,发送相应的数据格式,然后上位机接受相应的格式。 原代码如下: ... -
PLC与监控计算机的串行通信实现
2021-03-15 18:44:06介绍了关于PLC与监控计算机的串行通信实现的详细说明,提供台达PLC的技术资料的下载。 -
MFC实现简单的串口通信
2017-03-26 10:25:24 -
关于89C51单片机I/O口模拟串行通信实现方法
2021-01-19 19:15:22本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的应用系统中实现与两个以上串行接口设备的多机通信。 1.串行接口的基本通信方式 串行接口的有异步和同步两种基本通信方式。异步通信采用用... -
89C51单片机I/O口模拟串行通信实现方法
2020-08-12 16:48:09本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。 -
MFC串口通信的同步实现
2018-02-26 09:52:03利用同步模式进行串口通信,适用于一问一答类型的通信机制,可设置超时。例子简单实用,提供了open close recv send 函数, dlg.cpp中提供了调用方式,可供参考。本代码并非利用CSerialPort.cpp。 对话框上的两个... -
基于VB的台达PLC与监控计算机的串行通信实现
2021-03-15 18:12:43基于VB的台达PLC与监控计算机的串行通信实现.pdf 介绍了关于基于VB的台达PLC与监控计算机的串行通信实现的详细说明,提供台达PLC的技术资料的下载。 -
PC机与单片机之间的串口通信程序的设计与实现
2021-01-19 21:39:18摘要:本文主要利用MSComm控件实现单片机与PC机的串口通信,重点是软件部分的设计。采用VC++ 6.0软件开发平台,利用MFC编程的思想方法,建立友好的人机交互界面。PC机向单片机发送信号,将单片机接收到信号后向PC机... -
PIC单片机软件异步串行通信实现技巧
2020-07-18 20:43:02在用单片机开发各种嵌入式应用系统时,异步串行通信是经常要用到的一种通信模式,很多应用中还要求实现多路异步串行通 信。 -
C#MFC串口通信实现
2020-09-22 16:34:35编写了C#串口通信示例,MFC窗体应用,可以实现串口属性配置,自动检测可用串口,还示例了如何通过类文件封装串口接口,通过委托事件传递串口数据,实现数据的传递 -
嵌入式Linux Qt环境下的串口通信实现
2018-10-28 14:35:25嵌入式Linux Qt环境下的串口通信实现的一种方法,可以实现开发板与PC机或其他嵌入式设备之间的串口通信。 -
ros串口通讯c++实现
2020-08-31 12:38:03使用前,先安装sudo apt install ros-kinetic-serial 库,再进行编译 -
一种基于STM32的系统及串口通信的实现
2021-01-19 21:37:14包括3.3V电源、8MHz晶振时钟、复位电路、数字和模拟间的去耦电路、调试接口、串行通信接口等电路。系统原理图如图1所示。图1 S TM32系统原理图1.1、电源模块与外部晶振STM32F103C8T6内嵌8MHz高速 -
python实现串口通信的示例代码
2020-12-20 17:27:103 实现串口通信 3.1 发现端口 Windows下为COM(N, N=1、2…), Ubuntu下为‘/dev/ttyS0‘。Windows初学者,可以给您一下两种方式确定端口号。 方法一:输入在终端(cmd)中输入 python -m serial.tools.list_ports ... -
基于C语言的RS232串行接口通信实现
2021-01-19 18:50:37摘要:串口通信是一种广泛使用且实用的通信方式,介绍RS232串行通信的联结方式,研究利用c语言编程实现RS232串行通信的过程。结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软件,实现了... -
C# 实现串口通信源码.zip
2021-09-06 14:53:12C# 实现串口通信源码.zip -
单片机与DSP中的基于VC6.0的多单片机和PC机串口通讯实现方案
2020-12-06 12:05:27在由一台PC 机(上位机) 和多台单片机(下位机) 构成的分布式控制系统中,通过PC 机的串口与多台单片机的通信是最方便的。在这样的分布式控制系统中,单片机与微机之间的多路通信是整个系统的关键。 系统组成及通讯... -
LabVIEW与三菱PLC串口通信的实现
2020-10-17 17:47:17以电机星三角降压启动监控系统为例,介绍了通过FX2N-232BD通信扩展板,实现LabVIEW与FX2N系列PLC串口通信的方法。设计了电机星三角降压启动的PLC控制电路,编写了三菱PLC通信扩展板的通信程序,给出了上位机LabVIEW... -
基于MSP430F449的数据存储和USB串行通讯实现
2020-08-13 00:44:28本文基于16位单片机MSP430F449的数据存储和USB串行通讯实现,其硬件设计简单可靠,软件代码同样有较好的移植性。 -
Python 串口通信的实现
2020-12-16 23:38:59串口通信是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种... -
FPGA与单片机实现数据RS232串口通信的设计
2021-01-19 19:06:47摘要:本文针对由FPGA构成的高速数据采集系统数据处理能力弱的问题,提出FPGA与单片机实现数据串行通信的解决方案。在通信过程中完全遵守RS232协议,具有较强的通用性和推广价值。 1 前言 现场可编程逻辑器件... -
STM32与串口上位机通信实现(固件,软件部分) ---- 串口实现.7z
2021-12-10 18:43:38适用人员:STM32单片机开发人员,C#开发人员 内容:单片机与上位机通信样例,主机及从机协议编写,帧结构包含,数据校验,命令字,帧头帧尾等,可实现C#串口上位机 和STM32下位机通信。 -
VS2012+MFC+串口通信的实现.
2017-11-11 14:52:42VS2012+MFC+串口通信的实现.一个0基础的人,按照步骤可以实现串口通信,前提是严格按照步骤走。 -
单片机与PC机串口通信实现
2015-05-20 15:59:07单片机与PC机串口通信实现 -
VS2010实现串口通信
2018-08-18 02:10:10VS2010实现的串口通信demo,实现数据的接收和发送,串口号和波特率在代码中可以修改 VS2010实现的串口通信demo,实现数据的接收和发送,串口号和波特率在代码中可以修改