C8051F020单片机的RS485串行通信设计

C8051F020单片机的RS485串行通信设计
C8051F020单片机的RS485串行通信设计

C8051F020单片机的RS485串行通信设计

关键字:单片机串行通信RS485

l 引言

随着计算机技术和测控技术的不断发展,在以单片机为核心的数据采集系统中,需要实现单片机和计算机之间的数据交换,并以此来发挥单片机和计算机各自的长处,提升整个系统的性能价格比。

在计算机网络和工业控制系统中,经常需要采用串行通信来实现远程数据传输。目前,有多种接口标准可用于串行通信,包括RS232、RS422、RS485等。RS232是最早的串行接口标准,在短距离、较低波特率串行通信中得到了广泛应用。但是,RS232通信存在着传输速度慢、传输距离短、信号容易受到干扰等不足,其应用局限性已日益突出。而RS485通信采用差分方式来消除噪声,即信号在发送前会分解为正负2条线路,当到达接收端时将信号相减,使噪声相互抵消,还原成原来的信号,这种方式对共模干扰抑制能力较强,已广泛应用于工业控制等领域。

要实现单片机与计算机之间的RS485通信,一般可以采用2种方法:一种方法是在单片机与计算机两端分别采用RS232与RS485电平转换装置;另一种方法是采用RS485通信卡,并将其插在计算机主板上。采用前一种方法的优点是硬件装置安装简便,软件编程相对简单;缺点是通信速率被限制在20 kb/s以内。第二种方法的优点是通信距离较远,速率较高,可达10 Mb/s;缺点是需要安装通讯卡和驱动程序,并进行必要的设置。本文采用第二种方法。

2 总体架构

在某型电子设备研制中,选用美国Cygnal公司生产的一种soc型8位单片机

C8051F020,对测控系统进行数据采集。该单片机是C8051F系列的F02X子系列,其性价比在工业控制领域具有较强的竞争力。它是完全集成的混合信号系统级芯片,具有与8051指令集完全兼容的CIP一51内核,对于熟悉51单片机的技术人员来说,在硬件设计及软件编程上大大提高了开发效率。

测控计算机采用研华的IPC-610工控机,并选用PCL一846B通信卡进行RS485串行数据通信,该通信卡包含4通道,每个通道可以对32个节点进行通信。

为了实现单片机与工控机之间的RS485串行通信,必须对单片机的UART输出电平进行转换,以满足RS485串行通信需求。选用MAX485接口芯片,它是Maxim 公司的一种RS485接口芯片,该芯片的结构和引脚都比较简单。

该设计理论上可以实现1台工控机(安装1块RS485通信卡)对128台单片机进行Rs485串行通信,其总体设计框图如图1所示。

图1 总体结构

3 系统硬件设计

3.1 硬件简介

1)C8051F020单片机

C8051F020内部有2个增强型全双工UART、SPI总线和SMBus/IC。这些串行总线都用硬件实现,都能够向CIP-51内核产生中断,只需要很少的CPU干预;这些串行总线不“共享”定时器、中断或I/O端口等资源,因此可以使用任何一个或者全部同时使用。

2)MAX485芯片

MAX485芯片采用+5V电源工作,其额定电流为300“A,它能将UART输出电平转换为RS485电平。该芯片有8个引脚,其内部含有1个接收器和1个驱动器,R0为接收器的输出端,接单片机的TXD引脚;DI为驱动器的输入端,接单片机的RXD 引脚。/RE是接收使能端,当/RE=0时,MAX485芯片处于接收状态;DE是发送使能端,当DE=1时,MAX485芯片处于发送状态。

MAX485芯片的A端与B端分别为接收与发送的差分信号端。当V A小于V B时,表示发送信号为“0”;当V A大于V B时,表示发送信号为“1”。MAX485芯片工作时,A、B两端之间应当加上匹配电阻尺,一般选用120 Ω;当通信距离较远时,可以选用300 Ω。

3)RS485通信卡

Rs485通信卡具有较强的抗干扰能力、较高的通信速率以及较低的价格,在工业控制等领域具有较强的竞争力和实用性。选用研华的PCL-846B通信卡,该卡支持RS422和RS485 2种串行通信接口标准,需要通过跳线进行设置。另外,在该通信卡的4个通道上均预留有焊接终端匹配电阻的焊孔。

3.2 电路设计

采用UART串行总线进行通信,因为UART是一种广泛应用于远距离、低速率、低成本通信的串行传输接口,由于其具有数据线少的特点,在数字系统设计中得到了大量应用。基本的UART通信只需要两根数据线(RXD、TXD)即可完成数据的相互通信,接收和发送都是全双工形式,其中RXD是接收端,TXD是发送端。

C8051F020单片机有2个UART(UART0和UARTl),以UART0为例,它的TxD 和RXD分别与数字I/0引脚PO.O和PO.1复用,通过交叉开关配置寄存器进行选择。由于MAX485工作在半双工状态,它与单片机连接时的接线比较简单,只需要用单片机某一个引脚(如PO.2)来控制RE和DE这2个引脚。PCL-846B通信卡有4个通道,选择通道1与单片机进行通信,另外将通道2和通道4进行连接,以自发自收的方式实现通信卡的自检。单片机与外部电路的连接关系如图2所示。

图2 硬件电路原理

在使用RS485通信卡进行通信时,当信号传递到通信线路两端时,如果阻抗不匹配,可能会产生信号反射问题。信号反射会造成信号的失真和变形,从而导致通信错误。其解决方法就是在通信线路的两端各连接一个终端匹配电阻,保证阻抗匹配。当通信距离较短,一般在小于300 m时,可不使用终端电阻。当通信距离大于300 m时,应当使用终端电阻,其阻值必须与通信线路的线性阻抗相同。电阻值一般选取120 Ω左右,当通信距离较长时,可以选用300 Ω。

4 软件设计

4.1 通信方式

C8051F020单片机的UARTo提供4种工作方式(1种同步方式和3种异步方式),以方式1为例:方式1提供标准的异步、全双工通信,每个数据字节共包含10位:1个起始位、8个数据位和1个停止位。数据从TX引脚发送,在RX引脚接收。2

在多机通信中,通常选择方式2和方式3,通过使用第9数据位和内置UARTo地址识别硬件支持一个主处理器与多个从处理器之问的多机通信。

为了简化UART0的使用和软件编程,选择方式1进行多机通信,通过编写串口中断程序对通信双方进行约定。具体做法是:

1)约定发送数据的格式,本文约定以“#……*”作为合法的数据格式,即以“#”开始和“*”结束作为判断数据有效性的依据。

2)在“#”和“*”之间的数据是需要的,本文约定以第2个字符(当设备较多时,可以2个字符)作为接收设备的识别码,由接收设备(单片机或上位机)对该字符进行判断,确定是否需要接收该数据。

3)当接收设备需要知道发送数据的来源时,也可以约定发送设备的识别码(由于每台设备既可以是发送设备也可以是接收设备,因此可以约定一个固定的识别码),在发送数据中插入该识别码(插入位置必须事先约定),即可获知数据的来源设备。

4.2 串口波特率

C8051F020单片机有5个16位通用计数器/定时器(T0~T4)和一个片内可编程计数器/定时器阵列(PCA)。方式1的波特率是定时器溢出时间的函数,UART0可以使用定时器1工作在8位自动重装载方式或者定时器2工作在波特率发生器方式产生波特率。以定时器2为例,其波特率的计算公式是:

串口波特率

式中:SySCLK是单片机的系统时钟,RCAP2H和RCAP2L分别为定时器2的重装载寄存器的高8位和低8位。

波特率根据数据传输速率的实际需要确定,波特率确定后即可计算出定时器2的重装载寄存器的初始值T2。

串口波特率

采用22.1184 MHz晶体振荡器作为系统时钟,波特率为9600 b/s,计算得到

T2=FFB8H(十六进制)。

4.3 软件流程

C8051F020单片机内部具有JTAG和调试电路,可以通过JTAG接口对MCU进行非侵入式、全速、在系统调试。根据系统功能需求,对软件进行模块化设计,并利用Silicon Labs IDE集成开发环境对单片机进行编程与调试。利用C8051F020单片机的中断系统,直接采用C语言对UART中断服务程序进行编写。

单片机的串口通信程序可由数据发送和接收2个模块构成。数据发送模块首先需要设置UART为发送状态,清除发送标志后向sBF中写入数据,开始逐个发送字符,数据发送完成后,恢复UART为接收状态。数据接收模块清除接收标志后读SBF

