51单片机-第五节-串口通信

1.什么是串口?

 串口是通讯接口,实现两个设备的互相通信。

单片机自带UART,其中引脚有TXD发送端,RXD接收端。且电平标准为TTL(+5V为1,0V为0)。

2.常见电平标准:

(1)TTL电平:+5V表示1,0V表示0。

(2)RS232电平:-3~-15V表示1,+3·+15V表示0。

(3)RS485电平:两线压差+2~+6V表示1,-2~-6V表示0。

3.常见通信接口比较:

 

全双工:通信双方可在同一时刻互传数据。

半双工:不能同时

单工:只能一方传另一方

异步:双方各自约定通信速率

同步:通信双方靠一根时钟线来约定通信速率                                                                 

4.51单片机的UART:

有四种工作模式,只讲常用的模式一:

(1)UART的结构:

定时器:

缓存寄存器:

控制器:

中断系统:RX/TX

(2)寄存器:

注意:SMOD和SMOD0两个位被放在了PCON中(而非SCON),推测当年因为正好有空。

TI为发送标志位,发送后硬件置1,需软件手动归零。

5.实战:

 (1)配置环境:

SM0 SM1设置为 01 可将工作方式设置为模式1。其余均为0即可。

可用STC-ISP生成代码,配置如下: 

void UATR_Init()
{SCON = 0x40;PCON = 0x80;TMOD &= 0x0F;TMOD |= 0x20;//可使前4位保持不变,只改变定时器0对应的后4位TR1 = 1;//控制计时时长TH1 = 0xF3;TL1 = 0xF3;//禁止中断系统ET1 = 0;
}

(2)串口向电脑发送数据:

void UART_SendByte(unsigned char Byte)
{SBUF = Byte;//串口缓冲while (TI == 0);TI = 0;
}
void main()
{UATR_Init();while (1){UART_SendByte(Sec);Sec++;Delay(1000);}
}

(3)串口接收电脑信息:

因为不知道电脑何时发送数据,故将数据接收放在中断里,待接收到数据,触发中断后再操作。

void main()
{UATR_Init();while (1){}
}//串口中断模板
void UART_Routine() interrupt 4
{if (RI == 1){//接收到信息后要执行的操作P2 = ~SBUF;UART_SendByte(SBUF);RI = 0;}
}

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

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

相关文章

景区AR导航营销系统:技术解决方案与实施效益分析

随着旅游市场的竞争日益激烈,景区需要不断创新以吸引游客。景区 AR 导航将虚拟画面与现实场景相结合,为游客提供了更加直观、生动的导航服务。对于景区而言,这一创新技术无疑是吸引游客目光、提升景区知名度的有力武器。通过独特的 AR 导航体…

RockyLinux 9 PXE Server bios+uefi 自动化部署 RockLinux 8 9

pxe server 前言 PXE(Preboot eXecution Environment,预启动执行环境)是一种网络启动协议,允许计算机通过网络启动而不是使用本地硬盘。PXE服务器是实现这一功能的服务器,它提供了启动镜像和引导加载程序,…

一款基于Cortex-M0+的单片机音频编解码 - CJC2100

USBCodec芯片可以对数字音频信号进行多种处理,例如增加音量、均衡调节、音效处理等。这些处理可以通过耳机的控制按钮来实现,让用户可以根据自己的喜好来调整音频效果。USBCodec芯片还可以控制噪声和失真的水平,以提供高品质的音频输出。噪声…

机器学习笔记-02-基础线性算法认识(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文可以让读者用作自查,答案在后面&#xff0…

2024世界技能大赛某省选拔赛“网络安全项目”B模块--操作系统取证解析

2024世界技能大赛某省选拔赛“网络安全项目”B模块--操作系统取证解析 任务一、操作系统取证解析:总结:任务一、操作系统取证解析: A 集团某电脑系统被恶意份子攻击并控制,怀疑其执行了破坏操作,窃取了集团内部的敏感信息,现请分析 A 集团提供的系统镜像和内存镜像,找到…

机会性加密技术:网络安全的新趋势

在当今数字化时代,网络安全已成为各行各业不可忽视的重要议题。随着网络攻击手段的不断演进,传统的加密方式已难以满足复杂多变的安全需求。机会性加密技术(Opportunistic Encryption,简称OE),作为一种新兴…

基于Qt的视频剪辑

在Qt中进行视频剪辑可以通过多种方式实现,但通常需要使用一些额外的库来处理视频数据。以下是一些常见的方法和步骤: 使用FFmpeg FFmpeg是一个非常强大的多媒体框架,可以用来处理视频和音频数据。你可以使用FFmpeg的命令行工具或者其库来实现…

skynet 入门篇

文章目录 概述1.实现了actor模型2.实现了服务器的基础组件 环境准备centosubuntumac编译安装 ActorActor模型定义组成 Actor调度工作线程流程工作线程权重工作线程执行规则 小结 概述 skynet 是一个轻量级服务器框架,而不仅仅用于游戏; 轻量级有以下几…

react18+

主要是围绕函数式组件讲,18主要用就是函数式组件,学习前先熟悉下原生js的基本使用,主要是事件 1、UI操作 1.1、书写jsx标签语言 基本写法和原生如同一则,只是放在一个方法里面返回而已,我们称这样的写法为函数式组件…

ChatTTS(文本转语音) 一键本地安装爆火语音模型

想不想让你喜欢的文章,有着一个动听的配音,没错,他就可以实现。 ChatTTS 是一款专为对话场景设计的文本转语音模型,例如 LLM 助手对话任务。它支持英语和中文两种语言。 当下爆火模型,在Git收获23.5k的Star&#xff…

面试重点---快速排序

快排单趟 快速排序是我们面试中的重点,这个知识点也很抽象,需要我们很好的掌握,而且快速排序的代码也是非常重要,需要我们懂了还不行,必须要手撕代码,学的透彻。 在研究快速排序之前,我们首先…

PyTorch 2.0 GPU Nvidia运行库的安装

【图书推荐】《PyTorch深度学习与计算机视觉实践》-CSDN博客 假设读者电脑带有NVIDIA 20 以上系列的显卡。 我们以CUDA 11.7cuDNN 8.2.0(其他更高版本的组合,读者可以执行查阅PyTorch官网获得)为例,讲解PyTorch 2.0 GPU版本的安…

【Linux】多线程4——线程同步/条件变量

1.Linux线程同步 1.1.同步概念与线程饥饿问题 先来理解同步的概念 什么是线程同步 在一般情况下,创建一个线程是不能提高程序的执行效率的,所以要创建多个线程。但是多个线程同时运行的时候可能调用线程函数,在多个线程同时对同一个内存地…

云服务器Ubuntu18.04进行Nginx配置

云服务器镜像版本信息:Ubuntu 18.04 server 64bit,本文记录了在改版本镜像上安装Nginx,并介绍了Nginx配置文件目录,便于后面再次有需求时进行复习。 文章目录 Nginx的安装Nginx配置文件分析 Nginx的安装 1.执行下面命令进行安装…

linux 部署flask项目

linux python环境安装: https://blog.csdn.net/weixin_41934979/article/details/140528410 1.创建虚拟环境 python3.12 -m venv .venv 2.激活环境 . .venv/bin/activate 3.安装依赖包(pip3.12 install -r requirements.txt) pip3.12 install -r requirements.txt 4.测试启…

使用git命令行的方式,将本地项目上传到远程仓库

在国内的开发环境中,git的使用是必不可少的。Git 是一款分布式版本控制系统,用于有效管理和追踪文件的变更历史及协作开发。本片文章就来介绍一下怎样使用git命令行的方式,将本地项目上传到远程仓库,虽然现在的IDE中基本都配置了g…

React类组件生命周期与this关键字

类组件生命周期 参考链接 一图胜千言(不常用的生命周期函数已隐藏) 代码: //CC1.js import { Component } from "react";export default class CC1 extends Component {constructor(props) {super(props);console.log("con…

人工智能算法工程师(高级)课程8-图像分割项目之Mask-RCNN模型的介绍与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(高级)课程8-图像分割项目之Mask-RCNN模型的介绍与代码详解。Mask R-CNN模型是一种广泛应用于目标检测和实例分割的任务的深度学习框架。本文将详细介绍Mask R-CNN的原理,包括Box Regression、Classification和Mask …

追问试面试系列:开篇

我们不管做任何事情,都是需要个理由,而不是盲目去做。 为什么写这个专栏? 就像我们被面试八股文时,市面上有很多面试八股文,随便一个八股文都是500,甚至1000面试题。诸多面试题,难道我们需要一…

Node Js开发环境的搭建

前言 通过自动化繁琐的设置和配置工作,帮助开发者快速启动新项目。常见的Node脚手架工具包括Yeoman、Express Generator、Create React App等。 一、什么是脚手架 1、什么是脚手架? 脚手架在软件开发中指的是一种自动化工具或脚本,用于快速创…