Журнал РАДИОЛОЦМАН, октябрь 2014
Rick Malley, Independent Designs LLC
Electronic Design
Эта схема, использующая восемь цифровых входов, упрощает декодирование мембранной клавиатуры с матрицей кнопок 4×4 и делает ненужным традиционное сканирование рядов или колонок. Схема может работать с любой X-Y матрицей переключателей, входящей в состав какого-либо устройства.
В схеме использованы восемь цифровых транзисторов – четыре NPN и четыре PNP. При нажатии на выбранную кнопку два транзистора включатся токами, протекающими через их внутренние резисторы. Сгенерированный в результате код, который будет уникальным для каждого ключа, можно считать с помощью простой команды ввода байта. Если разрешить прерывания по изменению состояния всех восьми входов, программа декодирования клавиатуры будет полностью управляться прерываниями.
Эти восемь линий можно также подключить к сдвиговому регистру и сократить количество используемых линий ввода/вывода микроконтроллера до двух или трех, необходимых для управления сдвигом и чтением.
В простейшем варианте все выводы 8-битного порта конфигурируются как входы, а внутренние резисторы подтягиваются к питанию в разрядах 0-3, и к «земле» в разрядах 4-7 (Рисунок 1). Следует сразу оговориться, что такие гибкие настройки поддерживают далеко не все микроконтроллеры. Одним из подобных приборов является STM32F100 компании STMicroelectronics, на котором и был собран прототип схемы, показавший отличные результаты.
Рисунок 1. | Для упрощения декодирования матрицы кнопок 4×4 выводы 8-битного порта сконфигурированы входами, которые подтягиваются к питанию и к «земле» с помощью внутренних резисторов. |
В схеме на Рисунке 2 используются внешние резисторы. Лучше всего взять пару широко распространенных четырехэлементных резисторных матриц – они компактны, недороги, и добавляют к перечню элементов всего два компонента. В большинстве случаев подойдут матрицы с сопротивлением 10 кОм.
Рисунок 2. | Альтернативная схема, в которой используются внешние матрицы резисторов. |
Конечно же, при одновременном нажатии двух клавиш также будут генерироваться уникальные коды. Но эта ситуация не создает никаких дополнительных сложностей; любая комбинация, в которой две клавиши не имеют общей строки или столбца, может быть программно декодирована.