Карта сайта
Карта сайтаГлавная страница-Персональные страницы-Коновалов Дмитрий Александрович-Файлы
| ||
3.
2.2 Принципы считывания данных с матричной клавиатуры с помощью микроконтроллера avr аTmega128 в режиме программного опроса.При использовании большого количества кнопок управления целесообразно применить матричную схему подключения клавиатуры, сходную с приведенной на рисунке 3.4. В данной схеме 12-ти клавишная клавиатура 34 соединяется выводами с портом ввода/вывода Е. Причем, линии 4 – 6 порта Е настроены как выходные и обозначаются соответственно PORTE.4 – PORTE.6, а линии 0 – 3 – как входные (PINE.0 – PINE.3). Горизонтальные линии матрицы через токоограничительные резисторы подключены к положительному полюсу источника питания (+5 В).
Нажатие одной из клавиш замыкает в соответствующей позиции горизонтальную и вертикальную сигнальную линии. Если на вертикальную линию был подан уровень напряжения, соответствующий “логическому нулю”, то при нажатии клавиши на горизонтальной линии также установится низкий уровень напряжения. Алгоритм опроса нажатия клавиши сводится к поочередной установке низких уровней напряжения на вертикальных линиях (PORTE.
Рисунок 3.4 – Принципиальная схема подключения 12-и кнопочной (34) клавиатуры к микроконтроллеру AVR АТMEGA 128 через порт ввода/вывода Е
Пример:
Задание. Проверить нажатия одной из клавиш первого и второго (крайних справа) столбцов матричной клавиатуры, схема подключения которой приведена на рисунке 3.4 (адреса портов указаны в таблице 1.1).
Алгоритм решения задачи.
Установка начальных данных.
Настройка линий строк клавиатуры на ввод, линий столбцов – на вывод.
Установить уровень напряжений на линии первого столбца в 0.
Считать данные с входных линий строк в РОН.
Установить уровень напряжений на линии второго столбца в 0.
Считать данные с входных линий строк в РОН.
Сравнить значение, полученное из первого столбца с 0Fh. Если нажата одна или несколько клавиш, то перейти в п. 10
Сравнить значение, полученное из второго столбца с 0Fh. Если нажата одна или несколько клавиш, то перейти в п. 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
; настройка линий E
; на вывод
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, и номеров обнуленных разрядов в тетрадах.
Процедуру опроса матричной клавиатуры 34 необходимо выполнять только с использованием ассемблерных команд, которые (в отличие от их эквивалентов на языке С) не преобразуют значения битов в старших тетрадах порта Е.
3.2.3 Принципы программной генерации временных интервалов
При разработке различных приложений для управления устройствами в реальном масштабе времени возникает необходимость организации временной задержки. В микроконтроллерах её можно реализовать программно или с использованием таймеров/счётчиков. Одним из вариантов программного осуществления задержки является многократное повторение определённого участка программного кода. В этом случае необходимо вычислить время выполнения каждой команды входящей в состав программного блока задержки. Это время зависит от рабочей частоты задающего генератора процессора. Рабочая частота может быть изменена посредством установки регистра управления предделителем (XDIV) тактового сигнала (Таблица 3.1).
Регистр XDIV используется для установления коэффициента деления частоты кварцевого генератора в диапазоне от 1 до 129.
Таблица 3.1 – Формат регистра управления XDIV
XDIVEN | XDIV6 | XDIV5 | XDIV4 | XDIV3 | XDIV2 | XDIV1 | XDIV0 |
XDIVEN – бит разрешения деления частоты генератора XTAL.
При XDIVEN := 1 тактовая частота для CPU и всей периферии делится в соответствии с установленными битами XDIV6 – XDIV0. Этот бит в случае необходимости может быть установлен и очищен в процессе выполнения программы.
XDIV6–XDIV0 – биты выбора коэффициента деления, определяющие
тактовую частоту микроконтроллера. Эти биты устанавливают коэффициент деления тактовой частоты при установленном бите XDIVEN, а при сброшенном в 0 — содержимое разрядов XDIV6–XDIV0 игнорируется.
Если десятичное значение этих семи битов обозначить через d, то результирующая тактовая частота CPU будет определяться выражением
Временная задержка так же может быть осуществлена при помощи таймеров/счётчиков (Т/С). Микроконтроллеры ATmega128 оснащены четырьмя таймерами/счетчиками общего назначения, которые будут подробно рассмотрены в следующей лабораторной работе.
При подготовке к лабораторной работе необходимо самостоятельно составить алгоритмы и тексты программ реализации простых задач ввода информации через линейную и матричную клавиатуры, научиться составлять программные задержки для микроконтроллера ATmega128, работающего на различных тактовых частотах.
Пример:
Задание. Обеспечить программно мигание светодиодов, подключённых к порту D микроконтроллера ATmega128 с частотой f=5Гц. Задержку выполнить программным способом.
Алгоритм решения задачи.
START.
Начальная установка и настройка портов.
Включить блок светодиодов.
Вызов подпрограммы задержки delay.
Выключить блок светодиодов.
Вызов подпрограммы задержки delay.
Идти в п. 3.
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.
START.
Инициализация счётчика №1.
Инициализация счётчика №2.
Декремент счётчика циклов №2.
Если значение счётчика №2 не равно нулю, то идти в п. 4.
Декремент счётчика циклов №1.
Если значение счётчика №1 не равно нулю, то идти в п. 3.
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
№ | Текстовая формулировка заданий | |
1. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F1 выполнять в бесконечном цикле последовательное включение и выключение 1-го, 3-го и 6-го светодиодов с интервалом 2 с. Выход из цикла обеспечить нажатием кнопки 1 матричной клавиатуры. | |
2. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F3 выполнять в бесконечном цикле последовательное включение 2-го, 4-го и 6-го светодиодов с интервалом 1,5 с. Выход из цикла обеспечить нажатием кнопки 2 матричной клавиатуры. | |
3. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F2 выполнять в бесконечном цикле последовательное включение/выключение 1-го, 2-го, 3-го и 4-го светодиодов с интервалом 1 с. Выход из цикла обеспечить нажатием кнопки 3 матричной клавиатуры. | |
4. | Алгоритмически и программно реализовать задачу, предусматри-вающую после одновременного нажатия кнопок F1 и F2 выполнять в бесконечном цикле одновременное включение 1-го, 2-го, 7-го и 8-го светодиодов с длительностью свечения 2 с. Выход из цикла обеспечить нажатием кнопки 4 матричной клавиатуры. | |
5. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F1 выполнять в бесконечном цикле параллельное включение 1-го, 2-го и 8-го светодиодов с длительностью свечения 1 с и временем нахождения в погашенном состоянии 2 с. Выход из цикла обеспечить нажатием кнопки 5 матричной клавиатуры. | |
6. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F2 выполнять в бесконечном цикле последовательное включение/выключение всех светодиодов (с 1-го по 8-й) с интервалом 1,4 с. Выход из цикла обеспечить нажатием кнопки 6 матричной клавиатуры. | |
7. | Алгоритмически и программно реализовать задачу, предусматри-вающую после одновременного нажатия кнопок F1 и F3 выполнять последовательное включение в бесконечном цикле всех светодиодов (с 1-го по 8-й) с интервалом 0,5 с. Выход из цикла обеспечить нажатием кнопки 7 матричной клавиатуры. | |
8. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F3 выполнять в бесконечном цикле последовательное включение/выключение 3-го, 4-го и 5-го светодиодов с интервалом 3 с. Выход из цикла обеспечить нажатием кнопки 8 матричной клавиатуры. | |
Продолжение таблицы 3.2 | ||
9. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F1 выполнять в бесконечном цикле последовательное включение 5-го, 6-го, 7-го и 8-го светодиодов с интервалом 2,5 с. Выход из цикла обеспечить нажатием кнопки 9 матричной клавиатуры. | |
10. | Алгоритмически и программно реализовать задачу, предусматри-вающую после одновременного нажатия кнопок F1, F2, F3 параллельное включение и выключение в бесконечном цикле блока из 8-ми светодиодов с длительностью свечения 2 с и временем нахождения в погашенном состоянии 4 с. Выход из цикла обеспечить нажатием кнопки 10 матричной клавиатуры. | |
11. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F2 выполнять в бесконечном цикле последовательное выключение всех светодиодов (с 1-го по 8-й) с интервалом 2 с. Выход из цикла обеспечить нажатием кнопки 11 матричной клавиатуры. | |
12. | Алгоритмически и программно реализовать задачу, предусматри-вающую после одновременного нажатия кнопок F1 и F2 выполнять последовательное включение в бесконечном цикле светодиодов (с 1-го по 5-й) с интервалом 1 с. Выход из цикла обеспечить нажатием кнопки 12 матричной клавиатуры. | |
13. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F1 выполнять в бесконечном цикле последовательное включение/выключение 2-го, 4-го, 6-го и 8-го светодиодов с интервалом 0,5 с. Выход из цикла обеспечить нажатием кнопки 1 матричной клавиатуры. | |
14. | Алгоритмически и программно реализовать задачу, предусматри-вающую после нажатия кнопки F3, выполнять в бесконечном цикле последовательное включение 1-го, 2-го, 3-го и 4-го светодиодов с интервалом 2,8 с. Выход из цикла обеспечить нажатием кнопки 2 матричной клавиатуры. |
Использовать кнопки голосования в сообщениях
Перспектива
Электронная почта
Напишите или ответьте
Напишите или ответьте
Использовать кнопки голосования в сообщениях
Outlook для Microsoft 365 Outlook 2021 Outlook 2019 Outlook 2016 Outlook 2013 Outlook 2010 Outlook 2007 Дополнительно…Меньше
В Microsoft Outlook легко создать сообщение, в котором используются кнопки голосования, чтобы задавать получателям вопросы с определенным и ограниченным набором ответов. Когда получатели отвечают с помощью кнопок голосования, вы можете либо автоматически занести результаты голосования в таблицу Outlook, либо экспортировать ответы в рабочий лист Excel.
Добавить кнопки для голосования
Примечания:
Требуется учетная запись Microsoft Exchange Server.
Если вы зашифруете сообщение Outlook, содержащее кнопки для голосования, получатели сообщения не смогут их увидеть. В настоящее время эта функция не поддерживается.
Создайте сообщение электронной почты или ответьте на полученное сообщение или перешлите его.
На вкладке Параметры в группе Отслеживание нажмите Использовать кнопки голосования .
org/ListItem»>Одобрить;Отклонить
Используйте, когда вам нужна авторизация для действия. Например, вы можете отправить запрос по электронной почте нескольким получателям с просьбой утвердить предложение по проекту.Да;Нет
Используйте, когда вам нужно либо да, либо нет. Это хороший способ провести быстрый опрос.Да;Нет;Возможно
Используйте, когда вы не хотите ограничивать выбор «да» и «нет». Этот вариант голосования предлагает альтернативный ответ.Пользовательский
Используйте для создания собственных имен кнопок голосования. Например, вы можете попросить своих коллег выбрать один из трех дней недели для повторяющегося еженедельного собрания персонала.
Выберите один из следующих вариантов:
Пользовательская кнопка голосования
Если вы выбрали кнопку голосования Custom , выполните следующие действия:
В диалоговом окне Свойства в разделе Параметры голосования и отслеживания установите флажок Использовать кнопки голосования .
Используйте параметры кнопок по умолчанию или удалите параметры по умолчанию, а затем введите нужный текст и используйте точку с запятой для разделения имен кнопок.
Нажмите Закрыть .
Важно: Если к сообщению применяются разрешения управления правами на доступ к данным (IRM) (вкладка Параметры > команда Разрешение ), получатель не увидит параметры голосования.
Получатели могут голосовать в области чтения или в открытом сообщении. В области чтения щелкните строку Нажмите здесь, чтобы проголосовать в заголовке сообщения, а затем выберите нужный вариант. В открытом сообщении от На вкладке Сообщение в группе Ответить щелкните Голосовать , а затем выберите нужный вариант.
Отправитель может видеть все ответы в таблице. В одном из ответных сообщений нажмите строку Отправитель ответил в заголовке сообщения, затем нажмите Просмотреть ответы на голосование .
Просмотр ответов на голосование
Откройте исходное сообщение с кнопками для голосования, которое вы отправили. Это сообщение обычно находится в папке Отправленные .
На вкладке Сообщение в группе Показать нажмите Отслеживание .
Примечание: Отслеживание не появляется, пока хотя бы один получатель сообщения электронной почты не ответит своим голосом.
Отслеживание и печать результатов
Когда вы создаете и отправляете электронное письмо с кнопками для голосования другим пользователям, вы можете отслеживать и распечатывать результаты. Вы можете либо быстро скопировать результаты голосования в пустой документ Word или новое электронное письмо, либо скопировать их в Excel, чтобы иметь возможность работать с данными позже.
В Outlook в папке Отправленные откройте отправленное вами сообщение электронной почты, содержащее опрос для голосования.
org/ListItem»>Чтобы распечатать результаты, выполните одно из следующих действий:
Для быстрой печати нажмите Alt + Print Screen (PrtScrn) на клавиатуре, а затем выполните одно из следующих действий;
В Word щелкните Пустой документ , а затем щелкните Вставить .
org/ListItem»>
В Outlook щелкните Главная > Новое электронное письмо , а затем щелкните Вставить .
Щелкните Файл > Печать, укажите принтер, а затем щелкните Печать .
Чтобы отсортировать и работать с результатами данных в Excel, сначала сделайте следующее:
Щелкните Сообщение > Отслеживание .
На клавиатуре нажмите и удерживайте клавишу Ctrl, а затем щелкните и перетащите мышь, чтобы выбрать все имена и ответы в списке.
На клавиатуре нажмите Ctrl + C.
Откройте Excel и выберите Пустая рабочая книга .
Щелкните правой кнопкой мыши верхнюю левую ячейку и выберите Вставить .
Чтобы настроить столбцы в соответствии с текстом, поместите курсор между заголовками столбцов и дважды щелкните.
Щелкните Файл > Распечатать , указать принтер и нажать Распечатать .
Щелкните Сообщение > Отслеживание .
Совет: Кнопка «Отслеживание» не появляется, пока не будет подан хотя бы один голос.
Создать опрос в Outlook
Microsoft формы
Интеграция
Интеграция
Создать опрос в Outlook
Outlook для Microsoft 365 Outlook для Microsoft 365 для Mac Outlook 2021 Outlook 2021 для Mac Outlook 2019Outlook 2019 для Mac Outlook 2016 Outlook 2016 для Mac Outlook.com Microsoft Forms Дополнительно… Меньше
Совет: Узнайте больше о Microsoft Forms или начните прямо сейчас и создайте опрос, викторину или опрос. Хотите более продвинутый брендинг, типы вопросов и анализ данных? Попробуйте Dynamics 365 Customer Voice.
Вы можете создать мгновенный опрос в режиме реального времени за считанные секунды в сообщении электронной почты. В теле сообщения электронной почты Outlook добавьте вопросы и варианты для одного или нескольких ответов. После того, как вы отправите сообщение, получатели проголосуют непосредственно по электронной почте или нажмут на удобную ссылку и проголосуют в окне браузера. Затем вы можете быстро проверить результаты опроса в карточке голосования.
В каких версиях Outlook можно создать опрос?
Вы можете использовать Опрос со следующими версиями Outlook.
Примечание. Чтобы создать опрос в Outlook, администратор должен перейти в центр администрирования Microsoft 365 и установить флажок Отправить ссылку на форму и собрать ответы в разделе Внешний общий доступ . Администраторы могут узнать больше здесь.
Создать опрос
В новом сообщении электронной почты перейдите на вкладку Вставить и нажмите Опрос .
Примечание: Вы также можете найти опрос на вкладке Параметры > Использовать кнопки голосования > Опрос .
Откроется панель Опрос , и вы сможете ввести свой первый вопрос и два варианта ответа.
Примечание. Если вы уже вошли в свою рабочую или учебную учетную запись и получили запрос на повторный вход, возможно, ваш администратор должен выполнить настройку, чтобы исключить этот дополнительный этап входа. Свяжитесь с вашим администратором для получения дополнительной информации.
Чтобы добавить дополнительные параметры, нажмите + Добавить параметр .
Когда вы закончите добавлять параметры, вы можете решить, хотите ли вы, чтобы респонденты выбирали только один ответ или несколько ответов. Если вы хотите разрешить несколько ответов, переключите кнопку Несколько ответов вправо, чтобы она стала зеленой.
Нажмите Вставьте опрос в электронное письмо .
Вы увидите ссылку на ваш опрос в теле письма, а ваше имя будет указано в строке CC. Теперь вы готовы отправить свой опрос по электронной почте.
Примечание. Если вы зашифруете сообщение Outlook, содержащее кнопки для голосования, получатели сообщения не смогут их увидеть. В настоящее время эта функция не поддерживается.
Создать опрос
- org/ListItem»>
Когда откроется панель опроса, введите свой первый вопрос и два варианта ответа.
Чтобы добавить дополнительные параметры, нажмите + Добавить параметр .
Когда вы закончите добавлять параметры, вы можете решить, хотите ли вы, чтобы респонденты выбирали только один ответ или несколько ответов. Если вы хотите разрешить несколько ответов, переключите кнопку Несколько ответов вправо, чтобы она стала зеленой.
Нажмите Вставьте опрос в электронное письмо .
В новом сообщении электронной почты перейдите на вкладку Сообщение и нажмите Опрос .
Примечание. Вы также можете найти и закрепить Опрос на панели инструментов.
Вы увидите ссылку на ваш опрос в теле письма, а ваше имя будет указано в строке CC. Теперь вы готовы отправить свой опрос по электронной почте.
Создать опрос
В новом сообщении электронной почты выберите Дополнительные приложения > Опрос на вкладках Сообщение или Вставить .
org/ListItem»>Чтобы добавить дополнительные параметры, нажмите + Добавить опцию .
Когда вы закончите добавлять параметры, вы можете решить, хотите ли вы, чтобы респонденты выбирали только один ответ или несколько ответов. Если вы хотите разрешить несколько ответов, переключите кнопку Несколько ответов вправо, чтобы она стала зеленой.
Нажмите Вставьте опрос в электронное письмо .
Откроется панель Опрос , и вы сможете ввести свой первый вопрос и два варианта ответа.
Вы увидите ссылку на ваш опрос в теле письма, а ваше имя будет указано в строке CC. Теперь вы готовы отправить свой опрос по электронной почте.
Как работает голосование
Получатели увидят опрос в теле своего электронного письма (также называемое «рекламным сообщением») или получат в электронном письме ссылку, которая направит их к голосованию в браузере.
Узнайте больше о том, какие версии Outlook поддерживают интерактивные сообщения.
Почему мои получатели не видят опрос в своих сообщениях электронной почты?
Есть несколько причин, по которым получатели могут не видеть опрос в своих сообщениях электронной почты, а вместо этого получать ссылку на опрос, которая направит их к голосованию в браузере.