2014-12-10 3 views
0

Я новичок в микроконтроллерах PIC & C и мне задана задача создать свой собственный метод сканирования клавиатуры, который работает исключительно на порту C (микроконтроллер 16F877A). В частности, программа, использующая этот метод, использует только цифры 1, 2, 4 и 5, поэтому для обеспечения эффективности метод сканера должен использовать только RC0, RC1, RC2 и RC3 в качестве назначенных входов/выходов (мне не разрешено для использования RC4-RC7). Это по существу превращает клавиатуру 4x4 в клавиатуру 2x2.Микроконтроллеры PIC: входы сканирования на клавиатуре 4x4, используя только порт C RC0-RC3 в C

Я понимаю, что в концепции сканирования есть строки портов, установленные на строки в верхнем ряду, а строки, заданные в качестве входных столбцов, - при нажатии кнопки, это считывает низкий кусочек порта для обнаружения кнопки.

К сожалению, я понятия не имею, как закодировать это на C, особенно используя указанные выше строки порта. Может ли кто-нибудь пролить свет на проблему и указать мне в правильном направлении? Спасибо!

+0

Andrew Medico на самом деле правильно ответил на ваш вопрос.Возможно, вы захотите изменить название своего вопроса: он действительно не имеет ничего общего с клавиатурой 4x4: 3 квадранта с клавиатурой 4x4 являются «грязными» в вашем случае. Если вы назначаете Y0 Y1 Y2 Y3 вашим строкам и X0 X1 X2 X3 в столбцы: вам нужны только Y0 Y1 и X0 X1. Здесь вы можете использовать любой шаблон кода для клавиатуры 2x2. Существует много вариантов C для PIC16F877A (MPLAB, XC, HI-TECH, microC ...). Если вы ищете решение в конкретном варианте PIC-aware C, вы можете получить более точные ответы на http: //electronics.stackexchange .com –

ответ

2

Одним из возможных подходов:

Оборудование:

  1. Провод RC0 к строке 0
  2. Wire RC1 к строке 1
  3. Wire 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 прессуется

Добавление соответствующих подтягиваний/выталкиваний и дебуляции остается в качестве упражнения для чтения.

0

Как это работает, вы включаете выходное напряжение на один столбец 4. Затем вы читаете данные 4-разрядной строки, чтобы определить, какие клавиши нажаты, чтобы завершить цепь. Затем вы обходите круги вокруг других столбцов. Затем вы можете использовать столбец * 4 +, где один (или более) ключ был закрыт, чтобы установить, какая клавиша позиции ключевой матрицы была нажата. Обычно это не будет отображаться непосредственно на предполагаемое значение ключа, поэтому вы используете таблицу преобразования для преобразования или некоторые операторы #define. Кроме того, логика может быть инвертирована.