12-кнопочная клавиатура с двухпроводным интерфейсом » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки
Опрос

Какими микроконтроллерами вы чаще всего пользуетесь


PIC10
PIC12
PIC16
PIC18
PIC24
PIC32
Другими


Последние материалы
  • Тестовая плата для отладки программ на микроконтроллере PIC18F4550
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Электронная "Незабудка" для забывчивых
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Статьи » 12-кнопочная клавиатура с двухпроводным интерфейсом
    12-кнопочная клавиатура с двухпроводным интерфейсом
    Автор публикации: alex Просмотров: 9330 Добавлен: 20-05-2013, 06:15 Комментарии: 0

         В статье рассмотривается вариант организации 12-кнопочной клавиатуры для устройств на микроконтроллерах. Интерфейс клавиатуры потребует от микроконтроллера всего лишь две линии ввода/вывода: одна линия предназначена для информирования микроконтроллера о нажатии кнопки, вторая линия – для чтения информации о нажатой кнопке.

    12-кнопочная клавиатура на таймере 555

         Как известно, клавиатуры используются в устройствах на микроконтроллерах для ввода пользовательской информации и управления. В общем случае, многокнопочная клавиатура организуется как матрица кнопок объединенных в столбцы и строки, таким образом, интерфейс такой клавиатуры потребует определенного минимального количества линий ввода/вывода микроконтроллера. Например, 12-кнопочная клавиатура организуется в формат 4×3 и потребует 7 линий ввода/вывода. Для определения нажатой кнопки на такой клавиатуре микроконтроллер должен просканировать все столбцы и строки. В сети Интернет много информации относительно этой техники.
         Здесь мы рассмотрим иной интерфейс клавиатуры, требующей всего лишь две линии ввода/вывода микроконтроллера. Основа нашей 12-кнопочной клавиатуры – интегральный таймер 555, который сконфигурирован как несинхронизированный мультивибратор. Также для проверки работоспособности клавиатуры мы будем использовать микроконтроллер PIC16F628A, который будет считывать информацию с выхода таймера, определять какая кнопка нажата и отображать код нажатой кнопки на символьном LCD дисплее.

    Теория

    Рассматриваемая техника реализации клавиатуры основывается на очень простом принципе. Значение выходной частоты несинхронизированного мультивибратора определяется двумя резисторами и конденсатором, ее значение рассчитывается по формуле, представленной на рисунке 1.
    Схема включения таймера и формула расчета частоты
    Рис. 1. Схема включения таймера 555 в режиме генератора импульсов и формула расчета выходной частоты.

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

    Принцип работы нашей клавиатуры

         При нажатии одной из кнопок клавиатуры, резистор с определенным значением включается между выводом 7 (Разряд) и выводом 6 (Останов) таймера 555, завершая схему несинхронизированного мультивибратора. Выходные импульсы подсчитываются за период 100 мс встроенным таймером микроконтроллера. Определение микроконтроллером нажатой кнопки производится по количеству переполнений таймера. Т.е., если количество переполнений таймера равно 5, то была нажата кнопка 5. Если была нажата кнопка 0, то переполнения таймера микроконтроллера не произойдет.

    Принципиальная схема интерфейса клавиатуры
    Схема 12-кнопочной клавиатуры на таймере 555

         На схеме показано, как можно подключить 12 кнопок к таймеру 555 для генерации 12 различных частот. Резисторы R0 – R# – это 12 различных резисторов, которые включаются в цепь (между выводом 6 и 7 таймера) в соответствии с нажатой кнопкой.
         Для нашего случая номинал резистора R1 – 1 кОм, конденсатора C – 0.01 мкф, в соответствии с типовой схемой включения. В нижеследующей таблице видно соответствие между различными номиналами резистора R2 для каждой кнопки, частотой и количеством переполнений таймера 0 микроконтроллера. Заметим, что некоторые из этих резисторов являются составными для получения нужного номинала.
    R1=1 кОм,  С=0.01 мкФ
    Кнопка № Номинал
    резистора R2,
    Ом
    Выходная
    частота,
    Гц
    Количество
    импульсов
    за 100 мс
    Количество
    переполнений
    Таймера 0
    0 47000 1515.79 151.58 0
    1 22000 3200 320 1
    2 12000 5760 576 2
    3 8200 8275.86 827.59 3
    4 5600 11803.28 1180.33 4
    5 4700 13846.15 1384.62 5
    6 3900 16363.64 1636.36 6
    7 3400 18461.54 1846.15 7
    8 2800 21818.18 2181.82 8
    9 2530 23762.38 2376.24 9
    * 2200 26666.67 2666.67 *
    # 2000 28800 2880 #

    Для более стабильной работы схемы нужно применять электронные компоненты (конденсатор и резисторы) с допуском менее 5%.

    Описание работы схемы, значение и выбор времязадающих компонентов схемы.

    Рассмотрим теперь основные моменты в работе и настройке интерфейса клавиатруы.

    Выходы частоты и одиночного импульса

    Как видно, схема имеет два выхода: выход частоты (на схеме обозначен как TOCKI) и выход импульса (на схеме – RA2).

    Схема интерфейса 12-кнопочной клавиатуры на таймере 555

         Выход частоты, непосредственно с вывода 3 таймера, подается на вывод микроконтроллера TOCKI (вход Таймера 0 PIC16F628A) для измерения генерируемой частоты. Второй выход – это выход таймера со сглаживающим конденсатором Cp. При нажатии кнопки на клавиатуре последовательность импульсов с выхода таймера сглаживается конденсатором в единственный импульс. Этот импульс является сигналом для микроконтроллера, что нажата кнопка на клавиатуре. Резистор Rp (3.6 кОм) предназначен для разряда конденсатора Cp при отпускании кнопки клавиатуры, что необходимо для генерации импульса при следующем нажатии кнопки. Диод D1 предназначен для изолирования двух выходов.

    Значение номиналов резистора Rp и конденсатора Cp

         Значение резистора Rp не выбирается произвольным. Если значение слишком велико, то мы получим слишком большую задержку по времени между двумя нажатиями любых клавиш, т.к. потребуется больше времени для разряда конденсатора Cp. В тоже время, значение сопротивления не должно быть слишком малым, так как напряжение на конденсаторе в значительной степени уменьшится, при следовании двух последовательных импульсов с выхода таймера 555. Мы выбрали значения резистора Rp=3.6 кОм и конденсатора Cp=1 мкФ. В этом случае постоянная времени RC будет равна 0.0036 c. Это означает, что если выходная частота таймера 278 Гц (1/0.0036), напряжение на конденсаторе может снизится до 63% от его амплитудного значения между двумя последовательными импульсами. Как видно, значения Rp и Cp также выбраны не достаточно эффективно, чтобы сгладить все рабочие частоты.
         Следовательно, значения Rp и Cp должны быть подобраны так, чтобы постоянная времени RC была достаточна для сглаживания всех рабочих частот и, между тем, должна быть достаточно малой, чтобы пользователь мог нажимать кнопки на клавиатуре с минимальной задержкой. Текущие значения Rp и Cp вводят задержку 5 мс, кроме того, минимальная частота (из таблицы в первой части статьи) равна 1516 Гц, что намного выше 278 Гц.

    Роль резистора Rc

         Если посмотрите на схему интерфейса клавиатуры, вы увидите, что резистор Rc имеет сопротивление 10 МОм и включен непосредственно между Vcc и конденсатором С. Данный резистор играет очень интересную роль. Когда пользователь отпускает кнопку, несинхронизированный мультивибратор останавливается, поскольку из цепи исключается резистор R2 (типовая схема включения). Мы знаем, что выходной каскад таймера 555 имеет RS триггер. Предположим, что триггер был сброшен (что означает высокий уровень на выходе 555) в момент, когда кнопка клавиатуры была отпущена. В этом случае теряется путь для подачи сигнала низкого уровня на вход сброса (т.к. исключили резистор R2), пока мы не обеспечим альтернативное решение для перезарядки конденсатора С. Как только конденсатор заряжается до 2/3 напряжения питания, на выходе снова появляется сигнал низкого уровня. Помните, что мы должны убедиться, что выходное напряжение падает до 0, прежде чем будет нажата следующая кнопка. Так вот, резистор Rc заботится об этом процессе. Большое значение его сопротивления (10 МОм) гарантирует, что имеет небольшое влияние на зарядку конденсатора С при нормальной работе.

    Функциональная схема таймера 555 и анимация работы таймера
    Анимация: Работа интегрального таймера 555


    Подключение интерфейса клавиатуры к микроконтроллеру, основные моменты в ПО микроконтроллера, демонстрация работы.

         Два выхода нашего интерфейса клавиатуры подключаются непосредственно к микроконтроллеру PIC16F628A. Выход одиночного импульса подключается к порту RA2, выход частоты – к порту RA4 (TOCKI) микроконтроллера. С целью демонстрации работоспособности схемы и интерфейса мы используем двухстрочный символьный ЖК индикатор на базе контроллера HD44780, подключенный по 4-битной шине к микроконтроллеру. На индикаторе будет отображаться информация о нажатой кнопке на клавиатуре.
         Дополнительно к выходу таймера был подключен светодиод последовательно с резистором 470 Ом для индикации нажатия кнопки (на схеме не указан).

    Принципиальная схема подключения клавиатуры и ЖК индикатора к микроконтроллеру
    Подключение клавиатуры на таймере 555 к микроконтроллеру

         Программное обеспечение микроконтроллера – простая тестовая программа, написанная с использованием компилятора mikroC от компании mikroElektronika. В программе конфигурируется и используется встроенный Таймер 0 микроконтроллера для подсчета импульсов с выхода таймера 555. Программа опрашивает порт RA2 и при определении импульса, Таймер 0 активируется на 100 мс и фиксируется число переполнений.

    Блок-схема программы микроконтроллера
    Блок-схема программы микроконтроллера

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

    Внешний вид макетной платы интерфейса клавиатуры
    Макетная плата: интерфейс клавиатуры на таймере 555


    Демонстрация работы


    В архиве: Исходный код программы на СИ (mikroC) и прошивка для микроконтроллера

    2wireKeypad.rar [2,99 Kb] (cкачиваний: 421)

    Категория: Статьи, Прочее, PIC16
    « Назад
    Комментарии