文档库 最新最全的文档下载
当前位置:文档库 › 串口发送消息I

串口发送消息I

串口发送消息I
串口发送消息I

if MSComm1.PortOpen then

MSComm1.PortOpen := false; //关闭端

https://www.wendangku.net/doc/0611740707.html,mPort := 2; //设置端口2

MSComm1.InBufferSize := 256; //设置接收缓冲区为256个字节

MSComm1.OutBufferSize := 256; //设置发送缓冲区为256个字节

MSComm1.Settings := '9600,n,8,1'; //9600波特率,无校验,8位数据位,1位停止位MSComm1.InputLen := 0; //读取缓冲区全部内容(32个字节)

MSComm1.InBufferCount := 0; //清除接收缓冲区

MSComm1.OutBufferCount:=0; //清除发送缓冲区

MSComm1.RThreshold := 32; //设置接收32个字节产生OnComm 事件

MSComm1.InputMode := comInputModeText; //文本方式

MSComm1.InputMode := comInputModeBinary; //二进制方式

MSComm1.PortOpen := true; //打开端口

end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if MSComm1.PortOpen then

MSComm1.PortOpen := false; //关闭端口

end;

procedure TForm1.MSComm1Comm(Sender: TObject);

var

buffer: Olevariant; //MSComm1.InputMode = comInputModeBinary

str: string; //MSComm1.InputMode = comInputModeText

i: integer;

begin

case https://www.wendangku.net/doc/0611740707.html,mEvent of comEvReceive: //串行接收事件处理

begin

if MSComm1.InputMode = comInputModeText then //字符方式读取

str := MSComm1.Input //读出后会自动清除接收缓冲区,str[1]~str[32]

Else //二进制方式读取

buffer := MSComm1.Input;//读出后会自动清除接收缓冲区,buffer[0]~buffer[31]

Edit3.Text := '';

for i := 0 to MSComm1.RThreshold - 1 do //32字节Hex转换

begin

if MSComm1.InputMode = comInputModeText then //单行字符转换

Edit3.Text := Edit3.Text + inttohex(byte(str[i + 1]), 2) + ' '

Else //单行二进制数据转换

Edit3.Text := Edit3.Text + inttohex(buffer[i], 2) + ' ';

end;

Memo2.Lines.Add(Edit3.Text);//加入一行显示

end;

end;

i: integer;

begin

Edit4.Text := '';

for i := 0 to 31 do

begin

MSComm1.Output := char(i); //发送一个字符

Edit4.Text := Edit4.Text + inttohex(i, 2);//以十六进制字符显示end;

Memo1.Lines.Add(Edit4.Text);//加入一行显示

end;

串行通信接口典型应用举例

串行通信接口典型应用举例 SCI_FLAG .usect ".data0",1 ;SCI标志寄存器 TXD_PTR .usect ".data0",8 ;发送的数据存放区 RXD_PTR .usect ".data0",8 ;接收到的数据存放区 .include "F2407REGS.H" ;引用头部文件 .def _c_int0 ;(1)建立中断向量表 .sect ".vectors" ;定义主向量段 RSVECT B _c_int0 ;PM 0 复位向量 1 INT1 B GISR1 ;PM 2 中断优先级1 4 INT2 B PHANTOM ;PM 4 中断优先级2 5 INT3 B PHANTOM ;PM 6 中断优先级3 6 INT4 B PHANTOM ;PM 8 中断优先级4 7 INT5 B PHANTOM ;PM A中断优先级5 8 INT6 B PHANTOM ;PM C 中断优先级6 9 RESERVED B PHANTOM ;PM E (保留位) 10 SW_INT8 B PHANTOM ;PM 10 用户定义软件中断— … SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断— ;中断子向量入口定义pvecs .sect ".pvecs" ;定义子向量段 PVECTORS B PHANTOM ;保留向量地址偏移量0000h B PHANTOM ;保留向量地址偏移量0001h … B PHANTOM ;保留向量地址偏移量0005h B SCI_RX_ISR ;保留向量地址偏移量0006h SCI接收中断 B PHANTOM ;保留向量地址偏移量0007h … B PHANTOM ;保留向量地址偏移量0041h ;(2)主程序: .text _c_int0 SETC INTM CLRC SXM CLRC OV M CLRC CNF 214

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.wendangku.net/doc/0611740707.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

