Подключение клавиатуры к микроконтроллеру

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт окт 30, 2014 21:13:31
Откуда: Санкт-Петербург

Сообщение Timofiy_K »

Здравствуйте коты.
Есть такая проблема. У меня в наличие небольшая клавиатура с 12ю кнопками. От каждой кнопки отходит контакт. Как в таких случаях подключают клавиатуру к 8-битному порту микроконтроллера AVR?
Т.к. есть микросхемки дешифраторы, которые преобразуют двоичный код в сигнал определенного вывода, то я думал есть микросхемы и обратного назначения, но таких не нашел.
Допустим, можно клавиатуру подключить к двум портам, но это не рационально, а если на клавиатуре 100 кнопок?
Подскажите пожалуйста, какие вообще существуют методы решения подобной проблемы?
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1058
Зарегистрирован: Ср мар 17, 2010 18:19:09
Откуда: новосибирск

Сообщение shinji2009 »

смотря как эта клавиатура будет использоваться... если больше одной кнопки за раз нажимать не предполагается - можно на каждую свой резистор повесить, и вся клавиатура будет считываться одним контактом - ацп. по уровню напряжения.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Еще вариант - через сдвиговый регистр.
Docendo discimus
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт окт 30, 2014 21:13:31
Откуда: Санкт-Петербург

Сообщение Timofiy_K »

Спасибо за ответ. О варианте с ацп знаю, но там еще больше трудностей возникает. Там у кнопочек контакт такой... как бы сказать, Чем сильнее ее прижимаешь, тем меньше сопротивление между землей и выводом. Слабо прижал - 100 ом, сильно прижал - 10 Ом. АЦП каждый раз разный код будет выдавать.
Я как временный вариант использую только 8 клавиш, воткнул каждую в вывод порта, а с дребезгом программно борюсь.
А нужно мне каждую нажатую кнопку превратить в двоичное число, желательно четырехразрядное.
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт окт 30, 2014 21:13:31
Откуда: Санкт-Петербург

Сообщение Timofiy_K »

А через сдвиговый регистр это как. Можно логику работы коротко?
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

Timofiy_K писал(а):Можно логику работы коротко?
..если коротко - гуглите 74HC165. При наличии у МК аппаратного SPI, все вообще замечательно.

ps. каждый регистр 74HC165 имеет 8 входов, а если нужно больше - легко выполнить каскадное подключение.
Реклама
Электрический кот
Аватара пользователя
Сообщения: 1058
Зарегистрирован: Ср мар 17, 2010 18:19:09
Откуда: новосибирск

Сообщение shinji2009 »

там обычно ставят килоомы, а не омы, но не для того чтобы сопротивление кнопок не влияло, а потому что если вы будете грузить цепь питания такими низкими сопротивлениями, то контакты у кнопок искрить будут и источник питания сильно подсаживаться :в но хозяин канеш барин...
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт окт 30, 2014 21:13:31
Откуда: Санкт-Петербург

Сообщение Timofiy_K »

По поводу сдвигового регистра

Это ж сколько тактов МК будет опрашивать клавиатуру, он еще и с другими задачами справляться должен. А с дребезгом контактов как в таком случае бороться?

По поводу АЦП.

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

А каким образом опрос клавиатур обычно в технике осуществляется, мировая, так сказать, практика?
Электрический кот
Аватара пользователя
Сообщения: 1058
Зарегистрирован: Ср мар 17, 2010 18:19:09
Откуда: новосибирск

Сообщение shinji2009 »

обычно те кнопки которые не подразумевается нажимать вместе включают в матрицу, а те которые подразумевается - отдельно. например так http://solidstate.karelia.ru/~yura/pyld ... matrix.png
Друг Кота
Аватара пользователя
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск

Сообщение pyzhman »

Timofiy_K писал(а):Это ж сколько тактов МК будет опрашивать клавиатуру, он еще и с другими задачами справляться должен.
А вы не предполагайте. Вы делайте.
Docendo discimus
Контактная информация:
Электрический кот
Аватара пользователя
Сообщения: 1058
Зарегистрирован: Ср мар 17, 2010 18:19:09
Откуда: новосибирск

Сообщение shinji2009 »

с дребезгом контактов всегда борются программно, это совсем несложно.
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Timofiy_K писал(а): А каким образом опрос клавиатур обычно в технике осуществляется, мировая, так сказать, практика?
Да как то так и осуществляется :)) Если прям уж так чудовищно критична производительность (самонаведение ракеты ?), что через регистр клаву не опросить - можно поставить отдельный мк или взять побыстрее.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт окт 30, 2014 21:13:31
Откуда: Санкт-Петербург

Сообщение Timofiy_K »

Ладно, пищу для размышлений дали. Куда копать дальше примерно понятно. Всем отозвавшимся спасибо. :beer:
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Надо просто отделить опрос клавиатуры и реакцию на него от действительно критически важных действий. Обычно все это управление может и подождать, а что подождать не может - обрабатывать в прерывании по таймеру или событию внешнему какому то. (можно и наоборот, но в прерывании только фиксировать факт нажатия кнопки - это недолго, реакцию прописать можно в основном цикле когда мк уже реально больше нечего делать)
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Друг Кота
Аватара пользователя
Сообщения: 15705
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Самое простое - К155ИД3 + линия возврата на любое внешнее прерывание.
:roll:
Друг Кота
Аватара пользователя
Сообщения: 16545
Зарегистрирован: Вт сен 07, 2010 03:01:06
Откуда: Moscow-Izmaylovo

Сообщение m.ix »

я пока что знаю два типа
1 матричный
2 резистивный

Первый имеет много выводов
Второй вроде мало но чуть сложнее устроен.

В автомагнитолах часто резистивный используется способ.
Всего два вывода
Остальное задаётся резисторами.
В таком случае как мне кто то ответил МК должен иметь на борту ЦАП или АЦП
Что бы своего рода понять что и какой контакт замкнут.
Своего рода это делитель напряжение с определённым шагом и допуском, что бы после было можно отличить работу самой дальней кнопки с максимальным сопротивлением.
Самая близкая и первая подсоединяется без резисторов, в автомагнитолах выполняют такие кнопки включения и выдвижение диска.
СО временем кнопки хереют и увеличивается ихнее сопротивление, что ведёт к не правильной выполняемой команде.

Я в автомагнитоле пробовал (побаловаться и при ремонте) так подсоединить переменный резистор и крутя его выискивая кнопки.

=================
Тут под руководством опытного программера собрал бегущую строку, он использовал клавиатуру от компьютера, что весьма удобно при вводе текста.
Комповая клава имеет матричное устройство.
Лечу лечить WWWашу покалеченную технику.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт окт 30, 2014 21:13:31
Откуда: Санкт-Петербург

Сообщение Timofiy_K »

Спасибо за развернутый ответ, m.ix.
Я почитал разной информации, и решил делать через АЦП
С ними все равно нужно разбираться, вникать в работу, а тут и шанс предоставляется на практике ознакомиться.
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

Есть еще вот такие недорогие сенсорные клавиатурки, подключаются по i2c
http://www.ebay.com/itm/121336563235?_t ... EBIDX%3AIT
http://www.ebay.com/itm/221559210817?_t ... EBIDX%3AIT
это чтобы не париться с нехваткой ног мк, дребезгом и т.п.
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Ответить

Вернуться в «Периферия»