AC-DC и DC-DC преобразователи напряжения Top Power на складе ЭЛТЕХ

Простая схема заменяет программный опрос матричной клавиатуры

STMicroelectronics STM32F100

Журнал РАДИОЛОЦМАН, октябрь 2014

Rick Malley, Independent Designs LLC

Electronic Design

Новое семейство LED-драйверов XLC компании MEAN WELL с дополнительными возможностями диммирования

Эта схема, использующая восемь цифровых входов, упрощает декодирование мембранной клавиатуры с матрицей кнопок 4×4 и делает ненужным традиционное сканирование рядов или колонок. Схема может работать с любой X-Y матрицей переключателей, входящей в состав какого-либо устройства.

В схеме использованы восемь цифровых транзисторов – четыре NPN и четыре PNP. При нажатии на выбранную кнопку два транзистора включатся токами, протекающими через их внутренние резисторы. Сгенерированный в результате код, который будет уникальным для каждого ключа, можно считать с помощью простой команды ввода байта. Если разрешить прерывания по изменению состояния всех восьми входов, программа декодирования клавиатуры будет полностью управляться прерываниями.

Эти восемь линий можно также подключить к сдвиговому регистру и сократить количество используемых линий ввода/вывода микроконтроллера до двух или трех, необходимых для управления сдвигом и чтением.

В простейшем варианте все выводы 8-битного порта конфигурируются как входы, а внутренние резисторы подтягиваются к питанию в разрядах 0-3, и к «земле» в разрядах 4-7 (Рисунок 1). Следует сразу оговориться, что такие гибкие настройки поддерживают далеко не все микроконтроллеры. Одним из подобных приборов является STM32F100 компании STMicroelectronics, на котором и был собран прототип схемы, показавший отличные результаты.

Простая схема заменяет программный опрос матричной клавиатуры
Рисунок 1. Для упрощения декодирования матрицы кнопок 4×4 выводы 8-битного
порта сконфигурированы входами, которые подтягиваются к
питанию и к «земле» с помощью внутренних резисторов.

В схеме на Рисунке 2 используются внешние резисторы. Лучше всего взять пару широко распространенных четырехэлементных резисторных матриц – они компактны, недороги, и добавляют к перечню элементов всего два компонента. В большинстве случаев подойдут матрицы с сопротивлением 10 кОм.

Простая схема заменяет программный опрос матричной клавиатуры
Рисунок 2. Альтернативная схема, в которой используются
внешние матрицы резисторов.

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

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Basic Circuit Eliminates Numeric Keypad Polling

54 предложений от 27 поставщиков
Плата разработки проектов и приложений STM32VLDISCOVERY для линейки STM32F100. Основной микроконтроллер STM32F100RB Cortex-M3 24МГц с 128кб флеш и 8кб оперативной памяти....
ЗУМ-СМД
Россия
STM32F100RBT6
STMicroelectronics
153 ₽
EIS Components
Весь мир
STM32F100RCT6
STMicroelectronics
225 ₽
IC Home
Весь мир
STM32F100VDT6
STMicroelectronics
548 ₽
Элитан
Россия
STM32F100RCT6
STMicroelectronics
658 ₽
ТМ Электроникс. Электронные компоненты и приборы. Скидки, кэшбэк и бесплатная доставка
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Ну, это перебор. Написать код опроса клавиатуры - неужто так сложно? Если сложно, тогда зачем вообще микроконтроллеры? Чтоб навешивать вот такую кучу внешних деталей вместо того, чтобы обойтись без этого?
  • Не совсем так. Вы, наверное, не обратили внимание на "изюминку" транзисторов [URL="http://www.nxp.com/products/bipolar_transistors/resistor_equipped_transistors_rets/ret_100_ma_50_v/ret_100_ma_50_v_single_npn/series/PDTC124E_SERIES.html"]PDTC124[/URL], [URL="http://www.nxp.com/products/bipolar_transistors/resistor_equipped_transistors_rets/ret_100_ma_50_v/ret_100_ma_50_v_single_pnp/series/PDTA124E_SERIES.html"]PDTA124[/URL], у которых на кристалле есть пара резисторов 20-40кОм. А значит, внешних элементов в схеме для матрицы 4*4 всего 8. Ровно столько, сколько потребовалось бы резисторов и диодов (по 4 штуки) для организации "классической схемы". Правда, эти резисторы и диоды рекомендуют устанавливать только на период отладки, но большинство разработчиков оставляют их на платах на всякий случай. Поскольку абсолютный минимализм - строки и столбцы прямо на выводах МК - может привести к неприятным последствиям при ошибке программиста, даже при сканировании через Z-состояние c изменением направления входов/выходов [code]void columns_to0_rows_to1(void); void columns_to1_rows_to0(void); void columns_rows_toZ(void); uint8_t get_row_number(void); uint8_t get_column_number(void); uint8_t get_button_number(void);[/code] Когда не требуется отслеживать сложные "аккорды" на клавиатуре (скажем, двойное/тройное нажатие/удержание), опрос на прерываниях оправдан в плане своей асинхронности, поскольку иногда МК загружен так, что выделить каждые 10-20мс даже 30-40 тактов при непрерывном опросе по таймеру - нет возможности. А вообще, тема эта благодатная, ведь существует масса гибридных программно/аппаратных вариантов опроса кнопок, продиктованных инженерным гением :-) В любой ситуации можно найти равновесное количество "за" и "против".
  • Давно известная, рабочая схема. Помню, еще лет 20 назад применялась в простых зарубежных кнопочных телефонах. Я удивлялся - матрица есть, а опроса нет. Потом догадался, как устроено. Предложенный вариант схемы не совсем оптимальный. Можно сократить число транзисторов в 2 раза и достаточно порта с подтяжкой только в одну сторону.