首页 » 互联网 » 详解单片机中的串行口_波特率_方法

详解单片机中的串行口_波特率_方法

少女玫瑰心 2024-11-24 14:18:50 0

扫一扫用手机浏览

文章目录 [+]

单片机的串行口除了用于数据通信之外,还可以用来驱动单片机运用系统中的键盘和显示器,这是其他微机系统所不能比拟的。

串行口的构造与掌握

为了进行串行数据通信,单片机同样也须要相应的串行接口电路。
不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部,成为单片机芯片的一个组成部分。

详解单片机中的串行口_波特率_方法 详解单片机中的串行口_波特率_方法 互联网

80C51单片机内部的串行口,由发送缓冲寄存器 SBUF、吸收缓冲寄存器 SBUF、发送掌握寄存器、吸收掌握寄存器、输入移位寄存器和输出掌握门组成。
掌握单片机串行口的掌握寄存器共有两个:分外功能寄存器 SCON 和 PCON,可以用软件改变两者的内容来掌握串行口的事情办法和波特率。

详解单片机中的串行口_波特率_方法 详解单片机中的串行口_波特率_方法 互联网
(图片来自网络侵删)

缓冲寄存器SBUF

80C51单片机内部有一个全双工的串行通信口,即串行吸收和发送缓冲器SBUF,这两个在物理上是独立的吸收发送器,既可以吸收数据,也可以发送数据。
但吸收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,两个缓冲器共用同一个地址(99H)。

这个通信口既可用于网络通信,也可实现串行异步通信,还可以当成同步移位寄存器利用。
如果在通信口的输入输出引脚上加上电平转换器,还可方便地构成标准的RS-232和RS-485接口。

在逻辑上,SBUF只有一个,既表示发送寄存器,又表示吸收寄存器,具有同一个地址(99H)。
在物理上,SBUF有两个,一个是发送寄存器,另一个是吸收寄存器。

串行口掌握寄存器SCON

该寄存器的字节地址为98H,有位寻址功能。

SCON格式如下:

SM0(SCON.7)、SM1(SCON.6):掌握串行口的事情办法。

SM2(SCON.5):许可办法2和办法3进行多机通信掌握位。
在办法2或办法3中,如SM2=1,则吸收到的第9位数据(RB8)为0时不激活RI。
在办法1时,如SM2=1,则只有收到有效停滞位时才会激活RI。
若没有吸收到有效停滞位,则RI清0。
在办法0中,SM2必须置为0。

REN(SCON.4):许可串行吸收掌握位。
REN=1许可串行吸收,REN=0则禁止串行吸收。
该标志由软件来置1或清0。

TB8(SCON.3):是事情在办法2和办法3时,该位是要发送的第9位数据。
在一些通信协议中该第9位用于奇偶校验(补奇或补偶);而在MCS-51多处理机通信中,这一位是差异地址帧还是数据帧的标志,须要时由软件置位或复位。

RB8(SCON.2):是事情在办法2和办法3时,该位是已吸收到的第9位数据,它是奇偶校验位。
在MCS-51多处理机通信中是差异地址帧/数据帧的标志。
在模式1中,若SM2=0,RB8存放的是已吸收数据的停滞位。
在模式0中,RB8未用,须要时由软件来置1或清0。

TI(SCON.1):发送中断标志位。
在模式0中,发送完第8位数据时由硬件置位;在其他模式中发送停滞位开始时候由硬件置位。
置位时TI=1,申请中断,CPU相应中断后,由软件来打消TI再发送下一帧数据。

RI(SCON.0):吸收中断标志位。
在模式0中,吸收完第8位数据时由硬件自动置位;在模式 1 中,SM2=1,只有吸收到有效的停滞位,才能对 RI 置位。
在其他模式中,在吸收停滞位的半中间由硬件对RI置位。
置位时申请中断,CPU相应中断后取走数据,打消RI标志,必须由软件清零。

SCON的所有位复位时被清零。

分外功能寄存器PCON

其字节地址为87H,没有位寻址功能。
PCON的格式如下:

个中与串行接口有关的只有D7位。

SMOD:波特率选择位。

串行口的事情办法

串行口有四种事情办法,它们是由串行口掌握寄存器 SCON 的 SM0、SM1的状态来定义的,编码及功能如表2-3所示。
在这四种事情办法中,串行通信只利用办法1、2、3。
办法0紧张用于扩展并行输入/输出口。

表2-3 串行口事情办法

表中:fosc为晶振频率,UART为通用异步吸收和发生器。

办法0

在办法 0 状态下,串行口为同步移位寄存器输入/输出办法,其波特率是固定不变的,数据由RxD(P3.0)端输入,同步移位脉冲由TxD(P3.1)端输出。
办法0紧张用于扩展并行输入输出口(如串行LED数码管显示系统等)。