CSharp串口通信

using System; using System.Collections.Generic; using https://www.wendangku.net/doc/0611740707.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace SerialPorts { public partial class frm_Main : Form { #region Public Enumerations public enum DataMode { Text, Hex } public enum LogMsgType { Incoming, Outgoing, Normal, Warning, Error }; #endregion private Color[] LogMsgTypeColor = { Color.Orange, Color.Green, Color.Black, Color.Blue, Color.Red }; //禁用和启用程序中各控件的状态 private void EnableControls() { // 基于串口的打开与否,设置控件状态 gbPortSettings.Enabled = !ComPort.IsOpen; btns.Enabled = btnstop.Enabled = txtSendData.Enabled = btnSend.Enabled = ComPort.IsOpen; if (ComPort.IsOpen) btnOpenPort.Text = "关闭串口"; else btnOpenPort.Text = "打开串口"; } //初始化组件的数据,为串口提供相关参数 private void InitializeControlValues() { cmbParity.Items.Clear(); cmbParity.Items.AddRange(Enum.GetNames(typeof(Parity))); cmbStopBits.Items.Clear(); cmbStopBits.Items.AddRange(Enum.GetNames(typeof(StopBits))); cmbPortName.Items.Clear(); foreach (string s in SerialPort.GetPortNames()) cmbPortName.Items.Add(s); cmbPortName.Text = cmbPortName.Items[0].ToString(); cmbParity.Text = cmbParity.Items[0].ToString(); cmbStopBits.Text = cmbStopBits.Items[0].ToString(); cmbDataBits.Text = cmbDataBits.Items[0].ToString(); cmbParity.Text = cmbParity.Items[0].ToString(); cmbBaudRate.Text = cmbBaudRate.Items[0].ToString(); EnableControls(); } //十六进制转换字节数组 private byte[] HexStringToByteArray(string s)

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.wendangku.net/doc/0611740707.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

51单片机串口通信的原理与应用流程解析

51单片机串口通信的原理与应用流程解析 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。 串行口控制寄存器SCON(见表1)。 表1 SCON寄存器 表中各位(从左至右为从高位到低位)含义如下。 SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。 表2 串行口工作方式控制位 其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。 SM2 :多机通信控制位。该仅用于方式2 和方式3 的多机通信。其中发送机SM2 = 1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。

PC机之间串口通信的实现-Read

PC机之间串口通信的实现 一、实验目的 1.熟悉微机接口实验装置的结构和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.学会串行通信程序的编制方法。 二、实验内容与要求 1.基本要求 主机接收开关量输入的数据(二进制或十六进制),从键盘上按“传输”键(可自行定义),就将该数据通过8251A传输出去。终端接收后在显示器上显示数据。具体操作说明如下: (1)出现提示信息“start with R in the board!”,通过调整乒乓开关的状态,设置8位数据; (2)在小键盘上按“R”键,系统将此时乒乓开关的状态读入计算机I中,并显示出来,同时显示经串行通讯后,计算机II接收到的数据; (3)完成后,系统提示“do you want to send another data? Y/N”,根据用户需要,在键盘按下“Y”键,则重复步骤(1),进行另一数据的通讯;在键盘按除“Y”键外的任意键,将退出本程序。 2.提高要求 能够进行出错处理,例如采用奇偶校验,出错重传或者采用接收方回传和发送方确认来保证发送和接收正确。 三、设计报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单 5.设计结果和体会(包括遇到的问题及解决的方法) 四、8251A通用串行输入/输出接口芯片 由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。能够完成上述“串←→并”转换功能的电路,通常称为“通用异步收发器”(UART:Universal

串口通信程序

#include "stdafx.h" #include "Modbus.h" #include "ModbusDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define CT2A (data) ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About static const UCHAR aucCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; static const UCHAR aucCRCLo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

测试电脑的串口是否是好的 最完整最可靠的方法 就是 连接一个真实 的串口通信线路

测试电脑的串口是否是好的最完整最可靠的方法就是连接一个真实的串口通信线路,2 端用相应软件,如串口调试助手之类的,相互发送发送数据,看另外一端是否能正常接收! 当然,也可以简单的单台机器测试,即短接串口的2、3 两针,用相应软件,如串口调试助手,发送数据,看能否回显发送的数据 串口测试工具使用说明之一——串口调试工具 回复 6 | 人气1387 | 收藏 | 打印 | 推荐给版主 分享文章到: ye_w 个人主页给TA发消息加TA为好友发表于:2010-09-30 19:52:48 楼主 使用串口实现网络通讯,不仅仅需要熟悉控制双方的指令和相关的协议,而且还需要善于使用串口测试工具。在串口测试工具中,最常用的就是串口调试工具。这个串口调试工具网络上一大把,大家百度一下就能下载到(包括我逐步发布的调试工具,都不会提供资源,请大家直接去网络上查找),常用的包括:串口调试助手,串口精灵,Comm等。我也一直使用串口调试助手,下面就是用图形并茂的方式来介绍,请大家指出不足,以便共同进步。 串口调试助手,网络上的版本也有不少,我截2个不同版本的图,但本质没有区别 版本一 怎样测试串口和串口线是否正常 一步:把串口线或者USB转串口线插到计算机上。 二步:打开串口调试助手

接着选择串口,串口线和USB转串口的端口号查看路径: 电脑上--右键--属性--硬件--设备管理器-端口(COM和LPT),点 开端口前面的+号查看即可。 注释:1、USB-SERIAL CH340(COM4)就是USB转串口的端口号 2、通讯端口(COM1)是计算机原来自带的端口号 第三步:设置串口调试助手(见下图) 1、串口:COM4是和串口线或者USB转串口线在上述路径中查看到的端口号。 2、发送的字符/数据:图片上输入的是59,你可以随便输入2位数字。 3、其余设置按照下图。

51单片机和计算机之间实现串口通信的电路图

51单片机和计算机之间实现串口通信的电路图 串口通讯参考程序如下: 来源:深入浅出AVR单片机 #include unsigned char UART_RX; //定义串口接收数据变量 unsigned char RX_flag; //定义穿行接收标记 /**************************************************************************************** ***** 函数名:UART串口初始化函数 调用:UART_init(); 参数:无 返回值:无 结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用) 备注:振荡晶体为12MHz,PC串口端设置[ 4800,8,无,1,无] /**************************************************************************************** ******/ void UART_init (void){ EA = 1; //允许总中断(如不使用中断,可用//屏蔽) ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**************************************************************************************** ******/ /**************************************************************************************** ***** 函数名:UART串口接收中断处理函数 调用:[SBUF收到数据后中断处理] 参数:无 返回值:无 结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收

RS232串口通信的应用

RS232串口通信的应用 0 引言随着信息技术的飞速发展和科技进步,在许多现代化集中管理的控 制系统中,需要对现场数据进行统计、分析、打印、报警等,同时又要对现场 设备进行实时控制,完成各种操作。单片机作为控制系统中必不可少的部分, 在各个领域得到了广泛的应用。由于单片机具有体积小、价格低廉、适应性强 的特点,一般在工业控制系统中,各种数据的采集和执行机构的控制都是由单 片机来完成。而单片机的计算能力有限,难以进行复杂的数据处理。在功能比 较复杂的自动控制系统中,通常以工控机为上位机,单片机为下位机,由单片 机完成数据的采集及对设备的控制,而由上位机完成各种复杂的数据处理及对 单片机的控制。在分布式控制系统中大多采用单片机作为下位机来进行数据采 集和现场控制,在这些应用中,单片机只是直接面对被控对象底层,而对采集 到的数据进行进一步的分析和处理工作,则是由功能强大的PC 机来完成的。 因此,PC 机和单片机之间就有着大量的数据交换。在绝大多数PC 机的标准配 置中,都有一个到多个RS 232 串口,因为RS 232 串口担负着PC 机和单片机之间大量的数据交换的重任。单片机89C52 用于自动控制及数据传输,并通过 RS 232 接口向上位机进行数据通信。1 RS 232 串口通信1.1 RS 232C 标准RS 232C 标准(协议)的全称是EIA-RS-232C 标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecommeded standard)代表推荐标准,232 是标识号,C 代表RS 232 的最新一次修改。在这之前,有RS 232B,RS 232A,它规定连接电缆和机械、电气特性、信号功能及传送过程。1.2 RS 232 的接口引脚定义由于RS 232C 并未定义连接器的物理特性,因此,出现了DB-25,DB-15 和DB-9 各种类型的连接器,其引脚定义也各不相同。常用的连 接器接口图如图1 所示,DB9 的引脚功能见表1。

