IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机串口通信 -> 正文阅读

[嵌入式]51单片机串口通信

串口通信

串口介绍

串口是一种应用十分广泛的通讯接口。成本低、容易使用、通信线路简单,可实现两个设备互相通信。

单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的通信模块互相通信。极大地扩展了单片机的应用范围,增强了单片机系统地硬件实力。

51单片机内部自带UART(Universal Asynchronous Receiver Transmitter通用异步收发器),可实现单片机的串口通信。

接口及引脚定义

在这里插入图片描述

串口所用的接口叫做DB9,我们在台式电脑上就可以看到。大多数笔记本上已经没有串口的DB9接口了,因为很少用的。不过我们的笔记本上有USB接口,大家在烧录单片机程序的时候就是用过USB接口烧录程序的。

与之相似的是VGA接口,那个接口有三排针,用来传输视频,而我们的串口是用来传输简单数据的。

硬件电路

简单的双向串口通信有两根通信线(发送端TXD和接收端RXD)

TXD和RXD(Receive exchange data)需要交叉连接 (众所周知,ex开头的单词一般简写为X)

当只需单向的数据传输时,可以只接一根通信线。

当电平标准不一致时,需要加电平转换芯片。

在这里插入图片描述

我一般简记成:T接R,R接T,GND接GND。

电平标准

电平标准是数据1和数据0的表达式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:

TTL电平

+5V表示1,0V表示0 。传输距离很短,只有十多米。

RS232电平

-3~-15V表示1,+3~+15V表示0。一般用于电脑传输,可以接受比较大的变化范围。

RS485电平

两线压差+2V~+6V表示1,-2V~-6V表示0(差分信号,就是没有GND这条线,只需要看两条信号线的压差。可以抑制零漂和温漂) 模电知识 。它的传输距离可以达到一千米以上,很厉害的,但是我们学习51单片机几乎用不上。

常见通信接口比较

名称引脚定义通信方式特点
UARTTXD、RXD全双工、异步点对点通信
I 2 I^2 I2CSCL、SDA半双工、同步可挂载多个设备
SPISCLK、MOSI、MISO、CS全双工、同步可挂载多个设备
1-WireDQ半双工、异步可挂载多个设备

此外还有:CAN、USB等通信接口。

I 2 I^2 I2C一般读作I方C,我们手机里很多通信用的就是 I 2 I^2 I2C。

目前我们学习UART,以后再学习剩下的三种通信方式。

这些通信方式我们的开发板上都有。

相关术语介绍

全双工:通信双方可以在同一时刻互相传输数据.比如咱们俩人打电话,就是全双工通信。

半双工:通信双方可以互相传输数据,但是必须分时复用一根数据线.相当于我们的对讲机,俩人不能同时传输数据,只能等线空闲了才能使用。

单工:通信只能有一方发送到另一方,不能反向传输。比如咱们的遥控器。

异步:通信双方各自约定通信速率.不知道大家对波特率有没有印象,异步通信要约定相同的波特率,这样我们采集数据的速率就是相同的,否则你每隔9600采一次数据,我每隔115200采一次数据,我们得到的信息一样,但是翻译出来的结果就是不同的。

同步:通信双方靠一根时钟线来约定通信速率..有了约定好的通信速率,我们只需要在上升沿到来时就开始采集数据,就不会出现通信差错。

一般时间要求比较严格就用同步通信,不严格的时候就可以使用比较方便的异步通信。

总线:连接各个设备的数据传输线路。类似于一条马路,把周边的各个住户连接起来。串口是没有总线的,因为串口是点对点通信,那些挂载多个设备的通信方式就要有总线。
以上内容其实数电都涉及到了,没能完全理解没关系,随着我们使用经验的增长会有自己的见解。

51单片机的UART

STC89C52有1个UART,共有四种工作模式:

模式0:同步移位寄存器

模式1:8位UART,波特率可变(最常用)

模式2:9位UART,波特率固定

模式3:9位UART,波特率不可变

在这里插入图片描述

通过管脚图,我们看到串口复用了P3管脚口。实际上我们操作串口的时候不会影响P3.0和P3.1的管脚口。

原理图上如下所示:

在这里插入图片描述

串口参数及时序图

波特率:

串口通信的速率(发送和接受各数据位的间隔时间)

校验位:

用于数据验证。9位UART就是8个数据位加1个校验位。

校验位是双方约定好的。有奇校验和偶校验之分。

通信原理会详细学习的,不用搞得太详细,会用最好。用的时候不需要我们去解释这些概念

停止位:

用于数据帧间隔(不详细解释了,越说越乱,用的时候再说)

串口模式图

以上的电路都在MCU内部,左边那一条是总线,我们的串口就挂载在总线上。

先来看看这一部分,是不是很熟悉,有点像我们上一节的定时器。

在这里插入图片描述

串口的收发速率是通过定时器控制的。

SBUF是串口数据缓存寄存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接受寄存器。

说人话,读写数据都要经过SBUF寄存器,然后通过我们的控制器来决定收发数据操作。

串口和中断系统

这里搬出来我们定时器中断系统用到的结构图,这个图下面有RX和TX的线,申请中断的流程就是顺着这条线走的。那么我们将来配置寄存器也是根据这张图来配置的。
在这里插入图片描述

串口相关寄存器

在这里插入图片描述

我们实际上就配置SCON和PCON寄存器就可以了,涉及中断的时候多配置个中断寄存器就行。具体代码下一篇博客再来详细说说。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:50:48  更:2022-10-17 12:54:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:18:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计