Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Клавиатура (18кнопок)


Автор: DonPager 30.12.2005, 10:37
Может кто подскажет схему, чтобы можно было подключить эту байду на ОДИН порт ?

Автор: scapig 30.12.2005, 14:52
Это значит матрица 4х5 (20кн)

Береш 5 линий порта - с них считываешь..
остаются 3 линии (а надо 4) => вешаешь дешифратор какой нить на две динии (на выходе получ. 4) и сканируешь себе на здоровье...

И остается один пин еще свободным... smile

Автор: ManiaK 30.12.2005, 17:58
При желании это всё можно повесить вообще на один вывод - прицепив к нему две микросхеммки ds2408 (расширители io на восемь выводов).

Автор: PILOT 30.12.2005, 18:46
но дешевле 4х5 smile

СУВ.

Автор: DonPager 28.1.2006, 11:03
scapig если честнно, то нифига не понял про дешифратор - можно картинку ?

Автор: PILOT 29.1.2006, 00:57
http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR243.htm

СУВ.

Автор: cardinal 29.1.2006, 01:17
Цитата

На рисунке 3 показан результат нажатия трех клавиш, при котором кажется, что нажата еще и кнопка, помеченная иксом. Это приводит к появлению ошибки декодирования.

А этот факт с таким подходом по идее всегда будет оставаться нерешнной проблемой или я ошибаюсь?
Цитата(ManiaK @ 30.12.2005, 15:58 Найти цитируемый пост)

При желании это всё можно повесить вообще на один вывод - прицепив к нему две микросхеммки ds2408 (расширители io на восемь выводов).

А можно про это побольше информации... Спасибо!

Автор: PILOT 29.1.2006, 12:06
Цитата(cardinal @ 28.1.2006, 22:17)
Цитата

На рисунке 3 показан результат нажатия трех клавиш, при котором кажется, что нажата еще и кнопка, помеченная иксом. Это приводит к появлению ошибки декодирования.

А этот факт с таким подходом по идее всегда будет оставаться нерешнной проблемой или я ошибаюсь?

Ошибаешься, потому что методы сканирования матричной клавиатуры бывают разными и почти все из них могут анализировать нажатие нескольких клавиш одновременно.

СУВ.

Автор: cardinal 29.1.2006, 15:28
Да, но если делать как у них, то разницы (три кнопки или четыре нажаты) помоему как не сканируй не найдешь...

Автор: DonPager 29.1.2006, 18:19
PILOT спасибо конечно, но как обычную матрицу вставить я знаю...
я не понимаю как сделать так чтобы для 18 кнопок использовать всего 8 проводов для сканирования (пока что использую матрицу 6х3 = 9 проводов, а хотелось 8)

Автор: PILOT 29.1.2006, 22:17
Если есть деньги на несколько дополнительных элементов:
1) сажаешь все 18 ног кнопок таким образом, чтобы они коммутировали свой делитель напряжения на вход АЦП контроллера, тогда у тебя будет 19 интервалов по 13 единиц и по тому какое значение у тебя получилось при оцифровке ты судишь о нажатой клавише (но только одной!). Но на контроллере нужна одна нога и 36 чип-резисторов разных номиналов...
2) ставишь 3 последовательно соединенных регистра с парралельным входом и последовательным выходом (есть 16-ти разрядные, т.е. можно один 16-ти разрядный + 8-ми разрядный), объединяешь одни концы всех кнопок и сажаешь объединенный выввод на +5Вольт, а другие 18 выводов через резисторы на входы регистра. Считываешь состояние регистров и состояние всех кнопок, даже если нажато несколько.
3) можно сделать так: есть емкость, она заряжена (примерно +5Вольт), есть 18 кнопок коммутируя которые разряжаем емкость но за разные промежутки времени (в зав-ти от выбранного резистора для конкретной кнопки), в схеме будет транзистор, который будет перезаряжать емкость и несколько диодов...

СУВ.

Автор: DonPager 30.1.2006, 13:19
В общем спасибо...
Хотелось сделать чисто на логике с избытком положений - но ума не хватило....
а требования у меня не высокие - при одновременном нажатии 2х и более - игнорировать.
если есть какие идеи как объеденить 2 линии, использовав при этом минимум эл-тов (резисторы, транзисторы, диоды) то поделитесь

Автор: PILOT 30.1.2006, 20:13
используй пункт 2, самый дешевый вариант. всего 3 ноги у контроллера используется... и не парься...

СУВ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)