当前位置: 首页 > news >正文

51单片机串行口相关知识

51单片机串行口相关知识

串行通信概念

计算机与外部通信方式就两种

  • 并行通信
  • 串行通信

两种通信方式的特点以及适用场景:

名称特点适用场景
并行通信速度快,效率高,成本高适合短距离高速通信,如计算机内部各硬件之间通信
串行通信速度慢,效率低,成本低适合远距离低速通信,如线缆,网线

串行通信的三种模式

有三种:

  • 单工:数据只能从A到B
  • 半双工:数据可以AB相互传递,但是不能同时进行
  • 全双工:数据可以AB相互传递,而且可以同时进行

串行通信的三种方式图

波特率

用来衡量串行通信的速度,具体含义是每秒传送的二进制数码的位数

单位: bps (位/秒)

国际规定的标准波特率系列:

  • 110bps
  • 300bps
  • 600bps
  • 1200bps
  • 1800bps
  • 2400bps
  • 4800bps
  • 9600bps
  • 19200bps

接收端和发送端的波特率分别设置时,必须保证两者相同

串行通信的两种方式

有两种:

  • 异步通信
  • 同步通信
异步通信

异步通信
将字节为单位组成数据帧的格式进行传输,称作异步通信。

一帧数据的组成包括:

  • 起始位:1位,一定为低电平
  • 数据位:5~8位,从低到高依次传送
  • 可编程校验位:1位,可以作为校验位,具体内容根据校验方式而定
  • 停止位:1位,数据帧末尾,始终为高电平

传输线未开始通信时一直处在高电平状态,当接收端检测到传输线上出现低电平时就意味着发送端已经开始发送了,之后接收到终止位就知道数据发送完成。

同步通信

在同步通信种,数据是以为单位发送的。
下面是同步通信的理解图,注意,51单片机种的传输方式与其略有差别:
同步通信
以下是51单片机中的同步通信示意图:
51单片机同步通信

可以看出区别:51单片机中的同步通信在数据传输的过程中不需要同步信号。

同步通信的要求较为严格,需要注意的细节如下:

  • 发送端和接收端的设备需要同步(一般由硬件实现)
  • 没有开始信号和终止信号
  • 适合传输数据量大,效率要求高的场合

51单片机的串行口控制器

串行口内部结构

51单片机的内部有一个全双工的串行通信接口。

51单片机串行口内部结构
这个图可以从最右边看起:

有两个接口:TXD和RXD,一个用于发送,一个用于接收

接着是一个寄存器: SCON串行控制寄存器,这个寄存器通过其中的位的值去控制发送控制器和接收控制器。

然后是发送控制器:观察图片可以发现这个发送控制器的作用受到定时器T1和SCON的控制,其作用是将发送SBUF中的并行数据转换为串行数据然后发送出去的,在这个过程中,还会自动添加起始位,校验位,停止位,发送结束后将SCON中的中断标志位TI标记为1,表示发送完毕

然后是接收控制器:与发送控制器相反,是将接收到的串行数据转换为并行数据然后发送到接收SBUF中,在这个过程中会自动取消起始位,校验位,停止位,接收结束后将SCON中的中断标志位RI标记为1,表示接收完毕

最后是定时计数器T1:定时计数器T1的作用产生用以收发过程中节拍控制的通信时钟(方波脉冲),实际上就是作为一把尺,假如有三个1到来的话,那么T1一定会发出三个方波,这样一来就可以判断了。

可以看出发送端只有一个寄存器SBUF,但是接收端有两个寄存器,这样做的好处是:当接收数据时,接收数据进入SBUF后,接收端还可以通过接收移位寄存器接收下一帧数据。这种双缓冲的结构可以避免在第二帧数据到来时,未将第一帧数据读走而引起的两帧数据重叠覆盖的错误。

SCON串行口控制寄存器

串行口控制寄存器SCON
需要知道的有以下内容:

  • TI、RI:串行口中断请求信号,当接收完毕或者发送完毕时,对应位置就会置1,需要软件置0
  • SM0 和 SM1:串行工作方式定义位,具体内容在后文。
  • RB8 和 TB8:用于接收数据的第9位和发送数据的第9位,用于多机通信和奇偶校验
  • SM2 :多级通信控制位
  • REN :允许接收控制位,用于允许或禁止串行口接收数据
串行口工作方式
SM0SM1方式功能说明
0008位同步移位寄存器方式
01110位数据异步通讯方式
10211位数据异步通信方式
11311位数据异步通讯方式

上述4种工作方式种,只有后三种才属于严格意义上的异步通信,方式0属于同步移位寄存器方式,主要用于串并转换。

PCON电源控制寄存器

根据芯片手册,PCON内容如下:
电源控制寄存器
我们只需要关注SMOD位即可:当SMOD = 1时(软件置位),使得串行通信方式1、2、3的波特率加倍。当SMOD = 0,各工作方式的波特率正常。复位时SMOD = 0。
SMOD0是帧错误检测有效控制位,详细内容不做介绍(因为用不上)。

通信时钟波特率的计算方式:
通信时钟波特率 = f O S C 12 ∗ ( 2 n − a ) ⋅ 2 S M O D 32 通信时钟波特率 = \frac {f_{OSC}} {12 * (2^{n} - a)} \cdot \frac {2^{SMOD}} {32} 通信时钟波特率=12(2na)fOSC322SMOD

这说明,晶振频率f_{OSC}一定后,波特率的大小取决于T1的工作方式n和计数初值a还有SMOD

相关文章:

51单片机串行口相关知识

