STM8S单片机——硬件消抖

按键硬件消抖原理:

利用电容充放电特性来实现,因为电容为储能元件。它两端的电压不能出现突变,即有一个充放电的过程,利用这个充放电时间来维持电平稳定从而抵消由于机械抖动引起的误操作。

下降沿触发电路:

STM8S单片机——硬件消抖

上升沿触发电路:

STM8S单片机——硬件消抖

 

STM8S手册中IO口的逻辑电平规定

在stm8s003f3.pdf手册的第66页“I/O port pin characteristics”章节中有提到

STM8S单片机——硬件消抖

根据手册查到的逻辑“0”:0V~0.3*VDD,为什么不说0.3V因为我们电路中没有负电源。逻辑“1”:0.7*VDD~VDD + 0.3V

RC电路充电计算公式:

Vt = V0 + (Vu – V0) * [1 – exp( -t/RC)]

如果电容上的初始电压为0,则公式可以简化为:

Vt = Vu * [1 – exp( -t/RC)]

其中:Vu为电源电压、V0为电容上的初始电压值、Vu为电容充满电后的电压值、Vt为任意时刻t时电容上的电压值

RC电路放电计算公式:

Vt = Vu * exp( -t/RC)

注意:这里我们采用“下降沿触发”方式,所以这里得使用"RC电路放电计算公式“。

解释:根据”下降沿触发“电路分析:普通状态下电容已经被充满电了,当按下按钮时电容的放电回路接通。电容通过R放电此时按钮左端的电平不会马上为0,而是缓慢降为0。如果只是由于抖动而接通放电回路,由于机械抖动时间短我们的电容还在放电中。所以可以抵消由于抖动的误触发。注意:放电电阻R取值不能过大。原因可以参考上下拉电阻

计算得到RC值范围:

STM8S单片机——硬件消抖

结果:

经过计算得到R电阻取值为1KΩ,电容C取值为2uF