Способ подключения кнопок

Как к контроллеру подключить несколько входов, используя минимум ног?
Приходят в голову всякие сдвиговые регистры с параллельным входом и последовательным выходом, это будет 74hc165, это что-то типа 74hc595 или 74hc164, только задом наперед.
Но и на них нужно тратить 3 ноги!
То есть
одна нога Chip Select — типа выбор чипа и в этот момент микросхема производит захват со входов данных.
вторая нога Clock — типа тактируем чип.
третья Output — типа забираем данные.

Так вот можно все это сократить до одной ноги!
Для начала сократим до двух ног:
Ребята из www.openmusiclabs.com предлагают следующую схему:


Собственно, как только приходит первая половина такта на вывод CP — clock, через диод разряжается конденсатор. Собственно на выходе инвертора 74HC14 появляется логическая 1, подключенная к выводу ~PL — что и есть тот же Chip Select, только называется Parallel load, которая и защелкивает входные данные. Далее наступает вторая половина первого такта и конденсатор начинает заряжаться, но не успевает зарядится до нужного уровня за короткое время такта.
Повторяем операцию восемь раз.
Собственно данные снимаем еще одной ножкой контроллера с вывода DO — Digital Output микросхемы 74HC165.

Но можно и вообще обойтись одной ногой!



Теперь ситуация такая подключенный резистор к DO не дает сделать КЗ. =)
И собственно не влияет ни на Clock ни на конденсатор.
Надо только после первого такта перевести ногу на вход и считать первый бит данных после чего перевести ножку на вывод и сделать еще такт. И так далее, 8 раз. =)

74HC165
Статья.
  • +3
  • 24 ноября 2011, 23:39
  • hexanaft

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

RSS свернуть / развернуть
А вместо 74НС14 можно использовать полевой транзистор? По-идее он даст вполне чёткий передний фронт на PL, а задний не так важен.

Гы, понравилось в конце оригинальной статьи:
Next you’re going to tell me you don’t have any free pins, and that you want to teleport the data into the chip somehow. Sorry, I don’t have a solution for that yet. But keep checking back!
0
  • avatar
  • ACE
  • 25 ноября 2011, 01:09
Давно использую в своих проектак стандартную писишную клаву и не парюсь — и клаву колхозить не надо и кнопок много и два пина использует.
0
  • avatar
  • Omul
  • 25 ноября 2011, 03:19
а если надо на самом устройстве кнопки разместить?
0
Подобные фокусы с RC-цепочкой мы уже видели:
easyelectronics.ru/upravlenie-semisegmentnymi-indikatorami-po-odnomu-provodu.html
Только там про вывод, а здесь про ввод.
0
Да я видел и это, но сходу не нашел =)
0
Извращение, конечно, но красиво. :)

Вообще я не люблю такие штуки за то, что они завязаны на тайминги.
0
  • avatar
  • _YS_
  • 25 ноября 2011, 16:44
Вот еще вариант с хорошим описанием:

www.rusilicon.net/circuit-design/vvod-parallelnyx-dannyx-cherez-odin-provod.html
0
  • avatar
  • BenG
  • 25 ноября 2011, 22:08
А использовать для этого АЦП — религия не позволяет? Всего 1 нога задействована, и кнопок можно 100500 навесить, и никаких морок с таймингами и «лишними» деталями.
-1
А если нажать 2 кнопки?
0
теоретически, если хорошо заморочиться подбором сопротивлений — можно и 2 кнопки обработать… Но обычно считать лень…
0
ИМХО проще забить на эту «экономию» и подключить 74HC165/74HC164(74hc595) по SPI — будет реальная экономия выводов, времени обработки и размеров кода.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.