中的数据,开始接收字符,首先判断接收数据是否有效,然后分析处理数据,接收完数据后,退出接收程序。UART串口发送和接收模块的程序流程如图3所示。

图3 串口通信程序流程

5 实验分析

设计的系统已经应用于某型实时测控装置研制中,该测控装置含有2个单片机,其主控上位机安装有l块RS485通信卡。具体验证过程是:将1个测控装置与1台上位机距离50 m进行串行通信,通信正常可靠。将2个测控装置与2台上位机(均安装有RS485通信卡)分别相距50 m,通信线路采用并联,4个通信节点之间RS485

通信正常可靠。依次类推,在多个测控装置与多台上位机进行远距离通信时,RS485通信均正常可靠。

在上位机上通过串口调试助手可以简便地对串口进行调试。该调试工具可以实时发送和接收串行数据,数据格式和传输速率可调,可以动态观察各通信节点的数据收发情况。串口调试界面如图4所示。

图4 串口调试界面

该设计方法成功实现了单片机与上位机之间的RS485串行通信,在单片机与上位机距离50 m以内可以实现115.2 k/ps的高速通信,数据传输误码率低,完全满足系统设计指标。

6 结论

通过在单片机与工控机之间建立RS485串行通信网络,利用RS485串行通信的优势,可以保证稳定、快速、远距离地传输数据。设计的系统已经在某型实时测控装置研制中得到成功应用,经实验验证,数据传输正常可靠,达到设计要求。

由于设计方法开发成本低、软件设计简单、使用维护方便,其通信设计方法还可以稍加修改移植到其他测控系统中,在计算机通信和工业控制等领域将会得到越来越多的应用。

组态王与单片机多机串口通信的设计方案

