Студопедия — Принципы анализа нажатия стандартных кнопок с помощью микроконтроллера 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; просмотров: 2218. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

Эндоскопическая диагностика язвенной болезни желудка, гастрита, опухоли Хронический гастрит - понятие клинико-анатомическое, характеризующееся определенными патоморфологическими изменениями слизистой оболочки желудка - неспецифическим воспалительным процессом...

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Демографияда "Демографиялық жарылыс" дегеніміз не? Демография (грекше демос — халық) — халықтың құрылымын...

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