单片机与pc串口通信程序及电路图

单片机与pc串口通信程序及电路图 单片机与pc串口通信程序及电路图 #include #define BUFFERLEGTH 10 //----------------------------------------------------------------- void UART_init(); //串口初始化函数 void COM_send(void); //串口发送函数 char str[20]; char j; //------------------------------------------------------------------- void main(void) { unsigned char i; UART_init(); j=0; //初始化串口 for(i = 0;i }; while(1); } //------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- // 函数名称:UART_init()串口初始化函数 // 函数功能:在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s // 串口接收中断允许,发送中断禁止 //-------------------------------------------------------------------------------------------------- void UART_init() { //初始化串行口和波特率发生器

MAX232与单片机通信电路图

MAX232与单片机通信电路图 2009-11-13 21:27 实验板加个串行接口吧。借助电脑转件直观的看单片机的输出结果,以后我还会用一些简单的实例讲解单片机和PC串口通讯的简单应用和编程。如果你用的是成品实验板或仿真器,那你就可以跳过这一段了。 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错。下图就是MAX232的基本接线图。 图为MAX232 在上两课的电路的基础上按下面的图加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。 图为DB9接头

图为加上了MAX232的实验电路 做好后我们就先用回第一课的"Hello World!"程序,用它来和你的电脑说声Hello!把程序烧到芯片上,把串口连接好。嘿嘿,这时要打开你的串口调试软件,没有就赶快到网上DOWN一个了。你会用Windows的超级中端也行,不过我从不用它。我用的是comdebug,它是个不错的软件,我喜欢它是因为它功能好而且还有"线路状态"功能,这对我制作小玩意时很有用。串口号,波特率调好,打开串口,单片机上电,就可以在接收区看到不断出现的"Hello World!"。一定要先打开软件的串口,再把单片机上电,否则可能因字符不对齐而看到乱码哦。 做好后我们就先用回第一课的"Hello World!"程序,用它来和你的电脑说

串口通信的接线方法

目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422、RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。 1、DB9和DB25的常用信号脚说明 2、RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口) 图2 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。 3、串口调试中要注意的几点: 不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; 线路焊接要牢固,不然程序没问题,却因为接线问题误事;

串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 RS232C标准串口接线方法 (第二版) 检验仪器与微机的通讯主要是以RS232C标准接口为主,而串口的接线方法也有一定的标准,在此谈谈几种常用的串口接法,仅作参考: 一、标准接法 1、9对9(包括9针对9孔,9孔对9孔,9针对9针): 说明:以下的孔、针指串口线两端的串口,不过2、3有可能不交换 2-------------3 3-------------2 4-------------6 5-------------5 6-------------4 7-------------8 8-------------7 2、9对25(包括9孔对25孔,9孔对25针) 2-------------3 (备注:2、3有可能不交换) 3-------------2 4-------------6 5-------------7 6-------------20 7-------------5 8-------------4

浅析台达PLC串行通讯及应用案例

浅析台达PLC串行通讯及应用案例 摘要:本文介绍串行通讯的基本概念,台达PLC的串行通迅功能及在项目中实际应用案例,主要讨论如何使用台达PLC完善的通讯功能完成各种实 际应用,体现了台达PLC强大的通讯功能及其便利性。 关键词:串行通讯、PLC、RS485、MODBUS协议、变频器、自由口通讯、EASY LINK 一、前言 随着计算器技术的发展,通讯传输在工业自动化控制领域得到越来越广泛的应用,由于串行通讯方式具有使用线路少、成本低、简单易用,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。现在各PLC生产厂家都极其重视通讯在PLC推广中的应用,并且各具有优势特点,合理利用通讯功能将极大的降低控制成本,提高产品竞争力。 二、串行通讯简介 通讯即是不同的设备通过线路互相交换数据,其主要目的在于将数据从某端传送到另一端,实现数据的交换。通常有并行和串行两种方式,由于并行传输方式在数据电压传送的过程中容易因线路的因素而使得电压准位发生变化(衰减、线路互相干扰),而串行通讯方式则能很好的解决这些问题,因此在工业应用中绝大多数使用串行通讯。 串行通讯的接口方式分为RS-232和RS-485两种,下面主要介绍两种方式的一些特点: 1、RS-232 (1)RS-232-C接口连接器一般使用型号为DB-9的9芯插头座,只需三条接口 线,即“发送数据”、“接收数据”和“信号地”即可传输数据,其9支脚位的定义如下:

(2)在RS232的规范中,电压在+3V---+15V(一般使用+6V)之间称为“0” 或“ON”;电压在-3V----15V(一般使用-6V)之间称为“1”或“OFF”; 计算机上的RS-232“高电位”约9V,而“低电位”则约-9V。 (3)RS-232为全双工工作模式,其讯号准位是参考地线而得,分别作为数据 的传送和接收;实际应用中其传输距离可以达到15米。只具有单站功能, 即一对一通讯。 2、RS485 (1)采用正负两根信号线作为传输线路。 (2)RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6)V表示; 逻辑“0”以两线间的电压差为-(2—6)V表示。 (3)RS485为半双工工作模式,其讯号是正负两条线路讯号准位相减而得,是差动式输入方式,抗共模干能力增强,即抗噪声干扰性好;实际应用 中其传输距离可达1200米。具有多站能力,即一对多的主从通讯。 三、台达PLC的串行通讯功能 台达DVP系列PLC各型主机均内建2个通讯口的标准配置,即一个RS232和一个RS485通讯口,其RS232口主要用于上下载程序或作为与上位机、触摸屏通讯,而RS485口主要用于组建485网络,实现通讯控制。尤其值得一提的是EH机型可通过通讯功能卡扩充一个RS232或RS485通讯口,使得在组建多重通讯网络更加方便。 相对于通讯口的硬件配置,台达PLC在软件指令上对通讯的支持也是相当丰富和便利,主要通过以下三种方式完成485通讯功能: 1、自由通讯方式 该方式通过串行数据传输指令RS来完成主站与从站之间的数据交换,可以实现无协议的自由通讯。许多接口设备如变频器、仪表等…若配备RS-485串行通讯,且该设备之通讯格式也有公开即可由PLC使用者以RS指令设计程序来传输PLC与接口设备之间数据。 2、MODBUS通讯方式 MODBUS协议是目前国际上公开的标准串行通迅协议,台达PLC通讯符合MODBUS协议,并且台达其它产品如变频器、温控仪、司服控制器等485通讯均符合MODBUS协议,对于符合MODBUS之通讯格式的产品,台达PLC提供了更加便利的通讯指令MODRD、MODWR、MODRW来实现数据的读写,程序编写中不需关注传送的字符,校验码的转换等等,只需要确定通讯地址及写入读出的数据即可,不过在多指令读写时需要考虑通讯时序问题,避免通讯冲突。 3、EASY LINK通讯方式 基于MODBUS通讯协议,EP/EH机型提供了更为方便快捷的通讯方式——

Windows API在串口通信中的应用

1 引言 在很多情况下,远程监控和工业自动化领域系统经常采用串并口通信编程,其中串行接口被广泛地应用于工程实践的长距离通信中。运用Windows通信API可以在Windows环境下进行串口编程,不用对硬件直接进行操作,并通过VC、VB和Delphi等语言进行调用,大大方便了对数据的处理。本文对和串口通信相关的32位Windows API函数进行了介绍,并给出了相应的程序实例。 2 Windows API简介 Win32 API作为Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。API是windows的核心,从事Windows 应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。 3 Windows API相关串口通信函数介绍 在32位的Windows系统中,串口通信是作为文件处理的,串口操作一般为的打开、关闭、读取、写入等操作,相应的Windows API 函数如下: 3.1 打开和关闭串口 1 打开串口 在Windows系统中串口通信会话以调用CreateFile ( )函数开始。CreateFile ( )函数可以读写访问串口,并返回一个句柄,并在以后的端口操作中使用。

一旦串口处于打开状态,就可以分配一个发送缓冲区和接收缓冲区,并且通过调用SetupComm( )函数实现其他初始化工作。 关闭串口通过调用CloseHandle ( )函数关闭由CreatHandle ( )函数返回的句柄来完成。 在用CreatFile ( )函数打开串口后,系统将根据上次打开串口时设置的值来初始化串口,可以集成上次打开操作后的数值,包括设备控制块(DCB)和超时控制结构(COMMTIMEOUTS)。如果是首次打开串口,Windows会使用缺省配置。 1 串口配置 Windows 2000 中使用GetCommState( )函数获取串口的当前配置,使用SetCo mmState ( )函数重新分配串口资源的各个参数。

