按键行做输出,列做输入,只需检测列那边电平即可 |
yousir 发表于 2021-1-16 10:18 感谢!!!!!! |
你想啊。单片机执行速度非常的快,你按下按键的时候(按下的时间很短但对于单片机来说很长了,单片机的处理速度很快)这些操作都已经进行完了,意思就是你虽然进行了赋值,但你还按下了按键,按键改变了你的赋值,然后switch case语句去判断你按下了哪个按键, |
按键抖动 |
预置P1口0x0f,如果第一个按键被按下,P1口应该是0x07,此时P1的低4位当前状态已读取,以键值的方式保存在变量KeyValue中,进入到测试列的步骤时,P1口被重新赋值为0xf0,此时P1的高4位当前状态0X70再被读取并与低4位相加。测试得到的结果是0x77。最终输出KeyValue=0。 |
![]() 这就是矩阵键盘扫描的代码,主函数循环调用本函数就行 不能有死等延迟。必须计数延迟。定时器调用也行(有些浪费不建议)。 |