当前位置:文档之家› 第7章 PIC单片机串行口及串行通信技术

第7章 PIC单片机串行口及串行通信技术

第7章PIC18FXX2串行口及串行通信技术

?教学目标

串行通信基本知识

串行口及应用

PIC18FXX2与PC机间通信软件的设计

本章知识点概要

? 1.什么是串行通信,串行通信有什么优点?

? 2.串行通信协议

? 3.什么是波特率?

? 4.PIC18FXX2中的串行口工作方式及应用

? 5.PIC18FXX2点对点通信

?针对PIC18FXX2串行口而言,概括为以下问题:

1、波特率设计,初始化SPBRG

2、设定通信协议(工作方式选择,SYNC)

3、如何启动PIC18FXX2接收、发送数据?

4、如何检查数据是否接收或发送完毕?

7.1 7.1 串行通信基本知识串行通信基本知识

?在实际工作中,计算机的CPU 与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也要交换信息,所有这些信息交换均可称为通信。

?通信方式有两种,即并行通信和串行通信。

?采用哪种通信方式?----通常根据信息传送的距离决定例如,PC 机与外部设备(如打印机等)通信时,如果距离小于30 m ,可采用并行通信方式;当距离大于30 m 时,则要采用串行通信方式。PIC18FXX2单片机具有并行和串行二种基本通信方式。

并行通信

?并行通信是指数据的各

位同时进行传送(发送

或接收)的通信方式。

?优点:传送速度快;

?缺点:数据有多少位,

就需要多少根传送线。

?例如,右图PIC18FXX2

单片机与外部设备之间

的数据传送就属于并行

通信。

串行通信

?串行通信是指数据一位(bit)一位按顺序传送的通信方式。?优点:只需一对传输线(利用电话线就可作为传输线),大大降低了传送成本,特别适用于远距离通信;

?缺点:传送速度较低。假设并行传送N位数据所需时间为T,那么串行传送的时间至少为N*T,实际上总是大于N*T。

接收设备发送设备

D2

D1

D0

D3

D7

D6

D5

D4

串行通信的传输方式

?串行通信的传输方式通常有三种:

单向(或单工)方式,只允许数据向一个方向传送;

半双向(或半双工)方式,允许数据向两个方向中的任一方向传送,但每次只能有一个站点发送;

全双向(或全双工)方式,允许同时双向传送数据,因此,全双工配置是一对单向配置,它要求两端的通信设备都具有完整和独立的发送和接受能力。

串行通信中的数据传送方式

?异步串行通信协议

?起始位(0)信号只占一位,用来通知接收设备一个待接收的字符开始到达。线路上在不传送字符时应保持为1。接收端不断检测线路的状态,若连续为1以后又测到一个0,就知道发来一个新字符,应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。

D0--D4)、6位、7位、8位(D0

D0--?起始位后面紧接着是数据位,5位(D0

D7)或9位。若所传字符为ASCII码,则常取7位。

?奇偶校验(D8)只占一位,若在字符中可规定不用奇偶校验位,则这一位可省去。也可用这一位(1/0)来表示这一帧中的字符所代表信息的性质(地址/数据等)。

?停止位用来表征字符的结束,它一定是高电位(逻辑1)。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一个字符做好准备。只要再接收到0,就是新的字符的起始位。若停止位以后不是紧接着传送下一个字符,则使线路电平保持为高电平(逻辑1)。

波特率(Baud rate)

?通信线上传送的所有位信号的持续时间都保持一致,由数据传送速度确定。

?波特率,即数据传送速率:每秒钟传送二进制代码的位数,它的单位是b/s (bits per second)。

?假设数据传送速率是120帧/s,而每一帧信息包含的代码位有:1个起始位、8个数据位、1个停止位。这时,传送的波特率为:

10b/帧×120帧/s=1200b/s

?每一位代码的传送时间Td为波特率的倒数。

Td=1/1200=0.833ms

?异步通信的传送速率在50b/s~19200b/s之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。

串行通信协议类型

?串行通信的基本特征是数据逐位按顺序进行传送。

?根据串行通信的格式及约定(如:同步方式、通信速率、数据块格式、信号电平……等)不同,形成了多种串行通信协议与接口标准。

?常见的有:

–通用串行总线(USB)

–I2C总线

–CAN总线

–SPI总线

485,RS--232C,RS422A标准……等等

RS--485,RS

–RS

本课程介绍通用异步收发器(UART)是异步串行通信口的总称,而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接

口标准和总线标准,它规定了通信接口的电气特性、传输速率、连接特

性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络

中的数据链路层(上一层)的概念。

串行通信的过程

1、串←→并转换与设备同步

两个通信设备在串行线路上实现通信必须解决2个问题:1)串←→并转换,即把要发送的并行数据串行化,把接收的串行数据并行化;

2)设备同步,即发送设备与接收设备的工作节拍同步,以确保发送数据在接收端被正确读出。

图7-5

