51单片机:电脑通过串口控制LED亮灭(附溢出率和波特率详解)

news2024/10/8 12:13:08

一、功能实现

1.电脑通过串口发送数据:0F

2.点亮4个LED

二、注意事项

1.发送和接受数据的文本模式

2.串口要对应

3.注意串口的波特率要和程序中的波特率保持一致

4.有无校验位和停止位

三、如何使用串口波特率计算器

1.以本程序为例

2.生成代码如下

void Uart1_Init(void)	//9600bps@11.0592MHz
{
	SCON = 0x50;		//8位数据,可变波特率
	AUXR |= 0x40;		//定时器时钟1T模式
	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
	TMOD &= 0x0F;		//设置定时器模式
	TL1 = 0xE0;			//设置定时初始值
	TH1 = 0xFE;			//设置定时初始值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
}

3.需要手动配置中断系统

根据原理图

配置代码
	//手动配置中断系统
	ES=1;
	EA=1;
	PS=0;

四、如何理解软件生成的波特率

void UART_Init()			
{
	//由软件自动生成
    SCON=0x50;				//STC89C52操作手册P235方式1
	PCON &= 0x7F;			//波特率不倍速
	TMOD &= 0x0F;			//设置定时器1模式
	TMOD |= 0x20;			//设置定时器1模式
	TL1 = 0xFA;			//设置定时初始值
	TH1 = 0xFA;			//设置定时重载值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时
	
	
	//需要手动配置中断系统
	ES=1;
	EA=1;
	PS=0;
}

以上述代码为例子进行分析

    由于配置是8位自动重载,TL1=TH1=0xFA ,0xFA=250;
    总计八位,那么数据范围0~255(256溢出)
    256-250=6
    那么每计6个数溢出一次
    晶体振荡器的输出经12 分频后得到输入的时钟脉冲
    一个机器周期内有12 个振荡周期。故其频率为晶振频率的1/12。
    此设备是11.0592M 的晶振,1.085μs为一个输入脉冲的时间
    则6.51μs溢出一次
    1/6.51,则0.1536098MHz就是定时器的溢出率
    再看PCON=0111 1111
    可知SMOD=0(参考串口模式图)
    那么波特率=0.1536098MHz   /2  /16
    波特率为0.00480030625MHz约等于4800Hz
    约等于没有误差

串口模式图

五、如何计算波特率

参考STC89C52手册P235

六、串口中断函数

中断函数(函数可自由命名,但是要加上中断号"interrupt 4")

void UART_Routine(void) interrupt 4      
{
	if (TI==1)				//检测串口1发送中断
	{
		//功能......
		TI = 0;			//清除串口1发送中断请求位
	}
	if (RI==1)				//检测串口1接收中断
	{
		//功能......
		RI = 0;			//清除串口1接收中断请求位
	}
}

中断函数查询表P166

七、模块化代码:

1.main.c

#include <REGX52.H>
#include "UART.h"

unsigned char Sec=0;

void main()
{
	UART_Init();

	while(1)
	{

	}

}

/**
  * @brief  中断函数查询P166,函数命名可自由,但是要更上中断号"interrupt 4"
  * @param  无
  * @retval 无
  */
void UART_Routine(void) interrupt 4      
{
	if(RI==1)
	{
		P2=~SBUF;
		RI=0;
	}
}

2.UART.c

#include <REGX52.H>

/**
  * @brief  串口初始化//4800bps@11.0592MHz
  * @param  无
  * @retval 无
  */



void UART_Init()			
{
	SCON=0x50;				//STC89C52操作手册P235方式1
	PCON &= 0x7F;			//波特率不倍速
	TMOD &= 0x0F;			//设置定时器1模式
	TMOD |= 0x20;			//设置定时器1模式
	TL1 = 0xFA;			//设置定时初始值
	TH1 = 0xFA;			//设置定时重载值
	ET1 = 0;			//禁止定时器中断
	TR1 = 1;			//定时器1开始计时

	//补上中断系统
	ES=1;
	EA=1;
	PS=0;
}

/**
  * @brief  串口发送一个字节的数据
  * @param  Byte  要发送的一个字节数据
  * @retval 无
  */

void UART_SendByte(unsigned char Byte)
{
	SBUF=Byte;
	while(TI==0);			//TI=0,数据完整发送出去,TI=1,跳出循环
	TI=0;			//TI=0,使用软件复位
	
}


3.UART.h

#ifndef __UART_H__
#define __UART_H__


	void UART_Init();
	void UART_SendByte(unsigned char Byte);

#endif

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

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

相关文章

【漏洞复现】Crocus系统——Download——文件读取

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 Crocus系统旨在利用人工智能、高清视频、大数据和自动驾驶技术&…

[论文笔记]涨点近5%! 以内容中心的检索增强生成可扩展的级联框架:Pistis-RAG

引言 今天带来一篇较新RAG的论文笔记&#xff1a;Pistis-RAG: A Scalable Cascading Framework Towards Content-Centric Retrieval-Augmented Generation。 在希腊神话中&#xff0c;Pistis象征着诚信、信任和可靠性。受到这些原则的启发&#xff0c;Pistis-RAG是一个可扩展…

详细分析Java中的@EventListener事件监听器(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Spring框架从入门到学精&#xff08;全&#xff09; 1. 基本知识 用于标注一个方法为事件监听器 事件监听器方…

前端面试题43(JavaScript几种排序)

JavaScript 中有多种排序算法可供使用&#xff0c;每种算法都有其特点和适用场景。下面是一些常见的排序算法&#xff0c;它们可以手动实现&#xff0c;也可以通过 JavaScript 内置的 Array.prototype.sort() 方法简化操作。 1. 冒泡排序&#xff08;Bubble Sort&#xff09; …

beyond Compare连接 openWrt 和 VsCode

连接步骤总结 1. 新建会话 -> 文件夹比较 2.点击浏览文件夹 3.在弹出页面 配置 ftp 3.1&#xff09;选中ftp 配置文件 3.2)选中ssh2 3.3)填写我们需要远端连接的主机信息 先点击连接并浏览 得到下方文件夹 弹出无效登录&#xff0c;说明需要密码 我们返回右键刚刚创建的新 …

qt 用数据画一个图,并表示出来

1.概要 想用数据绘制一个画面&#xff0c;看有相机到播放的本质是啥。 要点 // 创建一个QImage对象&#xff0c;指定图像的宽度、高度和格式 QImage image(width, height, QImage::Format_Grayscale8); // 将像素数据复制到QImage对象中 memcpy(image.bits(), pixelD…

Milvus Cloud:重塑向量数据管理新纪元的强大引擎

在大数据与人工智能技术日新月异的今天,数据不再仅仅是简单的数字堆砌,而是蕴含着无限价值的信息宝藏。随着深度学习、自然语言处理、计算机视觉等技术的飞速发展,由这些高级机器学习模型产生的向量数据正以惊人的速度增长,成为了驱动行业创新和业务智能化转型的关键力量。…

[leetcode]kth-smallest-element-in-a-sorted-matrix 有序矩阵中第k小元素

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool check(vector<vector<int>>& matrix, int mid, int k, int n) {int i n - 1;int j 0;int num 0;while (i > 0 && j < n) {if (matrix[i][j] < mid) {num i 1;j;…

Linux 调试命令记录

查看CPU信息 cat /proc/cpuinfo 显示当前电源功耗 top 命令能够清晰的展现出系统的状态&#xff0c;而且它是实时的监控&#xff0c;按 q 退出。 uptime 与 w 这两个命令只是单纯的反映出负载&#xff0c;所表示的是过去的1分钟、5分钟和15分钟内进程队列中的平均进程数量。…

中新青年领导人交流营走进李良济,零距离感受中医药文化的魅力

7月8日晚&#xff0c;2024中新青年领导人交流营在苏州正式启动。该交流营主题为“青年创业和可持续发展”&#xff0c;由中华全国青年联合会、新加坡全国青年理事会主办&#xff0c;江苏省、北京市青年联合会与苏州市人民政府承办&#xff0c;苏州市青年联合会与苏州工业园区管…

QT--SQLite

配置类相关的表&#xff0c;所以我使用sqlite,且QT自带该组件&#xff1b; 1.安装 sqlite-tools-win-x64-3460000、SQLiteExpert5.4.31.575 使用SQLiteExpert建好数据库.db文件&#xff0c;和对应的表后把db文件放在指定目录 ./db/program.db&#xff1b; 2.选择sql组件 3.新…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站&#xff0c;点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用&#xff1a;静态网页服务 之后&#xff0c;事实证明&#xff1a; 总而言之&#xff0c;自动化是一个很令人着迷的东西&#xff0c;摆脱重复繁琐的工作&#xff0c;解放了双手的…

51单片机嵌入式开发:7、 STC89C52RC 外部中断INT0和INT1 操作

STC89C52RC 外部中断INT0和INT1 操作 1 外部中断1.1 外部中断1.2 中断介绍 2 STC89C52外部中断2.1 外部中断引脚2.2 外部中断寄存器说明 3 STC89C52外部中断演示3.1 电平触发外部中断3.2 边沿触发外部中断3.3 Protues仿真 4 外部中断总结 1 外部中断 1.1 外部中断 单片机外部…

LLM+Agent技术

&#x1f4a1; Agent可以理解为某种能自主理解、规划决策、执行复杂任务的智能体。Agent 是让 LLM 具备目标实现的能力&#xff0c;并通过自我激励循环来实现这个目标。它可以是并行的&#xff08;同时使用多个提示&#xff0c;试图解决同一个目标&#xff09;和单向的&#xf…

告别中央服务器:Syncthing实现点对点文件同步

介绍 Syncthing 是一款开源的文件同步工具&#xff0c;可让您在多个设备之间同步文件。 它适用于 Mac OS X、Windows、Linux、FreeBSD、Solaris、OpenBSD等系统。 可以通过浏览器访问来配置和监控该应用程序。 Syncthing 具有以下特点: 1、点对点同步 2、无需中央服务器 …

如何从 Windows 照片库恢复删除的照片

数据丢失的主要原因之一是人为错误。更糟糕的是&#xff0c;回收站中没有备份&#xff0c;也没有已删除的文件。在这种情况下&#xff0c;数据恢复或专门的 Windows 图片恢复工具可以帮您恢复已删除的图片。 考虑到这一点&#xff0c;我们将讨论从 Windows 10 上的图库中恢复已…

基于Intel Chainer 和姿势检测的动作识别(人体、面部、手部关键点识别动作识别)

项目概述 目标 开发一个能够实时或近实时识别特定动作的系统&#xff0c;如运动姿势、表情变化或手势控制。实现对人体关键点的精确追踪&#xff0c;以便于分析和理解人的动态行为。 技术栈 Intel硬件&#xff1a;可能使用Intel的高性能计算平台&#xff0c;如Xeon处理器或…

【大数据技术】换新电脑了,如何快速迁移MySQL到新电脑上(含程序+数据),这样既快速又高效,省去了“各种安装+各种配置+各种迁移数据”带来的麻烦和时间

【大数据技术】换新电脑了&#xff0c;如何快速迁移MySQL到新电脑上(含程序数据 背景步骤总结 背景 很久没有写博文了哦&#xff0c;最近我换了新的笔记本,于是需要在新笔记本电脑上搭建MySQL环境&#xff0c;因为我原电脑上是安装的MySQL解压版&#xff0c;故我想偷偷懒&…

基于Android平台开发,购物商城

1. 项目功能思维导图 2. 项目涉及到的技术点 使用SQLite数据库实现数据存储使用CountDownTimer实现启动页倒计时使用SharedPreferences实现记住密码登录使用BottomNavigationView实现底部导航栏使用ActivityFragment实现底部导航栏页面之间切换使用RecyclerViewadapter实现商品…