Студопедия — Принципы анализа нажатия стандартных кнопок с помощью микроконтроллера AVR MEGA128
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Принципы анализа нажатия стандартных кнопок с помощью микроконтроллера AVR MEGA128






Параллельные входы микроконтроллеров часто используются для подключения различных коммутационных элементов: переключателей, кнопок, контактных блоков, которые служат для управления внешними устройствами. В простейшем случае кнопка подключается одним выводом к общему проводу, а другим – ко входной линии порта ввода/вывода, работающего в режиме ввода данных, и через резистор (сопротивлением порядка 10 кОм) с положительным полюсом источника электропитания (см. рисунок 2.1). При разомкнутых контактах кнопки на входной линии микроконтроллера установится уровень “логической единицы”, при замкнутых – “логического нуля”.

 

 

Рисунок 2.1 – Принципиальная схема подключения кнопки

к микроконтроллеру

 

Принцип проверки состояния нажатия клавиши заключается в периодическом программном опросе входной линии, к которой подключен один из выводов клавиши, и анализе значения соответствующего бита. Рассмотрим фрагмент ассемблерного кода процедуры контроля состояния нажатия кнопки, подключенной к 6-й линии порта ввода/вывода F (адрес регистра ввода 0) согласно схеме на рисунке 2.1:

ldi R16,0b01000000 загрузить константу для маскирования в R16;

lbl: метка перехода для повторения опроса;

in R17,0 считать данные из регистра ввода порта F;

and R17,R16 обнулить все биты регистра R17, кроме 6-го.

cpi R17,0 сравнить значение в регистре R17 с нулем.

brne lbl если клавиша не нажата – то выполнить переход для повторения опроса, иначе – выполнять дальнейшие действия.

2.1.2 Принципы считывания данных с матричной клавиатуры с
помощью микроконтроллера 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 Порядок проведения работы и указания по ее выполнению

 

Перед началом выполнения практической части лабораторной работы проводится экспресс–контроль знаний по принципам функционирования микроконтроллера 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 запись маскирующих констант в регистры;







Дата добавления: 2015-09-07; просмотров: 2221. Нарушение авторских прав; Мы поможем в написании вашей работы!



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Значення творчості Г.Сковороди для розвитку української культури Важливий внесок в історію всієї духовної культури українського народу та її барокової літературно-філософської традиції зробив, зокрема, Григорій Савич Сковорода (1722—1794 pp...

Постинъекционные осложнения, оказать необходимую помощь пациенту I.ОСЛОЖНЕНИЕ: Инфильтрат (уплотнение). II.ПРИЗНАКИ ОСЛОЖНЕНИЯ: Уплотнение...

Приготовление дезинфицирующего рабочего раствора хлорамина Задача: рассчитать необходимое количество порошка хлорамина для приготовления 5-ти литров 3% раствора...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия