51单片机基础01 单片机最小系统
目录
一、什么是51单片机
二、51单片机的引脚介绍
1、VCC GND
2、XTAL1 2
3、RST
4、EA
5、PSEN
6、ALE
7、RXD、TXD
8、INT0、INT1
9、T0、T1
10、MOSI、MISO、SCK
11、WR、RD
12、通用IO P0
13、通用IO P1
14、通用IO P2
三、51单片机的最小系统
1、供电与功能选择
2、复位
3、时钟-11.0592MHz与12MHz
(1)12MHz晶振频率
(2)11.0592MHz晶振频率
4、P0口
一、什么是51单片机
51单片机(如8051)是非常经典的一款微控制器,它的最小系统是指将8051微控制器核心部分与必要的外围硬件连接起来,形成一个能正常工作的最简单系统。最小系统通常包括以下几个重要的引脚和电路元件,每个引脚都有其特定的作用。
二、51单片机的引脚介绍
51单片机(如8051)是非常经典的一款微控制器,它的最小系统是指将8051微控制器核心部分与必要的外围硬件连接起来,形成一个能正常工作的最简单系统。最小系统通常包括以下几个重要的引脚和电路元件,每个引脚都有其特定的作用。下面是各个引脚和信号的详细阐述:
1、VCC GND
VCC:电源正极,提供单片机所需的电压,通常为5V。
GND:电源负极,也就是地,供电系统的参考点。
这些引脚是单片机正常工作所必须的,VCC为单片机提供电力,GND提供回路的接地。
2、XTAL1 2
XTAL1和 XTAL2是单片机的外部晶振引脚。
用于连接外部的晶体振荡器或外部时钟源。8051单片机内部的时钟源通常由这两个引脚与一个晶体振荡器共同组成。
XTAL1为输入端,连接外部晶体的一个端口,XTAL2为输出端,连接外部晶体的另一个端口。
该振荡器用来为单片机提供时钟信号,通常为12MHz,影响CPU的时钟频率。
3、RST
RST:复位引脚,用于将单片机初始化。通过外部电路,给该引脚提供一个高电平脉冲,能够使51单片机重新启动,恢复到初始状态。
通常在启动时,或者系统异常时,进行复位操作,以确保单片机从已知状态开始工作。
4、EA
EA(External Access):外部存储器访问控制引脚。通常连接到高电平,表示程序存储器(如ROM)来自内部存储器。
5、PSEN
PSEN:程序存储器使能引脚。用于控制外部存储器的读取。
当PSEN为低/高电平时,8051单片机会从外部程序存储器(如EPROM或Flash)读取程序代码,一般悬置空。
6、ALE
ALE(地址锁存使能):地址锁存使能引脚。用来提供地址锁存信号,当8051需要访问外部数据存储器或程序存储器时,ALE信号会产生一个脉冲来锁存地址。一般悬空。
7、RXD、TXD
RXD(接收数据引脚):串行口的接收端,通常与外部设备的发送端连接。用于接收来自外部设备的串行数据。
TXD(发送数据引脚):串行口的发送端,通常与外部设备的接收端连接。用于向外部设备发送串行数据。
51单片机下载程序也需要通过这两个IO,所以一般需要进行排针引出。
8、INT0、INT1
INT0 和 INT1:外部中断引脚。用于响应外部事件触发中断信号(例如按键输入或外部传感器信号)。通过这两个引脚,8051可以处理外部中断,使系统能够响应外部环境变化。一般悬空。
9、T0、T1
T0 和 T1:定时器/计数器引脚。用于连接定时器和外部事件源,提供精确的时间间隔控制。可以用来实现定时操作、计数外部信号等功能。一般悬空。
10、MOSI、MISO、SCK
MOSI(主输出从输入):用于SPI通信协议中,主设备通过该引脚向从设备发送数据。
MISO(主输入从输出):用于SPI通信协议中,主设备通过该引脚接收从设备发送的数据。
SCK(时钟):用于SPI协议中,提供时钟信号,同步数据传输的速率。
11、WR、RD
WR(写使能):用于控制外部存储器的写操作。当WR信号为低电平时,表示数据将被写入外部存储器。
RD(读使能):用于控制外部存储器的读操作。当RD信号为低电平时,表示数据将从外部存储器读取。
12、通用IO P0
P0:8051单片机的第一个I/O口,通常由8个引脚组成,提供双向数据传输。该端口通常用于与外部设备的数据交换,可以作为输入或者输出。一般需要通过电阻上拉到VCC上提供驱动能力。
13、通用IO P1
P1:8051单片机的第二个I/O口,类似于P0,提供双向数据传输,通常用来与外部设备进行通信。P1口通常也连接到外部设备,比如LED显示、按钮等。不需要通过电阻上拉到VCC上提供驱动能力。
14、通用IO P2
P2:8051单片机的第三个I/O口,和P0、P1类似,用于数据传输。P2口通常用于连接外部的设备、传感器、开关等。
三、51单片机的最小系统
1、供电与功能选择
如图所示为51单片机的最小系统,其中EA、VCC需要连接到VCC供电,GND需要连接GND供电。
2、复位
可以看到按下按键之前NRST处于GND,按下按键后NRST就被接到VCC,从而实现手动复位,而C3用于实现削弱按键的抖动。
3、时钟-11.0592MHz与12MHz
一般电容选择20-40pf区间,晶振则选择11.0592MHz或12MHz。
(1)12MHz晶振频率
主要原因:
系统时钟的标准化:12MHz 是8051单片机时钟频率的常见标准之一,因为许多8051系列单片机(以及其他类似的8位单片机)都默认使用12MHz频率,这使得该频率成为业界的标准。
性能需求:12MHz的频率能提供适当的处理速度,既满足了基本控制需求,又不会导致功耗过高。
优点:
较高的计算速度:12MHz频率下,8051单片机的机器周期为1微秒(12 MHz / 12 = 1 微秒)。较高的频率使得单片机在进行运算、控制和数据处理时能够更快响应更高的时钟频率,提供了相对较高的处理能力,适合一些需要较快响应的应用场景。
缺点:
较高功耗:较高的频率意味着功耗更大,尤其是在高负载条件下。这对于低功耗应用不是最佳选择。
定时器精度:12 MHz的时钟频率和标准的通信协议(如串口通信的波特率)之间有一定的差异,可能导致需要进行额外的计算或调整,才能确保定时精度。
(2)11.0592MHz晶振频率
主要原因:
精确的波特率生成:11.0592 MHz 的晶振频率是为了提供一个精确的串口波特率,特别是在标准的串行通信中(例如RS-232、UART等)。
波特率生成:使用11.0592 MHz时,8051单片机的时钟频率能够与标准的波特率(如9600、19200等)实现较好的匹配,因为8051单片机内部的时钟频率与波特率生成器之间有直接的关系。
计算方法:
对于11.0592MHz,执行单周期指令时间为1/11.0592MHz,而机器周期在此基础上*12
对于12MHz,执行单周期指令时间为1/12MHz,而机器周期在此基础上*12
对于9600波特率,要求速度为1/9600
分别对应的分频系数为:1/9600 / (1/11059200*12)=96
分别对应的分频系数为:1/9600 / (1/12*12)=104.1666
可以看到对于11.0592MHz,其分频系数为整数倍,从而可以实现精确的波特率。同理可计算115200波特率等。
优点:
精确的串口波特率:11.0592 MHz 是为了与常见的串行通信标准波特率精确匹配(例如9600、19200等),这对于通信应用至关重要。以11.0592 MHz频率为基准,能确保波特率的计算更加精确,减少误差。
兼容性强:大多数使用11.0592 MHz频率的8051单片机能够与外部设备、通信协议等更好兼容,尤其是在需要高精度串口通信的场合。
缺点:
性能较低:与12 MHz相比,11.0592 MHz频率的时钟周期略长,这意味着它的处理速度稍微慢一些,可能会影响一些对处理速度要求较高的应用。
功耗略高:虽然频率略低,但相比于更低频率的晶振,11.0592 MHz仍然可能产生较高的功耗。
4、P0口
由于内部没有上拉电阻,如果直接输出高电平,则由内部寄存器提供直接输出,这个电流是极其微弱的,其无法正常输出到5V,通常为4.0V左右的高阻态,不易被外部电路识别。
一般根据所需电流,常用阻值为4.7KΩ、5.1KΩ、10KΩ。上拉电阻还可以提供稳定的输出端电位,不会出现高阻态的情况;同时解决了CMOS不能悬空引脚的问题,并提供驱动电流的功能。
相关文章:

