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

STC89C52学习笔记(七)

STC89C52学习笔记(

综述:本文介绍了串口以及讲述了串口相关寄存器如何配置并给予相关代码。

一、修改代码注意事项

在修改代码时不要一次性加入一堆代码,不利于定位错误。可以先注释一些代码,待解决完毕问题后再去除一些注释。

二、串口

1.定义

串口是一种通讯接口,可以实现两个设备互相通信。51单片机内部自带UART(通用异步收发器),可以实现单片机的串口通信。

2.连接

①单片机上有串口,然后电脑利用串口助手,就可以实现单片机与电脑的串口通信。

②蓝牙串口模块,信号通过串口发送给他,然后通过手机上的蓝牙app,达到手机和单片机的串口通信。(单片机→蓝牙串口模块→手机蓝牙app)

3.特点

①简单的串口有两根通讯线:TXD和RXD(TXD:transimit exchange data;RXD:receive exchange data)。

②两根通讯线为交叉连接,当双向通讯时,需要两根通讯线,仅仅单项数据传输时,只需要一根通讯线。

③串口常用的电平标准有三种:TTL电平(晶体管晶体管逻辑,单片机就是用这种电平逻辑,+5V表示1,0V表示0)、RS232电平(-3~-15表示1,+3~+15表示0)、RS485电平(两线差+2~+6表示1,-2~-6表示0)。

通讯至少需要3根线:GND、TXD和RXD。如果设备1和设备2都是独立供电的,那么可以不用VCC接线。但是,如果设备2是一个模块,不是独立供电,那么设备1需要给设备2供电。

⑤全双工:通信双方可以在同一时刻互相传输;半双工,通讯双方可以在互相通讯,但是不能同时;单工:通讯只能由一方发送到另一端。

⑥异步:通信双方各自约定通信速率;同步:通信双方用同一根时钟线约定通信速率。

4.51单片机的UART

①STC89C52的RXD端口在P3.0,TXD端口在P3.1

②STC89C52有1个UART

③STC89C52的UART有四种工作模式:模式1:同步移位寄存器。模式二:8位UART,波特率可以改变。模式三:9位UART,波特率可以改变。模式四:9位UART,波特率可以改变。

③串口参数

1)波特率:串口发送/接收数据为的间隔时间,也就是串口通信的速率

2)校验位:有奇、偶检验和0、1校验

④串口时序图

8位数据格式的时序图

9位数据格式的时序图

⑤串口模式图

时钟部分:中间部分控制收发器的采样时间来控制波特率。

发送:单片机先将数据写入寄存器SBUF(Sever buffer串口缓存寄存器)中,再通过发送控制器将数据发送出去,发送完成产生相应的中断。

接收时,通过移位寄存器即受到SBUF,再通过单片机读取数据,接收完成产生相应的中断。

⑥串口和中断系统

⑦初始化串口

1)对于寄存器SCON的配置,由于这里的串口选择工作模式二(8位UART,波特率可以改变),于是SM0 SM1应配置为0 1,于是程序应为:“SCON=0x40;”

2)对于电源控制寄存器说明如下,SMOD和SMOD0均为1,于是,PCON寄存器应该配置为:“PCON|=0x80;”

3)定时器

8位自动重装定时器和16位定时器的区别:16位记的数据多(65535),但是每次都需要自己写代码赋初值,浪费时间。双8位就是将16位分开,一个计数(255),另一个存放初值,每次计数完成后AR会自动将值赋给CNT,不用代码处理,比较快,但只有8位所以记的数少了。

于是,这里配置定时器1的模式应该为:将TMOD配置为0010 0000,也即是“TMOD &= 0x0F;TMOD |= 0x20;”

4)利用stc-isp软件自动计算波特率。

5)启动定时器1,代码为“TR1=1”

6)完整的串口初始化函数如下

