当前位置: 首页 > 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…...

如何在Ubuntu安装SVN服务并结合cpolar实现公网TCP地址远程访问本地服务

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...

windows监控进程是否还活着,查看内存使用率

windows监控进程是否还活着&#xff0c;查看内存使用率 1、导入库psutil pip install psutil2、查看进程是否活着 def is_process_running(self, process_name):# 查看程序是否还存活for process in psutil.process_iter():try:if process.name() process_name:return True…...

C#-词法结构

程序 C# 程序 (program) 由一个或多个源文件 (source file) 组成,源文件的正式名称是编译单元 (compilation unit)。源文件是有序的 Unicode 字符序列。 源文件与文件系统中的文件通常具有一对一的对应关系,但这种对应关系不是必需的。为实现可移植性的最大化,建议这些文件…...

GitHub pull request(傻瓜式入门版)

GitHub pull request Pull Request&#xff08;拉取请求&#xff09;是一种非常重要的协作机制&#xff0c;它是 Git 和 GitHub 等代码托管平台中常见的功能。在开源项目中&#xff0c;Pull Request 被广泛用于参与社区贡献&#xff0c;从而促进项目的发展。 一、fork代码 先…...

Studio 3T客户端连接Mongodb数据库服务

这里需要注意 一定要先开Studio 3T 到 创建连接时才开Mongodb服务 不然 Studio 3T 会找不到Mongodb服务 不知道这是不是 Studio 3T官方问题 期待解决吧 我们打开 Studio 3T 然后点击 Create a new connection 开始创建连接 新弹出的窗口中选择 Manually configure my connec…...

算法每日一题:赎金信 | 字符和整数

hello&#xff0c;大家好&#xff0c;我是星恒 今天给大家带来的题目是一道简单题目&#xff0c;主要帮大家复习一下字符串和字符的相关操作 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以&#…...

数字孪生在虚拟现实(VR)中的应用

数字孪生在虚拟现实&#xff08;VR&#xff09;中的应用为用户提供了更深入、沉浸式的体验&#xff0c;同时通过数字孪生技术模拟真实世界的物理实体。以下是数字孪生在VR中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发…...

iOS实时查看App运行日志

目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 &#x1f4dd; 摘要&#xff1a; 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具&#xff0c;我们可以连接手机并方便地筛选我们自己App的日志。 &#x1f4…...

论文阅读:通过时空生成卷积网络合成动态模式(重点论文)

原文链接 github code 介绍视频 视频序列包含丰富的动态模式&#xff0c;例如在时域中表现出平稳性的动态纹理模式&#xff0c;以及在空间或时域中表现出非平稳的动作模式。 我们证明了时空生成卷积网络可用于建模和合成动态模式。 该模型定义了视频序列上的概率分布&#xff0…...

html2canvas+jsPDF导出超长网页的PDF

项目需求:有一个网页大概60000px的高度,现在需要导出为PDF index.vue <template><div class"ctn"><div class"pdf-ctn"><div class"pdf-panel" ><div class"pdf-inside-panel" id"myList">&…...

济南网站建设/关键词检测工具

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include // 用srand、rand函数了#include // 用time函数了#define LEN 32// 产生min~max的随机数 (包含min和max)// rand函数产生0 ~ RAND_MAX 的随机数// 一般上不同编译器要求 RAND_MAX 的值(至少)为 32767#define RAN…...

网站上的在线答题是怎么做的/科学新概念seo外链平台

最近看了好多玄幻的书&#xff0c;闲暇时思考起自己的学习经历真是感慨良多。 记得刚学.net时因为学长们也是才起步&#xff0c;而且我们甚至很多都没有很好的计算机基础。只是一味地在IDE中摸索实践&#xff0c;很傻的拿本C#入门就开始了开发之路&#xff0c;多少次因为找不到…...

专门做情趣用品的网站/网站展示型推广

学习需了解的知识点 Web的session需要存在那里?关系型数据库通过破坏一定的业务逻辑来换取性能的理解NoSQL数据库概述常用的NoSQL数据库行式数据库和列式数据库 Reids的应用场景 配合关系型数据库做高速缓存 高频次,热门访问的数据,降低数据库的IO操作分布式系统,做session…...

直播网站开发多少钱/如何对网站进行推广

本文将介绍 WebView 的基础知识&#xff0c;和使用不当会造成的安全隐患&#xff0c;以及如何发现及缓解这些安全隐患。文中用到的 vuls 漏洞应用代码及应用可以在https://github.com/AndroidAppSec/vuls/releases/tag/v3.5 下载。前言WebView 是 Android 系统定义的一个的控件…...

有什么网站可以做外贸出口信息/怎样注册一个自己的平台

WPS 2019文件窗口中能同时打开多个不同类别的文件标签。别小看这些简单的标签&#xff0c;其实我们可以用它来方便地完成许多平时通过别的途径来实现的任务。1. 不惧丢失 文档一键备份于网络右键单击某个文件标签&#xff0c;从弹出的菜单中选择“保存到WPS云文档”&#xff0c…...

基于java框架的网站开发/站长之家是干什么的

服务注册慢 默认情况下&#xff0c;服务注册到Eureka Server的过程较慢。SpringCloud官方文档中给出了详细的原因 大致含义&#xff1a;服务的注册涉及到心跳&#xff0c;默认心跳间隔为30s。在实例、服务器、客户端都在本地缓存中具有相同的元数据之前&#xff0c;服务不可用…...