防静电用稳压管之类钳位元件保护的话,通常只能保护元件不会损坏,而不能保证信号不出错,
抗干扰的目的则是保证信号不出错.
想要既能防静电又能不出错,得综合考虑软硬件保护和滤波方案.
楼主现在 硬件很稳定,
MCU能稳定的检测到【静电产生的按键值】,硬件水平很高;
现在就是软件将这个不需要的 【静电产生的按键值】剔除就行。
神农鼎 发表于 2025-10-20 11:37
STC8H8K64U 的 HBM-ESD是 8000V以上,最高的那一节;
原理图的PDF 贴上来,大家帮分析,
已上图,求指点。 你这种情况,不是MCU扛不了静电,MCU工作正常,只是静电干扰了你读IO,
即,在你读IO时,没有按键,但是静电干扰刚好让IO的电平为按下键的电平,你的程序没有任何抗干扰处理的话,就会误认为是按键按下。
我推荐的方法是,每个按键状态对应一个位,我一般用正逻辑,即按下状态为1,未按键状态为0。比如64个按键,使用8个字节表示其状态。
每隔10ms扫描一次键盘保存键状态,我常使用3次比较,即使用数组KeyState做先进先出缓冲:
每10ms扫描一次,状态放KeyState;
if(++ScanIndex >= 3) ScanIndex = 0;
对过去3次读取到的状态进行判断,每个键都独立的。
3次均为1则本次状态为1,3次均为0则本次状态为0,其余组合则本次状态不变。
再根据本次状态与上一次状态判断按下、释放、长按、双击等等。
那么8H好还是8G好? 神农鼎 发表于 2025-10-20 13:36
楼主现在 硬件很稳定,
MCU能稳定的检测到【静电产生的按键值】,硬件水平很高;
现在就是软件将这个不需要 ...
您看到电路了吧,都是有预防的。 yfmznxjm 发表于 2025-10-20 17:13
您看到电路了吧,都是有预防的。
15楼,梁工帮你分析了,你软件处理下
页:
1
[2]