Принципи зчитування даних з матричної клавіатури за допомогою мікроконтролера AVR АТMEGA128 у режимі програмного опитування

При використанні великої кількості кнопок керування доцільно застосувати матричну схему підключення клавіатури, подібну наведеній на рис. 2.2. У даній схемі 16-ти клавішна клавіатура 4×4 з'єднується виводами з портом вводу/виводу Е. Причому, лінії 4 - 7 порту Е настроєні як вихідні й позначаються відповідно PORTE.4 - PORTE.7, а лінії 0 - 3 - як вхідні (PINE.0 - PINE.3). Горизонтальні лінії матриці через струмообмежуючі резистори підключені до позитивного полюса джерела живлення (+5 В).

 

Рисунок 2.2 - Принципова схема підключення матричної

клавіатури до мікроконтролера

 

 

Натискання однієї із клавіш замикає у відповідній позиції горизонтальну й вертикальну сигнальну лінії. Якщо на вертикальну лінію був поданий рівень напруги, що відповідає “логічному нулю”, то при натисканні клавіші на горизонтальній лінії також встановиться низький рівень напруги. Алгоритм опитування натискання клавіші зводиться до почергової установки низьких рівнів напруги на вертикальних лініях (PORTE.4 - PORTE.7) матриці (див. тимчасові діаграми керуючих сигналів на рис. 2.3) і зчитуванні інформації про рівень сигналу на горизонтальних лініях (PINE.0 - PINE.3).

 

Рисунок 2.3 - Тимчасові діаграми сигналів на вихідних лініях (PORTE.4 - PORTE.7) порту Е при опитуванні матричної клавіатури 4*4

 

 

Розглянемо приклад перевірки натискання однієї із клавіш першого і другого (крайніх праворуч) стовпців матричної клавіатури, схема підключення якої наведена на рис. 2.2 (адреси портів зазначені в таблиці 1.1):

...

ldi R19,0b11110000 Завантажити константу F0h в R19;

ldi R20,0b11100000 Завантажити константу Е0h в R20;

ldi R21,0b11010000 завантажити константу D0h в R21;

ldi R22,0b00001111 завантажити константу 0Fh для маскування в R16;

out 02,R19 настроювання ліній E0-3 на уведення, а E4-7 на вивід;

lbl1: мітка переходу для повторення опитування;

out 03,R20 установити в 0 рівень напруги на лінії PORTE.7, що відповідає першому стовпцю клавіатури;

nop установити затримку в один такт;

in R17,01 зчитати дані з регістра PINE в R18;

out 03,R21 установити в 0 рівень напруги на лінії PORTE.6, що відповідає другому стовпцю клавіатури;

nop установити затримку в один такт;

in R18,01 зчитати дані з регістра PINE в R18;

and R17,R22 обнулити неінформативну старшу тетраду в R17;

and R18,R22 обнулити неінформативну старшу тетраду в R18;

cp R17,R22 зрівняти значення в регістрі R17 зі значенням 0Fh;

brne lbl2 виконати перехід на мітку lbl2, якщо R18 ≠ 0Fh (одна або кілька клавіш першого стовпця клавіатури натиснуті);

cp R18,R22 зрівняти значення в регістрі R18 зі значенням 0Fh.

brne lbl2 виконати перехід на мітку lbl2, якщо R18 ≠ 0Fh (одна або кілька клавіш другого стовпця клавіатури натиснуті);

rjmp lbl1 перехід на мітку lbl1 для повторення процедури опитування;

lbl2: мітка виходу із процедури опитування.

...

Якщо в результаті процедури опитування в бітах молодших тетрад регістрів R17 і/або R18 будуть перебувати 0, то це буде свідчити про натискання клавіш, позиції яких можна визначити виходячи зі схеми, зображеної на рис. 2.1, і номерів обнулених розрядів у тетрадах.

Процедуру опитування матричної клавіатури 3×4 необхідно виконувати тільки з використанням ассемблерных команд, які (на відміну від їхніх еквівалентів мовою С) не перетворять значення бітів у старших тетрадах порту Е.

 

2.2 Опис лабораторної установки

 

Лабораторна робота виконується в індивідуальному порядку. На кожному робочому місці повинні бути встановлені: багатофункціональний лабораторний макет на базі мікроконтролера AVR ATMEGA 128, ПЕОМ типу IBM PC/AT c інстальованим програмним забезпеченням: операційною системою MS-WINDOWS v. 9x, 2000, XP і программатором на основі крос-компілятора мови програмування C CodeVision AVR. Завдання виконуються на лабораторному макеті на базі 8-ми розрядного мікроконтролера AVR ATMEGA 128. Докладний опис лабораторного макета наведено в пункті 1.2 лабораторної роботи № 1.

У даній роботі основним використовуваним периферійним устаткуванням лабораторного макета будуть 3-х кнопкова клавіатура 3´1 і матрична клавіатура 3´4 (див. рисунок 2.4), що підключають до мікроконтролера через порти F і Е відповідно. Для зручності на рис. 2.4. проведене позначення номерів клавіш, а так само індексів стовпців С1 – С3 і рядків R1 – R3 (для матричної клавіатури 3´4). Принципові схеми підключення клавіатур 3´1 і 3´4 наведені на малюнках 2.5 і 2.6 відповідно.

Рисунок 2.4 - Загальний вид 3-х кнопкової 3´1 (угорі) і 12-и кнопкової 3´4 матричної (унизу) клавіатури лабораторного макета

 

Рисунок 2.5 - Принципова схема підключення 3-х кнопкової (3´1) клавіатури до входів 6-8 порту F мікроконтролера AVR MEGA 128

Рисунок 2.6 - Принципова схема підключення 12-и кнопкової (3´4) клавіатури до мікроконтролера AVR АТMEGA 128 через порт вводу/виводу Е

2.3 3Порядок проведення роботи й вказівки по її виконанню.

Перед початком виконання практичної частини лабораторної роботи проводиться експрес-контроль знань по принципах функціонування мікроконтролера AVR ATMEGA 128, системі команд і можливостям організації програмного опитування клавіатури лабораторного макета.

При підготовці до лабораторної роботи необхідно скласти попередній варіант листинга програми, у відповідність із індивідуальним завданням (див. таблицю 2.1).

Завдання. Розробити в середовищі програмування Code Vision AVR програму для мікроконтролера AVR ATMEGA 128, що виконує опитування клавіатури лабораторного макета й виводить інформацію про натиснуті клавіші за допомогою блоку світлодіодів. Позначення клавіш наведені на рис. 2.4. Варіанти індивідуальних завдань представлені в таблиці 2.1.

Порядок виконання завдання:

1. Включити лабораторний макет (установити вимикач електроживлення в положення I, і переконатися у світінні індикатора електроживлення червоними кольорами).

2. Запустити компілятор Code Vision AVR.

3. Створити порожній проект.

4. Створити файл ресурсу для коду програми й підключити його до проекту.

5. Увести код вихідного модуля програми зчитування даних із клавіатури лабораторного макета у відповідність із варіантом завдання, зазначеному в таблиці 2.1.

6. Виконати компіляцію (нажавши клавішу F9) вихідного модуля програми й усунути помилки, отримані на даному етапі.

7. Настроїти параметри программатора.

8. Створити завантажувальний модуль програми (нажавши комбінацію клавіш Shift+F9) і виконати програмування мікроконтролера.

9. Перевірити працездатність завантаженої в мікроконтролер програми й показати результати роботи викладачеві.

10. У випадку некоректної роботи розробленої програми, виконати апаратне скидання мікроконтролера, провести налагодження вихідного модуля програми й заново перевірити функціонування програми, повторивши виконання пункту 9.

 

Приклад виконання завдання. Розробити програму, що виводить інформацію про індекси натиснутих клавіш першого й другого стовпців (С1 і С2) матричної клавіатури 3´4 (запалюється світлодіод, що відповідає номеру натиснутої клавіші), і здійснюючу вихід з режиму опитування при натисканні кнопки F3 клавіатури 3´1.

Рішення. У лабораторному макеті матрична клавіатура 3´4 підключена до порту E мікроконтролера. Лінії старшої тетрады порту Е настроюються на вивід даних, а лінії молодшої тетрады – на уведення. Кнопки F1, F2, F3 до 6-го, 7-го й 8-го розрядів порту F, який не потрібно спеціально налаштовувати на уведення даних. Блок світлодіодів підключений до порту D мікроконтролера й настроюється на вивід даних. Цикл опитування складається з послідовного зчитування даних з 1-го й 2-го стовпців матричної клавіатури 3´4 при відповідних керуючих сигналах, виводу інформації про позиції натиснутої клавіші на блок світлодіодів і перевірки стану натискання кнопки F1, при натисканні на яку процедура опитування клавіатури завершується. Алгоритм програми наведений на рис. 2.7. Повний текст вихідного модуля програми з докладними коментарями приводиться нижче:

#include <mega128.h> Підключити заголовний файл mega128.h;

main() { основна частина програми;

#asm початок коду ассемблерної вставки;

ldi R18,0b11100000 запис маскуючи констант у регістри;

Ldi R19,0b11010000

Ldi R20,0b11110000

Ldi R21,0b00001111

Ldi R22,0b10000000

Ldi R23,0b11111111

Ldi R24,0b00000000

out 02,R20 настроювання ліній E0-3 на уведення, а E4-7 на вивід;

out 0x11,R23 установити режим виводу для порту D;

out 0x12, R23 погасити всі світлодіоди;

loop1: стартова мітка циклу опитування;

out 03,R18 обнулити біт E4 для опитування клавіш 1-го стовпця;

nop установити затримку в один такт;

in R16,01 зчитати дані з регістра PINE в R16;

out 03,R19 обнулити біт E5 для опитування клавіш 2-го стовпця;

nop установити затримку в один такт;

in R17,01 зчитати дані з регістра PINE в R16;

or R16,R20 установити в 1 біти старшої тетради R16;

or R17,R20 установити в 1 біти старшої тетради R17;

swap R17 поміняти місцями старшу й молодшу тетради в R17;

and R17,R16 об'єднати інформацію про натискання клавіш в R17;

out 0x12,R17 вивести дані про номери натиснутих клавіш у порт D;

in R26,0 зчитати дані з регістра вводу порту F;

and R26,R22 обнулити всі біти регістра R26, крім 7-го.

cpi R26,0 зрівняти значення в регістрі R26 з нулем.

brne loop1 якщо клавіша не натиснута – то виконати перехід для повторення опитування, інакше –

out 0x12,r24 виконати команду включити всі світлодіоди;

#endasm завершення коду ассемблерної вставки;

} завершальна операторна дужка програми.

Для установки й обнуління бітів регістрів вводу/виводу можна використати команди sbi і cbi відповідно. Однак ці команди необхідно буде використати попарно, що погіршує наочність вихідного коду програми.

 

 

Рисунок 2.7 - Алгоритм програми зчитування даних із клавіатури

 

Таблиця 2.1 - Варіанти індивідуальних завдань

№ п. п. Завдання
  Розробити програму, що фіксує натискання клавіш 1, 6 і 12 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F1.
  Розробити програму, що фіксує натискання клавіш 3, 7 і 11 матричної клавіатури включенням світлодіодів 5, 6 і 7 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F2.
  Розробити програму, що фіксує натискання клавіш 4, 7 і 10 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F1.
  Розробити програму, що фіксує натискання клавіш 1, 2 і 3 матричної клавіатури включенням світлодіодів 4, 5 і 6 відповідно. Вихід із циклу опитування здійснюється при одночасному натисканні клавіш F1+F3.
  Розробити програму, що фіксує натискання клавіш 2, 5 і 9 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при одночасному натисканні клавіш F1+F2.
  Розробити програму, що фіксує натискання клавіш 4, 8 і 11 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F3.
  Розробити програму, що фіксує натискання клавіш 3, 7 і 10 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F1.
  Розробити програму, що фіксує натискання клавіш 5, 6 і 7 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при одночасному натисканні клавіш F2+F3.
  Розробити програму, що фіксує натискання клавіш 1, 6 і 8 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F2.
  Розробити програму, що фіксує натискання клавіш 9, 10 і 11 матричної клавіатури включенням світлодіодів 1, 2 і 3 відповідно. Вихід із циклу опитування здійснюється при натисканні клавіші F1.

Зміст звіту

У звіті необхідно привести наступне:

характеристики лабораторної обчислювальної системи;

вихідний модуль розробленої програми;

аналіз отриманих результатів і короткі висновки по роботі, у яких необхідно відбити особливості зчитування даних з матричної клавіатури в режимі програмного обміну за допомогою мікроконтролера AVR ATMEGA 128.

 

 

2.5 Контрольні питання й завдання

1. Поясніть принцип функціонування матричної клавіатури 3*4, що входить до складу лабораторного макета.

2. Поясніть алгоритм програмного опитування клавіатури.

3. Чи можливо звертання до портів вводу/виводу як до комірок пам'яті в мікроконтролері AVR ATMEGA?

4. Поясніть принцип роботи клавіатури 1*3, що входить до складу лабораторного макета.

5. У чому полягають переваги й недоліки режиму програмного опитування клавіатури?

6. Перелічіть й поясніть основні команди й прийоми для логічного аналізу двійкових даних. AVR ATMEGA 128 при звертанні до пам'яті й портів вводу/виводу.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: