当前位置:文档之家› 单片机间通信协议说明书

单片机间通信协议说明书

目录

第一章摘要 (2)

第二章总体设计 (3)

1)设计要求: 3

2)设计方案: 3

第三章设计原理 (3)

1)单片机串行通信的概述 (3)

2)单片机最小系统 (4)

(1)AT89G52 单片 (4)

(2 )晶振电路 (5)

(3 )复位电路 (5)

2)硬件设计 (7)

3)软件设计 (9)

主程序设计 (9)

延时中断设计 (10)

初始值设定 (10)

程序流程图 (11)

第四章系统的仿真与实现 (12)

Proteus 软件介绍 (12)

Keil软件介绍 (12)

仿真过程 (13)

仿真结果 (13)

第五章设计小结 (14)

第八早参考文献 (14)

第七章附录 (15)

1#机c程序 (15)

2#机c程序 (17)

第一章摘要

本次设计采用MCS-52单片机。是这样的,MC& 52系列单片机芯片比51芯片多了个定时寄存器,芯片的内存也比51大点,其他功能相同。

串行通信是单片机的一个重要应用。本次课程设计就是要利用单片机来完成一个系统,实现双片

单片机串行通信。通信的结果是用数码管、发光二极管进行显示,数码管采用查表方式显示。两

个单片机之间采用TTL接口电路进行双机通信。在通信过程中,使用通信协议单工进行通信。

关键词:52单片机,串行通信,接口,通信协议。

第二章总体设计

1 )设计要求:

1#机2#机之间实现串行通信,1#机上接一个按键、一个八段数码管,2#机上接一个按键、2个LED,用1#机上的按键控制2#机上的2个LED循环点亮,用2#机上的按键控制1#机上的数码管循环显示0-9。

2)设计方案:

本次设计,对于两片89C52,采用TTL电路进行双机通信。发送方的数据由串行口TXD段输岀,经过传输线将信号传送到接收端。信号到达接收方串行口的接收端。接受方接收后,在数码管上显示接收的信息。为提高抗干扰能力,还可以在输入输岀端加光耦合进行光电隔离。本系统利

用单片机的串行口,由软件和硬件两部分协调实现两单片机的串行数据传输。硬件电路以

AT89C52单片机为核心,外围电路包括按键电路(数据的输入),显示电路(数据的输岀),复位电路。工作在硬件电路基础上的软件主要完成数据输入,存储,显示,发送和接收。由于两单片机相距很近,可以直接将其串行口相连,这样也可以简化设计难度。

软件部分,通过通信协议进行发送接收,当1#机按键按下,2#机两个灯开始循环点亮。当2#机按键按下后,首先把设定好的程序给单片机检验,完毕1#机开始接受并显示在8段数码管上。

第三章设计原理

1 )单片机串行通信的概述

在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分布式应用系统的发展,通信的功能越来越重要通信是指计算机与外界的信息传输,既包括打印机和磁盘

等设备之间如终端、也包括计算机与外部设备,计算机与计算机之间的传输,

的传输。串行通信是指使用一条数据线, 将数据一位一位地依次传输, 每一位数据占据一个固的

时间长度。其只需要少数几条线就可以在系统间交换信息, 特别使用于计算机与计算机、

计算机

与外设之间的远距离通信。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的 传送的,每一位为1或者为0。在串行通信中,把通信接口只能发送或接收的单传送办法叫单工 传送;而把数据在甲乙两机之间的双向传递,

称之为双工传送。 在双工传送方式中又分为半双工

传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,

任一时该,只能发或者只

能收信息。51系列单片机有一个可编程的全双工串行通信接口,它可作异步接收发送器用,也 可做同步移位寄存器用,其帧格式可有 8位、10位或11位,并能设置各种波特率,给使用带来

很大的灵活性。

51系列单片机有两个物理上独立的接收、发送缓冲器

SBUF 它们只占用同一地址 99H ,可同

时发送、接送数据。发送缓冲器只能

