我是 PIC 微 Controller 和 C 编程的新手,我的任务是创建我自己的键盘扫描方法,该方法专门用于端口 C(16F877A 微 Controller )。具体来说,使用此方法的程序仅使用数字 1、2、4 和 5- 为了提高效率,扫描仪方法仅使用 RC0、RC1、RC2 和 RC3 作为指定的输入/输出(我不允许使用 RC4-RC7)。这实质上将 4x4 键盘变成了 2x2 键盘。
我理解扫描的概念是在行上将端口线设置为高电平,并将线设置为输入列 - 当按下按钮时,这会读取端口的低半字节以检测按钮。
不幸的是,我不知道如何用 C 编写代码,尤其是使用上面指定的端口行。任何人都可以阐明这个问题并指出我正确的方向吗? 谢谢!
最佳答案
一种可能的方法:
硬件:
- 将 RC0 连接到第 0 行
- 将 RC1 连接到第 1 行
- 将 RC2 连接到第 0 列
- 将 RC3 连接到第 1 列
软件:
设置:
- 配置 RC0 和 RC1 作为输出
- 将 RC2 和 RC3 配置为输入
阅读:
- 将 RC0 设置为高电平,将 RC1 设置为低电平
- 阅读 RC2。如果为高,则
1
被按下 - 阅读 RC3。如果为高,则
2
被按下 - 将 RC0 设置为低电平,将 RC1 设置为高电平
- 阅读 RC2。如果高,则
4
被按下 - 阅读 RC3。如果高,则
5
被按下
添加适当的上拉/下拉和去抖动留给读者作为练习。
关于c - PIC 微 Controller : Scan inputs on a 4x4 Keypad, 在 C 中仅使用端口 C RC0-RC3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27407950/