В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Грызём микроконтроллеры. Урок 7. Подключение к МК кнопок, клавиатуры, энкодера

📆12 марта 2009   ✒️Spirit   🔎30.201   💬9  
Очень давно обещал продолжить цикл статей по работе с микроконтроллерами, но не было физической возможности это сделать, за что и прошу прощения у тех, кто этого так долго ждал.

Эта статья будет вводной в тему связи МК с периферийными устройствами в их стандартной, и не очень, конфигурации.
Список всех частей:
Грызём микроконтроллеры. Урок 1. Моргаем 8-ю светодиодами. CodeVision, Proteus, ISIS
Грызём микроконтроллеры. Урок 2. CodeVision и С
Грызём микроконтроллеры. Урок 3. Циклы, прерывания и массивы
Грызём микроконтроллеры. Урок 4. Мерим температуру или напряжение
Грызём микроконтроллеры. Урок 5. Кодовый замок
Грызём микроконтроллеры. Урок 6. Прошиваем МК
Грызём микроконтроллеры. Урок 7. Подключение к МК кнопок, клавиатуры, энкодера
Грызём микроконтроллеры. Урок 8. Программирование кнопок, клавиатуры, энкодера
Грызём микроконтроллеры. Урок 9. Клавиатура вглубину


Самой первой и неотъемлемой частью любого устройства являются органы управления.

Самый простейший способ взаимодействия МК с окружающим миром – кнопка. Но в зависимости от конструктивных особенностей устройства, она может быть подключена весьма разнообразными способами.



На этой схеме приведены простейшие варианты подключения кнопок.
Верхняя – при нажатии на кнопку на вход МК подается «низкий» логический уровень, т.е. логический «0». А резистор PULLUP предназначен для обеспечения «высокого» уровня при отпущенной кнопке. В этом варианте включения его можно не ставить, т.к. при программировании МК можно включить внутреннюю подтяжку любого вывода порта МК к логической «1». То есть, эти резисторы уже встроены в каждый вход МК и их можно по желанию включить и отключить.
Второй вариант – при нажатии на кнопку на вход МК подается логический «0». В этом варианте резистор PULLDOWN уже обязателен, т.к. в МК нет возможности «подтянуть» вывод к низкому логическому уровню. Так же, при этом желательно отключить внутреннюю «подтяжку», чтобы она не влияла на состояние этого вывода.

Из этих двух вариантов я бы советовал использовать первый, т.к. для него не нужно дополнительных элементов в обвязке МК, а так же необходимость согласования уровней, если кнопка расположена в другом модуле, напряжение питания которого отличается от напряжения питания МК, но об этом позже :laughing:

Следующий вариант управления устройством, который в последнее время приобрел немалую популярность – это валкодер (или энкодер – кому как winked). Кому-то это устройство кажется страшным и непостижимым зверем, заброшенным к нам неземными цивилизациями для порабощения и истребления человеческого рода am Но на самом деле использовать его ничуть не сложнее, чем обычную кнопку!
Сначала немного разберемся в принципе его работы.

Внутри него есть диск с тремя концентрическими кольцами контактов. Одно кольцо сплошное - это общий контакт. Два других сегментированы и их контакты сдвинуты на небольшой угол относительно друг друга. А сверху по этим контактам скользит бегунок, замыкая и размыкая внешние кольца с общим. Если развернуть эти кольца в прямую, то получится примерно следующее.



С устройством разобрались, но как же это всё действует? Представьте, что оранжевая полоса на изображении – начальное положение ползунка. С общим контактом соединено только внешнее (верхнее) кольцо. Теперь при вращении валкодера влево (красная полоса), в какой-то момент времени замкнутыми окажутся все три кольца. А при вращении в обратную сторону (синяя полоса) – с общим кольцом соединиться среднее. Вроде ничего сложного.

А как же заставить МК определить, в какую сторону мы крутим ручку? Да очень просто: В момент замыкания среднего кольца с общим, проверяем, соединено ли с ним внешнее. Если да – значит крутим влево, а если нет – вправо.

А теперь представим, что у нас есть всего два провода, а кнопок нужно штук 6 (а может и больше winked)… Думаете нереально? Поверьте, всё чрезвычайно просто!



