Еще один пример мультиплексирования

Хочу поделиться своим применением мультиплексирования при опросе состояния кнопок. В конкретном случае рассматривается моя собственная «демоплата» для экспериментов, вернее ее дисплейная часть.
Поскольку для этого модуля применена динамическая индикация, то я решил использовать сигналы управления анодами для сканирования простейшей «клавиатуры» из 4 кнопок, результат этого сканирования собирается на единственном входе контроллера (In1).

Дисплейный модуль
Это схема дисплейной части с кнопочками, извиняюсь за корявый рисунок :)
надеюсь читабельно (не обращайте внимания на номиналы резисторов, все равно для конкретного индикатора и питания лучше пересчитать).
Диоды нужны, чтоб при нажатии нескольких кнопок (КЗ!) не повлиять на состояние индикаторов.

Опрос состояния кнопок провожу в процедуре регенерации дисплея (прерывание таймера). Конкретный код не предлагаю — еще сырой, замечу лишь, что для вывода на тот или иной семисегментник использую индексный регистр. Ну и по нему же сохраняю в переменных состояние кнопок.
Как опознать/исключить дребезг — решать каждому по-своему. Я же попробовал просто считать кол-во циклов опроса при нажатой кнопке, а при отпущеной просто обнулять соотв. переменную. Т.е. при достижении определенного значеня переменной считать нажатие надежным. Эти проверки желательно вынести из обработчика прерывания, дабы не удлиннять время его обработки.
Может есть и лучший вариант, я пока еще этот до конца не опробовал.
Не претендую на роль первооткрывателя, может кто-то уже и применяет подобное решение. А может кому-то и пригодиться!

Здесь вставлю фотку моей "ПинБорд" :)

P.S. Теперь точно знаю: не я изобрел этот «велосипед»! Вот наткнулся: ARV Research — Динамическая индикация
  • +1
  • 19 октября 2011, 23:30
  • Fahivec

Комментарии (5)

RSS свернуть / развернуть
я использовал похожую схему при работе с обычным LCD двухстрочником. Опрашивал 4 кнопки используя 4 линии шыны данных LCD. Сами кнопки отвязывал от дисплея резисторами, чтоб не данные не портили, т.к. они замыкались на «0».
0
блин. Умудрился детскую ошибку посадить в слово «шина»… :(((
0
Вообще то делается не так, сигналы на кнопки снимаются с коллекторов транзисторов, соответственно диоды включаются анодами к коллекторам, а резистор подтяжки для входа клавиатуры подключается к земле. Базы транзисторов тоже не мешало бы подтянуть к питанию резисторами. А так, при нажатие кнопки есть вероятность подсветки сегментов индикатора, при неудачном выборе транзисторов, резистора подтяжки входа клавиатуры, резисторов в базовой цепи транзисторов, а также при изменение питающего напряжения, температуры и.т.д. Лучше в мелочах избавляться от головной боли, тем более это ничего не стоит )))
0
Подсветки не будет, так что схема будет работать, если не переводить выходы в третье состояние. Хотя мне больше нравиться стандартный вариант, который я описал выше )))
0
Остроумно
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.