Страница 1 из 1

как правильно подключить кнопки к порту

Добавлено: Ср июн 10, 2009 11:43:22
Scorpline
вобщем надо подключить 15 кнопок(для ввода цифр и доп.функций) к порту контроллера. ...порт стандартный 8 разрядов то есть я могу могу подключить так сказать до 255 кнопок...
...жмем кнопку один, в порт записываем 01h
жмем 2 в порт 02h и т.д.
жмем 3 ..но тогда надо объединять два вывода порта..... 0000011
...делать развязку из диодов..?дофига получится!
То есть как правильно сделать?

Добавлено: Ср июн 10, 2009 11:54:08
ploop
Насколько я понимаю, 8-битный порт может обслужить только 16 (4х4) кнопок.

Делается так: пусть кнопки расположены квадратом 4х4. Разбиваем порт пополам, первые 4 бита обслуживают "строки", последние 4 бита - "столбцы". Соответственно линии, обслуживающие строки настраиваем на ввод, столбцы - на вывод. Подаём на первый столбец единицу, на остальных - нули, и сканируем строки, затем единицу на второй столбец, и т.д.

Добавлено: Ср июн 10, 2009 12:23:21
ploop
Вот примерно, как подключать:

Изображение

Добавлено: Ср июн 10, 2009 13:07:26
saschai
я бы еще через супротивлюхи порядка 10к к питанию подтянул п7-п4 :))

Добавлено: Ср июн 10, 2009 13:21:55
ploop
Ну, у многих контроллеров есть возможность использовать внутренний подтягивающий резистор, так что эта проблема отпадает...

Добавлено: Ср июн 10, 2009 15:25:03
Scorpline
В принципе это наверно правильно сканировать клавиатуру.....
Так скорее всего и делают.
я то думал просто в цикле опрашивать порт, а тут в принципе сколько можно задать комбинаций столько и кнопок поставить.
...а какие еще возможны варианты без применения дополнительных деталей...шифраторов и т.д.

Добавлено: Ср июн 10, 2009 15:30:49
ploop
я то думал просто в цикле опрашивать порт, а тут в принципе сколько можно задать комбинаций столько и кнопок поставить
Только с шифратором.
.а какие еще возможны варианты без применения дополнительных деталей...шифраторов и т.д.
один пин - одна кнопка. Итого 8 кнопок :) Больше никак.

Добавлено: Ср июн 10, 2009 16:12:08
KVorb
Можно подключить гораздо больше кнопок.
Наличие встроенного АЦП позволяет реализовать клавиатуру с большим количеством кнопок, используя всего один вход. При правильном выборе значений номиналов резисторов, замыкание каждой из кнопок сформирует уникальное напряжение, соответствующее именно этой кнопке. Измеряя напряжение Vout с помощью АЦП, можно определить какая именно кнопка нажата. Для однозначности определения нажатой клавиши лучше использовать точные резисторы. Если ни одна из кнопок не нажата - измеренное напряжение будет около 0В.
Изображение

Подробности в статье Большие возможности маленького контроллера

Добавлено: Ср июн 10, 2009 16:45:21
ploop
Ой, что-то не нравится мне эта идея... не стал бы я так делать. Не надёжно как-то, на "хакерские" методы похоже. Лучше два порта взять - целую клавиатуру опрашивать можно.

Добавлено: Ср июн 10, 2009 21:38:09
Секретный кот
KVorb писал(а):Измеряя напряжение Vout с помощью АЦП, можно определить какая именно кнопка нажата.
А если нажато несколько кнопок сразу? Разрешающей способности АЦП может не хватить :))

Добавлено: Ср июн 10, 2009 23:09:29
ibiza11
Секретный кот писал(а):А если нажато несколько кнопок сразу? Разрешающей способности АЦП может не хватить :))
просто информация будет считана неправильно. будет "как бы нажата" другая кнопка.

Добавлено: Ср июн 10, 2009 23:12:54
Scorpline
Секретный кот писал(а):
KVorb писал(а):
А если нажато несколько кнопок сразу? Разрешающей способности АЦП может не хватить :))
...скорее всего не получится нажать именно одновременно несколько кнопок(во всяком случае не с первого раза) все таки какая то нажмется первее.... но если все таки сработает пара кнопок вместе. то такого кода не будет забито в программе для сравнения с заложенными....

Добавлено: Ср июн 10, 2009 23:26:29
Arlleex
как не получится? еще как получится) антидребезг сделает всю работу)

Добавлено: Чт июн 11, 2009 00:47:10
Настя
KVorb писал(а):Можно подключить гораздо больше кнопок.
оценила, сильно

Добавлено: Чт июн 11, 2009 09:09:13
ploop
Хотя по ссылке, что привёл KVorb ниже, очень много оригинальных решений...