宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

一、关于串口通信技术 (一)、通信技术的基本概念

单片机之间的通信通常采用两种形式:并行通信和串行通信。

并行通信指的是数据的各位同时传输的通信方式;

串行通信指的是数据一位一位的顺序传输的通信方式:串行通信分为两种基本方式:串行异步通信和串行同步通信。

(二)、异步通信和同步通信

1、异步通信
异步串行通信是字符为单位,即一个字符地传送。数据是一帧一帧的传送,即一帧数据传送完成后可以接着传送下一帧数据,也可以等待,等待期间为高电平。
一帧格式中,先是一位起始位0,再是8位数据位(规定低位在前高位在后)然后是奇偶校验位,最后是停止位1。
起始位:发送器是通过发送起始位而开始一个字符的传送。起始位使数据处于“低电平”状态。
a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

b,数据位:起始位之后就是传送数据位,在数据位中,低位在前,高位在后。这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准
ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位为1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

三)、串口通信的结构

1、两个数据缓存区SBUF:

发送数据缓冲寄存器SBUF和接受数据缓冲寄存器SBUF。前者用于发送串行数据,后者用来接收串行数据。发送跟接收数据时,指向SBUF。

2、输入移位寄存器

功能是在接收控制器的控制下,将输入的数据逐位移入接收SBUF。

3、串行控制寄存器SCON

功能是控制串行通信的工作方式,并反应串行通信的工作状态。

4、定时器T1

T1用作波特率发生器,控制传输数据的速度。

四)、串行通信口的控制

在80C51单片机中的特殊功能寄存器中,有4个与串行通信有关的寄存器,分别是:SCON、PCON、IE、IP。其中SCON和PCON直接控制串行口的工作方式。

1、
串行口控制寄存器SCON

串行口控制寄存器SCON的格式

A、
SM0、SM1:串行口的工作方式的选择位,可选择4种工作方式。

(1)方式0( SM0 SM1 :0 0):串行口的工作方式0为移位寄存器I/O方式,可外接移位寄存器,一扩展I/O口,也可外接同步I/O设备。
发送操作:当执行一条“MOVSBUF,A”指令时,启动发送操作,由TXD输出移位脉冲,由RXD串行SBUF中的数据。发送完8位数据后自动置TI=1.请求中断。要继续发送时,TI必须有指令清零。
接收操作:REN是串行口接收允许控制位。REN=0时禁止接收;REN=1时允许接收。当软件将REN置“1”时,即开始从RXD端口以fosc/12波特率输入数据,当接收到8位数据时,将中断标志RI置“1”。再次接收数据之前,必须用软件将RI清0。

(2)方式1
( SM0 SM1 :0 1) :串行口为10位通用异步接口。发送或接收一帧数据信息为10位,包括1位起始位“0”、8位数据位、1位停止位“1”。发送数据:数据从TXD端口输出,当数据写入发送缓冲器SBUF时,就启动发送器发送。发送完一帧数据后,置中断标志TI=1,申请中断,通知CPU可以发送下一个数据了。接收数据:首先使REN=1(允许接收数据),串行口从RXD接收数据,当采样到1至0跳变时,确认是起始位“0”,就开始接收一帧数据,当接收完一帧数据时,置中断标志RI=1,申请中断,通知CPU从SBUF取走接收到的数据。

(3)方式2
(SM0 SM1 :1 0) :串行口为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。发送数据:发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出一帧数据。接收数据:先置REN=1,使串行口为允许接收状态,同时还要将RI清“0”。然后再根据SM2的状态和所接收到的RB8的状态决定此串行口在信息到来后是否置RI=1,并申请中断,通知CPU接收数据。当SM2=0时,不管RB8为“0”还是为“1”,都置RI=1,此串行口将接收发送来的信息。当SM2=1时,且RB8=1,表示在多机通信情况下,接收的信息为“地址帧”, 此时置RI=1,串行口将接收发来的地址。当SM2=1时,且RB8=0,表示在多机通信情况下,接收的信息为“数据帧”, 但不是发给本从机的,此时RI不置为“1”,因而SBUF中接收的数据帧将丢失。
(4)方式3
( SM0 SM1 :1 1) :为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余方式都与方式2相同。

SM2

——多机通信控制位

多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。

工作于方式0时,SM2必须为0。在方式1时,如果SM=1则只有接收到有效停止位时,RI才置1。

REN

——允许接收位

REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。

TB8

——发送数据位8

在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。

RB8

——接收数据位8

在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。

TI

——发送中断标志位

可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。

RI

——接收中断标志位

可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

在串口中断处理时,TI,RI都需要软件清”0″,硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要ES=0,以防止中断出现。

2、 电源控制寄存器PCON

PCON主要是为了CHMOS型单片机的电源控制而设置的专用寄存器。

系统复位默认为SMOD=0。当为用52单片机的定时器2产生波特率时,波特率不受SMOD影响。

各位的定义:

SMOD:该位与串口通信有关。

SMOD=0; 串口方式1,2,3时,波特率正常,波特率不变。

SMOD=1; 串口方式1,2,3时,波特率加倍。

LVDF:低电压检测标志位,同时也是低电压检测中断请求标志位

GF1,GF0:两个通用工作标志位,用户可以自由使用。

PD:掉电模式设定位。

PD=0 单片机处于正常工作状态。

PD=1 单片机进入掉电(Power Down)模式 ,可由外部中断或硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断工作。在该模式下,只有硬件复位和上电能够唤醒单片机。

IDL:空闲模式设定位。

IDL=0 单片机处于正常工作状态。