图7-6

2)设备同步

?进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据的脉冲。

?设备同步对通信双方有两个共同要求:

通信双方必须采用统一的编码方法;

通信双方必须能产生相同的传送速率。

?采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度,当然还包括统一的逻辑电平规定,即电平信号高低与逻辑1和逻辑0的固定对应关系。

?通信双方只有产生相同的传送速率,才能确保设备同步,这就要求发送设备和接收设备采用相同频率的时钟。发送设备在统一的时钟脉冲上发出数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。

7.2 PIC18FXX2串行口及应用

?PIC18FXX2单片机具有一个串行通信接口,能同时进行串行发送和接收数据。

?既可以配置成全双工的异步通信模式,又可以配里成半双工的同步通信模式。

?在同步通信模式下还可以有主模式或从模式之分,可按实际数据通信的需要灵活应用。

?此模块的异步串行通信模式应用面最为广泛,利用异步串行接口可以方便地实现单片机和PC机的通信,也可以进行多机联网。

?PIC18FXX2的引脚RXD(RC26)是串行数据接收端,引脚TXD(RC25 )是串行数据发送端。

串行通信技术

实验6.串行通信技术 一、实验目的 1.了解异步串行通信原理; 2. 2.掌握MSP430异步串行通信模块及其编程方法。 二、实验任务 1.PC机上的串行通信接口及其控制程序的使用 参看讲义,了解PC机的标准异步串行接口协议,用孔孔交叉线连接两台PC机的串口,利用“串口调试助手程序”控制PC机串口,实现两台PC机之间字符串的传送。 2.掌握单片机与PC机串行通信的硬件连接 参看附录A实验板原理图,了解MSP430F1XX串口模块相关引脚和实验板串口接线(插座S3:P3.4-UTXD0,P3.5-URXD0,P3.6-UTXD1,P3.7-URXD1),及其经RS-232电平转换后的信号(插针P7:TXD0,RXD0)。 思考:设计单片与PC机进行串行通信时,硬件设计有哪些需要注意的事项? (1)注意进行电平转换 (2)注意USART0与电脑进行串行通信时要将2、3与电脑串口的2、3进行交叉连接 3.查询方式控制串行通信的收发,在实验板上设计接线,编程实现接收PC机的串口发送来的字符串,字符串以字符@结尾,MCU将接收到的字符串保存在RAM中,接收到字符@后,MCU开始将接收到的字符串发给PC机,PC机侧用串口助手程序接收并显示收到的字符串。(建议单片机串口时钟选择ACLK=32.768KHz,波特率9600bps). 用USART0与电脑串口进行通信时的程序如下: #include "io430.h" char string[]; //声明一个没有长度的数组变量 int i,j; //声明两个全局整型变量 void USART0_int() { U0CTL_bit.SWRST=1; //设置SWRST=1 P3SEL_bit.P4=1; //设置P3.4为UTXD0 P3SEL_bit.P5=1; //设置P3.5为URXD0 U0CTL|=PENA+PEV+SPB+CHAR; //设置异步串行通信方式的协议为数据8位、偶 校验、2位停止位 U0TCTL_bit.SSEL0=1; //波特率发生器时钟来源选择为ACLK U0TCTL_bit.SSEL1=0; U0RCTL_bit.URXEIE=1; //接收到数据无论对错,都存入U0RXBUF,并置位URXIFGx U0BR0=0X03; //波特率设置 U0BR1=0; U0MCTL=0X91; ME1_bit.UTXE0=1; //使能发送模块

第7章PIC单片机串行口及串行通信技术.pdf

第7章PIC18FXX2串行口及串行通信技术 ?教学目标 串行通信基本知识 串行口及应用 PIC18FXX2与PC机间通信软件的设计

本章知识点概要 ? 1.什么是串行通信,串行通信有什么优点? ? 2.串行通信协议 ? 3.什么是波特率? ? 4.PIC18FXX2中的串行口工作方式及应用 ? 5.PIC18FXX2点对点通信 ?针对PIC18FXX2串行口而言,概括为以下问题: 1、波特率设计,初始化SPBRG 2、设定通信协议(工作方式选择,SYNC) 3、如何启动PIC18FXX2接收、发送数据? 4、如何检查数据是否接收或发送完毕?

7.1 7.1 串行通信基本知识串行通信基本知识 ?在实际工作中,计算机的CPU 与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也要交换信息,所有这些信息交换均可称为通信。 ?通信方式有两种,即并行通信和串行通信。 ?采用哪种通信方式?----通常根据信息传送的距离决定例如,PC 机与外部设备(如打印机等)通信时,如果距离小于30 m ,可采用并行通信方式;当距离大于30 m 时,则要采用串行通信方式。PIC18FXX2单片机具有并行和串行二种基本通信方式。

