51单片机基本电路_2
030.1.2 51单片机基本电路(2)
P0=0XFF;
P0=0XFE;
sbit LED1 = P0^1;
LED1 = 1;
一、复位按键电路
- 本节继续对照开发板实物和原理图,重点分析复位按键、上电复位、指示灯、电源开关、3.3V 稳压、OLED 接口、用户 LED,以及 51 单片机最小系统和寄存器。
- 本板所用 STC89C52RC 的
RST是高电平有效复位。判断复位极性时,应结合芯片数据手册和开发板原理图:RST 达到规定的高电平并保持足够时间后,单片机进入复位状态。
1.1 复位按键电路的构成与原理
- 复位电路由 SW2、C8(100nF)、R4(10kΩ)和网络标号
RST组成。原理图中复位模块旁的RST,与主控芯片 U2 的RST引脚是同一个电气节点,即使图上没有画一根贯穿整页的长导线,它们仍然相连。 - R4 从 RST 接到 GND,是下拉电阻,不是上拉电阻。它保证没有复位动作时 RST 稳定为低电平,使单片机正常运行,避免引脚悬空后受干扰而误复位。
- 按下 SW2 后,开关把 +5V 以很小的导通电阻连接到 RST,使 RST 变为接近 +5V 的高电平,单片机进入复位状态。+5V 同时会经 R4 流向 GND,但 R4 将这股电流限制在约
5V / 10kΩ = 0.5mA,所以这不是把电源直接短路到地。 - RST 是一个高阻抗逻辑输入,主要检测电压高低;它自身只需要很小的输入电流。复位的关键是让 RST 电压超过芯片规定的高电平门限并保持足够时间,而不是向 RST “灌入很大电流”。
RST(接 U2 的复位引脚)
●
│
+5V ───── SW2(按下约等于 0Ω)───────┤
│
R4 10kΩ
│
GND
按下:RST ≈ +5V,复位有效
松开:R4 把 RST 拉到 0V,复位释放,程序开始运行
- 在上图中,按键是“上拉路径”,R4 是“下拉元件”。“上拉/下拉”描述的是元件把节点拉向哪个电源轨,不能仅凭电阻画在图的上方还是下方判断。
1.2 复位按键电路的实例讲解
- 按键未按下时,SW2 的 +5V 路径断开,R4 把 RST 保持在低电平,单片机正常运行。
- 按键按下时,SW2 闭合,RST 被低阻抗的 +5V 电源拉成高电平,单片机执行复位。按住期间复位状态持续,松开后 RST 回到低电平,CPU 从复位入口重新开始执行程序。
- 按键闭合后存在下面这条完整电流回路:
+5V → SW2 → R4 → GND。RST 引脚只是接在 SW2 与 R4 的中间节点上检测电压,并不串联在主电流回路中。
| SW2 状态 | RST 电压 | 单片机状态 | 主要原因 |
|---|---|---|---|
| 松开 | 约 0V,低电平 | 正常运行 | R4 将 RST 下拉到 GND |
| 按下 | 接近 5V,高电平 | 保持复位 | SW2 以远小于 10kΩ 的电阻把 RST 接到 +5V |
| 松开后的瞬间 | 由高电平回落到低电平 | 退出复位并重新启动程序 | R4 为 C8 放电并恢复默认低电平 |
- 复位不会清除已经烧入 Flash 的程序。它主要让 CPU、程序计数器和相关寄存器回到规定初始状态,然后从程序入口重新运行;RAM 和各外设在复位后的具体状态应以芯片手册为准。
1.3 例题1: 复位按键电路中高电平产生的原因
- 老师用两个电阻分压帮助理解按键按下后的 RST 电压。正确的等效关系是:上方的按键导通电阻
R_SW近似为 0Ω,下方的 R4 为 10kΩ,RST 位于两者中间。
+5V ───── R_SW(按下时近似 0Ω)─────● RST ───── R4 10kΩ ───── GND
-
忽略 RST 的微小输入电流后,可按分压公式估算:
V_RST = 5V × R4 / (R_SW + R4) -
当按键导通电阻远小于 10kΩ 时,
V_RST ≈ 5V × 10kΩ / (0Ω + 10kΩ) ≈ 5V,因此 RST 被识别为高电平。视频中的“约 4.99V”只是为了说明按键电阻相对 10kΩ 很小,并非每块板都固定测得 4.99V。 -
不能把 10kΩ 电阻和按键在分压模型中的位置颠倒。如果 10kΩ 位于 +5V 一侧,而 RST 又通过近似 0Ω 的按键接地,那么 RST 会接近 0V,不可能形成有效的高电平复位。
-
R4 既能在松开按键时给 RST 一个确定的低电平,也能在按下时限制 +5V 到 GND 的电流。这说明电阻可能同时承担“确定默认逻辑状态”和“限制电流”两个作用。
1.4 例题2: 上电复位电路的原理
- 上电复位是指开发板刚接通电源时,不需要按键,C8 与 R4 自动让 RST 短暂出现高电平,使单片机先进入一个确定的复位状态,再开始执行程序。
- 电容两端电压不能突变。断电较久时 C8 基本没有电荷;+5V 从 0V 突然上升时,C8 会把这个电压变化耦合到 RST,使 RST 也先跃升到接近 +5V。随后 C8 逐渐充电,R4 把 RST 电压逐渐拉回 0V,复位随之结束。
C8 100nF
+5V ───────────────────||────────● RST ─────► U2
│
R4 10kΩ
│
GND
上电瞬间:C8 两端电压不能突变 → RST 跟随 +5V 上升 → 自动复位
稍后: C8 逐渐充电,R4 下拉 → RST 衰减到 0V → 退出复位
-
在理想化 RC 模型中,RST 的衰减可近似写成
V_RST(t) ≈ 5V × e^(-t/(R4×C8))。本图时间常数约为:τ = R4 × C8 = 10kΩ × 100nF ≈ 1ms -
经过 1 个时间常数时,RST 约降到初值的 36.8%;经过约 5 个时间常数时已接近 0V。真正有效的复位持续时间还与芯片的高电平门限、电源上升速度、元件误差和内部复位设计有关,不能只机械地认定为 1ms。
-
“电容上电瞬间等于闭合、充满后等于断开”只是直流入门模型。更准确地说,电容允许电压变化所产生的瞬态电流通过,稳态直流下电流趋近于零,但电容仍然连接在电路中,并没有变成机械开关。
-
本板同时具备两种复位方式:C8、R4负责上电自动复位;SW2负责手动按键复位。两者最终都作用在同一个 RST 节点上,且都是高电平有效。
二、指示灯
- 板上这组三个状态指示灯包括:电源指示灯 LD1(红色)、串口发送指示灯 LD2(TX,蓝色)和串口接收指示灯 LD3(RX,绿色)。它们与右下角由程序控制的 LED1~LED4 是两组不同的灯。
- LD1、LD2、LD3 分别串联 R5、R6、R7,三个电阻均为 1kΩ。LED 是有方向的二极管,只有在正向偏置且电流达到一定大小时才会发光;串联电阻用于限制电流,防止 LED 和信号引脚过流。
电源灯:+5V ── R5 1kΩ ──► LD1 ──► GND_U
发送灯:+5V ── R6 1kΩ ──► LD2 ──► TX
接收灯:+5V ── R7 1kΩ ──► LD3 ──► RX
- 电源灯的两端存在稳定压差,电流经
+5V → R5 → LD1 → GND_U形成闭合回路,所以供电正常时持续点亮。 - TX、RX 串口线空闲时通常为高电平,LED 两端压差很小,灯熄灭;线路出现低电平脉冲时,相应信号端吸收电流,LED 短暂点亮。串口数据变化很快,人眼看到的是闪烁或亮度变化,而不是每一个比特。
- LED 电流可粗略估算为
I_LED ≈ (5V - V_F) / 1kΩ。例如红灯正向压降约 2V 时,电流约 3mA;蓝、绿灯的正向压降通常更高,电流会略小。实际值受 LED 型号、电源电压和信号端电压影响。 - “有电压差才可能产生电流”是必要条件,但还必须有闭合路径。只测到某点相对 GND 是 5V,并不代表任意接上的器件都会有电流流过。
三、电源开关
- SW1 是实物板上的黑色电源开关。原理图中输入电源网络名为
VCC,开关闭合后它与板内+5V网络相连;断开后主要板载电路失电。因此VCC与+5V在本图中不是任何时候都无条件相连。 - 四个 M3 螺丝孔只用于机械固定,不参与电气连接。安装金属螺柱时仍要避免螺柱或垫片碰到附近焊盘造成短路。
- 板上有两排 25 针排针/排插,用于通过杜邦线引出 P0~P4、+5V、+3.3V 和 GND,与其他传感器或模块连接。PDF 中残留了
1x21的文字属性,但图上编号到 25,SchDoc 元件属性也显示为 25 针;接线前仍必须核对实物丝印、供电电压、信号方向和接口针序。 - 板上共有一个复位按键 SW2,以及两个独立用户按键 SW3、SW4,即总计三个按键。SW3、SW4 分别连接 P3.2、P3.3,按下时把端口接到 GND,所以用户按键也是低电平有效。
- U3 是 AMS1117-3.3 线性稳压器,将 +5V 稳压为 +3.3V。C11(10µF)与 C12(100nF)位于输入侧,C13(10µF)与 C14(100nF)位于输出侧:较大电容负责储能和抑制较慢波动,100nF 电容主要旁路高频噪声并帮助稳压器稳定工作。
U3:AMS1117-3.3
+5V ──┬── C11 10µF ──┐ IN ┌────────┐ OUT ┌── C13 10µF ──┬── +3.3V
└── C12 100nF ─┴────►│ 稳压器 │──────┴── C14 100nF ─┘
└────┬───┘
│ GND
GND
- 线性稳压器不会把多余电压高效转换成电流,而是主要把压差消耗为热量,近似功耗为
P_loss = (5V - 3.3V) × I。例如负载为 100mA 时约产生 0.17W 热量;负载继续增大时还要考虑 AMS1117 的压差、封装散热和开发板承载能力。 - OLED 插座 P1 的四个引脚是 GND、VCC(本图接 +5V)、SCL(P1.5)和 SDA(P1.4)。SCL 是 I²C 时钟线,SDA 是 I²C 数据线;I²C 通常依赖上拉电阻,使用前要确认 OLED 模块是否自带上拉并支持板上提供的电源和逻辑电平。
- 右下角四个用户 LED 分别由 P1.0、P1.1、P1.2、P1.3 控制,不是 P0.0~P0.3。每一路结构均为
+5V → LED → 10kΩ 限流电阻 → P1.x,因此 P1.x 输出低电平时点亮,输出高电平时熄灭。
+5V ──► LED1 ──► R8 10kΩ ──► P1.0
+5V ──► LED2 ──► R9 10kΩ ──► P1.1
+5V ──► LED3 ──► R10 10kΩ ──► P1.2
+5V ──► LED4 ──► R11 10kΩ ──► P1.3
P1.x = 0:电流流入 MCU 引脚并回到 GND,LED 亮
P1.x = 1:引脚接近 +5V,LED 两端压差很小,LED 灭
四、51单片机最小系统
- 51 单片机最小系统是让芯片能够稳定执行已写入程序所必需的基本硬件。本课程将它概括为四部分:单片机芯片、时钟电路、复位电路和电源。下载器、LED、按键、蜂鸣器和 OLED 便于开发或实验,但不是程序烧入后维持 CPU 运行的最小必需部分。
┌─────────────────────────┐
+5V/GND 与去耦 ─►│ 电源 │
11.0592MHz 晶振 ─►│ XTAL1 / XTAL2 │
RC 与复位按键 ───►│ RST STC89C52RC 端口 ├──► 可选外设
└─────────────────────────┘
供电稳定 + 时钟起振 + 先复位再释放 = CPU 从确定状态执行程序
4.1 单片机芯片
- 本板主控 U2 是 STC89C52RC,采用 LQFP44 封装,内核兼容传统 8051。配套数据手册中 STC89C52 对应 8KB Flash 程序存储器和 512B SRAM,课程思维导图也标出了这两个容量。
8KB = 8 × 1024 = 8192B;512B 只有 0.5KB。容量虽然远小于电脑,但嵌入式程序通常直接面向固定任务,所需资源也远少于桌面操作系统。- Flash 是非易失性存储器,断电后内容仍保留,主要存放烧录进去的程序和只读常量,可类比电脑硬盘,但两者接口、性能和用途并不相同。
- SRAM 是易失性数据存储器,断电后内容丢失,程序运行时用于变量、栈和临时数据,可类比电脑内存。电脑内存属于 RAM,而不是 ROM;ROM/Flash 与 RAM 的掉电保持能力和用途不同,不能混为一谈。
- RAM 通常适合频繁读写,而 Flash 擦写更慢且有寿命限制。CPU 从片内 Flash 取指的具体速度会受到芯片结构和时钟设计影响,因此“RAM 一定比 Flash 快很多”只能作为粗略类比,不能代替数据手册中的时序参数。
4.2 时钟电路
- 时钟电路是最小系统的“节拍器”。本板 X1 为 11.0592MHz 晶体,跨接在 XTAL1 与 XTAL2 之间,C9、C10 各为 22pF 并接地。
- 晶体本身不会单独输出时钟。它与单片机内部振荡放大器及两只负载电容共同构成振荡器,稳定的周期信号再被芯片内部整形和分频,供 CPU、定时器及串口等模块使用。11.0592MHz 容易分频得到常用 UART 波特率,所以传统 51 开发板经常使用这个频率。
U2 内部振荡放大器
┌────────────────────────┐
XTAL2 │ │ XTAL1
o───┤◄────── 放大/反馈 ──────┤───o
│ └────────────────────────┘ │
└──────── X1 11.0592MHz ─────────┘
│ │
C9 22pF C10 22pF
│ │
GND GND
- 复位电路同样属于最小系统:上电时让 CPU 进入规定初态,随后释放复位,避免芯片从不确定状态开始运行。本板既有 C8、R4组成的上电复位,也有 SW2 手动复位。
4.3 电源
- 本开发板把 STC89C52RC 工作电源设计为 +5V。配套手册中 STC89C52 的工作电压范围标为约 3.8~5.5V,但实际设计仍要满足电源稳定度、I/O 电平和时钟条件,课程实验按板载 +5V 使用。
- 板上的 +3.3V 是 AMS1117-3.3 为外部模块引出的另一电源,不代表主控芯片本身改为 3.3V 供电。
- STM32、GD32 等 32 位单片机常见的 I/O 与主电源是 3.3V,但不同系列允许范围和 5V 容忍引脚并不相同。连接 5V 的 51 开发板与 3.3V 模块时,不能默认所有信号都可直接相连,应查阅双方数据手册,必要时增加电平转换。
- 芯片供电不仅要接 VCC 和 GND,还要在电源引脚附近放置去耦电容,为高速开关瞬间提供局部电流并把高频噪声旁路到地。只有“电压数值正确”而没有良好回流与去耦,单片机仍可能复位、跑飞或通信异常。
4.4 单片机内部框图
- 单片机不是只有一个“计算内核”。芯片内部还集成程序存储器、数据存储器、寄存器、GPIO、定时器、串口、中断控制器和看门狗等模块,它们通过内部总线协同工作。
┌───────────────┐
│ 80C51 CPU内核 │
│ 运算、取指、控制 │
└───────┬───────┘
│ 内部地址/数据/控制总线
┌──────────────┬───────┼────────┬───────────┐
▼ ▼ ▼ ▼ ▼
8KB Flash 512B SRAM SFR 中断控制器 看门狗
程序与常量 变量与栈 寄存器 统一响应事件 异常时复位
│
┌───────────────┼──────────────┐
▼ ▼ ▼
P0~P4 GPIO 定时器/计数器 UART 串口
连接外部引脚 计时和计数 收发数据
- 内核负责取指、译码、运算和流程控制;外设负责与现实世界打交道。例如 GPIO 控制 LED,定时器产生时间基准,UART 与 CH340 通信,中断控制器在事件到来时通知 CPU。
- “外设”不一定在芯片外面。这里的 GPIO、定时器、UART 和看门狗都是片内外设;板上的 LED、按键、蜂鸣器和 OLED 才是片外器件。两者通过芯片引脚连接。
- 学习 51 的重点通常是通过寄存器使用这些片内外设。以后学习 STM32、GD32 时仍会遇到 GPIO、定时器、中断和串口,只是寄存器数量、时钟树、功能复用和配置过程更复杂,底层思想可以迁移。
4.5 寄存器部分
- 寄存器是芯片内部可被 CPU 快速访问的存储单元。某些寄存器保存普通数据,另一些特殊功能寄存器(SFR)直接连接硬件控制逻辑;给它们写入不同的值,就能配置端口、定时器、串口或中断。
- 传统 51 的一个 SFR 数据宽度通常为 8 位,即 8bit = 1byte,每一位只能是 0 或 1,整个字节可表示
00000000B~11111111B,也就是0x00~0xFF。这里的“8位”描述的是一次存放的数据宽度,不是“有一个8位地址”。 - 常见 SFR 包括 P0、P1、P2、P3、TCON、TMOD 和 IE 等:端口寄存器控制 I/O,引导程序通过 TMOD/TCON 配置定时器,通过 IE 控制中断允许状态。
- 视频给出的直接访问示例已原样放在本文标题下方:
P0=0XFF;把 P0 的 8 位全部写为 1;P0=0XFE;写入二进制11111110,使 P0.0 为 0、其余位为 1。经典 8051 的 P0 口作为普通 I/O 时还需要外部上拉,本开发板由 RN1、RN2 提供上拉。 - 位操作示例
sbit LED1 = P0^1;是 Keil C51 扩展语法,用于给 P0.1 定义一个名为 LED1 的位变量;LED1 = 1;随后只修改这一位。这里的 LED1 只是示例变量名,并不表示本板右下角的物理 LED1 接在 P0.1——正式原理图显示四个用户 LED 实际接在 P1.0~P1.3。 - 只有支持位寻址的寄存器才能用这种方式操作单个位。P0~P3、TCON、IE 等属于可位寻址 SFR,而 TMOD 不能直接使用
sbit为其中某一位建立别名;操作前必须查询芯片手册。 - 直接给整个寄存器赋值会同时覆盖其中 8 位。如果只想改变某一位而保留其余位,除位寻址外还可使用按位与、按位或等“读—修改—写”方法,但要留意某些硬件寄存器读写具有特殊副作用。
- STM32、GD32 等通常称为 32 位 MCU,是因为其 CPU 内核和主要数据通路按 32 位设计,很多外设寄存器也是 32 位,但并不意味着芯片中每一个寄存器都只能是 32 位;具体宽度和有效位仍应以参考手册为准。
五、本课原理图勘误清单
- 复位极性:RST 是高电平有效。SW2 按下把 RST 接到 +5V,R4 是下拉;字幕中把它说成“拉低复位”的地方应改为“拉高复位”。
- 用户 LED 端口:板载 LED1~LED4 实际连接
P1.0~P1.3,不是P0.0~P0.3。标题下的sbit LED1 = P0^1是寄存器位操作示例,不是本板 LED1 的实际接线。 - 排针数量:两侧扩展排针按工程文件和图中编号均为 25 针;PDF 中的
1x21是元件文字属性残留,不能用来制作 21 针线束。 - 稳压器名称:U3 是 AMS1117-3.3 线性稳压器,作用是把 +5V 降为 +3.3V,不是交流电意义上的“变压器”。
- 两个 Type-C 口:USBC1 承担下载和供电,USB1 只有供电连接。不能因为外形相同就认为 USB1 也能烧写程序。
- 电源电流:视频中的“USB 最大 500mA”只能作为传统 USB 2.0 的入门级近似,不能当作本开发板或所有 Type-C 接口的保证值;实际还要看 USB 电源、线材、D1、板载负载和外接模块。
- P0 排阻:RN1/RN2 可以确定用于给 P0.0~P0.7 提供约 10kΩ 外部上拉;具体型号内部是共端型还是独立电阻阵列,应查
MNR14E0APJ103数据手册或对实物断电测量,不在正文中绝对断言。 - OLED 电源:插座文字虽然写
VCC,但原理图电源符号接的是+5V;OLED 模块是否允许 5V,以及 SDA/SCL 上拉到哪个电压,需要看模块规格。 - 网络标号:同名
P1.0、P3.1等表示同一网络,紫色虚线只是分区辅助线;但VCC、+5V、GND_U、GND是不同网络名,不能仅凭符号外观合并。