Муфты электромонтажные от производителя Fucon

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

STMicroelectronics STM32F100

Журнал РАДИОЛОЦМАН, октябрь 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. Альтернативная схема, в которой используются
внешние матрицы резисторов.

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

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

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

47 предложений от 26 поставщиков
Плата разработки проектов и приложений STM32VLDISCOVERY для линейки STM32F100. Основной микроконтроллер STM32F100RB Cortex-M3 24МГц с 128кб флеш и 8кб оперативной памяти....
LIXINC Electronics
Весь мир
STM32F100RCT6
STMicroelectronics
от 39 ₽
STM32F100RCT6
STMicroelectronics
125 ₽
Триема
Россия
STM32F100RCT6
STMicroelectronics
343 ₽
ТаймЧипс
Россия
STM32F100VET6
STMicroelectronics
по запросу
Электронные компоненты. Скидки 15%, кэшбэк 15% и бесплатная доставка от ТМ Электроникс
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Ну, это перебор. Написать код опроса клавиатуры - неужто так сложно? Если сложно, тогда зачем вообще микроконтроллеры? Чтоб навешивать вот такую кучу внешних деталей вместо того, чтобы обойтись без этого?
  • Не совсем так. Вы, наверное, не обратили внимание на "изюминку" транзисторов [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 раза и достаточно порта с подтяжкой только в одну сторону.