我是PIC微控制器和PIC的新手。 C编程和我已经设置了创建我自己的键盘扫描方法的任务,该方法仅适用于端口C(16F877A微控制器)。具体来说,使用此方法的程序仅使用数字1,2,4和5-因此为了有效,扫描方法只使用RC0,RC1,RC2和RC3作为指定的输入/输出(我不允许)使用RC4-RC7)。这实质上将4x4键盘转换为2x2键盘。
据我所知,扫描的概念在行上将端口线设置为高,将行设置为输入列 - 当按下按钮时,这将读取端口的低半字节以检测按钮。
不幸的是,我不知道如何在C中编写代码,尤其是使用上面指定的端口行。任何人都可以对这个问题有所了解并指出我正确的方向吗? 谢谢!
答案 0 :(得分:2)
一种可能的方法:
设备:
软件:
设定:
读:
1
被按下2
被按下4
被按下5
被按下添加适当的上拉/下拉和去抖是留给读者的练习。
答案 1 :(得分:0)
它的工作方式是,您在4的一列上启用输出电压。然后读取4位行数据,以确定按下哪个键完成电路。然后循环其他列。然后,您可以使用列* 4 +行,其中一个(或多个)键被关闭以确定按下了哪个键矩阵位置键。通常,它不会直接映射到预期的键值,因此您使用查找表进行转换,或使用某些#define
语句。此外,逻辑可能会被颠倒。