(1)办法0发送

当一个数据写入串行口发送缓冲器SBUF时,串行口即将8位数据以fosc/12的波特率从RxD引脚输出(从低位到高位),发送完8位数据时,将发送中断标志TI置1。
TxD引脚输出同步脉冲,波形如图2-22所示。

(2)办法0吸收

在知足REN=1和RI=0的条件下,就会启动一次吸收过程,此时RxD为串行输入端,TxD为同步脉冲输出端。
串行吸收的波特率为fosc/12,其时序如图2-23所示。
当吸收完一帧数据(8位)后,掌握旗子暗记复位,中断标志 RI 被置 1,呈中断申请状态。
当再次吸收时,必须通过软件将RI清零。

▲图2-22 串行口“办法0”发送时序

▲图2-23 串行口“办法0”吸收时序

在办法0中,SCON中的TB8、RB8位没用,多机通信掌握位SM2位必须为0。
在办法0下发送或吸收完8位数据时,由硬件置1并发送中断标志TI或RI,向CPU申请中断,CPU相应TI或RI中断后,标志TI或RI必须由用户程序清0。

办法1

串行口以办法1事情时,SCON中的SM0、SM1两位分别为0、1,则串行口被掌握为波特率可变的8位异步通信接口。
发送的每帧信息为10位:1位起始位,8位数据位(先低位后高位)和1位停滞位。

(1)办法1发送

串行口以办法1发送时,数据由TxD端输出,CPU实行一条数据写入发送数据缓冲器SBUF的指令,数据字节写入SBUF后,就启动串行口发送器发送。
发送完一帧信息的数据位后,发送中断标志置1,其时序如图2-24所示。

▲图2-24 串行口“办法1”发送时序

(2)办法1吸收

当REN=1时,许可吸收器吸收,数据从RxD端输入。
吸收器以所选波特率的16倍速率采样RxD真个电平,当检测到RxD端从1到0的跳变时,启动吸收器吸收,并复位内部的16分频计数器,以便实现同步。

在起始位,如果吸收到的值不为0,则起始位无效,复位吸收电路,当再次吸收到一个由1到0的跳变时,重新启动吸收器。
如果吸收值为0,则起始位有效,吸收器开始吸收本帧的别的信息(一帧信息为10位)。
在办法1吸收中,若同时知足以下两个条件:RI=0、SM2=0和吸收到的停滞位=1时,则吸收数据有效,实现装载SBUF、停滞位进入PB8、吸收中断标志RI置1。
吸收掌握器再次采样RxD的负跳变,以便吸收下一帧数据。

若这两个条件不能同时知足,信息将丢失。
中断标志RI必须由用户的软件清零,常日情形下,串行口以办法1事情时,SM2置为0。
办法1的吸收时序如图2-25所示。

▲图2-25 串行口“办法1”吸收时序

办法2

当SM0、SMl两位分别为1、0时,串行口事情在办法2,此时串行口被定义为9位异步通信接口。
发送时可编程位(TB8)根据须要设置为0或1,吸收时,可编程位被送入SCON中的RB8。

(1)办法2发送

在办法2发送时,数据由TxD端输出,发送一帧信息由11位组成:1位起始位、8位数据位(低位在先、高位在后)、1位可编程位(第9位数据位)和1位停滞位,附加的第9位数据为 SCON中的 TB8。
TB8由软件置 1 或清 0,可作为多机通信中的数据标志位,也可作为数据的奇偶校验位。

CPU在实行一条写SBUF的指令后,便立即启动发送器发送,送完一帧信息后,TI被置1,其时序如图2-26所示。
在发送下一帧信息之前,TI必须由中断做事程序(或查询程序)清0。

▲图2-26 串行口“办法2”发送时序

(2)办法2吸收

当 SM0、SMl两位分别为1、0,且 REN=1 时,许可串行口以办法 2 吸收数据。
数据由 RxD端输入,吸收11位信息:1位起始位、8位数据位、1位可编程位(第9位数据)和1位停滞位。
当吸收器采样到RxD端从1到0的跳变,并判断起始位有效后,便开始吸收一帧信息。
当吸收器吸收到第9位数据后,如果RI=0且SM2=0或吸收到的第9位数据为1时,吸收到的数据送入SBUF,第9位数据送入RB8,并置RI=1,其时序如图2-27所示。
若不能同时知足这两个条件,吸收的信息将丢失。

▲图2-27 串行口“办法2”吸收时序

办法3

当SM0、SM1两位为11时,串行口事情在办法3,办法3为波特率可变的9位异步通信办法,除了波特率外,办法3和办法2的发送时序和吸收时序相同。

波特率的打算与串行口初始化

波特率的打算

