PIC微控制器:扫描上的4×4键盘的输入,在C仅使用端口C RC0-RC3(PIC Microcon

2019-10-21 10:14发布

我是新来的PIC单片机和C语言编程,我已经设置创建在端口C(16F877A微控制器)的作品完全我自己的键盘扫描方法的任务。 具体地,使用该方法的程序只使用数字1,2,4和5-所以是有效的,扫描仪的方法是只使用RC0,RC1,RC2和RC3的指定的输入/输出(我不能使用RC4-RC7)。 这实质上是将4×4键盘成一个2x2键盘。

据我所知,在扫描的概念已经口线设置为高的行,并且行设置为输入columns-当按钮被按下时,此读出端口的低半字节来检测按钮。

不幸的是,我不知道如何在C,特别是使用上面指定的口线实现代码。 任何人都可以摆脱对这个问题的一些光点我在正确的方向? 谢谢!

Answer 1:

一种可能的方法:

硬件:

  1. 线RC0划船0
  2. 电线RC1到行1
  3. 线RC2至第0列
  4. 线RC3至第1列

软件:

设定:

  1. 配置RC0和RC1为输出
  2. 配置RC2和RC3作为输入

读:

  1. 集RC0高,低RC1
  2. 阅读RC2。 如果高, 1被按压
  3. 阅读RC3。 如果高, 2被按压
  4. 集RC0低,RC1高
  5. 阅读RC2。 如果高, 4被按压
  6. 阅读RC3。 如果高, 5被压

添加适当的上拉/下拉和防抖动是作为练习留给读者。



Answer 2:

它的工作方式,是你对4的一列允许的输出电压,然后你读的4位行数据,以确定哪个键(S)按下的完整的电路。 然后,循环轮等栏目。 然后,可以使用列* 4 +行,其中一个(或多个)键被关闭以建立该按键矩阵位置键被按下。 通常不会直接映射到预期的键值,让你用一个查找表转换,或一些#define语句。 此外,逻辑可能会反转。



文章来源: PIC Microcontrollers: Scan inputs on a 4x4 Keypad, using only Port C RC0-RC3 in C