[51 单片机] --串口编程

1,通讯方式基本概念

1,按照 --> 数据传送方式串行通讯:使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度,串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。并行通讯:将数据字节的各位用多条数据线同时进行传送,通常是 8位、16 位、32 位等数据一起传输并行通信的特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,抗干扰能力差。2, 按照 --> 通信的数据同步方式异步通讯:发送的双方使用各自的时钟控制数据的发送和接收过程,为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加 2~3 位用于起止位,各帧之间还有间隔,因此传输效率不高。同步通讯:要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同
步
3, 按照 --> 数据的传输方向单工通信:指数据传输仅能沿一个方向,不能实现反向传输半双工通讯:数据传输可以沿两个方向,但需要分时进行全双工通讯:数据可以同时进行双向传输

 2,串口通讯简介

        串口通信的接口标准有很多,有 RS-232C、 RS-232、 RS-422A、 RS-485 等。
常用的是 RS-232 和 RS-485。RS-232 其实是 RS-232C 的改进,原理是一样的。
这里我们就以 RS-232C 接口进行讲解。
        衡量通信性能的一个非常重要的参数就是通信速率,通常以 比特率 (Bitrate)。比特率是每秒钟传输二进制代码的位数,单位是:位/秒( bps)
        在后面会遇到一个“波特率”的概念,它表示每秒钟传输了多少个码元。而码元是通信信号调制的概念,通信中常用时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。

RS232 的通信协议比较简单,通常遵循 96-N-8-1 格式。

96: 波特率为9600

N:无检验(校验方法有奇校验 (odd)、偶校验(even)、0 校验(space)、1 校验(mark)以及无校验(noparity)。

8:表示数据位为8位,当然数据位数还可以为 5、6、7 位长度。

1:表示停止位位1,数据包的停止信号可由 0.5、1、1.5 或 2 个逻辑 1 的数据位表示,只要双方约定一致即可。

3,51单片机串口的内部结构 

 理解:

        TH1和TL1,以及SMOD控制着串口的时钟,即产生稳定的波特率,在单片机中,TH1和TL1为定时器的初始化值寄存器,使用稳定的时钟信号是靠定时器产生的。

        当RXD接收到数据时,1位起始位会在移位寄存器最左边,然后紧跟着数据位8位,1位校验位,1位停止位,收到停止位时,将触发RI中断(注意这里是RI不是R1),同时将数据放入SBUF中。

4,串口相关寄存器

SMO~SM1:

        为串口工作方式配置寄存器位:如上

SM2
        多机通信控制位,主要用于方式 2 和方式 3。当 SM2=1 时可以利用收到 的 RB8 来控制是否激活 RI(RB8=0 时不激活 RI,收到的信息丢弃;RB8=1 时收 到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。当 SM2=0 时,不论收到的 RB8 为 0 和 1,均可以使收到的数据进入 SBUF,并激活 RI (即此时 RB8 不具有控制 RI 激活的功能)。通过控制 SM2,可以实现多机通信。
REN
        允许串行接收位。由软件置 REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
TB8:
        在方式 2 或方式 3 中,是发送数据的第 9 位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式 0 和方式 1 中,该位未用到。
RB8:
        在方式 2 或方式 3 中,是接收到数据的第 9 位,作为奇偶校验位或地址帧/数据帧的标志位。在方式 1 时,若 SM2=0,则 RB8 是接收到的停止位。

 5,串口编程

计算波特率:

定时器工作方式为2(8位自动重装载定时器),SMOD为1,表示倍频

当TL0溢出时,产生中断,并将TH0中的值重新写入TL0,实现重装载(实际是使用的定时器2,TH1和TL1,这里以定时器1为例子)

代码实现:

#include <reg52.h>typedef unsigned char u8;
typedef unsigned int u16;sbit LED1 = P2^0;u8 is_used = 0;void delay_10us(u16 time)
{while(time--);
}void init_uart_serial(u8 baud)
{TMOD |= 0x20; //  定时器1工作方式2		 8位自动转载SCON = 0x50; //  设置串口工作方式1PCON = 0x80; //  0x80 倍频TH1 = baud;	  // 计数器初值TL1 = baud;ES = 1;		   // 打开串口中断EA = 1;			//打开总中断TR1 = 1;		// 打开定时器(定时器产生波特率)
}void uart_run() interrupt 4
{u8 recv_val = 0;RI = 0; //中断清零recv_val = SBUF;SBUF = recv_val;while(!TI); //TI 等待发送完成TI = 0;is_used = 1;
}void main()
{init_uart_serial(0xFA);LED1 = 1;while(1){if(is_used == 1){LED1 = 0;delay_10us(1000);is_used = 0;LED1 = 1;}}
}

以上:验证使用sscom验证,能发送单个字符和多个字符

6,总结

         串口通讯时,使用定时器1作为稳定的信号发送器,需要将其配置为模式2,同时需要知道,程序中配置的串口是一位一位bit发送的数据,收数据也是一字节收写入到sbuf中的。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang的微服务服务发现机制

## 1. Golang微服务服务发现机制 微服务架构已经成为当今软件开发的主流趋势&#xff0c;它能将复杂的单体应用拆分成小而独立的服务单元&#xff0c;实现更快的开发、部署和扩展。在微服务架构中&#xff0c;服务发现是非常重要的一环&#xff0c;它能够实现服务之间的自动发现…

Python 创建地形图

原始地 DEM。 火山口湖 (OR) 区域的起始 DEM。数据来自 NASA DEM 本身非常美丽&#xff0c;但我们先进行分层。 将自定义色彩图应用于 DEM 对于我在 ArcGIS Pro 版本中所做的初始高程样式着色&#xff0c;我使用了“高程 #7”。在 matplotlib 中可用的标准颜色图中&#xff…

《Operating System Concepts》阅读笔记:p180-p187

《Operating System Concepts》学习第 20 天&#xff0c;p180-p187 总结&#xff0c;总计 8 页。 一、技术总结 1.forke-join A strategy for thread creation in which the main parent thread creates (forks) one or more child threads and then waits for the children…

文心4.5,大模型下半场的野心之作

2025年开年&#xff0c;全球大模型竞赛进入白热化阶段。2月28日&#xff0c;百度宣布其文心大模型4.5将于3月16日正式上线&#xff0c;强调其原生多模态与深度思考能力&#xff0c;并计划于6月30日开源。这一动作不仅标志着百度技术路线的重大转向&#xff0c;更被视为中国大模…

transformer架构解析{前馈全连接层,规范化层,子层(残差)连接结构}(含代码)-4

目录 前言 前馈全连接层 学习目标 什么是前馈全连接层 前馈全连接层的作用 前馈全连接层代码实现 规范化层 学习目标 规范化层的作用 规范化层的代码实现 子层&#xff08;残差&#xff09;连接结构 学习目标 什么是子层&#xff08;残差&#xff09;连接结构 子层连…

Django视图与URLs路由详解

在Django Web框架中&#xff0c;视图&#xff08;Views&#xff09;和URLs路由&#xff08;URL routing&#xff09;是Web应用开发的核心概念。它们共同负责将用户的请求映射到相应的Python函数&#xff0c;并返回适当的响应。本篇博客将深入探讨Django的视图和URLs路由系统&am…

串口通讯基础

第1章 串口的发送和接收过程 1.1 串口接收过程 当上位机给串口发送(0x55)数据时&#xff0c;MCU的RX引脚接受到&#xff08;0x55&#xff09;数据&#xff0c;数据(0x55)首先进入移位寄存器。数据全部进入移位寄存器后&#xff0c;一次将&#xff08;0x55&#xff09;全部搬运…

kakfa-3:ISR机制、HWLEO、生产者、消费者、核心参数负载均衡

1. kafka内核原理 1.1 ISR机制 光是依靠多副本机制能保证Kafka的高可用性&#xff0c;但是能保证数据不丢失吗&#xff1f;不行&#xff0c;因为如果leader宕机&#xff0c;但是leader的数据还没同步到follower上去&#xff0c;此时即使选举了follower作为新的leader&#xff…

基于Linux系统的物联网智能终端

背景 产品研发和项目研发有什么区别&#xff1f;一个令人发指的问题&#xff0c;刚开始工作时项目开发居多&#xff0c;认为项目开发和产品开发区别不大&#xff0c;待后来随着自身能力的提升&#xff0c;逐步感到要开发一个好产品还是比较难的&#xff0c;我认为项目开发的目的…

STM32——DMA详解

目录 一&#xff1a;DMA简介 二&#xff1a;DMA基本结构 三&#xff1a;DMA实现过程 1.框图 2.DMA进行转运的条件 四&#xff1a;函数 一&#xff1a;DMA简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设存储器或者存储器和存储器之间的高速数据传输&…

告别卡顿,拥抱流畅!MemReduct——内存清理工具

先给安装包下载地址&#xff1a;MemReduct.exe下载&#xff0c;无脑下一步安装即可。 MemReduct 是一款出色的内存清理工具&#xff0c;以下是对它的详细介绍&#xff1a; 功能特点 高效内存清理&#xff1a;采用先进算法及系统底层 API&#xff0c;能智能清理系统缓存、应用…

告别GitHub连不上!一分钟快速访问方案

一、当GitHub抽风时&#xff0c;你是否也这样崩溃过&#xff1f; &#x1f621; npm install卡在node-sass半小时不动&#x1f62d; git clone到90%突然fatal: early EOF&#x1f92c; 改了半天hosts文件&#xff0c;第二天又失效了... 根本原因&#xff1a;传统代理需要复杂…

指纹细节提取(Matlab实现)

指纹细节提取概述指纹作为人体生物特征识别领域中应用最为广泛的特征之一&#xff0c;具有独特性、稳定性和便利性。指纹细节特征对于指纹识别的准确性和可靠性起着关键作用。指纹细节提取&#xff0c;即从指纹图像中精确地提取出能够表征指纹唯一性的关键特征点&#xff0c;是…

【对话推荐系统综述】A Survey on Conversational Recommender Systems

文章信息&#xff1a; 发表于&#xff1a;ACM Computing Surveys 2021 原文链接&#xff1a;https://arxiv.org/abs/2004.00646 Abstract 推荐系统是一类软件应用程序&#xff0c;旨在帮助用户在信息过载的情况下找到感兴趣的项目。当前的研究通常假设一种一次性交互范式&am…

【0001】初识Java

Java是世界上最好的语言&#xff0c;没有之一&#xff01;&#xff01;&#xff01; Java是世界上最好的语言&#xff0c;没有之一&#xff01;&#xff01;&#xff01; Java是世界上最好的语言&#xff0c;没有之一&#xff01;&#xff01;&#xff01; 重要的事情说三遍&am…

全向广播扬声器在油气田中的关键应用 全方位守护安全

油气田作为高风险作业场所&#xff0c;安全生产始终是重中之重。在紧急情况下&#xff0c;如何快速、有效地传达信息&#xff0c;确保人员安全撤离&#xff0c;是油气田安全管理的关键环节。全向广播扬声器凭借其全方位覆盖、高音质输出和强大的环境适应性&#xff0c;成为油气…

显式 GC 的使用:留与去,如何选择?

目录 一、什么是显式 GC&#xff1f; &#xff08;一&#xff09; 垃圾回收的基本原理 &#xff08;二&#xff09;显式 GC 方法和行为 1. System.gc() 方法 2. 显式 GC 的行为 &#xff08;三&#xff09;显式 GC 的使用场景与风险 1. JVM 如何处理显式 GC 2. 显式 GC…

基于vue框架的游戏商城系统cq070(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,分类,商品信息,游戏高手,游戏代练 开题报告内容 基于Vue框架的游戏商城系统开题报告 一、研究背景与意义 随着互联网技术的飞速发展和游戏产业的蓬勃兴起&#xff0c;游戏商城作为游戏产业链中的重要一环&#xff0c;迎来了前所…

【OpenCV】OpenCV指南:图像处理基础及实例演示

OpenCV 是一个功能强大且易于使用的库&#xff0c;广泛应用于图像处理和计算机视觉领域。从读取和显示图像&#xff0c;到颜色空间转换、图像缩放、翻转、边缘检测、高斯模糊、形态学操作以及图像平滑和绘制&#xff0c;本文详细介绍了 OpenCV 的基础使用方法&#xff0c;附带了…

网络安全数据富化 网络数据安全处理规范

本文件规定了网络运营者开展网络数据收集、存储、使用、加工、传输、提供、公开等数据处理的安全 技术与管理要求。 本文件适用于网络运营者规范网络数据处理,以及监管部门、第三方评估机构对网络数据处理进行 监督管理和评估。 部分术语和定义 数据&#xff08;data&#x…