并行通信 ?并行通信是指数据的各 位同时进行传送(发送 或接收)的通信方式。 ?优点:传送速度快; ?缺点:数据有多少位, 就需要多少根传送线。 ?例如,右图PIC18FXX2 单片机与外部设备之间 的数据传送就属于并行 通信。

串行通信 ?串行通信是指数据一位(bit)一位按顺序传送的通信方式。?优点:只需一对传输线(利用电话线就可作为传输线),大大降低了传送成本,特别适用于远距离通信; ?缺点:传送速度较低。假设并行传送N位数据所需时间为T,那么串行传送的时间至少为N*T,实际上总是大于N*T。 接收设备发送设备 D2 D1 D0 D3 D7 D6 D5 D4

第7章 AT89C51单片机的串行口

第7章 AT89C51单片机的串行口 1.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式。 答:1。 2.在串行通信中,收发双方对波特率的设定应该是的。 答:相等。 3.下列选项中,是正确的。 A.串行口通信的第9数据位的功能可由用户定义 B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中 D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存 E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定 答:(A)对(B)对(C)错(D)对(E)对。 4.通过串行口发送或接收数据时,在程序中应使用。 A.MOVC指令B.MOVX指令C.MOV指令D.XCHD指令 答:(C)MOV指令。 5.串行口工作方式1的波特率是。 A.固定的,为f osc/32 B.固定的,为f osc/16 C.可变的,通过定时器/计数器T1的溢出率设定D.固定的,为f osc/64 答:(C)。 6.在异步串行通信中,接收方是如何知道发送方开始发送数据的? 答:当接收方检测到RXD引脚上的有效的负跳变时,即可知道发送方开始发送数据。 7.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?答:串行口有4种工作方式:方式0、方式1、方式2、方式3。 有3种帧格式,方式2和3具有相同的帧格式。 方式0的发送和接收都以fosc/12为固定波特率。 方式1的波特率=2SMOD/32×定时器T1的溢出率。 方式2的波特率=2SMOD/64×fosc。 方式3的波特率=2SMOD/32×定时器T1的溢出率。 8.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B”(42H)的帧格式。 答:传送的字符“B”的帧格式如图所示(先低位后高位)。 起始位0 1 0 0 0 0 1 0 校验位停止位

51单片机课后答案(张毅刚)第7章部分习题答案

