Матричная клавиатура на N*M кнопок с управлением в 1 провод
-
vladlen-from-vrtp
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт май 01, 2014 07:28:15
Матричная клавиатура на N*M кнопок с управлением в 1 провод
На рисунке схема для 4*4, а здесь выложил проект в протеусе.
Я сделал для PICа, но понятное дело, что можно под любой камень использовать.
Я сделал для PICа, но понятное дело, что можно под любой камень использовать.
- Вложения
-
- key.gif
- (51.06 КБ) 783 скачивания
- Реклама
- Gisteresis
- Друг Кота
- Сообщения: 4732
- Зарегистрирован: Ср сен 18, 2013 10:08:26
- Откуда: Санкт-Петербург
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Только быстродействие опроса такой клавы минимальное. Тут вообще каждый выбирает компромисс между количеством задействованных ножек и скоростью опроса.
Вообще видел много реализаций клавиатуры, есть даже на АЦП, там вроде тоже проводов почти нет.
Вообще видел много реализаций клавиатуры, есть даже на АЦП, там вроде тоже проводов почти нет.
-
vladlen-from-vrtp
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт май 01, 2014 07:28:15
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Время опроса до последней кнопки, при тактовой 4МГц на PIC12F675, что-то около 6мс.
А 6мс для клавиатуры - это же моргнул и уже сотни полторы символов напечатало.
И еще один хороший момент, по-моему, что можно не заморачиваться особо с антидребезгом в силу принципа работы.
И сам алгоритм опроса примитивный очень, так как по первому нулю на входе, получаем автоматом номер кнопки.
В случае с АЦП кроме кнопок еще получается столько же резисторов нужно.
А так, например, даже для 64 кнопок нужно 16 диодов, 10 резисторов, конденсатор и два регистра.
На контактов для пайки меньше.
А 6мс для клавиатуры - это же моргнул и уже сотни полторы символов напечатало.
И еще один хороший момент, по-моему, что можно не заморачиваться особо с антидребезгом в силу принципа работы.
И сам алгоритм опроса примитивный очень, так как по первому нулю на входе, получаем автоматом номер кнопки.
В случае с АЦП кроме кнопок еще получается столько же резисторов нужно.
А так, например, даже для 64 кнопок нужно 16 диодов, 10 резисторов, конденсатор и два регистра.
На контактов для пайки меньше.
- Gisteresis
- Друг Кота
- Сообщения: 4732
- Зарегистрирован: Ср сен 18, 2013 10:08:26
- Откуда: Санкт-Петербург
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Никто и не спорит. Хороший вариант. Но, все зависит от применения. На АЦП, хоть и требуется резистивная матрица, но метод быстрее. Или я ошибаюсь?
Для большинства применений, предложенный вами метод, конечно предпочтительней.
Изголяться придется когда время действительно критично, например устройство типа денди, с клавиатурой, дисплеем, звуком... Хотя при таком применении наверное уже имеет смысл отдельный контроллер клавиатуры поставить.
Для большинства применений, предложенный вами метод, конечно предпочтительней.
Изголяться придется когда время действительно критично, например устройство типа денди, с клавиатурой, дисплеем, звуком... Хотя при таком применении наверное уже имеет смысл отдельный контроллер клавиатуры поставить.
-
vladlen-from-vrtp
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт май 01, 2014 07:28:15
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Думаю если сравнивать с учетом обработки дребезга, то смысла в большей быстроте АЦП не так много остается.
- Реклама
- Gisteresis
- Друг Кота
- Сообщения: 4732
- Зарегистрирован: Ср сен 18, 2013 10:08:26
- Откуда: Санкт-Петербург
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
А почему у вас не нужно делать проверку дребезга?
Это одна буква введена.А 6мс для клавиатуры - это же моргнул и уже сотни полторы символов напечатало.
-
vladlen-from-vrtp
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт май 01, 2014 07:28:15
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Что-то не понял про одну букву.
С дребезгом, там ведь как, во время опроса закидываем элемент массива и смотрим, что на выходе.
А кнопка влияет на выход только когда загружен элемент соответствующий этой кнопке, в любой другой момент она не влияет ни как вообще.
Опрос мы запускаем с удобным для нас периодом, по переполнению от таймера например.
То есть кнопка сможет повлиять на выход как минимум только через 6мс (для моего случая с PIC12F675 на 4МГц), а это уже сравнимо с длительностью самого дребезга для хорошей кнопки.
С дребезгом, там ведь как, во время опроса закидываем элемент массива и смотрим, что на выходе.
А кнопка влияет на выход только когда загружен элемент соответствующий этой кнопке, в любой другой момент она не влияет ни как вообще.
Опрос мы запускаем с удобным для нас периодом, по переполнению от таймера например.
То есть кнопка сможет повлиять на выход как минимум только через 6мс (для моего случая с PIC12F675 на 4МГц), а это уже сравнимо с длительностью самого дребезга для хорошей кнопки.
- Gisteresis
- Друг Кота
- Сообщения: 4732
- Зарегистрирован: Ср сен 18, 2013 10:08:26
- Откуда: Санкт-Петербург
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Вы сказали, что время полного опроса клавиатуры занимает 6мс. Это время ввода всего одного символа а не полторы сотни символов.
Об этом я и сказал, что каждые 6мс может быть дребезг. Например первый опрос кнопка зажалась, второй отпустилась, третий опять зажалась.
Но это я просто обратил внимание на это, достаточно ли этого на практике я не знаю.
А, вот что вы имели в виду.То есть кнопка сможет повлиять на выход как минимум только через 6мс (для моего случая с PIC12F675 на 4МГц), а это уже сравнимо с длительностью самого дребезга для хорошей кнопки.
Об этом я и сказал, что каждые 6мс может быть дребезг. Например первый опрос кнопка зажалась, второй отпустилась, третий опять зажалась.
Но это я просто обратил внимание на это, достаточно ли этого на практике я не знаю.
- Microtech
- Поставщик валерьянки для Кота
- Сообщения: 2052
- Зарегистрирован: Вт ноя 03, 2009 21:02:38
- Откуда: Москва
- Контактная информация:
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Здорово придумано.
Но вот основной процессор должен всё время опрашивать кнопки, а RC цепочка на линии данных, вносит ограничения на тайминги. Выкрутиться можно, идея хорошая.
На подобную задачку я ставил мелкий AVR (AtTiny2313), он опрашивал кнопки классически, с бегущей единицей, с подавлением дребезга + автоповтор. Слал коды кнопок через UART. Бяка была в том, что при таком решении, основной контроллер и периферийные (клавиатура), должны синхронизироваться кварцами. Все попытки настроить калибровки на RC генераторе, давали 20% отказов. Когда попало, от температуры и просто так.
На подобную задачку я ставил мелкий AVR (AtTiny2313), он опрашивал кнопки классически, с бегущей единицей, с подавлением дребезга + автоповтор. Слал коды кнопок через UART. Бяка была в том, что при таком решении, основной контроллер и периферийные (клавиатура), должны синхронизироваться кварцами. Все попытки настроить калибровки на RC генераторе, давали 20% отказов. Когда попало, от температуры и просто так.
-
vladlen-from-vrtp
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Чт май 01, 2014 07:28:15
Re: Матричная клавиатура на N*M кнопок с управлением в 1 про
Наверное, это будет хорошо для каких-нибудь тормозных задач наподобие часов.
Во время выставления начальных значений торопиться некуда, вызываем KeyScan каждые 100мс, например.
Тупо, а зато кнопки можно удобно вынести без лишнего жгута проводов.
Думал вообще питание для регистра брать из линии данных, чтобы похоже было на 1-wire.
То есть плюс еще один диод с конденсатором и минус один провод.
Но не уверен.
Во время выставления начальных значений торопиться некуда, вызываем KeyScan каждые 100мс, например.
Тупо, а зато кнопки можно удобно вынести без лишнего жгута проводов.
Думал вообще питание для регистра брать из линии данных, чтобы похоже было на 1-wire.
То есть плюс еще один диод с конденсатором и минус один провод.
Но не уверен.