组态王与单片机多机串口通信的设计 1 引言 随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王>、MCGS、W inCC等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。 2 组态王与单片机的串口通讯方法 目前,组态王与单片机的通信多是通过动态数据交换(DDE>或通过自己开发通讯驱动程序完成。DDE是Windows平台上的一个完整的通信协议,组态王通过该协议与其他应用程序交换数据。但不可靠和非实时。而自己开发通讯驱动程序会带来设计困难,增加系统开发周期,可行性不高。组态王专门提供一种与单片机多机串口通信方法,可满足大多数系统需求。 3 PC机与单片机的硬件接口电路 图1为上位PC机与下位单片机80C51的连接电路。PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集中,不能利用RS-232通讯传输,只能改用RS-485。RS-485采用差分式传输信号,最大传输距离为1 219 m.最大传输速率为10 Mb/s.对同时出现的两条信号线A、B的干扰有较强的抑制能力。当两条线绞在一起时,被通信各种分布参数耦合过来的干扰信号可平均地分配到这两条线上,因此对RS-485的差分式传输线路而言,用双绞线可获得较强的抗干扰能力。RS-485采用二线与四线平衡传输方式,二线制可实现真正的多点双向通信,但需要在传输线上接电阻(约120 Ω>。

单片机双机之间的串行通信设计

专业方向课程设计报告 题目:单片机双机之间的串行通信设计

单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断

方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图)

本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一 数据的发送过程,然后按照此过程不段循环,直到结束。 晶振电路提供脉冲,加上复位电路,将 EA接入高电电平选择片内程序存储器。 这是一个单片机能够工作的最低设置。

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 -

RS-232C、RS-422、RS-485串口引脚定义

RS-232C、RS-422、RS-485串口引脚定义 从前面的内容中,知道了串口外形,就可以继续了解其每个引脚的定义,这是做线的基础。无论是RS-232C、RS-422,还是RS-485,串口接口的外形、尺寸都是相同的,部件间可以通用互换,但其引脚的定义却各不相同,因此要了解串口做线,首先要知道串口各引脚的定义。 观察一个标准的串口,会发现串口无论是9针的标准串口物理外形(如图3.4所示),还是25针串口物理外形(如图3.6所示),如果横着看,都显示两排引脚。除了两排引脚这一特征之外,还有就是无论是公头,还是母头,两个引脚的外围呈现一边大、一边小的“等腰梯形”的形状(俗称“D形”)。9针引脚中,大的一边有5个引脚,小的一边有4个引脚。 本章除非专门说明,否则所有引脚线序都是指串口外侧的线序,各引脚编号及意义如图3.40所示。 根据图3.40的引脚顺序号,如果是作为RS-232C接口,则各引脚定义如表3.2所示。 表3.2 RS-232C引脚意义表 各引脚的电气特性为: 在TxD和RxD上,逻辑“1”为-3V~-15V;逻辑“0”为+3V~+15V。 在RTS、CTS、DSR、DTR和DCD等控制线上,信号有效为+3V~+15V;信号无效为-3V~-15V。 对于数据信号,逻辑“1”为低于-3V,逻辑“0”为高于+3V;对于控制信号,接通ON为低于-3V;断开OFF为高于+3V;-3V~+3V、低于-15V、高于+15V都表示电压无意义。 作为RS-232C接口,其各引脚由标准文档进行定义,所以也可以称为“标准引脚定义”。而作为RS-422和RS-485接口,则没有“标准”引脚定义的说法,因为RS-422和RS-485连通常的标准接口也没有,具体采用什么接口,接口中使用哪些引脚,完全取决于设备设计生产商自己的定义。不过,作为RS-422和RS-485标准本身,定义了按照这两个标准进行通信时,所必须提供的信号线,

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

一、程序代码 #include//该头文件可到https://www.360docs.net/doc/616030292.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单片机的串口通讯系统课程设计论文

引言 人类社会已经进入信息化时代,信息社会的发展离不开电子产品的进步。单片机的出现使人类实现利用编程来代替复杂的硬件搭建电路,它靠程序运行,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! 单片机应用的主要领域非常广,智能化家用电器、办公自动化设备商业营销设备、工业自动化控制、智能化仪表、智能化通信产品、汽车电子产品、航空航天系统和国防军事、尖端武器等领域。 单片机应用的意义不仅在于它的广阔围及所带来的经济效益,更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。随着单片机应用的推广,微控制技术将不断发展完善。 电路的集成化不仅对硬件电路的设计相关,与电路的布局同样相关。印刷版的出现使得电路产品更加规,体积更小。Protel99se是一款专业的绘制电路及印刷版的软件,近年来的不断升级使得其功能更加完善,出现了Altium Designer 、Protel DXP等升级版本。

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

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通信在实际工作中的应用围也将越来越广。本文所介

51单片机与PC串口间通讯设计与分析

51单片机与PC串口间通讯设计与分析 摘要:51单片机是一种集CPU,RAM,FLASH ROM,I/O接口和定时中断系统于一体的微型计算机。只要有外加电源和晶体振荡器就可以独立完成对数字信号的算术运算,逻辑控制,串行通信等功能。由于单片机具有体积小,重量轻,功耗低,功能强,价格低,可靠性好等诸多优点,因而在仪器仪表,家用电器,数据采集等一些嵌入式控制领域被广泛应用。 当需要处理较复杂数据或需要对多个采集数据进行综合处理以及需要进行集散控制时,单片机的算术运算和逻辑运算能力显的不足,这时往往需要借助计算机系统。将单片机采集的数据通过串行口传给PC机,由PC机高级语言或数据库语言进行处理,或者实现PC 机对远程单片机进行控制。因此,实现单片机与PC机之间的远程通信更具有实际意义。 关键词:单片机、PC机、发送数据、接收数据串行通信

目录 摘要------------------------------------------------------------------(1)1、绪论---------------------------------------------------------------------------(3) 1.1单片机的发展阶段-------------------------------------------------(3) 1.2单片机的发展趋势-------------------------------------------------(3) 1.3单片机的应用模式-------------------------------------------------(4) 1.4单片机与PC串口间通讯设计的应用--------------------------(5) 2、系统设计-------------------------------------------------------------------(6) 2.1设计思路-------------------------------------------------------------(6) 2.2系统组成-------------------------------------------------------------(6) 3、单元硬件电路设计-------------------------------------------------------(7) 3.1硬件的实现过程-----------------------------------------------------(7) 3.1.1 RS-232C总线标准-------------------------------------------(8) 3.2 RS-232接口电路----------------------------------------------------(9) 3.2.1 MAX-232接口电路------------------------------------------(9) 3.3 51单片机与PC机串行通信电路-----------------------------(11) 4、软件设计------------------------------------------------------------------(12) 4.1 软件设计和硬件设计的关系-----------------------------------(12) 4.2 程序设计-----------------------------------------------------------(13) 4.3程序运行后的结果------------------------------------------------(17) 5、结论-----------------------------------------------------------------------(18) 6、参看文献------------------------------------------------------------------(19)

串口RS232__485的9针引脚定义

RS485接口定义 rs485有两种,一种是半双工模式,只有DATA+和DATA-两线,另一种是全双工模式,有四线传输信号:T+,T-,R+,R-。全双工模式时可认为是rs422。 1.英式标识为TDA(-) 、TDB(+) 、RDA(-)、RDB(+) 、GND 2.美式标识为Y 、Z 、 A 、 B 、GND 3.中式标识为TXD(+)/A 、TXD(-)/B 、RXD(-) 、RXD(+)、GND rs485两线一般定义为(只接收不发送): "A, B"或"Date+,Date-" 即常说的:”485+,485-” rs485四线一般定义为: "Y,Z,A, B," 具体还要根据厂家的使用信号针脚而定,有的使用了RTS或DTR 等针脚的485信号 DB9(RS485)接口针脚定义 1脚为数据A,2脚为数据B,5脚为地。

RS-422的电气性能与RS-485完全一样。主要的区别在于: RS-422有4根信号线:两根发送(Y、Z)、两根接收(A、B)。由于RS-422的收与发是分开的,所以可以同时收和发(全双工)。RS-485有2根信号线:发送和接收都是A和B。 由于RS-485的收与发是共用两根线所以不能够同时收和发(半双工)。 * 能否将RS-422的Y-A短接作为RS-485的A,将RS-422的Z-B短

接作为RS-485的B呢? 回答:不一定。条件是RS-422必须是能够支持多机通信的。波士电子的所有接口转换器的RS-422口都能够支持全双工多机通信,所以可以这样简单转换为RS-485。 RS-485(或 RS-422)通信建议一定要接地线,因为 RS-485(或 RS-422)通信要求通信双方的地电位差小于 1V。即:半双工通信接 3 根线(+A、—B、地),全双工通信接 5 根线(+发、—发、+收、—收、地)。为了安全起见,建议通信机器的外壳接大地。 接线及引脚分配 RS-485的+A接对方的+A、—B接对方的—B、GND(地)接对方的 GND(地)。 RS-422 的接线原则:“+发”接对方的“+收”、“—发”接对方的“—收”、“+收”接对方的“+ 发”、“—收”接对方的“—发”、GND(地)接对方的 GND(地)。 一定要将GND(地)线接到对方的GND(地),除非确保通信双方都已经良好共地。

单片机与PC机串口通讯设计

第一章串口通讯的系统组成与原理 1.1 系统组成及通讯原理 1.1.1 系统构成 一、MSP430F149功能简介: 本设计选用的主要芯片为MSP430F149,该单片机属于德州仪器公司MSP430F14X/16X FLASH 系列。该系列是一组工业级超低功耗的微控制器,运行环境温度为-40~+85 摄氏度工作电压范围 1.8~3.6V,MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。由于具有16位RISC(精简指令集)结构,16位寄存器和常数寄存器,MSP430 达到了最大的代码效率。数字控制的振荡器提供快速从所有低功耗模式苏醒到活动模式的能力时间少于6ms。MSP430F149有较高的处理速度,在8MHz 晶体驱动下指令周期为125 ns。另外它带有两个16 位定时器(带看门狗功能)、速度极快的8 通道12 位A/D 转换器(ADC)(带内部参考电压、采样保持和自动扫描功能)、一个内部比较器和两个通用同步/异步发射接收器、48个I/O口(均可独立控制)的微处理器结构。硬件乘法器提高了单片机的性能并使单片机在编码和硬件上可兼容[3]。这些特点保证了可编制出高效率的源程序。 二、系统构成 1、系统框图 系统构成如图1-1所示,由上位机(即工业控制计算机)、通讯接口和下位机3部分组成。上位机选用的是工控机,智能终端由单片机MSP430F149和外围传感器放大电路等构成(本设计部涉及该部分的设计)。单片机与PC 机之间通信方式为串行异步方式(UART),下位机采用中断方式进行与上位机的数据交换,上位机采用按时查询方式对各串口进行读写操作。单片机MSP430要想与PC 串口连接或者其它带有串口的终端设备连接,接口电路部分必须要进行EIA-RS-232-C 与MSP430 电平和逻辑关系的转换[4]。本设计将采用MAX3221芯片,完成3V~5V 电平与串口电平的双向转换。

RS485总线接口引脚定义及说明

RS485总线标准是工业中(考勤,监控,数据采集系统)使用非常广泛的双向、平衡传输标准接口,支持多点连接,允许创建多达32个节点的网络;最大传输距离1200m,支持1200 m时为100kb/s的高速度传输,抗干扰能力很强,布线仅有两根线很简单。 RS485通信网络接口是一种总线式的结构,上位机(以个人电脑为例)和下位机(以51系列单片机为例)都挂在通信总线上,RS485物理层的通信协议由RS485标准和51单片机的多机通讯方式。由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信。 下面介绍以下rs485通讯接口定义的标准 1.英式标识为TDA(-) 、TDB(+) 、RDA(-) 、RDB(+) 、GND 2.美式标识为Y 、Z 、A 、B 、GND 3.中式标识为TXD(+)/A 、TXD(-)/B 、RXD(-) 、RXD(+)、GND rs485两线一般定义为: "A, B"或"Date+,Date-" 即常说的:”485+,485-” rs485四线一般定义为: "Y,Z,A, B," 一般rs485协议的接头没有固定的标准,可能根据厂家的不同引脚顺序和管脚功能可能不尽相同,但是官方一般都会提供产品说明书,用户可以查阅相关 rs485管脚图定义或者引脚图 上图中rs232转rs485电路中hin232(max232可以起到同样的作用但是要贵一点)起到转

换pc端rs232接口电平的作用,然后把信号由max485这个芯片转换成485电平由AB两根线输出,如果接上双绞线信号rs485总线接口的信号的通信距离至少是1千米远。

基于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单片机串行接口的结构如下:

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; } }

单片机双机之间的串行通信设计

单片机双机之间的串行通 信设计 Prepared on 24 November 2020

专业方向课程设计报告题目:单片机双机之间的串行通信设计单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护

单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图) 本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一数据的发送过程,然后按照此过程不段循环,直到结束。 单片机最小系统:接上电源和地,

基于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缓存。有两个,一个缓存,另一个接受,

基于51单片机串行通信的无线发射极和接收机设计

基于51单片机串行通信的无线发射极和接收机设计---- 1 概述 1.1 课题的目的、背景和意义 最近几年来,由于无线接入技术需求日益增大,以及数据交换业务(如因特 网、电子邮件、数据文件传输等)不断增加,无线通信和无线网络均呈现出指数增 加的趋势。有力的推动力无线通信向高速通信方向发展。然而,工业、农业、车载 电子系统、家用网络、医疗传感器和伺服执行机构等无线通信还未涉足或者刚刚涉 足的领域,这些领域对数据吞吐量的要求很低,功率消耗也比现有标准提供的功率 消耗低。此外,为了促使简单方便的,可以随意使用的无线装置大量涌现,需要在 未来个人活动空间内布置大量的无线接入点,因而低廉的价格将起到关键作用。为 降低元件的价格,以便这些装置批量生产,所以发展了一个关于这种网络的标准方案。Zigbee就是在这一标准下一种新兴的短距离、低功耗、低数据传输的无线网 络技术,它是一种介于无线标记技术和蓝牙之间的技术方案。 对于这种短距离、低功耗、低数据传输无线技术,它不仅在工业、农业、军 事、环境、医疗等传统领域有着巨大的应用价值,未来应用中还可以涉及人类日常 生活和社会生产活动的所有领域。由于各方面的制约,这种技术的大规模商业应用 还有待时日,但已经显示出了非凡的应用价值,相信随着相关技术的发展和推进, 一定会得到更广泛应用。 1.2国内外无线技术相关现状及Zigbee现状 无线通信从固定方式发展为移动方式,移动通信发展至今大约经历了五个阶段: 第一阶段为20年代初至50年代初,主要用于舰船及军有,采用短波频及电子 管技术,至该阶段末期出现才出现150MHVHF单工汽车公用移动电话系统MTS。

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

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

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

51单片机与上位机串口通信程序设计

51单片机与上位机串口通信程序设计 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #include< reg51.h> #include< stdio.h> #include< string.h> #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; } }

相关文档
最新文档