第7章MCS-51的串行口 1.串行数据传送的主要优点和用途是什么? 答:串行数据传送的主要优点是硬件接口简单,接口端口少(2个)。主要用于多个单片机系统之间的数据通信。 2.简述串行口接收和发送数据的过程。 答:以方式一为例。发送:数据位由TXT端输出,发送1帧信息为10为,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送。发送开始时,内部发送控制信号/SEND 变为有效,将起始位想TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位。8位数据位全部完毕后,置1中断标志位TI,然后/SEND信号失效。接收:当检测到起始位的负跳变时,则开始接收。接受时,定时控制信号有2种,一种是位检测器采样脉冲,它的频率是RX时钟的16倍。也就是在1位数据期间,有16个采样脉冲,以波特率的16倍的速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。 3.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式(1 )。 4.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定? 答:串行口有3种工作方式:方式0、方式1、方式2、方式3;有3种帧格式:方式0为8位数据,方式1为8位数据、起始位、终止位,方式2和3具有相同的帧格式,为9位数据、起始位、终止位;方式0的发送和接收都以fosc/12为固定波特率,方式1的波特率=2SMOD/32×定时器T1的溢出率,方式2的波特率=2SMOD/64×fosc,方式3的波特率=2SMOD/32×定时器T1的溢出率。 5.假定串行口串行发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位,请画出传送字符“A”的帧格式。 答:“A”的AS CⅡ码为“01000001” 从左向右:0,1,0,0,0,0,0,1,0,0, 1 起始位低位高位奇偶位终止位 6.判断下列说法是否正确: 答:(A)串行口通讯的第9数据位的功能可由用户定义。(对) (B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。(对)(C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。(错) (D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(对) (E)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。(对) 7.通过串行口发送或接收数据时,在程序中应使用:

MCS-51单片机串行接口

第七章MCS-51单片机串行接口 第一节串行通信的基本概念 (一)学习要求 1.掌握串行通信的基本概念。 2. 掌握异步通信和同步通信的区别。 (二)内容提要 一:基本概念及分类 串行通信是将数据的各位一位一位地依次传送。适合于计算机之间、计算机与外部设备之间的远距离通信。 串行通信从传输方式分为: 单工方式、半双工方式、全双工方式。 从接收方式来说,串行通信有两种方式: 异步通信方式、同步通信方式。 二:串行口的功能 MCS-51单片机中的异步通信串行接口能方便地与其他计算机或传送信息的外围设备(如串行打印机、CPU终端等)实现双机、多机通信。 串行口有4种工作方式,见表7-1。方式0并不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口的功能。该方式又称为移位寄存器方式。方式1、方式2、方式3都是异步通信方式。方式1是8位异步通信接口。一帧信息由10位组成,其格式见图7-2a。方式1用于双机串行通信。方式2、方式3都是9位异步通信接口、一帧信息中包括9位数据,1位起始位,1位停止位,其格式见图7-2b。方式2、方式3的区别在于波特率不同,方式2、方式3主要用于多机通信,也可用于双机通信。 表7-1 (三)习题与思考题 1、什么是并行通信?什么是串行通信?各有何优缺点? 答:并行通信指数据的各位同时传输的通信方式,串行通信是指各位数据逐位顺序传输的通信方式。 2、什么是异步通信?什么是同步通信?各有何优缺点? 3、什么是波特率?某异步串行通信接口每分钟传送1800个字符,每个字符由11位组成,请计算出传送波特率。 第二节MCS-51串行接口的组成 (一)学习要求

串行通信技术-模拟信号转换接口

微机原理与应用实验报告6 实验9 串行通信技术 实验10A 模拟信号转换接口 实验报告

实验九串行通信技术 一、实验目的 1. 了解异步串行通信原理; 2. 掌握MSP430异步串行通信模块及其编程方法; 二、实验任务 1. 了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用 (1)利用PC机的串口助手程序控制串口,实现串口的自发自收功能 为实现PC串口的自发自收功能,须现将实验板上的扩展板去下,并将单片机板上的BRXD和BTXD用杜邦线进行短接,连接图如下所示: 由此可以实现PC串口的自收自发功能。 (2)思考题:异步串行通信接口的收/发双方是怎么建立起通信的 首先在异步通信中,要求接收方和发送方具有相同的通信参数,即起始位、停止位、波特率等等。在满足上面条件的情况下,发送方对于每一帧数据按照起始位数据位停止位的顺序进行发送,而接收方则一直处于接受状态,当检测到起始位低电平时,看是采集接下来发送方发送过来的数据,这样一帧数据(即一个字符)传送完毕,然后进行下一帧数据的接受。这样两者之间就建立起了通信。 2. 查询方式控制单片机通过板载USB转串口与PC机实现串行通信 (1)硬件连接图

(2)C语言程序 采用SMCLK=1.0MHz时,程序如下:

其中SMCLK=1MHz,波特率采用的是9600,采用低频波特方式,则N=1000000/9600=104.1666…,故UCA0BR1=0,UCA0BR0=104,UCBRS=1; 当采用外部晶振时,时钟采用默认设置即可,程序如下:

也是采用了低频波特率方式,所以关于波特率设置的相关计算和上面是一样的。 (3)思考:如果在两个单片机之间进行串行通信,应该如何设计连线和编程? 由于在上面的连线中将单片机上的P1.2和BRXD相连,P1.1和BTXD相连,所以若要在两个单片机之间进行通信,首先应该将两个单片机的P1.2和P1.1交叉相连,并根据上面的程序进行相同的关于端口和波特率相关的设置即可实现两个单片机之间的通信。 3. (提高)利用PC机RS232通信接口与单片机之间完成串行通信 (1)硬件连接图 在实验时,采用了将PC机的串口com1直接连接至MSP430F149的孔型D9连接器上,G2553单片机的输出引脚P1.1和P1.2分别与F149单片机上的URXD1和UTXD1相连接,连接图如下所示:

MCS-51单片机串行口工作方式与波特率计算举例

MCS-51单片机串行口工作方式与波特率计算举例 1)方式0 方式0是外接串行移位寄存器方式。工作时,数据从RXD串行地输入/输出,TXD 输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必须用软件清除中断标志。 实际应用在串行I/O口与并行I/O口之间的转换。 2)方式1 方式1是点对点的通信方式。8位异步串行通信口,TXD为发送端,RXD为 接收端。一帧为10位,1位起始位、8位数据位(先低后高)、1位停止位。波特率由T1或T2的溢出率确定。 在发送或接收到一帧数据后,硬件置TI=1或RI=1,向CPU申请中断;但必须用软件清除中断标志,否则,下一帧数据无法发送或接收。 (1)发送:CPU执行一条写SBUF指令,启动了串行口发送,同时将1写入 输出移位寄存器的第9位。发送起始位后,在每个移位脉冲的作用下,输出移位寄存器右移一位,左边移入0,在数据最高位移到输出位时,原写入的第9位1的左边全是0,检测电路检测到这一条件后,使控制电路作最后一次移位,/SEND 和DATA无效,发送停止位,一帧结束,置TI=1。 (2)接收:REN=1后,允许接收。接收器以所选波特率的16倍速率采样RXD 端电平,当检测到一个负跳变时,启动接收器,同时把1FFH写入输入移位寄存器(9位)。由于接、发双方时钟频率有少许误差,为此接收控制器把一位传送时间16等分采样RXD,以其中7、8、9三次采样中至少2次相同的值为接收值。接收位从移位寄存器右边进入,1左移出,当最左边是起始位0时,说明已接收8位数据,再作最后一次移位,接收停止位。此后: A、若RI=0、SM2=0,则8位数据装入SBUF,停止位入RB8,置RI=1。

串行通信技术基础知识

串行通信技术基础 在串行通信中,参与通信的两台或多台设备通常共享一条物理通路。发送者依次逐位发送一串数据信号,按一定的约定规则为接收者所接收。由于串行端口通常只是定义了物理层的接口规范,所以为确保每次传送的数据报文能准确到达目的地,使每一个接收者能够接收到所有发向它的数据,必须在通信连接上采取相应的措施。 由于借助串行通信端口所连接的设备在功能、型号上往往互不相同,其中大多数设备出了等待接收数据之外还会有其他的任务,例如,一个数据采集单元需要周期性地收集和存储数据;一个控制器需要负责控制计算机或向其他设备发送报文;一台设备可能会在接收方正在进行其他任务时向它发送信息。因此,必须有能应对多种不同工作状态的一系列规则来保证通信的有效性。这里所讲的保证串行通信的有效性的方法包括:使用轮询或者中断来检测、接收信息;设置通信帧的起始、停止位;建立连接握手;实行对接收数据的确认、数据缓存以及错误检查等。 一、串行通信基本概念 1、连接握手 通信帧的起始位可以引起接收方的注意,但发送方并不知道,也不能确定接收方是否已经做好了接收数据的准备。利用连接握手可以使收发双方确认已经建立了连接关系,接收方已经做好准备,可以进入数据收发状态。 连接握手过程是指发送者在发送一个数据块之前使用一个特定的握手信号来引起接收者的注意,表明要发送数据,接收者则通过握手信号回应发送者,说明它已经做好了接收数据的准备。 连接握手可以通过软件,也可以通过硬件来实现。在软件连接握手中,发送者通过发送一个字节表明它想要发送数据;接收者看到这个字节的时候,也发送一个编码来声明自己可以接收数据;当发送者看到这个信息时,便知道它可以发送数据了。接收者还可以通过另一个编码来告诉发送者停止发送。 在普通的硬件握手中,接收者在准备好了接收数据的时候将相应的握手信号线变为高电平,然后开始全神贯注地监视它的串行输入端口的允许发送端。这个允许发送端与接收者已准备好接收数据的信号端相连,发送者在发送数据之前一直在等待这个信号变化。一旦得到信号说明接收者已处于准备好接收数据的状态,便开始发送数据。接收者可以在任意时候将握手信号变为低电平,即便是在接收一个数据块的过程中间也可以把这根导线带入到低电平。当发送者检测到这个低电平信号时,就应该停止发送。而在完成本次传输之前,发送者还会继续等待握手信号线在此变为高电平,以继续被中止的数据传输。 2、确认 接收者为表明数据已经收到而向发送者回复信息的过程称为确认。有的传输过程可能会收到报文而不需要向相关节点回复确认信息。但是在许多情况下,需要通过确认告之发送者数据已经收到。有的发送者需要根据是否收到信息来采取相应的措施,因而确认对某些通信过程是必需的和有用的。即便接收者没有其他信息要告诉发送者,也要为此单独发一个数据确认已经收到的信息。 确认报文可以是一个特别定义过的字节,例如一个标识接收者的数值。发送者收到确认报文就可以认为数据传输过程正常结束。如果发送者没有收到所希望回复的确认报文,它就认为通信出现了问题,然后将采取重发或者其它行动。 3、中断 中断是一个信号,它通知CPU有需要立即响应的任务。每个中断请求对应一个连接到中断源和中断控制器的信号。通过自动检测端口事件发现中断并转入中断处理。 许多串行端口采用硬件中断。在串口发生硬件中断,或者一个软件缓存的计数器到达一个触发值时,表明某个事件已经发生,需要执行相应的中断响应程序,并对该事件做出及时的反应。这种过程也称为事件驱动。

串行接口及串行通信技术

第9章串行接口及串行通信技术 难点 ?串行通信的四种工作方式 要求 掌握: ?串行通信的控制寄存器 ?串行通信的工作方式0和方式1 了解: ?串行通信的基础知识 ?串行通信的工作方式2和方式3 9.1 串行通信的基础知识 9.2 MCS-51单片机串行通信的控制寄存器 9.3 MCS-51单片机串行通信工作方式 9.1 串行通信的基础知识 串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。所谓数据传送就是指数据以什么形式进行传送。所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。 9.1.1 数据传送 单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。 1. 字符帧的帧格式 字符帧由四部分组成,分别是起始位、数据位、奇偶校验位、停止位。如图9.1所示: 1)起始位:位于字符帧的开头,只占一位,始终位逻辑低电平,表示发送端开始发送一帧数据。 2)数据位:紧跟起始位后,可取5、6、7、8位,低位在前,高位在后。 3)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。 4)停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位,表示一帧字符传送完毕。 图9.1 字符帧格式