写入,不能读岀,接收缓冲器只能读岀、不能写入。串行

发送接收的速率与波特率发生器产生的移位脉冲同频。 51系列单片机用定时器 T1或直接用CPU

时钟作为通信波特率发生器的输入,

在串行接口的不同工作方式中,

波特率发生器从两个输入信

号中选择一个分频,产生移位脉冲来同步串口的接收和发送,移位脉冲的速率即是波特率。 接收器是双缓冲结构,在前一个字节被从接收缓冲器 SBUF 读岀之前,第二字节即开始被收。但

是,若在第二个字节接收完毕后, 前一个字节还未被 CPU 读取的话,第二个字就会覆盖第一个字

节,造成第一个字节的丢失。

接收器是武汉理工大学

《单片机原理与应用》 课程设计说明书 2双

缓冲结构,串行口的发送和接收都是以特殊功能寄存器 SBU F 的名义进行或写的。8051串行口可

设置四种工作方式,可有 8位,10位和11位帧格式。方式 0以8位据为一帧,不设起始位和停

止位,先发送最低位。方式

1以10位为一帧传输,设有 1个起位“ 0” 8个数据位和1 一个停

止位“ 1”方式23以11位为1帧传输,设有1个起始“0”,8个数据位,1个附加第九位和1 个停止们“1”附加第九位由软件置 1或清0。发送时在TB8中,接收时送入 RB8中。

)单片机最小系统 2片AT89C-52单(1)机

■^TAL1

pamcc ?CLWun

PD_Z*AKZ

XTAlZ

p a 如利

PD J S'ABE : 巾曲畑

raw/w

陀换

R

FZJIAII

股曲乜

rnrra

旧08 IP

p 1 ?

r i.r

13

ROM/EPROM勺单片是片内有AT89C5I/52

只要将单片机接上时机,用其构成最小应用系统时,可。MCS-51单片钟电路和复位电路即的

功能强、速度快公司推岀In tel 机系列是系列产品,是当前工位高档单片微型计算机8的.

业测试系统中较理想的一种,内部有一个可编程的全双工的串行通信口,即串行通信和发送缓冲

器(SBUF),这两个在物理上是独立的接收发送器,既可以发送数据,也可以接收数据。全双工的串行通信只需要一根输岀线(发送数据TXD)和一根输入线(接收数据RXD)。串行通信中主要

有两种技术问题,一个是数据传送,另一个是数据转换。具体说,在发送端,要把并行数据转换为串行数据;而在接收端,则要把接收到的串行数据转换为并行数据。

串行数据传送是将构成字符的每个二进制数据按一定的顺序进行传送的方式,串行通信协议

规定字符数据的传送格式,每个串行数据由起始位、数据位、奇偶校检位和停止位组成。本系统

就是利用单片机的串行口,以串行通信方式,实现两单片机之间的数据交换,信息共享。

(2 )晶振电路

AT89C5l/52单片机的时钟信号通常有两种形式:一种是内部时钟方式,另外一种是外部时钟方式。内部时钟方式是在单片机的XTALI和XTAL2引脚外接石英晶体,就构成了自激震荡并在单

片机内部产生时钟脉冲信号。本设计采用内部时钟方式。

)复位电路3 (.

当在AT89C5l/52单片机的RST引脚引入高电平并保持两个机器周期时,单片机内部就执行复位操作。在实际应用中,复位操作有两个基本形式:一种是上电复位,另一种是上

电与按键均有效的复位。本系统采用上电按键都有效的复位。按键按下,RST引脚的高电平只

要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。另外在单片机运行期间,还可以利用按键完成复位操作。

2 )硬件设计

计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。单片机用4

个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但

所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,

再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。

51/2单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,

也可以作为同步移位寄存器用。51单片机串行接口的结构如下:(1)数据缓冲器(SBUF接受

或发送的数据都要先送到SBUF缓存。有两个,一个缓存,另一个接受,用同一接地址99H,发送

时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取岀。(2)串行控制寄存器(PCON SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0,SM1:串行接口工作方式选择位,这两位组合成00, 01, 10 ,11对应于工作方式0、1、2、3

串行接口工作方式特点见下表

SM2多机通信控制位。

REN接收允许控制位。软件置1允许接收;软件置0禁止接收。

TB8:方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。

RB9:在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。

TI :发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继

续发送。

RI :接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继

续接收。

(3 )输入移位寄存器

接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。

(4)波特率发生器

波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生

器,T1设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。

(5 )电源控制寄存器PCON其最高位为SMOD

)波特率计算6 (.

当定时器T1工作在定时方式的时候,定时器T1溢岀率=(T1计数率)/ (产生溢岀所需机器周期)。由于是定时方式,T1计数率=f/12 。产生溢岀所需机器周期数=模M-计数初值X。。RC驱动

电路

显示输出

PDJ3/j4bD

pa.i/Ai>i

PCldJ^g

FW百

paja*Ai>6

?RLB^ACiKrfl .

??TECJ^r?,

PUJMT

r-rnri&v

『口口抑口

FQ.IfAD

I 陀血皿

PQ.4/A

U4

mtiAM

PDJ9A0G

FQ.TfADiT

1#机FZO*AS

rz.-nc^s

F

g

a

I21

F

单片机串口通信协议程序

#include #include #define R55 101 #define RAA 202 #define RLEN 203 #define RDATA 104 #define RCH 105 //#define unsigned char gRecState=R55; unsigned char gRecLen; unsigned char gRecCount; unsigned char RecBuf[30]; unsigned char gValue; void isr_UART(void) interrupt 4 using 1 { unsigned char ch; unsigned char i; unsigned char temp; if (RI==1) { ch=SBUF; switch(gRecState) { case R55: // wait 0x55 if (ch==0x55) gRecState=RAA; break;

case RAA: if (ch==0xaa) gRecState=RLEN; else if (ch==0x55) gRecState=RAA; else gRecState=R55; break; case RLEN: gRecLen=ch; gRecCount=0; gRecState=RDATA; break; case RDATA: RecBuf[gRecCount]=ch; gRecCount++; if (gRecCount>=gRecLen) { gRecState=RCH; } break; case RCH: temp=0; for(i=0;i

设计单片机通讯协议论文(非常经典)

如何设计单片机常用通信 协议论文

目录 1.自定义数据通信协议 (3) 2.上位机和下位机中的数据发送 (3) 3.下位机中的数据接收和协议解析 (4) 4.上位机中的数据接收和命令处理 (8) 5.总结 (9)

单片机通信协议现在大部分的仪器设备都要求能过通过上位机软件来操作,这样方便调试,利于操作。其中就涉及到通信的过程。在实际制作的几个设备中,笔者总结出了通信程序的通用写法,包括上位机端和下位机端等。 1.自定义数据通信协议 这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。在这个层面上, 底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。通信中的数据往往以数据包的形式进行传送的,我们把这样的一个数据包称作为一帧数据。类似于网络通信中的TCPIP协议一般,比较可靠的通信协议往往包含有以下几个组成部分:帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾。 帧头和帧尾用于数据包完整性的判别,通常选择一定长度的固定字节组成,要求是在整个数据链中判别数据包的误码率越低越好。减小固定字节数据的匹配机会,也就是说使帧头和帧尾的特征字节在整个数据链中能够匹配的机会最小。通常有两种做法,一、减小特征字节的匹配几率。二、增加特征字节的长度。通常选取第一种方法的情况是整个数据链路中的数据不具有随即性,数据可预测,可以通过人为选择帧头和帧尾的特征字来避开,从而减小特征字节的匹配几率。使用第二种方法的情况更加通用,适合于数据随即的场合。通过增加特征字节的长度减小匹配几率,虽然不能够完全的避免匹配的情况,但可以使匹配几率大大减小,如果碰到匹配的情况也可以由校验码来进行检测,因此这种情况在绝大多说情况下比较可靠。 地址信息主要用于多机通信中,通过地址信息的不同来识别不同的通信终端。在一对多的通信系统中,可以只包含目的地址信息。同时包含源地址和目的地址则适用于多对多的通信系统。 数据类型、数据长度和数据块是主要的数据部分。数据类型可以标识后面紧接着的是命令还是数据。数据长度用于指示有效数据的个数。 校验码则用来检验数据的完整性和正确性。通常对数据类型、数据长度和数据块三个部分进行相关的运算得到。最简单的做法可是对数据段作累加和,复杂的也可以对数据进行CR C运算等等,可以根据运算速度、容错度等要求来选取。 2.上位机和下位机中的数据发送 物理通信层中提供了两个基本的操作函数,发送一个字节数据则为数据发送的基础。数据 包的发送即把数据包中的左右字节按照顺序一个一个的发送数据而已。当然发送的方

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

51单片机与PC机通信资料

《专业综合实习报告》 专业:电子信息工程 年级:2013级 指导教师: 学生:

目录 一:实验项目名称 二:前言 三:项目内容及要求 四:串口通信原理 五:设计思路 5.1虚拟串口的设置 5.2下位机电路和程序设计 5.3串口通信仿真 六:电路原理框图 七:相关硬件及配套软件 7.1 AT89C51器件简介 7.2 COMPIN简介 7.3 MAX232器件简介 7.4友善串口调试助手 7.5 虚拟串口软件Virtual Serial Port Driver 6.9八:程序设计 九:proteus仿真调试 十:总结 十一:参考文献 一:实验项目名称:

基于51单片机的单片机与PC机通信 二:前言 在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。 目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。 为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。 用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。 串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式

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 -

modbus 协议 及 modbus RTU 的 C51 单片机 程序

modbus 协议及modbus RTU 的C51 单片机程序 Modbus通讯协议 Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。 Modbus 协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。 Modbus 协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave 站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。 下面我来简单的给大家介绍一下,对于Modbus的ASCII、RTU和TCP协议来说,其中TCP 和RTU协议非常类似,我们只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。所以在这里我仅介绍一下Modbus的ASCII和RTU协议。 下表是ASCII协议和RTU协议进行的比较: 协议 开始标记 结束标记

BC2900通信协议操作说明

附录 A 通信 本分析仪提供四种通信协议,根据外部计算机上安装的数据管理软件可接收的样本编号位数进行匹配。若可接收的样本编号上限为8位或10位,应选择8ID或10ID通信协议;若可接收的样本编号上限为15位,应选择15ID或15ID+2通信协议。8ID和10ID通信协议差异在于,10ID通信协议支持样本编号上限为10位,而8ID支持样本编号上限为8位,除此之外,协议其他部分还存在一些差异,具体差异容将在后续章节进行介绍。15ID和15ID+2通信协议差异在于,15ID+2通信协议支持传输P-LCR参数,而15ID通信协议不支持,除此之外,协议其他部分完全兼容,用户可以根据自己的需求选择相应的通信协议进行通信操作。 ●迈瑞公司授权人员安装分析仪时,会根据用户配置的数据管理软件选择与之匹 配的通信协议。 ●如需调整分析仪的通信协议,请与迈瑞公司售后服务部联系。 计数界面右上角通信状态标志处于动画状态,表示通信正在进行。 BC-3000 Plus 通过RS-232 串行口,将样本数据和质控数据传送给外部计算机,通信可在样本分析结束后自动完成或由命令选项操作完成。本章对通信参数的设置、RS-232 串行口连线方式、数据通信格式进行了介绍,为软件工程师编写通信程序提供详细资料,方便用户进行通信操作。

A.1分析仪和计算机的连接 D-1所示。 各引脚说明: DCD:载波检测 RXD:接收数据 TXD:发送数据 DTR:数据终端就绪 GND:信号地 DSR:数据设备就绪 RTS:请求发送 CTS:清除发送 RI:振铃指示 BC-3000 Plus 通过串口2 和外部计算机通信(最大通信距离小于12米),需要接DB9连接器中的2、3、5 三根线来实现。 A.28ID通信协议和10ID通信协议 A.2.1通信数据格式 A.2.2通信说明 编码 [ENQ] 0x05 [STX] 0x02 [EOT] 0x04 [EOF] 0x1A [ETX] 0x03 [ACK] 0x06

51串口通信协议(新型篇)

51串口通信协议(新型篇) C51编程:这是网友牛毅编的一个C51串口通讯程序! //PC读MCU指令结构:(中断方式,ASCII码表示) //帧:帧头标志|帧类型|器件地址|启始地址|长度n|效验和|帧尾标志 //值: 'n' 'y'| 'r' | 0x01 | x | x | x |0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求和: ///////////////////////////////////////////////////////////////////// //公司名称:*** //模块名:protocol.c //创建者:牛毅 //修改者: //功能描述:中断方式:本程序为mcu的串口通讯提供(贞结构)函数接口,包括具体协议部分 //其他说明:只提供对A T89c51具体硬件的可靠访问接口 //版本:1.0 //信息:QQ 75011221 ///////////////////////////////////////////////////////////////////// #include #include //预定义 //帧 #define F_ST1 0x6e //帧头标志n #define F_ST2 0x79 //帧头标志y #define F_R 0x72 //帧类型读r #define F_W 0x77 //帧类型写w #define F_D 0x64 //帧类型数据帧d #define F_B 0x62 //帧类型写回应帧b #define F_C 0x63 //帧类型重发命令帧c #define F_Q 0x71 //帧类型放弃帧q #define F_ADDR 0x31 //器件地址0-9 #define F_END 0x7a //帧尾标志z #define F_SPACE 0x30 //空标志0 #define F_ERR1 0x31 //错误标志1,flagerr 1 #define F_ERR2 0x32 //错误标志2 2 //常数 #define S_MAXBUF 16 //接收/发送数据的最大缓存量 #define FIELD_MAXBUF 48 //最小场缓存,可以大于48字节,因为协议是以20字节为

十二.PC 机与单片机通信(RS232 协议)

十二.PC 机与单片机通信(RS232 协议) [实验任务] 单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机 系统接收后,用LED显示接收到的数据和向上位机发回原样数据。 [硬件电路图] [实验原理] RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串 行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为 20kBps。RS-232协议以-5V-15V表示逻辑1;以+5V-15V 表示逻辑0。我们是 用MAX232芯片将RS232电平转换为TTL电平的。一个完整的RS-232接口有22 根线,采用标准的25芯插头座。我们在这里使用的是简化的9芯插头座。 注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置 需要11.0592M的。 “串口调试助手V2.1.exe”软件的使用很简单,只要将串口选择‘CMO1’波特率设置为‘9600’数据位为8 位。打开串口(如果关闭)。然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中, 数字二进制Px0~Px7 Abcdefg p 十六进制 0 00111111 00000011 11111100 0xco 1 00000110 10011111 01100000 0xf9

[C语言源程序] #include "reg52.h" //包函8051 内部资源的定义 unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容 sbit gewei=P2^6; //个位选通定义 sbit shiwei=P2^5; //十位选通定义 sbit baiwei=P2^4; unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e,0x40,}; void Delay(unsigned int tc) //延时程序 { while( tc != 0 ) {unsigned int i; for(i=0; i<100; i++); tc--;} } void LED() //LED显示接收到的数据(十进制) { shiwei=0; P0=table[dat/10]; Delay(10); shiwei=1; gewei=0; P0=table[dat%10]; Delay(10); gewei=1; baiwei=0; P0=table[dat/100]; Delay(10); baiwei=1; } ///////功能:串口初始化,波特率9600,方式1///////// void Init_Com(void) { TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd;

RSSP-I安全通信协议软件使用说明书-B.1

设 计 文 件 版权专有 违者必究 中车株洲电力机车研究所有限公司 名称 RSSP-I 安全通信协议软件使用说明 书 编号 版本

编制校核

目次 1 目的和范围 (3) 1.1 目的 (3) 1.2 范围 (3) 2 规范性引用文件 (3) 3 参考资料 (3) 4 术语和缩略语 (3) 5 概述 (3) 6 时序接口 (4) 7 使用条件 (6) 8 数据类型定义 (7) 9 应用接口函数 (8) 9.1 Rsp1_Init (8) 9.2 Rsp1_UpdateClock (8) 9.3 Rsp1_PackageData (8) 9.4 Rsp1_CheckPackage (9) 9.5 Rsp1_Close (10) 9.6 Rsp1_Open (10) 9.7 Rsp1_GetChanelStatus (11) 9.8 Rsp1_GetSynData (11) 9.9 Rsp1_SetSynData (12) 附录 A (18) A.1 附录及说明文件符合性检查表 (18) A.2 附件及说明 (18)

1 目的和范围 1.1 目的 本文描述了RSSP-I安全通信协议软件的接口方式与具体方法。预期读者为上层应用开发用户及验证、确认人员等。 1.2 范围 本文适用于RSSP-I安全通信协议软件使用说明。 2 规范性引用文件 本文档所引用的轨道交通信号系统通用安全计算机平台文档,凡是标注版本的,只有标注版本适应本文档;没有标注版本的,则引用文档的最新版本适用于本文档。 表1 3 参考资料 表2 4 术语和缩略语 术语和缩略语见表3。 表3 5 概述

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; }

通用单片机通讯协议ascii

组态王与单片机协议 1.通讯口设置: 通讯方式:RS-232,RS-485,RS-422均可。 波特率:由单片机决定(2400,4800,9600and19200bps)。 字节数据格式:由单片机决定。 注意:在组态王中设置的通讯参数如波特率,数据位,停止位,奇偶校验必须与单片机编程中的通讯参数一致 2.在组态王中定义设备地址的格式 格式:##.# 前面的两个字符是设备地址,范围为0-255,此地址为单片机的地址,由单片机中的程序决定; 后面的一个字符是用户设定是否打包,“0”为不打包、“1”为打包,用户一旦在定义设备时确定了打包,组态王将处理读下位机变量时数据打包的工作。 3.在组态王中定义的寄存器格式 注意:在组态王中定义变量时,一个X寄存器根据所选数据类型(BYTE,UINT,FLOAT)的不同分别占用一个、两个,四个字节,定义不同的数据类型要注意寄存器后面的地址,同一数据区内不可交叉定义不同数据类型的变量。为提高通讯速度建议用户使用连续的数据区。 例如, 1、在单片机中定义从地址0开始的数据类型为BYTE型的变量: 则在组态王中定义相应的变量的寄存器为X0、X1、X2、X3、X4。。。。。。。。,数据类型为BYTE,每个变量占一个字节 2、在单片机中定义从地址100开始的数据类型为UINT型的变量: 则在组态王中定义相应的变量的寄存器为X100、X102、X104、X106、X108。。。。。。。。,数据类型UINT,每个变量占两个字节

3、在单片机中定义从地址200开始的数据类型为FLOAT 型的变量: 则在组态王中定义相应的变量的寄存器为X200、X20 4、X208、X212。。。。。。。, 数据类型FLOAT ,每个变量占四个字节 3.组态王与单片机通讯的命令格式: 字头:1字节1个ASCII 码,40H 设备地址: 1字节2个ASCII 码,0—255(即0---0x0ffH ) 标志:1字节2个ASCII 码,bit0~bit7, bit0= 0:读,bit0= 1:写。 bit1= 0:不打包。 bit3bit2 = 00,数据类型为字节。 bit3bit2 = 01,数据类型为字。 bit3bit2 = 1x,数据类型为浮点数。 数据地址: 2字节4个ASCII 码,0x0000~0xffff 数据字节数:1字节2个ASCII 码,1—100,实际读写的数据的字节数。 数据…:为实际的数据转换为ASCII 码,个数为字节数乘2。 异或:异或从设备地址到异或字节前,异或值转换成2个ASCII 码 CR :0x0d 。 通讯尝试恢复命令(COMERROR ),请求地址为0的一个BYTE 数据 3.1.上位机发送读命令 下位机应答:若正常: 若不正常: 100,数据类型为字节,不打包。组态王所 若正确:

51单片机与蓝牙串口通信程序

#include #include #include #include "LCD1602.h" #include "matrix_key.h" #define uint unsigned int #define uchar unsigned char #define Nop() _nop_() sbit P10 = P1^0; /*定义独立对地按键端口*/ sbit P11 = P1^1; /*定义独立对地按键端口*/ sbit P12 = P1^2; /*定义独立对地按键端口*/ sbit P13 = P1^3; /*定义独立对地按键端口*/ //shift键 bit shift_flag; bit call_flag ; bit CallIn_flag=0; bit reci_flag; bit reci_flag1; sbit sled_en_port = P3^6; /*定义数码管数据锁存器控制端口*/ sbit led_en_port = P2^5; /*定义发光二极管数据锁存器控制端口*/ sbit ds1302_en_port = P2^2; /*定义时钟的选片脚*/ uchar CallIn_Num[15];//={"00000000000"}; uchar CallOut_Num[15]={" "}; uchar m=0; //拨号指针 uchar temp='?'; uchar code clr[16]={" "}; uchar code lcd_table[16] = {"Ky: Cm: Re: "}; //uchar send_buff[15]; uchar reci_buff[15]={" "}; uchar z; //接收缓冲区指针 uchar time;//定时器中断次数 uchar code mun_to_char[]={"0123456789ABCDEF"}; /*1MS为单位的延时程序*/ void init(); void send(uchar cc); void send_f(uchar ccc); void interrupt_pro(); void key_pro(); void call_out();

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

(合同制定方法)单片机与上位机通信协议的制定

(合同制定方法)单片机与上位机通信协议的制定

单片机和上位机通信协议的制定 单片机和上位机的串口通信协议分为上行协议和下行协议,要分别制定!上行协议,即由单片机向上位机发送数据。 下行协议,即由上位机向单片机发送数据。 而通信协议又要分固定长度和不定长度俩种 本文所介绍的协议属于简单的固定字长的通信协议! 下行协议由四个字节构成

上表是简单的上位机对单片机的控制指令 下述函数是C#中封装的串口通信类中的发送函数的封装publicvoidSerSendCommu(byteorderDef,bytedata)//参数1为命令字,参数二为要发送的数 //据,需要时可直接调用 { Byte[]BSendTemp=newByte[SEND_LENTH]; BSendTemp[0]=PRE; BSendTemp[1]=orderDef; BSendTemp[2]=data; BSendTemp[3]=END; this.serialPort1.Write(BSendTemp,0,SEND_LENTH); } 下位机中用中断方式接收字符,本文用的是GCC语言,下面是串口接收数据中断 ISR(USART_RXC_vect)//串口接收中断

{ unsignedcharstatus,data; status=UCSRA;//**首先读取UCSRA的值,再读取UDR值,顺序不能颠倒,否则读取UDR后的UCSRA的 //值即会改变** data=UDR; if(!Uart_RecvFlag)//判断缓存中的数据是否读完,读完则接收指令 { if((status&((1<

51单片机与串口通信代码

51单片机与串口通信代码 2011年04月22日 17:18 本站整理作者:佚名用户评论(0) 关键字:串口通信(35) 串口调试 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;

基于普通单片机的LIN协议实现方案

1 概述 LIN协议是新出现的一种新型低成本串行通信总线,其全称是Local Interconnect Network,即局部互联网络。它最开始出现于汽车行业,是为解决汽车智能化和网络化的发展要求和降低汽车制造成本的 矛盾而提出来的一种串行总线协议,主要用于车门、车灯等需要简单 控制但又要求智能控制的场合。它的主要特点是:采用单个主控制器 /多从设备通信模式;基于普通UART/SCI接口硬件实现,协议简单;网络传输速率不高,最高可达20kb/s。由于LIN协议的突出特点是协议对硬件的依赖程度低,可以基于普通单片机的通用串口等硬件资源 以软件方式实现,成本低廉,因此可广泛应用于汽车行业以外的其他 领域,如智能家庭网络内部的数据传输、节点控制等场合。 本文依据对LIN协议的分析,对其协议在普通单片机上的具体实现,即如何利用单片机有限的硬件资源实现LIN的主节点、从节点, 进行可行性方案的研究、探讨。 2 LIN协议的简介 LIN协议的最新版本是LIN Specification Package Revision 2.O,包 括协议规范、节点诊断配置规范、物理层规范、API规范等几个方面,从硬件配置到节点配置语言都作了详细的规定。下面就其协议规范作 一简要介绍和分析。 LIN的数据传输是采用报文帧的形式进行的。一个完整的报文帧 由1个主机节点发送的报文头(header)和1个主机或从机节点发送的响 应(response)组成,如图1所示。报文头包括1个间隔场(break)、1个同步字节场(synch)和1个保护标识符字节场PID(Protected IDentifier)。间 隔场是由持续了至少13个位时的显性电平和至少1个位时的隐性电平 组成;由主机节点产生,标志着一次数据通信过程报文帧的开始。同 步字节场包含时钟同步信息。同步字节场的格式是0x55,表现在8个 位定时中有5个下降沿,即隐性跳变到显性的边沿。

(第9章)VFD-V串行口RS485通讯协议

第九章串行口RS485通讯协议 9.1通讯概述 本公司系列变频器向用户提供工业控制中通用的RS485通讯接口。通讯协议采用MODBUS标准通讯协议,该变频器可以作为从机与具有相同通讯接口并采用相同通讯协议的上位机(如PLC控制器、PC机)通讯,实现对变频器的集中监控,另外用户也可以使用一台变频器作为主机,通过RS485接口连接数台本公司的变频器作为从机。以实现变频器的多机联动。通过该通讯口也可以接远控键盘。实现用户对变频器的远程操作。 本变频器的MODBUS通讯协议支持两种传送方式:RTU方式和ASCII方式,用户可以根据情况选择其中的一种方式通讯。下文是该变频器通讯协议的详细说明。 9.2通讯协议说明 9.2.1通讯组网方式 (1) 变频器作为从机组网方式: 图9-1 从机组网方式示意图(2) 多机联动组网方式:单主机单从机 单主机多从机

图9-2 多机联动组网示意图 9.2.2通信协议方式 该变频器在RS485网络中既可以作为主机使用,也可以作为从机使用,作为主机使用时,可以控制其它本公司变频器,实现多级联动,作为从机时,PC 机或PLC可以作为主机控制变频器工作。具体通讯方式如下: (1)变频器为从机,主从式点对点通信。主机使用广播地址发送命令时,从机不应答。 (2)变频器作为主机,使用广播地址发送命令到从机,从机不应答。 (3)用户可以通过用键盘或串行通信方式设置变频器的本机地址、波特率、数据格式。 (4) 从机在最近一次对主机轮询的应答帧中上报当前故障信息。 9.2.3通讯接口方式 通讯为RS485接口,异步串行,半双工传输。默认通讯协议方式采用ASCII 方式。 默认数据格式为:1位起始位,7位数据位,2位停止位。 默认速率为9600bps,通讯参数设置参见P3.09~P3.12功能码。 9.3 ASCII与RTU通讯协议 字符结构: 10位字符框(For ASCII) (1-7-2格式,无校验) (1-7-1格式,奇校验)

相关主题