一个矩阵按键的程序写了好几天,痛苦啊。单个按键按下没问题,可是按着一个再按其他的就不满意了
8*8矩阵,行列各接一个8位端口
这样的程序应该怎么写啊,才能各个按键独立,不受其他按键的影响啊。(按下某键就执行某键的功能一次)
多键齐按的实现重点是硬件上:行列都要有二极管,即防止烧IO口,又防止多键齐按时,误读未按下的键。
软件的实现很简单:读到一个键值后不返回,而是继续读,直到所有行列都读完。
to 1楼:
教科书上的程序能用么?产品和书只讲原理不同,产品要处理好多事情,哪有用delay程序消抖的?
to 2楼:
误读未按下的键 没想明白,跟二极管有什么关系?
程序对了,还会烧I/O口?
软件的实现?不明白你以为怎么实现
其实程序能写的出来,只是写的好不好。现在有点问题是消抖如何消?因为有64个按键,不知道如何消抖了!而且每个按键的功能要独立,按下就执行功能,不管其他键有没有按下
不知道二极管什么作用?你是做硬件还是做纯软件的?你是做实验的还是做产品的?
4-Out 4-In
(O1,I1)
(O2,I1)
以上两键一起按下时,I1输入是正常的,但是O1,O2是相连的。扫描时,O1置高,o2置低,是这样的流程吧?那么相当于什么呢?相当于高电平直接接低电平,VCC直接接GND了。烧吧,开心的烧吧。so,O1,O2上必须有保护。
to 1楼:
教科书上的程序能用么?产品和书只讲原理不同,产品要处理好多事情,哪有用delay程序消抖的?
to 2楼:
误读未按下的键 没想明白,跟二极管有什么关系?
程序对了,还会烧I/O口?
软件的实现?不明白你以为怎么实现
其实程序能写的出来,只是写的好不好。现在有点问题是消抖如何消?因为有64个按键,不知道如何消抖了!而且每个按键的功能要独立,按下就执行功能,不管其他键有没有按下
---------------------------------------------------------------------------------
你先说“哪有用delay程序消抖的?”然后你又说“现在有点问题是消抖如何消?”
我要你看教科书,是因为这是最基本的问题,没要你死抄教科书,觉得困难的话先写个2X2,不用二极管,只要n个上拉电阻
感谢 shuiyan
现在终于明白矩阵按键二极管的作用了。不加二极管真的危险。
不过“行列都要有二极管”“又防止多键齐按时,误读未按下的键”这两点还没明白
还有, 我没接二极管,列上的键也经常试验同时按下,为什么没有烧呢?