51单片机基础01 单片机最小系统
目录 一、什么是51单片机 二、51单片机的引脚介绍 1、VCC GND 2、XTAL1 2 3、RST 4、EA 5、PSEN 6、ALE 7、RXD、TXD 8、INT0、INT1 9、T0、T1 10、MOSI、MISO、SCK 11、WR、RD 12、通用IO P0 13、通用IO P1 14、通用IO P2 三、51单片机的最小系统 1、供电与…...
RocketMQ文件刷盘机制深度解析与Java模拟实现
引言 在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、…...
python语言基础-5 进阶语法-5.3 流式编程
声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。 5.3 流式编程(参考链接:https://www.zhihu.com/question/59062…...

JVM性能分析工具JProfiler的使用
一、基本概念 JProfiler:即“Java Profiler”,即“Java分析器”或“Java性能分析工具”。它是一款用于Java应用程序的性能分析和调试工具,主要帮助开发人员识别和解决性能瓶颈问题。 JVM:即“Java Virtual Machine”,…...
面试题: Spring中的事务是如何实现的?
Spring中的事务是如何实现的? 背景个人原因的背景正规一点的背景 答案一些思绪和灵感个人理解程度拓展知识Spring的事务管理主要涉及哪几个类?在Spring中,事务管理的流程是怎样的? 背景 个人原因的背景 想换工作, 刷面试题看到的问题, 简单记录一下, 算是个人…...
vue2-代理服务器插槽
解决跨域问题 配置代理服务器 代理服务器位于前端应用(客户端)和真实的后端服务器之间。当配置了代理服务器后,前端应用的请求不再直接发送到后端服务器,而是发送到代理服务器。代理服务器在接收到请求后,会根据预先配置的规则将请求转发到真…...

(python)unittest框架
unittest unnitest介绍 TestCase测试用例 书写真正的用例脚本...
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务 IDS入侵检测系统 Intrusion Detection System 安全检测系统,通过监控网络流量、系统日志等信息,来检测系统中的安全漏洞、异常行为和入侵行为。 分为&am…...
面试小结(一)
1、hashmap的底层设计原理以及扩容规则,是否线程安全,如何线程安全。 底层原理:数组 链表 红黑树。HashMap 的底层实现是一个数组,数组中的每个元素是一个链表或红黑树(JDK 1.8 以后,当链表长度超过一定…...
笔试-笔记2
1.设存在函数int max(int,int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是() A.int mmax(22,59,70); B.int mmax(22,max(59,70)); C.int mmax(max(22,59),70); D.int mmax(59,max(22,70)); 解析…...
html5复习二
知识点: 1、音频标签 <audio controls"controls" loop"loop" preload"auto" src"张恒远 - 追梦赤子心.mp3" muted"muted" > </audio> controls:显示控件 必须写 loop:循环播放&#x…...
大模型呼入机器人系统如何建设?
大模型呼入机器人系统如何建设? 作者:开源呼叫中心系统 FreeIPCC, Github地址:https://github.com/lihaiya/freeipcc 大模型呼叫中心呼入机器人系统的建设是一个涉及多个环节和领域的综合性工程。以下是一个详细的步骤指南,涵盖了…...

docker 部署 kvm 图形化管理工具 WebVirtMgr
镜像构建 官方最后一次更新已经是 2015年6月22日 了,官方也没有 docker 镜像,这边选择咱们自己构建如果你的服务器有魔法,可以直接 git clone 一下 webvirtmgr 的包,没有的话,可以和我一样,提前从 github 上…...

【Unity How】Unity中如何实现物体的匀速往返移动
直接上代码 using UnityEngine;public class CubeBouncePingPong : MonoBehaviour {[Header("移动参数")][Tooltip("移动速度")]public float moveSpeed 2f; // 控制移动的速度[Tooltip("最大移动距离")]public float maxDistance 5f; // 最大…...

Block Successive Upper Bound Minimization Method(BSUM)算法
BSUM优化方法学习 先验知识参考资料1 A Unified Convergence Analysis of Block Successive Minimization Methods for Nonsmooth OptimizationSUCCESSIVE UPPER-BOUND MINIMIZATION (SUM) 连续上限最小化算法THE BLOCK SUCCESSIVE UPPER-BOUND MINIMIZATION ALGORITHM 块连续上…...
力扣2388. 将表中的空值更改为前一个值
一、数据 2388. 将表中的空值更改为前一个值 表: CoffeeShop ---------------------- | Column Name | Type | ---------------------- | id | int | | drink | varchar | ---------------------- id 是该表的主键(具有唯一值的列…...

【从零开始的LeetCode-算法】3233. 统计不是特殊数字的数字数量
给你两个 正整数 l 和 r。对于任何数字 x,x 的所有正因数(除了 x 本身)被称为 x 的 真因数。 如果一个数字恰好仅有两个 真因数,则称该数字为 特殊数字。例如: 数字 4 是 特殊数字,因为它的真因数为 1 和…...

Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置
Redis配置主从架构、集群架构模式 redis主从架构配置 redis主从配置 redis主从架构 redis集群配置 1、主从模式1.1、主节点配置1.2、从节点配置1.3、测试 2、集群模式 1、主从模式 1.1、主节点配置 # 监听所有网络接口 bind 0.0.0.0# cluster-enabled表示为集群模式ÿ…...
2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略 完整参考论文(2)
5.2 问题一模型的建立与求解 5.2.1 分析发展情况 为了更好地理解数据的变化趋势,利用matlab通过六个子图对宠物行业中的关键变量进行了可视化展示。 图 1. 宠物数量变化展示了 猫数量、狗数量 和 总宠物数量 在 2019-2023 年间的变化趋势。结果显示:猫的数量呈逐年上升的趋…...

HTML实现 扫雷游戏
前言: 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块(cube)” 游戏,后经改编出现了 “rlogic” 游戏,玩家需为指挥中心探出安全路线避开地雷。在此基础上,开发者汤姆・安德森编写出了扫雷游戏的…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...