Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Принципы считывания данных с матричной клавиатуры с помощью микроконтроллера AVR АTmega128 в режиме программного опроса.
При использовании большого количества кнопок управления целесообразно применить матричную схему подключения клавиатуры, сходную с приведенной на рисунке 3.4. В данной схеме 12-ти клавишная клавиатура 3´4 соединяется выводами с портом ввода/вывода Е. Причем, линии 4 – 6 порта Е настроены как выходные и обозначаются соответственно PORTE.4 – PORTE.6, а линии 0 – 3 – как входные (PINE.0 – PINE.3). Горизонтальные линии матрицы через токоограничительные резисторы подключены к положительному полюсу источника питания (+5 В). Нажатие одной из клавиш замыкает в соответствующей позиции горизонтальную и вертикальную сигнальную линии. Если на вертикальную линию был подан уровень напряжения, соответствующий “логическому нулю”, то при нажатии клавиши на горизонтальной линии также установится низкий уровень напряжения. Алгоритм опроса нажатия клавиши сводится к поочередной установке низких уровней напряжения на вертикальных линиях (PORTE.4 – PORTE.6) матрицы и считывании информации об уровне сигнала на горизонтальных линиях (PINE.0 – PINE.3).
Рисунок 3.4 – Принципиальная схема подключения 12-и кнопочной (3´4) клавиатуры к микроконтроллеру AVR АТMEGA 128 через порт ввода/вывода Е Пример: Задание. Проверить нажатия одной из клавиш первого и второго (крайних справа) столбцов матричной клавиатуры, схема подключения которой приведена на рисунке 3.4 (адреса портов указаны в таблице 1.1).
Алгоритм решения задачи.
1. START. 2. Установка начальных данных. 3. Настройка линий строк клавиатуры на ввод, линий столбцов – на вывод. 4. Установить уровень напряжений на линии первого столбца в 0. 5. Считать данные с входных линий строк в РОН. 6. Установить уровень напряжений на линии второго столбца в 0. 7. Считать данные с входных линий строк в РОН. 8. Сравнить значение, полученное из первого столбца с 0Fh. Если нажата одна или несколько клавиш, то перейти в п. 10 9. Сравнить значение, полученное из второго столбца с 0Fh. Если нажата одна или несколько клавиш, то перейти в п. 10 10. STOP.
Программа на языке ассемблера: ... 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 в r17 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, то это будет свидетельствовать о нажатии клавиш, позиции которых можно определить исходя из схемы, изображенной на рисунке 3.2, и номеров обнуленных разрядов в тетрадах. Процедуру опроса матричной клавиатуры 3´4 необходимо выполнять только с использованием ассемблерных команд, которые (в отличие от их эквивалентов на языке С) не преобразуют значения битов в старших тетрадах порта Е.
3.2.3 Принципы программной генерации временных интервалов
При разработке различных приложений для управления устройствами в реальном масштабе времени возникает необходимость организации временной задержки. В микроконтроллерах её можно реализовать программно или с использованием таймеров/счётчиков. Одним из вариантов программного осуществления задержки является многократное повторение определённого участка программного кода. В этом случае необходимо вычислить время выполнения каждой команды входящей в состав программного блока задержки. Это время зависит от рабочей частоты задающего генератора процессора. Рабочая частота может быть изменена посредством установки регистра управления предделителем (XDIV) тактового сигнала (Таблица 3.1).
Регистр XDIV используется для установления коэффициента деления частоты кварцевого генератора в диапазоне от 1 до 129.
Таблица 3.1 – Формат регистра управления XDIV
XDIVEN – бит разрешения деления частоты генератора XTAL. При XDIVEN:= 1 тактовая частота для CPU и всей периферии делится в соответствии с установленными битами XDIV6 – XDIV0. Этот бит в случае необходимости может быть установлен и очищен в процессе выполнения программы. XDIV6–XDIV0 – биты выбора коэффициента деления, определяющие тактовую частоту микроконтроллера. Эти биты устанавливают коэффициент деления тактовой частоты при установленном бите XDIVEN, а при сброшенном в 0 - содержимое разрядов XDIV6–XDIV0 игнорируется. Если десятичное значение этих семи битов обозначить через d, то результирующая тактовая частота CPU будет определяться выражением
Временная задержка так же может быть осуществлена при помощи таймеров/счётчиков (Т/С). Микроконтроллеры ATmega128 оснащены четырьмя таймерами/счетчиками общего назначения, которые будут подробно рассмотрены в следующей лабораторной работе. При подготовке к лабораторной работе необходимо самостоятельно составить алгоритмы и тексты программ реализации простых задач ввода информации через линейную и матричную клавиатуры, научиться составлять программные задержки для микроконтроллера ATmega128, работающего на различных тактовых частотах.
Пример: Задание. Обеспечить программно мигание светодиодов, подключённых к порту D микроконтроллера ATmega128 с частотой f=5Гц. Задержку выполнить программным способом.
Алгоритм решения задачи.
1. START. 2. Начальная установка и настройка портов. 3. Включить блок светодиодов. 4. Вызов подпрограммы задержки delay. 5. Выключить блок светодиодов. 6. Вызов подпрограммы задержки delay. 7. Идти в п. 3. 8. STOP.
Программа на языке ассемблера:
.ORG 0080h; смещение основной программы ldi r25, 0b10000001; загрузка значения настройки предделителя out $3c, r25; включение предделителя на 128 ldi r19, $ff; загрузка значения настройки порта D ldi r20, $00; загрузка в r20 числа, соответствующего ; зажжению всех светодиодов out $11, r19; настройка порта D работает на вывод loop1: out $12, r19; погасить светодиоды call delay; вызов подпрограммы задержки out $12, r20; зажечь светодиоды call delay; вызов подпрограммы задержки jmp loop1; переход по метке loop1
Алгоритм задержки delay.
1. START. 2. Инициализация счётчика №1. 3. Инициализация счётчика №2. 4. Декремент счётчика циклов №2. 5. Если значение счётчика №2 не равно нулю, то идти в п. 4. 6. Декремент счётчика циклов №1. 7. Если значение счётчика №1 не равно нулю, то идти в п. 3. 8. STOP.
При тактовой частоте задающего генератора 11,0592 МГц и при использовании предделителя на 128 (XDIV:= 0b10000001) один машинный цикл будет выполняться за 0,0116мс. Для выполнения мигания с частотой требуется задержка
В зависимости от значений счётчиков №1 и №2 (переменные А и В) подпрограмма delay будет выполняться за машинных циклов. Для временной задержки значение переменных А и В вычисляется из выражения
Решение последнего уравнения относительно двух неизвестных А и В выполняется путём задания одному из неизвестных максимального значения, например В = FFh. Тогда А определяется из выражения:
Программа delay на языке ассемблера:
.ORG 00D0h; смещение программы задержки delay: ldi r17, $10; загрузка значения $10 в РОН loop2: ldi r16, $FF; загрузка значения $FF в РОН loop3: dec r16; декремент счетчика №2 brne loop3; переход на метку loop3 если №2!= 0 dec r17; декремент счетчика №1 brne loop2; переход на метку loop2 если №1!= 0 ret; возврат в точку вызова
Примеры заданий для выполнения лабораторной работы №3 представлены в таблице 3.2.
Таблица 3.2 – Примеры заданий для выполнения лабораторной работы №3
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-04-23; просмотров: 780; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.42.168 (0.031 с.) |