单片机串行口介绍

介绍



串行口是单片机与外界进行信息交换的工具,8051单片机的通信方式有两种:

并行通信:数据的各位同时发送或接收。       串行通信:数据一位一位次序发送或接收。

串行通信的方式



异步通信

  • 用一个起始位0表示字符的开始,用停止位1表示字符的结束,中间夹着8个数据位,字符能一个接一个传送
  • CPU与外设之间必须有字符格式和波特率两项规定
  1. 字符格式规定能使双方把0和1串理解成同一种意义,原则上自由制定,通用角度使用标准如ASCII
  2. 波特率即数据传输速率,每秒传送的二进制位数,如120字符/s,每个字符10数位,则传送波特率为1200波特

同步通信

去掉了开始结束标志提高速度,但由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。

通信方向

在串行通信中,把通信接口只能发送或接收的单向传送办法叫单工传送;把数据能双向传递称为双工传送。半双工传送两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。全双工传送是能同时发送接收。

串行接口结构


  • 51单片机一个可编程的全双工串行通信接口。可用作异步通信方式(UART),与串行传送信息的外部设备相连接。或用于通过同步或异步标准通信协议进行全双工的8051多机系统,使用TTL或CMOS移位寄存器来扩充I/O口。
  • 8051单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。

串行口的控制与状态寄存器



串行口控制寄存器 SCON

用于定义串行口的工作方式及实施接收和发送控制,字节地址为98H

D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI
RI

SM0、SM1:串行口工作方式选择位

SM0、SM1 工作方式 功能描述 波特率
0 0 方式0 8位移位寄存器 Fosc/12
0 1 方式1 10位UART 可变
1 0 方式2 11位UART Fosc/64或fosc/32
1 1 方式3 11位UART
可变

串行口的工作方式



方式0

  • 为移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也能外接同步输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲。
  • 输出:发送完毕后终端标志T1硬件置位。(同其他)
  • 输入:当 RI =0和REN =1同时满足开始接收,接收到第八位后数据移至寄存器,硬件置位RI。

                              

方式1

  • 为波特率可变的10位异步通信方式。
  • 输出:当执行一条指令将数据写入发送缓冲SBUF时,就启动发送,发送完一帧硬件置位T1
  • 输入:检测1-0跳变,使用前用软件清零RI和SM2

方式2

  • 为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第9位数据。
  • 输出:11位,附加第九位是SCON的TB8位,可作为多机通信中地址/数据信息标志位、奇偶校正位。别的同其他
  • 输入:123同

方式3

为波特率可变的11位UART方式。除波特率外,其余与方式2相同。

波特率选择



方式0:方式0的波特率固定为主振频率的1/12。

方式2:波特率由 PCON 中的SMOD位决定

波特率=2SOMD/64*fosc,SMOD=0或1

方式1和3:

波特率=定时器T1溢出率

T1溢出率= T1计数率/产生溢出所需的周期数

T1计数率取决于它工作在定时器状态还是计数器状态。

  • 当工作于定时器状态时,T1计数率为fosc/12;
  • 当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。

产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。

  • 定时器T1工作于方式0:溢出所需周期数=8192-x
  • 定时器T1工作于方式1:溢出所需周期数=65536-x
  • 定时器T1工作于方式2:溢出所需周期数=256-x

因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。

时间: 2024-10-18 06:14:05

单片机串行口介绍的相关文章

演示STC89xx系列单片机串行口功能 (8-bit/9-bit)

