【51单片机】:串口通信基础知识详解

news2024/12/22 23:57:03

学习目标:

        串口通信的基础知识和设置详解。


学习内容:串口通信基础知识

	并行通信:多条数据线将数据字节的各个位同时传送*
		 缺点:1.电磁干扰 2.成本高 
			   3.由于传输线较多,长距离传输成本高
	串口通信:将数据字节分为一位一位的形式,在一条传输线上逐个传送
		 优点:1.传输线少,长距离传输成本低,目前串行通信比较普遍
		 
	串口通信:又叫—> UART(全双工通用异步收发器)
		 
	串口通信分为	*同步: SPI I2C USART
			    *异步: UART	
	串口通信分为	*点对点(USB(通用串行总线))
			    *点对多(协议(通常是modbus协议)完成)
				
	串口通信开发一般需要解决的问题:
				*数据传送:数据传送主要解决传送中的标准,格式及工作方式
				*数据转换:数据转换是指数据的串并转换
				
	串口通信的传输方式:
				*单工:指数据传输仅能按一个固定方向传输,不能反向输出(一条线解决)
				*半双工:指数据传输可以双向输出,但不能同时进行传输(一条线解决)
				*全双工:指数据传输可以同时进行双向传输(两条线解决)
	
	串口通信的错误校验:
				*奇偶校验
				*代码和校验
				*循环冗余码校验(CRC)
	
	串口使用方法:
					1.确定T1的工作方式,也就是TMOD(TMOD=0x20 //T1工作方式2)
					2.确定串口工作方式,也就是SCON(SCON=0x50 //工作方式1)
					3.计算T1的初值(设定波特率),装载TH1.TL1
					4.启动T1(TCON中的TR1位)
					5.如果使用中断,需要开启串口中断控制位(IE)

学习内容:TOMD设置

        TMOD = 0x20;

        为啥是0x20  就是定时器T1的方式3呢???

定时器工作方式设置图:

 寄存器位图:

 如上两个图:

        当TMOD = 0x20时   0x20  =  0010 0000  代入图1
        M1 M0 = 10  就是定时器的   工作方式2


学习内容:SCON设置

 由图而知:

        当   SCON  = 0x50时,0x50  =  0101 0000 代入图中

        则 SM0 = 0  SM1 = 1  则  就是方式1


学习内容:波特率计算

常用的波特率设置参数:

例题:

 

 根据例题:可知当   TMOD = 0x20;求波特率9600

则  x = 0xFD   就是  9600


学习内容:代码与效果

#include <reg51.h>

typedef unsigned int u16;
typedef unsigned char u8;
	
void delay_ms(u16 a)
{
	u16 x,y;
	for(x=a;x>0;x--)
		for(y=110;y>0;y--);
}
unsigned char zifu = 'A';

void uart_init(u8 bound)
{
	TMOD |= 0x20;//T1定时器  工作方式2
	SCON = 0x50;//工作方式1
//	PCON=0X80;	//波特率加倍
	TH1 = bound;
	TL1 = bound;
//	ES = 1;
	EA = 1;
	TR1 = 1;
}
void main()
{
	uart_init(0xFD);
	
	while(1)
	{
		SBUF = zifu;
		delay_ms(1000);
		while(!TI);		
		TI=0;	
	}
}


霜月

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/500800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STL常用梳理——STACK、QUEUE

STL——适配器篇 1、ListSTL list 容器介绍list使用 2、适配器介绍3、Deque容器Stack、Queue适配器实现 1、List STL list 容器介绍 STL list 容器&#xff0c;又称双向链表容器&#xff0c;即该容器的底层是以双向链表的形式实现的。这意味着&#xff0c;list 容器中的元素可…

Lecture 11(Preparation):领域自适应 (Domain Adaptation)

Domain shift: Training and testing data have different distributions. Transfer learning&#xff1a;在A任务上学到的技能&#xff0c;可以被用在B任务上 Domain Adaptation的技术&#xff0c;可以看作是Transfer learning的一种 Domain Adaptation: 第一种情况&#xf…

栈和队列OJ题思路分享之括号匹配(C语言实现)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:刷题分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你刷更多C语言和数据结构的题!   &#x1f51d;&#x1f51d; 栈和队列刷题分享 1. 前言&…

【密码学复习】第七章 公钥加密体制

公钥加密模型 密钥生成过程&#xff1a;接收消息的端系统&#xff08;如图中的接收者Alice&#xff09;产生一对密钥(PKA ,SKA ), PKA 是公开钥&#xff08;用于加密&#xff09;&#xff0c; SKA 是秘密密钥&#xff08;用于解密&#xff09;. 加密过程&#xff1a;Bob想向…

从C出发 30 --- 指针与堆空间

数组 就是变量的有序集&#xff0c;因此只有可以动态的创建一个变量&#xff0c;就可以动态的创建多个变量了&#xff0c; 堆空间就是一片内存区域&#xff0c;用于动态创建内存变量的区域 void 类型是基础类型&#xff0c;不是基础数据类型&#xff0c;为什么&#xff1f;因为…

MySQL --- 图形化工具DDL表结构操作

一. 图形化工具 1. 介绍 前面学习了DDL中关于数据库操作的SQL语句&#xff0c;在编写这些SQL时&#xff0c;都是在命令行当中完成的。在命令行当中来敲这些SQL语句很不方便&#xff0c;主要的原因有以下 3 点&#xff1a; 没有任何代码提示。&#xff08;全靠记忆&#xff0…

行为型模式-备忘录模式

备忘录模式 概述 备忘录模式提供了一种状态恢复的实现机制&#xff0c;使得用户可以方便地回到一个特定的历史步骤&#xff0c;当新的状态无效或者存在问题时&#xff0c;可以使用暂时存储起来的备忘录将状态复原&#xff0c;很多软件都提供了撤销&#xff08;Undo&#xff0…

【自动化测试】Appium环境设置

启动Appium需要的环境配置有些复杂&#xff0c;这里将需要的环境配置整理出来&#xff0c;附上博主亲测有效的教程&#xff0c;有些教程有一点点老了&#xff0c;博主也做了备注&#xff0c;并且有些老一点步骤&#xff0c;博主根据现有的情况做了新的图文教程&#xff0c;大家…

近源渗透学习

一、近源渗透 近源渗透测试是网络空间安全领域逐渐兴起的一种新的安全评估手段。 它是一种集常规网络攻防、物理接近、社会工程学及无线电通信攻防等能力于一体的高规格网络安全评估行动。网络安全评估小组在签订渗透测试授权协议后&#xff0c;通过乔装、社工等方式实地物理侵…

微服务体系

目录 结构服务注册中心EurekaZookeeperConsul上面三者的对比 Ribbon 负载均衡负载均衡OpenFeign 远程服务调用Hystrix服务熔断常见的设置 Hystrix 工作流程Hystrix-DashBoard 的使用 SpringCloud Gateway核心工作流程 SpringCloud Config 分布式配置中心bootstrap.yml配置文件 …

独立按键识别

项目文件 文件 关于项目的内容知识点可以见专栏单片机原理及应用 的第四章 IO口编写 参考图电路编写程序&#xff0c;要求实现如下功能: 开始时LED均为熄灭状态&#xff0c;随后根据按键动作点亮相应LED(在按键释放后能继续保持该亮灯状态&#xff0c;直至新的按键压下时为止…

【实用工具】SpringBoot实现接口签名验证

需求场景 由于项目需要开发第三方接口给多个供应商&#xff0c;为保证Api接口的安全性&#xff0c;遂采用Api接口签名验证。 Api接口签名验证主要防御措施为以下几个&#xff1a; 请求发起时间得在限制范围内请求的用户是否真实存在是否存在重复请求请求参数是否被篡改 项目…

java8新特性——StreamAPI

1.集合处理数据的弊端 当我们在需要对集合中的元素进行操作的时候&#xff0c;除了必需的添加&#xff0c;删除&#xff0c;获取外&#xff0c;最典型的操作就是集合遍历。 package com.wxj.streamapi;import java.util.ArrayList; import java.util.Arrays; import java.uti…

E. Vasya and Good Sequences(异或)

Problem - E - Codeforces Vasya有一个由n个整数组成的序列a。 Vasya可以执行以下操作&#xff1a;从序列中选择一些数字&#xff0c;并交换其二进制表示中的任意一对位。例如&#xff0c;Vasya可以将数字6&#xff08;… 000000001102&#xff09;转换为3&#xff08;… 00000…

[数据库系统] 一、外键约束 (educoder)

1.任务&#xff1a;给表添加外码。 2.相关知识 需要掌握&#xff1a; (1)什么是外码&#xff1b; (2)怎么给表添加外码。 (1)什么是外码 外部关键字 外码是另一张表中的主码。**外码的主要作用是保持数据的一致性&#xff0c;完整性。 如图有两张表&#xff0c;classId 是T…

蓝晓转02上市价格预测

蓝晓转02 基本信息 转债名称&#xff1a;蓝晓转02&#xff0c;评级&#xff1a;A&#xff0c;发行规模&#xff1a;5.460645亿元。 正股名称&#xff1a;蓝晓科技&#xff0c;今日收盘价&#xff1a;88.16元&#xff0c;转股价格&#xff1a;92.73元。 当前转股价值 转债面值 …

10.集合

1.泛型 1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如:…

深度学习模型部署的步骤和相关注意事项

文章目录 深度学习模型部署的步骤和相关注意事项什么是模型部署&#xff1f;步骤1&#xff1a;选择合适的部署环境步骤2&#xff1a;选择合适的部署框架步骤3&#xff1a;将模型转换为部署格式步骤4&#xff1a;创建API接口步骤5&#xff1a;部署模型总结 深度学习模型部署的步…

JWT漏洞基础

JWT漏洞基础 什么是JWTJWT漏洞介绍工具使用 身份认证(Authentication)又称鉴权&#xff0c;是指通过一定的手段&#xff0c;完成对用户身份的确认。认证的方式&#xff1a;sessioncookie、JWT、Token session认证的局限性 session认证机制需要配合cookie才能实现。由于cookie默…

极客时间- 数据结构与算法之美 - 王争 前 Google 工程师【学习笔记】

本文是 极客时间- 数据结构与算法之美 - 王争 前 Google 工程师。专栏学习笔记整理&#xff0c;课程链接&#xff1a;https://time.geekbang.org/column/intro/100017301?tabcatalog 01 | 为什么要学习数据结构和算法&#xff1f;面试业务开发工程师写出达到开源水平的框架才是…