异步串行通信的字符帧可以是连续的,也可以是断续的。连续的异步串行通信,是在一个字符格式的停止位之后立即发送下一个字符的起始位,开始一个新的字符的传送,即帧与帧之间是连续的。而断续的异步串行通信,则是在一帧结束之后不一定接着传送下一个字符,不传送时维持数据线的高电平状态,使数据线处于空闲。其后,新的字符传送可在任何时候开始,并不要求整倍数的位时间。 2. 传送的速率 串行通信的速率用波特率来表示,所谓波特率就是指一秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特。即:1波特=1bps(位/秒) 在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。 9.1.2 数据转换 MCS-51单片机只能处理8位的并行数据,所以在进行串行数据的发送时,要把并行数据转换为串行数据。而在接收数据时,只有把接收的串行数据转换成并行数据,单片机才能进行处理。 能实现这种转换的设备,称为通用异步接收发送器(Universal Asynchronous Receiver /Transmitter)。这种设备已集成到单片机内部,称为串行接口电路。串行接口电路为用户提供了两个串行口缓冲寄存器(SBUF),一个称为发送缓存器,它的用途是接收片内总线送来的数据,即发送缓冲器只能写不能读。发送缓冲器中的数据通过TXD引脚向外传送。另一个称为接收缓冲器,它的用途是向片内总线发送数据,即接收缓冲器只能读不能写。接收缓冲器通过RXD引脚接收数据。因为这两个缓冲器一个只能写,一个只能读,所以共用一个地址99H。串行接口电路如图9.2所示。 图9.2 MCS-51串行口寄存器结构 9.2 MCS-51单片机串行通信的控制寄存器 1. 串行口控制寄存器(SCON) SCON是MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址为 位地 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 址 位符 SM0SM1SM2REN TB8RB8TI RI 号 各位的说明如下: 1)SM0、SM1——串行口工作方式选择位 其状态组合和对应工作方式为:

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;

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串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收