1 /*------------------------------------------------------------------------------------*/ 2 /* --- STC MCU Limited ---------------- ---------------------------------------*/ 3 /* ---演示STC89xx系列单片机串行口功能 (8-bit/9-bit) ----------------*/ 4 /* --- Mobil

十天学会单片机Day4串行口通信

并行与串行基本通信方式 1.并行通信方式 通常是将数据字节的各位用多条数据线同时进行传送. 并行通信控制简单.传输速度快:由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难. 2.串行通信方式 是将数据字节分成一位一位的形式在一条传输线上逐个地传送. 串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂. 3.异步串行通信方式 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程.为使双方的收发协调,要求发送和接收设备

5.USART异步串行口输入输出(轮询模式)

学习是一个简单的过程,只要有善于发掘的眼睛,总能学到新知识,然而如何坚持不懈的学习却很困难,对我亦如此,生活中有太多的诱惑,最后只想说一句勿忘初心.闲话不多扯,本篇讲诉的是异步串行口的输入输出,串口在外设中属于比较简单的通讯模式,但是在大型项目调试中又十分重要,理解该外设模块对于以后的通讯协议学习以及软件调试都有重要意义. 通讯协议是指双方实体完成通信或服务所必须遵循的规则和约定,对于串口来说,包含波特率,数据位长度,停止位和数据校验位,当stm32芯片和客户端具有相同的协议约定时即能够正确的接

使用CreateFile()打开COM10及以上串行口

程序调试时发现,使用CreateFile()打开COM4时正常,打开COM10时却总是失败.这两个端口均为虚拟COM口,通过蓝牙仿真串口完成数据收发,除了命名不同外,本质上并无任何不同. 而MSDN上对使用CreateFile()打开设备函数却失败返回并无详细解释,百思不得其解.上网百度一下找到了相关资料,原来是: Win32 API函数CreateFile()除了可打开普通文件外,还可以打开设备,比如可用于打开串口,获得串口句柄. 使用CreateFile()函数打开串口时文件共享模式应设置为

(九)串行口方式0 拓展并行输出端口 02 74LS164芯片

1.先讲解74LS164 移位芯片: 74HC164.74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出. 数据通过两个输入端(DSA 或 DSB)之一串行输入:任一输入端可以用作高电平使能端,控制另一输入端的数据输入.两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空. 时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度. 主复位 (MR) 输入端上

串行口应用

方式2和方式3 方式2 和方式3都是为11位数据的异步通信口,他们的惟一区别是传输速率不同.TXD为数据发送引脚,RXD为数据接收引脚.用这两种方式传输数据时,起始位1位,数据位9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一贞数据为11位.方式2的波特率固定为晶振的1/64或1/32,方式3的波特率有定时器T1的溢出率决定.一贞数据传输格式 发送起始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚.每一个移位脉冲都使输出移位

COM口,串行通讯端口,RS-232接口 基础知识

COM口即串行通讯端口. COM口的接口标准规范和总线标准规范是RS-232,有时候也叫做RS-232口.电脑上的com口多为9针,最大速率115200bps.通常用于连接鼠标(串口)及通讯设备(如连接外置式MODEM进行数据通讯)等.但目前主流的主板一般都只带1个串口,甚至不带,慢慢会被USB 取代. 以前用于连接老式的COM口鼠标键盘,还有链接路由器,外置调制解调器等.现在很少使用. 什么是串口,串行通讯端口?-----------------------------------------

单片微机原理P4:80C51串口与串行总线拓展

0. 串口通讯 0. 串口通讯的数据传输方式:单工(单向传输数据),半双工(非同时双向传输),全双工(同时,双向传输) 1. 根据通信方式的不同又分为同步通讯和异步通讯. 同步通讯:所有设备都使用同一个时钟,称为同步时钟.在数据传送时,以若干个数据字符(称为数据块)为单位进行传输,每个数据块包括同步字符.数据块和校验字符CRC. 异步通信是指在串行通信中,接收设备和发送设备有各自的时钟信号,异步通信以字符为单位进行数据传送,不过通信中这些时钟频率必须保持一致. 2. 波特率和比特率 波特率是每秒

串行工作模式之同步移位寄存器的输入输出方式

主要用于扩展并行输入或输出口.数据有RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出.发送和接受均为8位数据.低位在前,高位在后. //串行口工作模式0 #include <reg52.h> #define uchar unsigned char #define uint unsigned int void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void