第6课(上):数字电路基础,0 和 1 的世界

硬件学习路线 · 第六课分两部分 · 本页讲数字的表示、逻辑门和电平;下一页讲触发器、时钟和计数器

一、模拟与数字:两种世界观

前面五课,我们处理的大多是模拟量:电压可以是 1.234 V,也可以是 1.2345 V,它是连续变化的。而数字电路把世界简化成两个状态:高(1)和低(0)。

📈
模拟量连续变化,像水银温度计的液柱,精度受噪声影响大
🔢
数字量只分高低两档,像电灯的开和关,抗干扰能力强
类比:模拟信号像一个可以随意滑动的音量旋钮,你能听出 37% 和 38% 的区别;数字信号像一个只有"开"和"关"的按钮,但正因为只有两种状态,即使有一点噪声,只要不超过"判断门槛",它的意思就不会变。这正是计算机、单片机、手机都用数字的原因。

1.1 数字电路的三个优点

代价:数字系统必须把模拟世界"翻译"成 0 和 1,这要靠 ADC(模数转换);反过来要靠 DAC(数模转换)。我们前面学的运放、比较器,常常就是这座桥的一部分。

二、二进制:只用 0 和 1 数数

我们平时用的十进制,每一位有 10 种可能(0 到 9)。二进制每一位只有 2 种可能(0 和 1),所以逢二进一。

2.1 位权:每一位值多少?

二进制的每一位都有一个"位权",从右往左依次是 2⁰、2¹、2²、2³……

位8 位76543210
位权2⁷=1286432168421—

例:二进制 1011 的值是 8 + 2 + 1 = 11(十进制)。

2.2 动手拨一拨:点击每一位

点击下面的位,让它在 0 和 1 之间切换,观察十进制值如何变化。

二进制-
十进制-
十六进制-

2.3 为什么电路偏爱二进制?

电路只需要区分"高"和"低"两种状态,用二进制最直接:一根线表示一位。如果用十进制,就需要区分 10 种电压档位,既复杂又容易出错。

位数决定范围:n 位二进制最多能表示 2ⁿ 个数,范围是 0 到 2ⁿ − 1。8 位能表示 0 ~ 255,16 位是 0 ~ 65535,32 位是 0 ~ 4294967295。这就是"8 位单片机""32 位单片机"名字的由来。

三、十六进制与 BCD:给二进制"瘦身"

3.1 十六进制:一位表示四位二进制

二进制太长,读起来费劲。十六进制用 0–9 和 A–F 共 16 个符号,每一位正好对应 4 位二进制:

十六进制01234567
二进制00000001001000110100010101100111
十六进制89ABCDEF
二进制10001001101010111100110111101111

例:0xA5 = 1010 0101 = 128 + 32 + 4 + 1 = 165。写程序时看到 0x 开头,就是十六进制。

常见误会:0x10 不是十进制的 10,而是 16。在单片机寄存器配置里,这一点错了整个外设都会出问题。

3.2 BCD 码:用二进制存十进制数字

BCD(Binary-Coded Decimal)是每一位十进制数字单独用 4 位二进制表示。例如十进制 25 写成 BCD 就是 0010 0101。它常用于数码管显示和时钟芯片,因为"看到的数字"和"存的数字"可以一一对应。

四、电平:0 和 1 在电路里长什么样

数字电路里,"0"和"1"并不是精确的 0 V 与 5 V,而是一个电压范围。电压落在哪个范围,就被判为哪一种状态。

4.1 判断门槛

VIH(输入高电平最小值):高于它,一定被认为是 1 VIL(输入低电平最大值):低于它,一定被认为是 0 中间区域:不确定,电路可能误判,必须避免 输出端同样有 VOH(输出高)与 VOL(输出低)的规定

4.2 动手拨一拨:电压落在哪个区?

拖动滑块设定输入电压,看它落在"低""不确定""高"哪个区间。切换 5 V 系统和 3.3 V 系统,观察门槛的不同。

输入电压-
判断结果-
门槛(VIL / VIH)-
系统低电平(VIL 上限)高电平(VIH 下限)备注
5 V CMOS(如 74HC)约 1.5 V 以下约 3.5 V 以上门槛约为电源的 30% 与 70%
5 V TTL(如 74LS)0.8 V 以下2.0 V 以上老式经典,门槛较宽
3.3 V 系统约 1 V 以下约 2.3 V 以上单片机常用,门槛随电源变化
噪声容限:一个门的输出高电平(如 4.4 V)与下一个门的输入高门槛(如 3.5 V)之间的差,就是"噪声容限"。差得越大,电路越能容忍干扰。这就是为什么输出必须比门槛"更彻底"地拉高或拉低。
一个经典事故:3.3 V 单片机的输出,接到 5 V 系统的输入。3.3 V 的高电平对 5 V 系统来说可能达不到 VIH,导致通信失败。这种时候要做电平转换(如用三极管、电平转换芯片)。

五、基本逻辑门:数字世界的"积木"

逻辑门是对 0 和 1 做运算的最小单元。它的输入和输出都是 0 或 1,关系用真值表描述。

✖️
与门 AND所有输入都为 1,输出才为 1。像两个开关串联。
➕
或门 OR只要有一个输入为 1,输出就为 1。像两个开关并联。
🔁
非门 NOT输入取反:1 变 0,0 变 1。最简单的"反向器"。

5.1 动手试一试:选择门,切换输入

选择一种门,点击 A、B 切换输入,观察输出灯的变化。表格中当前的输入组合会高亮。

5.2 与门 AND:串联开关

想象两个开关串联接在电池和灯之间,只有两个开关都闭合,灯才亮。这就是与门。在单片机里,它常用于"条件同时满足才动作",例如:温度够高 与 按钮被按下,才启动风扇。

5.3 或门 OR:并联开关

两个开关并联,任何一个闭合,灯就亮。例如:报警按钮按下 或 温度超限,任一条件成立就报警。

5.4 非门 NOT:取反

非门把信号反过来。它常用于产生"反相"的控制信号,比如第4课讲过的 NPN 三极管驱动,输入高时输出低,就是一种非门的效果。

六、组合逻辑门:NAND、NOR、XOR

6.1 与非门 NAND:先与再非

NAND 就是 AND 的输出再取反。它的神奇之处在于:只用 NAND 门,就能搭出任何逻辑电路。这让它成为芯片设计里最常用的"通用门"。

6.2 或非门 NOR:先或再非

NOR 也是通用门,同样可以搭出任何电路。在一些 CMOS 结构和存储器里很常见。

6.3 异或门 XOR:两者不同才为 1

XOR(exclusive OR)的规则是:输入不同,输出为 1;输入相同,输出为 0。它是加法器的基础:一位二进制相加,本位和就是 XOR 的结果。

XOR 的小技巧:一个数与 1 异或会翻转它的最低位。这个性质在 LED 闪烁、奇偶校验、简单加密中都会用到。

6.4 同或门 XNOR:两者相同才为 1

XNOR 是 XOR 取反,常用于比较两个数是否相等。如果两个输入相同,输出为 1。

七、布尔代数与德摩根定律

逻辑运算有一套代数规则,叫布尔代数。它让我们能像化简数学式子一样,化简电路。

7.1 常用符号

运算写法含义
与A · B 或 AB两者都为 1 时为 1
或A + B任一为 1 时为 1
非Ā(A 上面一横)取反
异或A ⊕ B两者不同时为 1

7.2 几条基本规则

7.3 德摩根定律:最有用的一条

¬(A · B) = Ā + B̄ (与非 = 非 A 或 非 B) ¬(A + B) = Ā · B̄ (或非 = 非 A 与 非 B) "断开那根线、取反,与变或,或变与"——这就是德摩根定律的口诀
生活例子:"不是(又高又帅)" 等于 "不高 或者 不帅"。把"与"换成"或",两个条件各自取反,这就是德摩根。

7.4 化简例子

原式 F = A·B + A·B̄,提取公因子 A:F = A·(B + B̄) = A·1 = A。原本需要 3 个门的电路,化简后只剩一根线。

工程意义:化简能省门电路、省引脚、省电,还能减少出错的机会。芯片设计和 PLC 编程中,化简都是必修课。

八、用逻辑门解决实际问题

8.1 例子:三人表决器

三个人投票,两人及以上同意,议案通过。设 A、B、C 为 1 表示同意,输出 F 为 1 表示通过:

F = AB + BC + AC 只要任意两个同意,F 就为 1。可以用 AND 与 OR 门搭出来

8.2 例子:楼梯灯双控开关

楼上楼下两个开关都能控制同一盏灯。这就是 XOR 的典型应用:两个开关的状态"不同"时,灯亮;"相同"时,灯灭。

8.3 例子:按钮去抖与使能控制

单片机引脚接一个按钮,只有当"按钮按下"且"系统允许工作"两个条件同时满足,才执行动作。这就是 AND:

动作 = 按钮 · 使能

8.4 例子:用与门做"选通"

让一个信号 S 只在 EN 为 1 时才通过:输出 = S · EN。EN 相当于"闸门开关"。这在多路数据选择、总线控制中非常常见。

设计习惯:先用一句话写清楚"什么条件下输出为 1",再把它写成与或式,最后化简、选门。很多复杂的数字电路,都是这样一步步拆出来的。

九、输出结构:推挽、开漏与上拉

前面几课的三极管、MOS 管,在数字电路里有两种典型的输出结构,这是单片机 IO 口配置时经常遇到的问题。

9.1 推挽输出(Push-Pull)

输出端有一个上管和一个下管,轮流导通:输出高时上管导通、下管截止;输出低时反过来。它既能拉高也能拉低,速度快、驱动能力强,是大多数单片机 IO 的默认模式。

9.2 开漏输出(Open-Drain)

输出只有下管,没有上管。它只能拉低,或者"放开"(高阻态)。要得到高电平,必须外接一个上拉电阻到电源。

类比:推挽像一个会推也会拉的人;开漏像一个只会拉、松手后靠弹簧(上拉电阻)弹回来的人。好处是多个设备可以共用一根线(如 I²C),谁拉低,线就是低,互不冲突。

9.3 上拉与下拉

悬空输入是大忌:数字输入脚悬空时,它会受到周围噪声影响,在高低之间乱跳,还会增加功耗。不用的输入脚,要接上拉或下拉,不能空着。

十、小测验:数字基础

十一、本节小结

下一页:第6课(下):触发器、时钟与计数器