2.7 数字电路入门
单片机的世界只有两个数字:1 和 0,对应高电平和低电平。这一节讲清楚什么算“高”、什么算“低”,3.3 V 和 5 V 的芯片能不能直接连,以及按键旁边为什么总有一个上拉电阻。
高电平和低电平#
模拟电路关心电压“具体是多少伏”;数字电路只关心“是高还是低”:
- 高电平(High,1):电压接近电源电压。3.3 V 的芯片,大约 2.3 V 以上算高。
- 低电平(Low,0):电压接近 0 V(GND)。大约 1 V 以下算低。
- 中间那段是不确定区:芯片可能读成 1 也可能读成 0,设计时要避免信号停在这里。
具体门槛每颗芯片不一样,写在规格书的“电气特性”里(2.14),常见的 CMOS 芯片大致是:高于约 0.7 × 电源电压算高,低于约 0.3 × 电源电压算低。
3.3 V 逻辑和 5 V 逻辑能直接连吗#
芯片的“逻辑电平”一般就是它的供电电压。现在的单片机(包括 ESP32-C3)大多是 3.3 V 逻辑,老一些的芯片、很多模块是 5 V 逻辑。两者相连时要想两个问题:
| 方向 | 会怎样 | 怎么办 |
|---|---|---|
| 5 V 芯片 → 3.3 V 芯片 | 5 V 的高电平可能超过 3.3 V 芯片能承受的电压,有烧坏的风险(ESP32-C3 的 IO 不能直接接 5 V 信号) | 用分压电阻降一下(2.3),或用电平转换芯片 |
| 3.3 V 芯片 → 5 V 芯片 | 不会烧,但 3.3 V 对 5 V 芯片来说可能不够“高”,读不出 1 | 看对方规格书的高电平门槛;不够就加电平转换 |
上拉电阻和下拉电阻#
按键接单片机,最直观的想法是:按键一头接 GPIO 引脚,一头接 GND,按下就是低电平。那松开时呢?这时引脚什么都没接,叫做悬空(Floating)——它的电压会随周围干扰飘来飘去,程序读到的值时 0 时 1,好像有人在乱按。
解决办法:用一个电阻把引脚“拉”到 3.3 V。松开时引脚通过电阻接到 3.3 V,读到 1;按下时引脚被按键直接接到 GND,读到 0。这个电阻就叫上拉电阻。切换三种接法试一试:
- 为什么用电阻,不直接接 3.3 V? 直接接的话,按下按键 = 3.3 V 直接短路到 GND(在演示里选“换成导线”试试)。电阻限制了电流:10 kΩ 时只有 0.33 mA。
- 阻值怎么选? 一般 4.7 kΩ~10 kΩ。太大了“拉”得不够有力,容易受干扰;太小了按下时浪费电流。
- 下拉电阻就是反过来:电阻接 GND,按键接 3.3 V,松开读 0、按下读 1。
- 内部上拉:很多单片机引脚内部自带可以打开的上拉 / 下拉电阻,程序里设置一下就行,可以省掉外部电阻。
信号和时钟#
- 信号:在导线上传递信息的高低电平变化。比如按键信号、LED 控制信号、串口数据。
- 时钟(Clock):一种特殊的信号——非常有规律的高低交替(方波),像节拍器,数字电路按它的节奏一步一步工作。单片机内部的时钟每秒跳上亿次(ESP32-C3 最高 160 MHz),由晶振提供基准(2.4 晶振)。
- 案例 A 的 NE555 产生的方波(约 1.5 Hz)也可以看作一个很慢的“时钟”,只不过它的用途是让 LED 交替闪烁。
按键一端接单片机引脚、另一端接 GND,没有接任何电阻。松开按键时引脚会读到什么?
✅ 引脚悬空,电压不确定。需要上拉电阻(外部或芯片内部)把它固定在高电平。
一个 5 V 供电的传感器,输出信号要接到 ESP32-C3 的 IO 口。直接连有什么风险?
✅ 要先降到 3.3 V 以内,比如用分压电阻或电平转换芯片。
回到哪里继续#
- 案例 B 的原理图(RESET / BOOT 按键、上拉电阻):回到 B-2 分模块画原理图。
- 继续:2.8 单片机入门。
- 回到案例 A:A-0 电路原理。