Описанную только что схему (рис. 1.3) можно усовершенствовать. Добавив всего один дешифратор, мы можем сэкономить две линии порта РЗ. Схема клавиатуры с дешифратором приведена на рис. 1.4.

В этой схеме для выбора одного из четырех столбцов клавиатуры используется дешифратор DD2 типа К555ИД4. В такой схеме для сканирования столбцов микроконтроллер должен подавать на выходы РЗ.О и Р3.1 двухразрядный двоичный код, равный номеру столбца. Код поступает на входы АО и А1 дешифратора. В результате один из его выходов (тот, номер которого соответствует поступившему коду) примет нулевое значение. На остальных же выходах будет единица. Так, при коде 00В на входе дешифратора выход Q0 (вывод 9) принимает нулевое значение.
При коде 01В — ноль будет на выходе Q1. И так далее. Таким образом, микроконтроллер может перебирать все четыре столбца, используя всего два разряда. В остальном алгоритм работы новой схемы ничем не отличается от предыдущей (рис. 1.3).
В связи с изменением схемы немного изменится и программа. Изменения коснулись лишь процедуры опроса столбцов. Теперь код будет формироваться другим способом. В остальном новый вариант программы будет почти полностью совпадать с предыдущим вариантом.
Приведенные на рис. 1.3 и 1.4 схемы с успехом могут быть использованы для подключения большого количества простых контактных датчиков. Однако при таком подключении датчиков возникнет ряд ограничений. Главное из них — быстродействие.
Если подключаемые таким образом датчики должны отслеживать быстроизменяющиеся процессы, матричная схема включения не сможет обеспечить надежную их работу. Связано это с тем, что опрос датчиков производится последовательно, поэтому обнаружение факта срабатывания датчика может быть надежным только в том случае, если минимальное время, в течение которого датчик находится в замкнутом состоянии, в несколько раз больше, чем время опроса всей матрицы клавиш.