首先,暂时忘记 100 Ω 电阻。按钮的工作不需要它,它只是作为一种保护,以防您出现编程错误。
- 如果按下按钮,P2将直接连接到+5 V,因此将被视为高电平,为“1”。
- 如果释放按钮,+5 V 不再计数,端口和地之间只有 10 kΩ。
微控制器的 I/O 引脚在用作输入时是高阻抗的,这意味着只有很小的泄漏电流流过,通常远小于 1 µA,这将是数据表中的最大值。好的,假设它是 1 µA。然后根据欧姆定律,这将导致电阻两端的电压降为 1 µA \$\times\$ 10 kΩ = 10 mV。所以输入将为0.01 V。这是一个低电平,或“0”。典型的 5 V 微控制器会将低于 1.5 V 的任何电平视为低电平。
现在是 100 Ω 电阻。如果您不小心将引脚输出并将其设置为低电平,则按下按钮会导致短路:微控制器将引脚设置为 0 V,并将开关设置为 +5 V 在同一引脚上。微控制器不喜欢这样,IC可能会损坏。在这些情况下,100 Ω 电阻器应将电流限制为 50 mA。(这仍然有点太多,一个 1 kΩ 的电阻会更好。)
由于不会有电流流入输入引脚(除了低泄漏),电阻上几乎没有任何电压降。
10 kΩ 是上拉或下拉的典型值。较低的值会为您提供更低的电压降,但 10 mV 或 1 mV 并没有太大区别。但还有其他问题:如果按下按钮,电阻上会出现 5 V 电压,因此将流过 5 V/10 kΩ = 500 µA 的电流。这足够低,不会引起任何问题,而且无论如何您都不会长时间按住按钮。但是您可以将按钮替换为开关,该开关可能会关闭很长时间。然后,如果您选择 1 kΩ 下拉电阻,只要开关闭合,您就会有 5 mA 通过电阻器,这有点浪费。10 kΩ 是一个很好的值。
请注意,您可以将其倒置以获得上拉电阻,并在按下按钮时切换到接地。
这将颠倒你的逻辑:按下按钮会给你一个“0”而不是一个“1”,但工作是一样的:按下按钮将使输入为 0 V,如果你松开按钮,电阻器将连接输入到 +5 V 电平(电压降可忽略不计)。
这是通常的做法,微控制器制造商会考虑到这一点:大多数微控制器都有内部上拉电阻,您可以在软件中激活或停用它。如果您使用内部上拉,您只需将按钮接地,仅此而已。(一些微控制器也有可配置的下拉,但这些不太常见。)