Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
knigaEMTmikroprotsesori.doc
Скачиваний:
16
Добавлен:
10.03.2016
Размер:
1.33 Mб
Скачать

Використання клавіатури з мікроконтролером

Мета роботи: засвоїти способи використання клавіатури в мікроконтролерній системі

Теоретичні відомості

Як правило, для введення інформації вручну в системах управління використовують клавіатуру.

Через те, що в лабораторній установці відсутні клавіші, будемо вважати, що ввімкнення-вимкнення вимикачів імітує роботу клавіш.

У лабораторних роботах № 2, 5 при виконанні програми неодноразово використовувалось опитування стану вимикачів (можна вважати клавіш). Наприклад, опитування стану вимикача RA0, підключеного до біту 0 порту А, виконує фрагмент програми:

POVTOR: btfss PORTA, 0 ; якщо RA0=1, пропустити наступну

; команду

goto POVTOR ; якщо ні,– виконати перехід на POVTOR

Недоліком такого способу введення інформації про стан контакту кнопки, реле, вимикача, кінцевого або шляхового вимикача тощо є те, що, поки не натиснуто клавіші, контролер не виконує ніяких інших корисних дій, які потрібно було б передбачити в алгоритмі.

Раціональніше організувати роботу системи так, щоб не робити неперервних опитувань стану клавіш, а здійснювати реагування на зміну їх стану, використовуючи переривання.

Спеціально для цього у PIC-контролерах передбачено переривання при зміні стану будь-якого з входів RB4–RB7. У такому разі встановлюється прапорець RBIF у регістрі INTCON (конфігурації переривань). Якщо раніше були встановлені в стан "1" біти RBIE (дозвіл переривань від зміни стану чотирьох старших бітів порту В) і GIE (глобальний дозвіл переривань), почне виконуватись підпрограма обробки переривання з адреси h'4'. Це переривання може вивести мікроконтролер з режиму SLEEP.

Іншим чином мікроконтролер вийде з режиму SLEEP, якщо буде встановлено RBIE =1, а GIE = 0. Тоді при натисканні на будь-яку клавішу програма буде виконуватись з наступної за SLEEP команди.

Коли RBIE = 0, ні переривання, ні пробудження не відбудеться.

Н

а рис. 25.1. зображено типову схему підключення клавіатури матричним способом.

Для забезпечення роботи схеми :

  • виводи RB0-RB3 встановлюють у режим виведення,RB4-RB7 – введення;

  • програмно підключають підтягуючі внутрішні резистори порту В ( у регістрі OPTION_REGбітRBPU= 0), щоб при ненатиснутих клавішах на входи RB4-RB7 надходила "1";

  • на RB0-RB3 виводять "0". У регістрі INTCONвстановлюють біт дозволу переривання при зміні сигналу на входах RB4-RB7 (RBIE=1) і глобальний дозвіл переривання (GIE= 1). При замиканні будь-якої клавііші зміниться стан порту В. Наприклад, якщо замкнути контактSB9, через нього з виходуRB2 на вхідRB6 надійде "0". Таким чином, зміниться стан порту В, встановиться прапорRBIF = 1і буде здійснено виклик підпрограми обробки переривання.

У ній потрібно передбачити:

  1. читання або запис в PORTB, щоб усунути невідповідність попереднього та останнього кодів порту B;

  2. скидання прапора RBIF в нуль.

Звичайно, там же потрібно передбачити визначення натиснутої клавіші і реагування на цю дію згідно з алгоритмом розроблюваної програми. У лабораторній установці використовується інша схема підключення контактів (рис. 25.2). Тут замість клавіш використовуються чотири вимикачі SB1–SB4. При розімкнутих контактах на входи RB4–RB7 надходять сигнали низького рівня ("0").

Якщо замкнути контакт, наприклад SB1, на вхідRB4 надійде сигнал високого рівня ("1") через те, що співвідношення опорів дільника напругиR1 <<R5. Світлодіоди призначені для відображення факту сприйняття контролером сигналу від натиснутої клавіші.

Відомо, що через пружні властивості контактів при їх замиканні за короткий час (до 10 мс) контакти один або декілька разів розмикаються і знову замикаються. Це явище називається "дренькіт контактів". При програмуванні слід його враховувати, зробивши затримку 10–20 мс після першого замикання контактів. Після затримки, коли дренькіт припиниться, можна програмно визначити, який контакт замкнутий, і здійснити відповідні до цього дії.

Алгоритм взаємодії мікроконтролера з клавіатурою наведено нарис.25.3,25.4.

ПОРЯДОК ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ

  1. У середовищі MPLAB створити у папці D:\ 1Work новий проект з іменем 25ГБ (Г – номер групи, Б – номер бригади), обравши у меню Project-New Project.

  2. У вікні Edit Project додати новий файл на асемблері 25ГБ.asm (Add Node – додати вузол). Після повернення до вікна Edit Project нижче hex-файла з'явиться файл з розширенням .asm. Після появи вікна середовища MPLAB IDE створити цей текстовий файл з розширенням .asm (File – New), записавши його у папку D:\1Work (File - Save As …).

  1. Ввести текст програми на асемблері з вставкою власного фрагмента виведення інформації на світлодіоди згідно із заданим варіантом ( див. коментар до програми).

  2. Записати програму на диск (File – Save).

  3. Виконати компіляцію програми (Project – Make Project або кнопка у вигляді зеленої лійки). Після цього на екрані з'являється вікно результатів компіляції (Build Results). Ознайомитись з повідомленнями про можливі помилки (error) і виправити їх. Потім повернутись до виконання п. 4, 5, поки не буде видано повідомлення "Build completed successfully" (компіляцію завершено успішно).

  4. Підключити лабораторну установку до LPT1 порту комп'ютера і джерела живлення. Встановити перемикач режимів у положення "Програмування" (світиться світлодіод "Prog"), а всі вимикачі, що підключені до портів, вимкнути.

  5. Згорнути вікно MPLAB і на робочому столі монітора зробити подвійний клік на синій піктограмі програматора "Propic2". Перевірити у вікні Propic2, чи вірно задано тип мікроконтролера (має бути PIC16F628). Стандартним шліхом відкрити створений при компіляції hex файл з ім'ям вашого проекту.

  6. Виконати програмування мікроконтролера, натиснувши на піктограму з червоною блискавкою. Після завершення програмування відтиснути перемикач режимів у положення "Робота".

  7. Здійснити тестування мікроконтролерної системи у порядку, вказаному в табл. 25.1.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]