Тема 3: Вивчення принципів організації програмного опитування клавіатури
Мета: вивчити принципи функціонування матричної клавіатури 3*4, розробити алгоритм та програму для реалізації режиму опитування клавіатури без використання переривань.
Розглянемо приклад перевірки натискання однієї з клавіш першого та другого (праворуч) стовбців матричної клавіатури, схема підключення якої визначена у описі апаратної структури:
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 //встановити затримку в 1 такт;
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, то це буде означати те, що натиснули клавіші, позиції котрих можна знайти зі схеми і номерів розрядів в тетрадах.
Перед початком виконання практичної частини лабораторної роботи проводиться експрес–контроль знань за принципами функціонування мікроконтролеру AVR ATMEGA 2561, системі команд і можливостям організації програмного опитування клавіатури лабораторного макету.
Завдання. Розробити в середі програмування Code Vision AVR програму для мікроконтролеру AVR ATMEGA 2561, яка виконує опитування клавіатури лабораторного макету і виводить інформацію про натиснуті клавіші за допомогою блоку світлодіодів.
Порядок виконання завдання:
Ввімкнути лабораторний макет.
Запустити компілятор Code Vision AVR.
Створити пустий проект.
Створити файл ресурсу для коду програми і підключити його до проекту.
Ввести код первинного модуля програми.
Виконати компіляцію.
Налагодити параметри програматора.
Створити загрузочний модуль програми (нажавши комбінацію клавіш Shift+F9) і виконати програмування мікроконтролеру.
Перевірити працездатність завантаженої в мікроконтролер програми і показати результати праці.
У випадку некоректної роботи розробленої програми, виконати апаратне скидання мікроконтролера, провести відладку первинного модуля програми і заново перевірити функціонування програми, повторивши виконання пункту 9.
Приклад виконання завдання. Розробити програму, що виводить інформацію про індекси натиснутих клавіш першого і другого стовбців (С1 і С2) матричної клавіатури 34.
Рішення. В лабораторному макеті матрична клавіатура 34 підключена до порту E мікроконтролера. Лінії старшої тетради порта Е налагоджуються на виведення даних, а лінії молодшої тетради – на введення. Кнопки F1, F2, F3 к 6-му, 7-му і 8-му розрядам порта F, котрий не потрібно спеціально настроювати на введення даних. Блок світлодіодів підключений до порту D мікроконтролера і настроюється на виведення даних. Цикл опитування складається з послідовного зчитування даних з 1-го і 2-го стовбців матричної клавіатури 34 при належних керуючих сигналах, виводу інформації про позиції натиснутої клавіші на блок світлодіодів і перевірку стану натиснення кнопки F1, при натисненні на яку процедура опитування клавіатури завершується. Алгоритм програми наведений на рис. 1.14.
Рисунок 1.14 Алгоритм програми опитування клавіатури
Повний текст вихідного модуля програми з коментарями наведений нижче:
#include <mega2561.h>
#include <delay.h>
int t=50 ;
void main(void)
{
// Port D настройка
DDRD=0xFF; // весь порт как выход
//PORTD=0b11111111; //погасити всі світлодіоди;
PORTD=0;
DDRE.0 = 0;
DDRE.1 = 0;
DDRE.2 = 0;
DDRE.3 = 0;
DDRE.4 = 1;
DDRE.5 = 1;
DDRE.6 = 1;
DDRE.7 = 1;
PORTE=0xFF;
while (1)
{
PORTD=0b111111111;
///////////////////////////////////////////////////////////////
PORTE.4 = 0;
delay_ms(t);
if (!PINE.0)
PORTD=0b11111100;
delay_ms(t);
//PORTD=0b111111111;
delay_ms(t) ;
if (!PINE.1)
PORTD=0b11111100;
delay_ms(t) ;
//PORTE.4 = 1;
if (!PINE.2)
PORTD=0b11111100;
delay_ms(t) ;
if (!PINE.3)
PORTD=0b11111100;
delay_ms(t) ;
PORTE.4 = 1;
////////////////////////////////////////////////////////////
PORTE.5 = 0;
delay_ms(t);
if (!PINE.0)
PORTD=0b11110000;
delay_ms(t);
// PORTD=0b111111111;
delay_ms(t) ;
if (!PINE.1)
PORTD=0b11110000;
delay_ms(t) ;
if (!PINE.2)
PORTD=0b11110000;
delay_ms(t) ;
//PORTE.0 = 1;
if (!PINE.3)
PORTD=0b11110000;
delay_ms(t) ;
PORTE.5 = 1;
////////////////////////////////////////////////////////////
PORTE.6 = 0;
delay_ms(t);
if (!PINE.0)
PORTD=0b11000000;
delay_ms(t);
// PORTD=0b111111111;
delay_ms(t) ;
if (!PINE.1)
PORTD=0b11000000;
delay_ms(t) ;
if (!PINE.2)
PORTD=0b11000000;
delay_ms(t) ;
if (!PINE.3)
PORTD=0b11000000;
delay_ms(t) ;
PORTE.6 = 1;
////////////////////////////////////////////////////////////
PORTE.7 = 0;
delay_ms(t);
if (!PINE.0)
PORTD=0b00000000;
delay_ms(t);
// PORTD=0b111111111;
delay_ms(t) ;
if (!PINE.1)
PORTD=0b00000000;
delay_ms(t) ;
if (!PINE.2)
PORTD=0b00000000;
delay_ms(t) ;
if (!PINE.3)
PORTD=0b00000000;
delay_ms(t) ;
PORTE.7 = 1;
}
}
* Контрольні запитання :
1.Основні оператори мови Assembler .
Лабораторна робота 4
- 7.091501"Комп’ютерні системи та мережі".
- Програмна модель мікроконтролера Atmel avr aTmega 2561.
- Структура регістру станів
- Система команд мікроконтролера avr aTmega2561.
- Результати виконання логічних операцій
- Синтаксис та основні оператори мови с.
- Зміст, правила оформлення звіту, організація і проведення занять
- Лабораторні роботи Лабораторна робота 1
- Тема 1: Опис інтерфейсу компілятора мови с CodeVision avr
- Тема 2: Управління блоком світлодіодів
- Порядок виконання завдання:
- Тема 3: Вивчення принципів організації програмного опитування клавіатури
- Тема 4: Вивчення принципів роботи ацп мікроконтролеру на прикладі обробки сигналів з термодатчика
- Лабораторна робота 5 Тема 5: Реалізація виведення даних на жк-дисплей та обмін інформацією між пеом та мікроконтролером через послідовний порт rs-232
- Список рекомендованої літератури