在串行通信中,收发双方的波特率必须保持同等。
通过软件可设定串行口的4种事情办法,并确定每种办法的波特率。

(1)办法0的波特率是固定的,为单片机晶振频率fosc的1/12,即BR=fosc/12。

如fosc=6MHz,则波特率500kbit/s;如fosc=12MHz,则波特率为1Mbit/s。

(2)办法 2 的波特率也是固定的,且有两种。
一种是晶振频率的 1/32,另一种是晶振频率的1/64,即fosc/32和fosc/64。
如用公式表示为:

式中,SMOD为分外功能寄存器PCON串行口波特率系数的掌握位,SMOD=1表示波特率更加。
把稳,PCON不能利用位寻址,只能对其进行字节操作。

如12M晶振系统中,若SMOD=0,则波特率=187.5kbit/s;SMOD=1,则波特率375kbit/s。

(3)办法1和办法3的波特率是可变的,其波特率由定时器1的计数溢出(对80C52来说,也可利用定时器2的计数溢出)决定,公式为:

式中定时器1溢出率打算公式为:

各种办法波特率的打算如表2-4所示。

表2-4 波特率的打算公式

表中,若SMOD=0,则K=1;若SMOD=1,则K=2。

常日利用单片机的串行口时,选用的晶振频率 fosc比较固定(一样平常为 6MHz , 12MHz 或11.0592MHz)。
单片机和微机通信时,选用的波特率也相对固定。

实际利用中,常常根据已知波特率和时钟频率来打算定时器T1的初值。
为方便利用,将常用的波特率和初值X间的关系列成表2-5。

表2-5 常用通信办法及其波特率

个中有以下三点须要把稳。

(1)表2-5中仅为一些特定系统串口通信时的范例数据,对付其他一些未列出的波特率,应通过前述公式进行打算获取。
并可进行干系参数调度,以得到需求的波特率。

(2)在利用的时钟振荡频率为12MHz或6MHz时,表中初值X和相应的波特率之间有一定偏差。
例如,FDH的对应的理论值是10416波特(时钟振荡频率为6MHz时),与9600波特相差816波特,肃清偏差可以通过调度时钟振荡频率 fosc来实现。
例如,如果采取的时钟振荡频率为11.0592MHz,在哀求串行通信的系统中,为担保串行通信准确,一样平常利用11.0592Hz的晶振。

(3)如果串行通信选用很低的波特率,可将定时器T1设置为办法1定时。
但T1溢出时,须要在中断做事程序中重新装入初值。
中断相应韶光和实行指令韶光也会使波特率产生一定的偏差,可用改变初值的方法进行适当调度。

串行通信的校验

异步通信时可能会涌现帧格式错、超时错等传输缺点。
在具有串行口的单片机的开拓中,应考虑在通信过程中对数据差错进行校验,由于差错校验是担保准确无误通信的关键。
常用差错校验方法有奇偶校验(80C51系列单片机编程采取此法)、和校验及循环冗余码校验等。

(1)奇偶校验

在发送数据时,数据位尾随的一位数据为奇偶校验位(1或0)。
当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;当设置为偶校验时,数据中1的个数与校验位中1的个数之和应为偶数。
吸收时,吸收方应具有与发送方同等的差错考验设置,当吸收一个字符时,对 1的个数进行校验,若二者不一致,则解释数据传送涌现了差错。

奇偶校验是按字符校验,数据传输速率将受到影响。
这种特点使得它一样平常只用于异步串行通信中。

(2)和校验

所谓和校验,是指发送方将所发送的数据块求和(字节数求和),并产生一个字节的校验字符(校验和)附加到数据块末端。
吸收方吸收数据时也是先对数据块求和,将所得结果与发送方的校验和进行比较,符合则无差错,否则即涌现了差错。
这种和校验的缺陷是无法考验出字节位序的缺点。

(3)循环冗余码校验

这种校验是对一个数据块校验一次。
例如对磁盘信息的访问、ROM或RAM存储区的完全性等的考验。
这种方法广泛运用于串行通信办法。

串行口初始化

在利用单片机串行口之前,应对其进行编程初始化,紧张是设置产生波特率的定时器1、串行口掌握和中断掌握,详细步骤如下。

(1)确定定时器l的事情办法——编程TMOD寄存器。

(2)打算定时器l的初值——装载THl、TLl。

(3)启动定时器1——编程TCON中的TRl位。

(4)确定串行口的掌握——编程SCON。

(此处已添加圈子卡片,请到今日头条客户端查看)

相关文章

半导体芯片价格曝光_芯片_半导体

半导体芯片是指在半导体片材上进行浸蚀、布线等加工后制成的能实现某种功能的半导体器件。它不仅是硅芯片,还包括砷化镓、锗等其他半导体材...

互联网 2025-01-23 阅读0 评论0