第7章 AT89S51串行口及串行通信技术

第7章 AT89S51串行口及串行通信技术 前几章所涉及的数据传送方式都是并行传送,如AT89S51和外接8位数据的并行传送。这时外设和单片机间的距离都很短,若很长的话,要实行并行的形式显然要用很多的电缆线,这在布线和经济上都不是适合的。因此,本章引入串行传送方式,只用一根数据线传送数据的位信号,同时加上一些通信控制信号线,以满足远距离数据传送的需要,如因特网终端和客户端之间的数据通信。在相同条件下,串行传送速度比并行慢,串行是在牺牲速度的基础上节省成本的。本章的知识点如下: 1.了解数据通信中的并行/串行、同步/异步、单工/双工以及波特率的概念。 2.掌握为什么双机通信时要有通信协议以及通信协议的主要内容。 3.了解AT89S51串行接口的基本结构。 4.理解串行接口控制寄存器SCON 各个位的含义。 5.掌握串行接口的4种工作方式及其实际应用,掌握不同工作方式下的波特率计算方法。 6.理解串行接口中断的概念。 7.了解AT89S51与PC 机间的硬件系统及设计。 重点: 1.不同工作方式下的波特率计算。 2.串口收/发数据的协议及流程。 3.串口4种工作方式的应用。 难点: 1.AT89S51串行接口的基本结构。 2.MAX232和PC 机的通信。 7.1 串行通信基本知识 本节介绍串行通信的基本介绍,同时介绍通信中常用到的“波特率”的概念,为以下各节学习作基础。 7.1.1 数据通信 1. 通信:计算机的CPU 与外设间的信息交换,计算机与计算机间的信息交换。 2. 分类及各方式的特点 (1) 并行通信 定义:数据的各位同时进行传送(发送或接收)的通信方式。 特点:优点——传送速度快;缺点——数据多少位就要多少根传送线,对于位数多,传送远的通信不合适。 (2) 串行通信 定义:数据是一位一位按顺序传送的通信方式。 特点:优点——只需一对传输线(如电话线),大大降低了传送成本,适合于远距离通信;缺点——传送速度相对较慢。 闽江学院电子系 薛小铃

串行通信技术-模拟信号转换接口

微机原理与应用实验报告6 实验9串行通信技术 实验10A模拟信号转换接口 实验报告

实验九串行通信技术 一、实验目的 1. 了解异步串行通信原理; 2. 掌握MSP430异步串行通信模块及其编程方法; 二、实验任务 1. 了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用 (1)利用PC机的串口助手程序控制串口,实现串口的自发自收功能 为实现PC串口的自发自收功能,须现将实验板上的扩展板去下,并将单片机板上的BRXD和BTXD用杜邦线进行短接,连接图如下所示: 由此可以实现PC串口的自收自发功能。 (2)思考题:异步串行通信接口的收/发双方是怎么建立起通信的 首先在异步通信中,要求接收方和发送方具有相同的通信参数,即起始位、停止位、波特率等等。在满足上面条件的情况下,发送方对于每一帧数据按照起始位数据位停止位的顺序进行发送,而接收方则一直处于接受状态,当检测到起始位低电平时,看是采集接下来发送方发送过来的数据,这样一帧数据(即一个字符)传送完毕,然后进行下一帧数据的接受。这样两者之间就建立起了通信。 2. 查询方式控制单片机通过板载USB转串口与PC机实现串行通信 (1)硬件连接图

(2)C语言程序 采用SMCLK=1.0MHz时,程序如下:

其中SMCLK=1MHz,波特率采用的是9600,采用低频波特方式,则N=1000000/9600=104.1666…,故UCA0BR1=0,UCA0BR0=104,UCBRS=1; 当采用外部晶振时,时钟采用默认设置即可,程序如下:

也是采用了低频波特率方式,所以关于波特率设置的相关计算和上面是一样的。 (3)思考:如果在两个单片机之间进行串行通信,应该如何设计连线和编程? 由于在上面的连线中将单片机上的P1.2和BRXD相连,P1.1和BTXD相连,所以若要在两个单片机之间进行通信,首先应该将两个单片机的P1.2和P1.1交叉相连,并根据上面的程序进行相同的关于端口和波特率相关的设置即可实现两个单片机之间的通信。 3. (提高)利用PC机RS232通信接口与单片机之间完成串行通信 (1)硬件连接图 在实验时,采用了将PC机的串口com1直接连接至MSP430F149的孔型D9连接器上,G2553单片机的输出引脚P1.1和P1.2分别与F149单片机上的URXD1和UTXD1相连接,连接图如下所示:

串行通信基本原理

本文详细介绍了串行通信的基本原理,以及在Windows NT、Win98环境下用MFC 实现串口(COM)通信的方法:使用ActiveX控件或Win API.并给出用 Visual C++6.0编写的相应MFC32位应用程序。关键词:串行通信、VC++6.0、ActiveX控件、Win API、MFC32位应用程序、事件驱动、非阻塞通信、多线程. 在Windows应用程序的开发中,我们常常需要面临与外围数据源设备通信的问题。计算机和单片机(如MCS-51)都具有串行通信口,可以设计相应的串口通信程序,完成二者之间的数据通信任务。 实际工作中利用串口完成通信任务的时候非常之多。已有一些文章介绍串口编程的文章在计算机杂志上发表。但总的感觉说来不太全面,特别是介绍32位下编程的更少,且很不详细。笔者在实际工作中积累了较多经验,结合硬件、软件,重点提及比较新的技术,及需要注意的要点作一番探讨。希望对各位需要编写串口通信程序的朋友有一些帮助。 一.串行通信的基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 串口通信程序的流程如下图: 二.串口信号线的接法 一个完整的RS-232C接口有22根线,采用标准的25芯插头座(或者9芯插头座)。25芯和9芯的主要信号线相同。以下的介绍是以25芯的RS-232C为例。 ①主要信号线定义: 2脚:发送数据TXD;3脚:接收数据RXD;4脚:请求发送RTS;5脚:清除发送CTS; 6脚:数据设备就绪DSR;20脚:数据终端就绪DTR;8脚:数据载波检测DCD; 1脚:保护地;7脚:信号地。 ②电气特性:

串行通信技术SERDES正成为高速接口的主流

串行通信技术SERDES正成为高速接口的主流 串行通信技术SERDES正成为高速接口的主流 2009-08-21 13:44随着对信息流量需求的不断增长,传统并行接口技术成为进一步提高数据传输速率的瓶颈。过去主要用于光纤通信的串行通信技术——SERDES正在取代传统并行总线而成为高速接口技术的主流。本文阐述了介绍SERDES 收发机的组成和设计,并展望了这种高速串行通信技术的广阔应用前景。 ? SERDES是英文SERializer(串行器)/DESerializer(解串器)的简称。它是一种时分多路复用(TDM)、点对点的通信技术,即在发送端多路低速并行信号被转换成高速串行信号,经过传输媒体(光缆或铜线),最后在接收端高速串行信号重新转换成低速并行信号。这种点对点的串行通信技术充分利用传输媒体的信道容量,减少所需的传输信道和器件引脚数目,从而大大降低通信成本。 ? SERDES技术最早应用于广域网(WAN)通信。国际上存在两种广域网标准:一种是SONET,主要通行于北美;另一种是SDH,主要通行于欧洲。这两种广域网标准制订了不同层次的传输速率。目前万兆(OC-192)广域网已在欧美开始实行,

中国大陆已升级到2.5千兆(OC-48)水平。SERDES技术支持的广域网构成了国际互联网络的骨干网。 ? SERDES技术同样应用于局域网(LAN)通信。因为SERDES 技术主要用来实现ISO模型的物理层,SERDES通常被称之为物理层(PHY)器件。以太网是世界上最流行的局域网,其数据传输速率不断演变。IEEE在2002年通过的万兆以太网标准,把局域网传输速率提高到了广域网的水平,并特意制订了提供局域网和广域网无缝联接的串行WAN PHY。与此同时,SERDES技术也广泛应用于不断升级的存储区域网(SAN),例如光纤信道。 ? 随着半导体技术的迅速发展,计算机的性能和应用取得了长足进步。可是,传统并行总线技术——PCI却跟不上处理器和存储器的进步而成为提高数据传输速率的瓶颈。新一代PCI标准PCI Express正是为解决计算机IO瓶颈而提出的(见表1)。PCI Express是一种基于SERDES的串行双向通信技术,数据传输速率为2.5G/通道,可多达32通道,支持芯片与芯片和背板与背板之间的通信。国际互联网络和信息技术的兴起促成了计算机和通信技术的交汇,而SERDES串行通信技术逐步取代传统并行总线正是这一交汇的具体体现。

第5部分 89C51串行口及串行通讯技术

第5部分 89C51串行口及串行通讯技术 1、什么是串行异步通信,它有哪些作用? 答:在异步通信中,数据和字符是一帧一帧地传送。 在帧格式中,一个字符由4个部分组成:起始位、数据位、奇偶校验位和停止位。 首先起始位(0)信号只占一位,用来通知接收设备一个待接收的字符开始到达; 然后是5位~8位数据(规定低位在前,高位在后);下来是奇偶校验位(可省略),也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等);最后是停止位(1),用来表征字符的结束,是一位高电位,可以是1位、1.5位、2位。 通讯采用帧格式,无需同步字符;存在空闲位也是异步通讯的特征之一。 2、89C51单片记得串行口由哪些功能部件组成?各有什么作用? 答:89C51单片机的串行接口由发送缓冲器SBUF、接收缓冲器SBUF、输入移位寄存器、串行接口控制寄存器SCON、定时器T1构成的波特率发生器等部件组成。 由发送缓冲器SBUF发送数据,接收缓冲器SBUF接收数据,串行接口通讯的工作方式选择、接收和发送控制及状态标志等均由串行接口控制寄存器SCON控制和指示,定时器T1产生串行通讯所需的波特率。 3、简述串行口接收和发送数据的过程。 答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。当向SBUF发“写”命令时(执行“MOV SBUF,A”指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一数据,发送完便使发送中断标志位TI=1。 在满足串行接口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)= 1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1,当发读SBUF命令时(执行“MOV A,SBUF”指令),便由接收缓冲器SBUF取出信息通过8051内部总线送CPU。 4、89C51串行口有几种工作方式?有几种帧格式?各工作方

51单片机的串行接口

51单片机的串行接口 串行接口的一般概念 单片机与外界进行信息交换称之为通讯。 8051单片机的通讯方式有两种: 并行通讯:数据的各位同时发送或接收。 串行通讯:数据一位一位顺序发送或接收。参看下图: 串行通讯的方式 异步通讯:它用一个起始位表示字符的开始,用停止位表示字符的结束。其每帧的格式如下: 在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。用这种格式表示字符,则字符可以一个接一个地传送。 在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。 波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。 同步通讯:在同步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。 通讯方向:在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。 2.8051单片机的串行接口结构 8051串行接口是一个可编程的全双工串行通讯接口。它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS 移位寄存器来扩充I/O口。 8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。 串行口的控制与状态寄存器 串行口控制寄存器SCON 它用于定义串行口的工作方式及实施接收和发送控制。字节地址为98H,其各位定义如下表:

单片机实验报告串行口

单片机实验报告 实验名称:串行通信实验 姓名:魏冶 学号:090402105 班级:光电一班 实验时间:2011-11-29 南京理工大学紫金学院电光系

一、实验目的 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD、RXD口; 3、了解MAX232芯片的使用。 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。它有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H),发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入。 要发送的字节数据直接写入发送缓冲器,SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行接口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号做接收或发送移位寄存器的移位时钟。TI和RI分别发送完数据和接收完数据的中断标志,用来向CPU发中断请求。 三、实验内容 1、学会DPFlash软件的操作与使用,以及内部内嵌的一个串口调试软件的使用。 2、用串口连接PC机和DP-51PROC单片机综合仿真实验仪。 3、编写一个程序,利用单片机的串行口发送0x55,波特率为9600。 程序设计流程图

4、程序下载运行后,可在PC机上的串口调试软件上(内嵌在DPFlash软件的串口调 试器,设置通信口为COM1口,波特率为9600,数据位8,停止位1)看到接收到“UUUUUU……”,出现这样的结果就基本达到要求。 (1)代码: #include void main() { long int i; SCON=0x40; PCON=0; TMOD=0x20; TH1=0xfd; TL1=0xfd; TI=1; TR1=1; star:for(i=0;i<5000;i++); SBUF=0x55; goto star; } (2)电路图; 5、在单片机接收到0x55时返回一个0x41,在PC机一端,以接收到0x41完成,波特率2400。

相关主题
文本预览
相关文档 最新文档