void UART_Init()   //4800bps@12.000MHz
{PCON|=0x80;SCON=0x40;TMOD &= 0x0F;		//设置定时器模式TMOD |= 0x20;		//设置定时器模式TL1 = 0xF3;		//设定定时初值TH1 = 0xF3;	//设定定时初值TF0 = 0;		//清除TF0标志TR0 = 1;		//定时器0开始计时
}

⑧发送数据

1)由之前⑤可以知道,发送数据是先写入在寄存器SBUF里面,所以,程序可以写为:“SBUF=Byte;”

2)当发送的数据过多时,不是一下子就可以完成发送的,于是需要检验是否发送完成,这里是根据检验发送完成标志位TI,程序为:“while(TI==0);”

3)由于发送完成后需要对TI进行软件复位,于是程序应为:“TI=0;”

完整的串口发送程序如下:

void UART_SendByte(unsigned char Byte)
{SBUF=Byte;while(TI==0);TI=0;
}

4)下载程序并打开串口,配置好串口的参数:串口端号、串口的波特率(4800)、校验位和停止位。


参考视频:51单片机学习.视频

侵权联系删除!

相关文章:

STC89C52学习笔记(七)

STC89C52学习笔记(七) 综述:本文介绍了串口以及讲述了串口相关寄存器如何配置并给予相关代码。 一、修改代码注意事项 在修改代码时不要一次性加入一堆代码,不利于定位错误。可以先注释一些代码,待解决完毕问题后再…...

嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记16:蓝桥杯编程手册

一、要背的函数汇总(以例子形式) 1.GPIO相关 输出:HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8 | GPIO_PIN_9,GPIO_PIN_SET) 输入:HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) 翻转:HAL_GPIO_TogglePin(GPIOC,0xFF) 2.LCD相关 …...

doris2.0.7 安装

1,查看操作系统 lsb_release -a #Distributor ID: Ubuntu #Description: Ubuntu 22.04.3 LTS #Release: 22.04 #Codename: jammy 2,安装zip,mysql-client apt install mysql-client apt install zip 3,安装jdk apt inst…...

智慧园区水电能源监控管理系统

随着智慧城市的快速发展,智慧园区作为城市智能化的重要组成部分,其能源监控管理系统显得尤为关键。智慧园区水电能源监控管理系统,是利用先进的信息技术和自动控制技术,对园区内的水电能源使用进行实时监控、管理和优化的综合性智…...

Kafka基础/1

Kafka 概念 Kafka 是一个分布式的流媒体平台。 应用:消息系统、日志收集、用户行为追踪、流式处理 特点:高吞吐量、消息持久化、高可靠性、高扩展性 术语: broker:Kafka 的服务器,Kafka 当中每一台服务器&#xf…...

Jupyter Notebook中常见的快捷键

Jupyter Notebook的快捷键主要分为两种模式:命令模式和编辑模式。 在命令模式下,键盘输入用于运行程序命令,此时单元格框线是蓝色的; 在编辑模式下,可以往单元格中键入代码或文本,此时单元格框线是绿色的…...

《前端面试题》- JS基础 - call()、apply()、bind() 的区别

call 、bind 、 apply 这三个函数的功能都是改变this的指向问题,但是也存在一定的区别。 call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,apply 的所有参数都必须放在一个数组里面传进去bind 除了返回是函数以外,它 的参数和…...

开源软件技术社区方案

开源软件技术社区是一个由开发者、贡献者、用户和维护者组成的共享平台,主要目的是打造技术、软件产品良性互动、开源技术安全可控的软件生态环境,实现可复用应用或服务的快速部署与使用、完成资源与能力的高度共享、促进社区成员的共建共赢,…...

【开源书籍】深入讲解内核网络、Kubernetes、ServiceMesh、容器等云原生相关技术。

项目地址:GitHub - isno/theByteBook: ⭐ 【开源书籍】深入讲解内核网络、Kubernetes、ServiceMesh、容器等云原生相关技术。经历实践检验的 DevOps、SRE指南。如发现错误,谢谢提issue 深入架构原理与实践 这是什么? 这是一本关于架构设计…...

【C语言】“vid”Microsoft Visual Studio安装及应用(检验内存泄露)

文章目录 前言安装包获取配置VLD完成 前言 我们在写代码时往往容易存在内存泄漏的情况,所以存在这样一个名为VLD的工具用来检验内存泄漏,现在我来教大家安装一下 安装包获取 vld下载网址:https://github.com/KindDragon/vld/releases/tag/…...

Accuracy准确率,Precision精确率,Recall召回率,F1 score

真正例和真反例是被正确预测的数据,假正例和假反例是被错误预测的数据。然后我们需要理解这四个值的具体含义: TP(True Positive):被正确预测的正例。即该数据的真实值为正例,预测值也为正例的情况&#xf…...

系统架构最佳实践 -- 智慧图书管理系统架构设计

随着数字化时代的到来,智慧图书管理系统在图书馆和机构中扮演着重要的角色。一个优秀的图书管理系统不仅需要满足基本的借阅管理需求,还需要具备高效的性能、良好的扩展性和稳定的安全性。本文将讨论智慧图书管理系统的架构设计与实现,以满足…...

网络基础三——IP协议补充和Mac帧协议

全球网络及网段划分的理解 ​ 根据国家组织地区人口综合评估进行IP地址范围的划分; ​ 假设前8位用来区分不同的国家,国际路由器负责全球数据传输,子网掩码为IP/8;次6位区分不同的省份,国内路由器负责全国数据的传输…...

人工智能——深度学习

4. 深度学习 4.1. 概念 深度学习是一种机器学习的分支,旨在通过构建和训练多层神经网络模型来实现数据的高级特征表达和复杂模式识别。与传统机器学习算法相比,深度学习具有以下特点: 多层表示学习:深度学习使用深层神经网络&a…...

postgresql uuid

示例数据库版本PG16,对于参照官方文档截图,可以在最上方切换到对应版本查看,相差不大。 方法一:自带函数 select gen_random_uuid(); 去掉四个斜杠,简化成32位 select replace(gen_random_uuid()::text, -, ); 官网介绍…...

【azure笔记 1】容器实例管理python sdk封装

容器实例管理python sdk封装 测试结果 说明 这是根据我的需求写的,所以有些参数是写死的,比如cpu核数和内存,你可以根据你的需要自行修改。前置条件: 当前环境已安装python3.8以上版本和azure cli并且已经登陆到你的账户 依赖安…...

Nestjs 中定义既可以捕获错误(Error)和又可以异常(Exception)的过滤器

Nestjs 中,使用基于 HttpException 定义过滤器的话,只能捕获 Http 带状态码(statusCode)的 Exception,不能捕获 throw new Error(‘xxx’) 抛出的错误。 以下是使用实现 ExceptionFilter 接口定义的一个不特定于平台(express 或 fastify,即无论使用这两个web服务框架的…...

GitHub 仓库 (repository) Branch - SSH clone URL - Clone in Desktop - Download ZIP

GitHub 仓库 [repository] Branch - SSH clone URL - Clone in Desktop - Download ZIP 1. Branch2. SSH clone URL3. Clone in Desktop4. Download ZIPReferences 1. Branch 显示当前分支的名称。从这里可以切换仓库内分支,查看其他分支的文件。 2. SSH clo…...

Training - 使用 WandB 配置 可视化 模型训练参数

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/137529140 WandB (Weights&Biases) 是轻量级的在线模型训练可视化工具,类似于 TensorBoard,可以帮助用户跟踪…...

N1922A是德科技N1922A功率传感器

181/2461/8938产品概述: N192XA 传感器是首款通过将直流参考源和开关电路集成到功率传感器中来提供内部调零和校准的传感器。此功能消除了与使用外部校准源相关的多个连接,从而最大限度地减少了连接器磨损、测试时间和测量不确定性。 连接到 DUT 时进行…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

宇树科技,改名了!

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

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...