Главная страница Комбинированное использование портов Принцип взаимодействия кодера с микроконтроллером очень прост. Функция микроконтроллера сводится в данном случае к про верке состояния выхода DA и, при обнаружении уровня логической единицы на нем, считыванию кода данных с выходов D, С, В и А. Алгоритм опроса линии DA может быть произвольным, в тоц числе может быть увязан с алгоритмом выполнения микроконтроллером системньпс функций. В этом случае управляющая программа, проходя большой цикл, периодически проводит тестирование ли-НИИ DA. Второй вариант - работа в режиме прерывания. В этом случае выход DA соединяется с линией порта В микроконтроллера PIC 16С64 или 16С74. При нажатии на клавишу состояние линии DA изменяется, что вызывает прерывание текущей программы и переход к соответ ствующей подпрограмме обработки клавиатурного прерывания. Данное решение гарантирует, что любое нажатие на клавишу не будет пропущено, как это иногда происходит при программном опросе линии DA. Микроконтроллер может с успехом выполнять и функции клавиатурного кодера. Использование микроконтроллеров в матричных клавиатурах - самое универсальное решение. На рис, 3.29 представлен вариант подключения к микроконтроллеру матричной клавиатуры с шестнадцатью клавишами, причем их число может быть без труда увеличено. Клавиши находятся на пересечении строк и столбцов матрицы. При нажатии на клавишу происходит замыкание соответствующей строки и столбца. Программа по номерам строки и столбца может определить, какая клавиша была нажата. Программа работает следующим образом. Линии столбцов соединены с портами RBO - RB3 микроконтроллера, являющимися вьпсодами, линии строк, напротив, подключены к входным портам RB4 - RB7. Программа (листинг З.б) осуществляет сканирование клавиатуры по строкам и столбцам, определяя момент появления логической единицы на одном из входных портов. В процессе сканирования непрерывно инкрементируется переменная key. При обнаружении логической единицы значение переменной key определяет номер нажатой клавиши. Сканирование столбцов осуществляется путем изменения позиции единицы в четырехра.-рядном позиционном коде, то есть п)те> последовательной выдачи на линии столбцов кодов 0001,0010,010 и 1000. При каждом коде производится сканирование строк. ЕсЛ* 4x470fi -IZD- Л LED -{=> = 6 0- -0 J-0 о- PIC 16С54 -ху- RA2 RA1 РАЗ RAO RTCC 0SC1 МСП? 0SC2 Vss Vdd RBO RBI RB2 RB3 RB7 RB6 RB5 RB4 -СП- 220pF lOkfi -o Vcc 4х10кП -cm- Рис. 3.29 Подключение матричной клавиатуры к микроконтроллеру какая-либо клавиша была нажата, то в одной из строк будет обнаружена единица. Сканирование в этот момент завершается, а значение переменной key идентифицирует нажатую клавишу. До начала сканирования значение переменной key устанавливает ея равным нулю. Если ни одна клавиша не была нажата, программа возвращает в качестве значения переменной key число 16 (lOh). Программа осуществляет индикацию номера клавиши в двоичном коде с Помощью четырех светодиодов, подсоединенных к порту А. Листинг 3.6 Интерфейс матричной клавиатуры 4x4. Программа соответствует инструкции по применению фирмы Parallax. Зга программа - пример управления матричной клавиатурой 4x4. Подпрограмма определяет номер нажатой аеишы в шестнадцатеричном коде от О до F (переменная key), ьсли никакая клавиша не нажата, значение key равно 10h. s : . rows row4 rb.6 rb.7 ; Определение переменных величин. cols index org 8 ds 1 ds 1 ds 1 ; Определение используемого PIC-микроконтроллера. device picl6c54,rc osc,wdt off, protect.off reset start ; Исходная программа. org 0 start nw !rb, #11110000b mov Ira, #0 ikeys call scankeys cje key, 16, :delay mov ra, key :delay nop djnz index,:delay goto :keys Подпрограмма сканирования клавиатуры. ; RB7 - RB4 - входы, RB3 - RBO - выходы. Все линии порта А - выходы. :scan press
Клавиатура 4x4. Установка бита переноса. Обнуляем бит переноса. Проверка окончания цикла. Возвращение с номером в key. вол из sleep-режима с помощью клавиатуры р некоторых устройствах микроконтроллер активизируется только в ответ на воздействие пользователя на клавиат)ру, а все остальное время остается в спящем режиме (sleep) для экономии энергии. Такой возможностью обладают все PIC-микроконтроллеры подсемейства 16СХХ. Выход из sleep-режима может осуществляться по любо-jjy внешнем) прерыванию, в том числе по прерыванию, вызванному йзменение.м состояния линий порта В. Чтобы это опробовать, достаточно реализовать схему, приведен-jjyK) на рис. 3.30. Соответств}тощая программа должна до перевода микроконтроллера в sleep-режим разрешить прерывания по изменению состояния линий порта В. Нажатие любой клавиши вызовет прерывание, которое выведет микроконтроллер из sleep-режима. Рис. 3.30 Пример пробуждения PIC16СХХ в результате нажатия на клавишу PiC 16CXX RBO RBI RB2 RBJ RB4 RB5 RB6 RB7 LEDb 4x1 кП --[=>- LED2 LED3. LED4 4ZIb i SW1 -CD-о о- I SVV2 -СП--о о- I SW3 ч 1-о о- I SW4 -О О- 4x1000 Все это реализует программа, приведенная в листинге 3.7. Инди-Ия активизированной клавиши осуществляется светодиодами. Листинг 3.7 программа иллюстрирует принцип пробуждения Р1С-микроконтроллера результате воздействия на подключенную к нему клавиатуру. Выход из sleep-режима осуществляется за счет прерывания, зникающего при изменении состояния линий параллельного порта. ; В этом примере был использован микроконтроллер PIC 16С71. Программа соответствует инструкции по применению AN552 фирмы Microchip. movwf PORTJ call KeyRelease retfie Включение индикации. Проверка отпускания клавиши.
Эта подпрограмма определяет, какая клавиша нажата, и зажигает соответствующий светодиод. Затем ожидает, когда все клавиши будут отпущены. Servickup
Запрет прерываний от порта В. Считывание порта В с инверсией. Сброс флага прерываний от порта В. Задержка на 16 ис. Чтение порта В с инверсией. Маскировка выходов. Переиена мест полубайтов. ; резисторов к линиям порта В. bcf STATUS, RPO ; Банк 0. clrf PORTJ ; Обнуление порта В. clrf P0RT A ; Обнуление порта А. bsf P0RT A,0 ; Установка первого бита порта А в 1. bcf INTCON, RBIE ; Запрет прерываний от порта В. movf PORTJ, W ; Считывание порта В. bcf INTCON, RBIF ; Сброс флага RBIF. bsf INTCON, RBIE ; Разрешить прерывание от порта В. retfie ; Возврат. Подпрограмма задержки на 16 мс, рассчитанная на работу чкроконтроллера с кварцевым резонатором частотой 4,096 МГц.
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |