Простейшая самодельная матричная клавиатура на микроконтроллере PIC16F628A

В этой статье описано, как самостоятельно изготовить простейшую матричную клавиатуру, размером 3х3, на микроконтроллере, с возможностью подключения её к компьютеру через com-порт. В качестве примера используется микроконтроллер PIC16F628A.

Схема:

Схема самодельной матричной клавиатуры

Элементы:

С1=0,1 мкФ
R1=1 кОм
V1..V9 — абсолютно любые диоды (лучше Шоттки), ток с одной кнопки, через внутренний подтягивающий резистор, всего лишь около 0,2 мА.
К1..К9 — нормально-разомкнутые кнопки без фиксации.

Описание работы схемы:

Выводы микроконтроллера RA1, RA7, RA6 запрограммированы как выходы.

Выводы RB6, RB5, RB7 запрограммированы как входы, подтягивающие резисторы включены.

В начальном состоянии все выходы переключены в единицу (подтянуты к питанию), а все входы подтянуты к питанию через подтягивающие резисторы.

При необходимости узнать состояние кнопок какого-либо столбца, — соответствующий выход (к которому подключен столбец) устанавливается в ноль (то есть подключается к земле), после чего проверяется состояние входов. Если вход равен нулю, то кнопка в соответствующей этому входу строке проверяемого столбца нажата, если вход равен 1, то кнопка не нажата.

Например, мы хотим проверить состояние кнопок во втором столбце, и пусть у нас нажата кнопка К8.

1) Устанавливаем RA7=0 (при этом RA1=RA6=1).

2) Проверяем, что будет со входами? Кнопка К2 разомкнута, связи с землей нет, поэтому вход RB6 так и останется равен 1 (притянут к питанию через внутренний резистор). Аналогичная ситуация со входом RB5.

А вот на входе RB7 образуется делитель напряжения, в одном плече (том, что к питанию) у которого внутренний подтягивающий резистор (с сопротивлением порядка 25 кОм), а в другом плече — открытый на землю диод. Если считать диод идеальным, то напряжение на входе будет равно нулю, то есть вход установится в ноль.

Таким образом, последовательно просканировав состояния кнопок во всех трех столбцах, мы узнаем состояния кнопок всей нашей небольшой клавиатурки.

Теперь следующий вопрос: зачем нужны диоды?

Давайте представим, что в нашей схеме нет диодов и рассмотрим тот же самый случай. Если кроме кнопок в сканируемом столбце больше ни одна кнопка не нажата, то все отлично работает.

Но пусть у нас помимо кнопки К8 нажата еще кнопка К9. Итак, линия RB7 у нас подтянута к земле через кнопку К8 и линию RA7, но тогда через кнопку К9 выход RA6 (который установлен в единицу) также окажется подтянут к земле, — получим КЗ и спалим выходы. А если бы там стоял диод, как в нашей схеме, то в данной ситуации он оказался бы обратно смещенным, то есть запертым и КЗ бы не случилось.

То есть, диоды нужны для развязки, они позволяют игнорировать состояние всех клавиш клавиатуры кроме сканируемых, предотвращая образование КЗ через нажатые клавиши в других столбцах.

Ну вот, в общем-то, почти и всё.

Фото готового девайса:

Самодельная матричная клавиатура (фото)

Выведенные отдельно линии Tx и Rx позволяют подключить эту конструкцию через USART к com-порту компьютера, используя преобразователь уровней RS232-TTL. В принципе, примерно так устроена обычная клавиатура для com-порта.

Дальше все зависит от вашей фантазии: хотите — сканируйте клавиатуру постоянно и отсылайте состояние на компьютер, хотите — сканируйте по команде с компьютера, хотите — сканируйте постоянно, а посылайте только когда есть нажатые клавиши, хотите — вообще ничего никуда не посылайте, а используйте это все для управления контроллером и т.д.

Скачать печатную плату (DipTrace 2.0)

Данная печатная плата разведена под использование диодов BAT18 в корпусе SOT23 (маркировка A2, на материнках таких полно).

Вот здесь можно посмотреть пример программы и скачать готовую прошивку для этой клавиатуры.

Добавить комментарий