Из схемы вы видите, что кнопки подключены к входу аналого-цифрового преобразователя МК (ADC или АЦП) и создают делитель напряжения. При нажатии на одну из кнопок, на входе АЦП будет появляться определенное напряжение (от 0 но 2,5 Вольт). А зная это напряжение, несложно определить, какая именно кнопка была нажата. Увы, но при этом невозможно реализовать обработку одновременно нажатых клавиш. Тут каждая клавиша имеет свой «приоритет», и чем она выше (по схеме), тем выше и приоритет.





Еще один очень интересный способ работы с кнопками – матричная клавиатура. В ней кнопки располагаются на пересечении «строк» и «столбцов». То есть, при нажатии на кнопку «=», строка «D» соединяется со столбцом «3». Таким образом, при использовании 8 выводов МК (4 строки и 4 столбца), можно реализовать клавиатуру с 16-ю кнопками, причем можно без проблем определять одновременное нажатие любого количества кнопок.

Определение нажатой кнопки называют «опросом» клавиатуру. Происходит он следующим образом: строки (а можно и столбцы, это кому как удобно) подключаем к выходам МК, по умолчанию на которых логическая «1», а столбцы – к входам с подтяжкой (чтобы не колхозить лишних резисторов). Теперь, при опросе, поочередно устанавливаем каждую строку в логический «0». Если на этой строке нет ни одной нажатой кнопки, то во всех столбцах (на всех входах МК) будет логическая «1» (ее обеспечивают подтягивающие резисторы внутри МК), а если какие-либо кнопки нажаты, то на соответствующих входах МК будет логический «0», что и позволяет определить МК все нажатые кнопки.

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

До скорых встреч!

С уважением, Владимир! bully

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрили 8 читателей.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Грызём микроконтроллеры. Урок 8. Программирование кнопок, клавиатуры, энкодера... Здравствуйте, дорогие Датагорцы! По некоторым слабо зависящим от меня причинам не мог участвовать в...
Схема на Датагоре. Новая статья PIC микроконтроллеры. Все, что вам необходимо знать. Сид Катцен... PIC микроконтроллеры. Все, что вам необходимо знать. Сид Катцен пер. с англ. Евстифеева А. В. — М.:...
Схема на Датагоре. Новая статья Блок автоматического селектора входов и управления питанием усилителя на PIC12F675... Хочу предложить продолжение проекта Автоматическое включение/выключение сабвуфера на...
Схема на Датагоре. Новая статья Таймер "Незабудка" - устройство предупреждения и отключения... Человеку свойственна забывчивость. И с этим ничего нельзя сделать – в силу каких-либо причин любой...
Схема на Датагоре. Новая статья Грызём микроконтроллеры. Урок 9. Клавиатура вглубину... И снова приветствую Вас в моей лекционной! На этот раз я расскажу Вам как "сэкономить"...
Схема на Датагоре. Новая статья Схемка в блокнот. Реле времени на КМОП микросхемах... Иногда возникает необходимость отключать (или включать) нагрузку по истечении определенного...
Схема на Датагоре. Новая статья Фото-реле на микроконтроллере ATTiny13... Привет датагорцам! Я затеял ремонтные работы дома, и мне понадобилась система автоматического...
Схема на Датагоре. Новая статья Soft-start на MOSFET и выключатель питания для УНЧ и других устройств... Привет, друзья! Делал я как-то УНЧ с конденсаторами фильтра БП по 50.000 мкФ в плече. И задумал...
Схема на Датагоре. Новая статья Библиотеки для подключения COG-индикаторов TIC-55 и TIC-3321 к микроконтроллерам AVR... …простите, а вы не подскажите, как пройти в библиотеку? Небольшая предысторияПрежде, я уже имел...
Схема на Датагоре. Новая статья Цифровой индикатор уровня топлива и напряжения АКБ для автомобиля V.3 (ATMega8 и дисплей от Nokia 1110i)... Скоро будет год, как я выложил на Датагоре свою первую статью о цифровом индикаторе топлива и уже...
Схема на Датагоре. Новая статья RC-Test. Тестер ИК пультов дистанционного управления... Современная бытовая техника уже как-то не представляется без опции дистанционного управления и,...
Схема на Датагоре. Новая статья Однофазный привод постоянного тока... В основе разработки электропривода лежит принцип работы следящего привода с одноконтурной системой...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

<
Читатель Датагора

Datagor

<
Читатель Датагора

foxit

<
Читатель Датагора

ANALOGIC

<
Читатель Датагора

s_myth

<
Читатель Датагора

xtrason

<
Читатель Датагора

GRafGRay

<
Читатель Датагора

smallghost

<
Читатель Датагора

Spirit

<
Читатель Датагора

Slava21

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой