Наиболее распространенный метод построения интерфейса нескольких ключей – мультиплексирование – позволяет подключить (N/2)2 коммутаторов к N линиям ввода/вывода микроконтроллера. Описанный ниже метод, берущий свое начало в технологии интерфейса светодиодов, широко известной как «Чарлиплексинг», позволяет подключить N×(N – 1) ключей к N линиям ввода/вывода.
При обычном мультиплексировании матрицы N×N с 2N линиями ввода/вывода половина линий настроена на ввод, а половина – на вывод (при «лог. 0»), и каждая линия постоянно используется либо только для ввода, либо только для вывода. Предлагаемый метод использует оба состояния линий ввода/вывода, увеличивая количество ключей, которые могут быть подключены к ним.
В предлагаемом методе каждая линия ввода/вывода соединена с каждой другой линией через последовательное соединение ключа и диода. На Рисунке 1 показан пример с двумя линиями. В этой конфигурации состояние ключа S1 может быть прочитано путем настройки линии Pin2 на ввод, а Pin1 – на вывод (с «лог. 0»).Состояние ключа S2 можно прочитать, установив для Pin1 режим ввода, а для Pin2 – режим вывода. Такой метод позволяет разработчикам подключить шесть ключей с помощью всего трех линий и полную 12-кнопочную цифровую клавиатуру с помощью четырех линий.
Рисунок 1. | Взяв за основу эту базовую конфигурацию, усовершенствованный интерфейс клавиатуры можно масштабировать по мере необходимости. |
Эта конфигурация легко масштабируется до любого количества линий ввода/вывода, но между двумя линиями схема по существу остается прежней. Для схемы с N линиями ввода/вывода к каждой линии подходят N – 1 диодов, и N – 1 диодов отходят от нее. В любой момент времени на одном выводе установлен «лог. 0», а остальные N – 1 выводов настроены на чтение состояния N – 1 ключей, подключенных к этому выводу. Как правило, N – 1 диодов, идущих к этой линии, могут быть заменены одним диодом, при этом все N – 1 ключей подключаются к его аноду.
Рисунок 2. | В этой схеме, расширяющей базовую конфигурацию, 12 кнопок подключены лишь к четырем линиям ввода/вывода микроконтроллера. |
На Рисунке 2 показана схема подключения 12-кнопочной клавиатуры с использованием лишь четырех линий ввода/вывода микроконтроллера. Для чтения состояния кнопок S1-S3 на линии Pin1 устанавливается «лог. 0», а линии Pin2, Pin3 и Pin4 настраиваются на ввод. Точно так же для чтения кнопок S4-S6, S7-S9 и S10-S12 на линиях Pin2, Pin3 и Pin4, соответственно, устанавливается «лог. 0», а остальные настраиваются на ввод.
Рисунок 3. | Схема с 12 кнопками может использоваться для подключения цифровой клавиатуры к микроконтроллеру, в данном случае к ATmega8. |
Схема на Рисунке 3 демонстрирует полный интерфейс цифровой клавиатуры, использующий четыре вывода микроконтроллера (в данном примере ATmega8).