串口通信电路设计

第十一章制作PCB 11.1设计任务 使用Protel2004设计出串口通信电路。画出电路原理图和PCB板,并生成制造文件。11.2创建项目文件及工作环境 打开Protel2004,选择菜单中【文件】|【创建】|【项目】|【PCB项目】,系统的工作区会自动产生PCB项目文件PCB_Project1.PrjPCB。右键点击,在右 键菜单中选择【追加新文件到项目中】|【Schematic】,则系统会自动产生Sheet1.SchDoc 文件和原理图设计界面。选择菜单【文件】|【保存】,系统会弹出【保存】对话框,如图11-1 所示【保存】对话框。将文件名称改为Serial.SchDoc,点击。 图11-1 【保存】对话框 右键点击,在右键菜单中选择【追加新文件到项目中】|【PCB】,

2 则系统会自动产生PCB1.PcbDoc 文件和原理图设计界面。选择菜单【文件】|【保存】,系统会弹出【保存】对话框,如图11-2所示【保存】对话框。将文件名称改为Serial.PcbDoc ,点击 。 图11-2 【保存】对话框 11.3 原理图设计 11.3.1 设计思路 本例使用的是MAXIM 公司的Max232芯片,设计串口通信电路。 11.3.2 元件库管理与设计 根据8.4.1中介绍的方法添加元件库。将Library 文件夹中的Miscellaneous Connectors.IntLib 和Miscellaneous Devices.IntLib 以及Library/Maxim 文件夹中的Maxim Communication Transceiver.IntLib 添加进来。如图11-3和11-4所示【打开】对话框。

单片机串口通信应用(查询法)

主机负责接收信息,从机负责发送信息,本例程使用的是AT89C52芯片。本次例程使用的是查询法,还有一种方法是中断法,此种方法的效率更高。详细请查询本人其他文档。 主机主程序: /************************************************************* 程序说明:主机接收从机数据 程序设计者:莫剑辉 程序测试时间:2010-5-3 **************************************************************/ #include #define uchar unsigned char #define uint unsigned int unsigned idata buf[50]; void delay(uint j) { while(j--); } void init_serialcomm() { TMOD=0x20;//定时器1 模式2 TH1=0xfd;//波特率设定 TL1=0xfd; PCON=0x00;//串口波特率不加倍 TR1=1; //启动Timer 1 SCON=0x50; //mode 2 ,开始接收 } void SBUFRev() { while(RI==0); //等待接收完数据 P2=SBUF; //提取数据到P2口 RI=0; //置0,保证下次接收数据 } void main() { init_serialcomm(); //初始化串口 // P2=0x00; //初始化P2口 while(1) { SBUFRev(); //接收数据 EA=0; //关闭总开关 delay(1000); //关闭总开关是避免其他中断影响导致数据接收不全 EA=1; //打开总开关 }

MAX232与单片机通信电路图

MAX232与单片机通信电路图 实验板加个串行接口吧。借助电脑转件直观的看单片机的输出结果,以后我还会用一些简单的实例讲解单片机和PC串口通讯的简单应用和编程。如果你用的是成品实验板或仿真器,那你就可以跳过这一段了。 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错。下图就是MAX232的基本接线图。 图为MAX232 在上两课的电路的基础上按下面的图加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。 图为DB9接头

图为加上了MAX232的实验电路 做好后我们就先用回第一课的"Hello World!"程序,用它来和你的电脑说声Hello!把程序烧到芯片上,把串口连接好。嘿嘿,这时要打开你的串口调试软件,没有就赶快到网上DOWN一个了。你会用Windows的超级中端也行,不过我从不用它。我用的是comdebug,它是个不错的软件,我喜欢它是因为它功能好而且还有"线路状态"功能,这对我制作小玩意时很有用。串口号,波特率调好,打开串口,单片机上电,就可以在接收区看到不断出现的"Hello World!"。一定要先打开软件的串口,再把单片机上电,否则可能因字符不对齐而看到乱码哦。 做好后我们就先用回第一课的"Hello World!"程序,用它来和你的电脑说声Hello!

相关文档
相关文档 最新文档