51单片机串行口相关知识 串行通信概念 计算机与外部通信方式就两种: 并行通信串行通信 两种通信方式的特点以及适用场景: 名称特点适用场景并行通信速度快,效率高,成本高适合短距离高速通信,如计算机内部各硬件之…...

IDEA 每次新建工程都要重新配置 Maven的解决方案

文章目录 IDEA 每次新建工程都要重新配置 Maven 解决方案一、选择 File -> New Projects Setup -> Settingsfor New Projects…二、选择 Build,Execution,Deployment -> Build Tools -> Maven IDEA 每次新建工程都要重新配置 Maven 解决方案 DEA 每次新建工程都要…...

SecOC中新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。这边截取的部分一般取多长?由什么参数设定?

新鲜度值(Freshness Value, FV)和消息验证码(Message Authentication Code, MAC)是SecOC协议中用于保证数据的真实性和新鲜度的重要信息。它们的长度取决于不同的因素,如加密算法、安全级别、通信带宽等。 一般来说,FV和MAC的长度越长,安全性越高,但也会占用更多的通信…...

信源编码与信道转移矩阵

目录 一. 信息论模型 二. 点对点通信模型 三. 信源编码 四. 信道转移矩阵 4.1 二进制对称信道 4.2 二进制擦除信道 五. 小结 (1)信道直射与反射 (2)信道散射 (3) 信道时变性 一. 信息论模型 194…...

React 实现拖放功能

介绍 本篇文章将会使用react实现简单拖放功能。 样例 布局侧边栏拖放 LayoutResize.js import React, {useState} from "react"; import { Button } from "antd"; import "./LayoutResize.css";export const LayoutResize () > {const […...

马克思主义基本原理笔记

马克思主义哲学、政治经济学、科学社会主义理论 哲学 马克思主义中国化的理论成果:毛泽东思想、邓小平理论、三个代表重要思想、科学发展观 物质和意识哪个是本原,是哲学的基本问题 辩证法认为世界上的事物都是相互联系的、运动发展的,形…...

Vue+JavaSpingBoot笔记(1)

一、前后端通信参数问题 1.集合【字典】类型 Vue前端传递参数: export default {methods: { test(){// 将 filteredData 中的每一行值放入 newData 对象数组中 const newData filteredData.map(item > ({key1: item.Value1,key2: item.Value2,key3: "测试"}));r…...

10-单例模式(Singleton)

意图 保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 1 懒汉式,线程不安全 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance null) {…...

C++ 求一个数是否是丑数。

#include<string.h> #include <iostream> using namespace std; int isChou(int num) { if (num < 0) { return 0; } while (num % 2 0) { // 不断除以2&#xff0c;直到不能整除为止 num / 2; } while (num % 3 0) { // 不断除…...

SpringCloud系列篇:核心组件之注册中心组件

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.注册中心组件是什么 二.注册中心…...

通过IP地址防范钓鱼网站诈骗的有效措施

随着互联网的普及&#xff0c;钓鱼网站诈骗成为一种广泛存在的网络犯罪行为。通过冒充合法网站&#xff0c;攻击者试图窃取用户的敏感信息。本文将探讨如何通过IP地址防范钓鱼网站诈骗&#xff0c;提供一系列有效的措施&#xff0c;以加强网络安全&#xff0c;保护用户免受诈骗…...

服务器GPU温度过高挂掉排查记录

服务器GPU挂掉 跑深度学习的代码的时候发现中断了。通过命令查看&#xff1a; nvidia-smi显示 Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error。感觉很莫名其妙。通过重启大法之后&#xff0c;又能用一段时间。 shutdown -r now但是过了一个小…...

服务器终端快速下载coco数据集

######解压到当前文件夹 sudo apt-get install aria2 aria2c -c <url> #<url>即为官网下载地址# url # download images http://images.cocodataset.org/zips/train2017.zip http://images.cocodataset.org/zips/val2017.zip# download annotations http://i…...

el-select下拉框 change事件返回该项所有数据

主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…...

MySQL基础篇(一)SQL

视频地址: 黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括 SQL&#xff0c;全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一 标准。 一、SQL通用语…...

多类指针式仪表自动读数系统的LabVIEW开发应用案例

多类指针式仪表自动读数系统的LabVIEW开发应用案例 工业环境中&#xff0c;多类指针式仪表的自动读数一直是一个具有挑战性的问题。本案例旨在展示如何使用LabVIEW开发一个高度智能化的多类指针式仪表自动读数系统&#xff0c;以应对复杂的工业环境。通过结合图像处理技术和深…...

攀登者2 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C++ 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下…...

归并排序例题——逆序对的数量

做道简单一点的题巩固一下 归并排序实现步骤 将整个区间 [l, r] 划分为 [l, mid] 和 [mid1, r]。 递归排序 [l, mid] 和 [mid1, r]。 将左右两个有序序列合并为一个有序序列。 题目描述 给定一个长度为 n 的整数数列&#xff0c;请计算数列中的逆序对的数量。 逆序对的定义…...

数据库连接使用问题 - 1

原理 open-in-view 是 Spring Boot ⾃动加载 Spring Data JPA 提供的⼀个配置&#xff0c;全称为 spring.jpa.open-in-viewtrue&#xff0c;它只有 true 和 false 两个值&#xff0c;默认是 true。 这个配置为true时&#xff0c;会导致Web MVC请求处理的一开始&…...

【已解决】You have an error in your SQL syntax

报错讯息 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘desc,target_url,sort,status,create_by,modify_by,created,last_update_time FROM…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...