Файл: Лабораторная работа 1 по курсу Микропроцессоры и микроконтроллеры Порты вводавывода.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.12.2023
Просмотров: 19
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Обнинский институт атомной энергетики – филиал федерального государственного автономного образовательного учреждения высшего образования «Национальный исследовательский ядерный университет «МИФИ»
Лабораторная работа 1
по курсу «Микропроцессоры и микроконтроллеры»
«Порты ввода-вывода»
Вариант 20
Выполнил:
студент 4 курса
группы ЭиА-С19
Мелега Н.А.
Проверил:
Руденко А.В.
Обнинск 2023
Цель работы:
Познакомиться с назначением и устройством портов ввода-вывода микроконтроллера (МК) AVR ATmega128; изучить схемотехнические решения подключения к портам ввода-вывода кнопок и светодиодов; освоить наиболее важные технические приемы работы с регистрами микроконтроллера и разработать первую программу «Бегущие огни».
Теоретическая часть
Назначение портов ввода-вывода
Порты ввода-вывода представляют собой самый простой способ обмениваться информацией между микроконтроллером и «внешним миром». С их помощью микроконтроллер может выдавать информацию на различные внешние устройства (светодиоды, семи-сегментные индикаторы, пьезоизлучатели, реле и т.д.), а также принимать ее от различных цифровых источников (кнопки, ИК-приемники, датчики и т.д.).
Устройство портов ввода-вывода
В зависимости от модели микроконтроллер семейства AVR может содержать от одного до семи портов ввода-вывода информации. Обычно порты сгруппированы по восемь разрядов, но в некоторых случаях разрядность порта может ограничиваться количеством выводов корпуса микроконтроллера.
Обозначаются порты латинскими буквами: PORTA, PORTB, PORTC и т.д. Каждый из выводов порта имеет свой порядковый номер, причем нумерация начинается с нуля. Например, если в конкретной модели микроконтроллера содержится полный восьмиразрядный порт B, то его выводы будут обозначены как PB0, PB1, …, PB7.
В памяти МК каждому порту ввода-вывода соответствует свой адрес регистра данных. Обращение к регистру данных порта ввода/вывода производится теми же командами, что и обращение к памяти данных. Кроме того, отдельные разряды портов могут быть опрошены или установлены командами битового процесса.
Порты микроконтроллеров AVR могут выдерживать довольно высокую токовую нагрузку при любом уровне сигнала. Максимальных 20 мА на линию и 80 мА на порт оказывается достаточно для непосредственного управления такой серьезной нагрузкой как светодиодные индикаторы.
Входные буферы все выводов построены по схеме триггера Шмитта. Для всех входов имеется возможность подключения внутреннего подтягивающего резистора между входом и шиной питания VCC.
Управление портами ввода-вывода
Обращение к портам производится через регистры ввода-вывода. Под каждый порт в адресном пространстве ввода-вывода зарезервировано по три адреса, по которым размещены следующие регистры:
– регистр данных порта PORTx;
– регистр направления данных DDRx;
– регистр выводов порта PINx.
Действительные названия регистров получаются подстановкой порта вместо символов «x». Соответственно, регистры порта A называются PORTA, DDRA, PINA и так для остальных портов. Поскольку с помощью регистров PINx осуществляется доступ к физическим значениям сигналов на выводах порта, они доступны только для чтения, тогда как остальные два регистра доступны и для чтения, и для записи. Запись в регистры PINx не оказывает никакого эффекта.
Каждому выводу порта соответствуют три бита регистров ввода-вывода: PORTxn (регистр PORTx), DDRxn (регистр DDRx) и PINxn (регистр PINx). Вместо символа «x» подставляется буква порядкового номера порта, например A, B и т.д., и вместо символа «n» – номер требующегося вывода порта (0, 1, …, и т.д.). Если разрядность порта меньше восьми, в регистрах порта используется соответствующее число младших битов. Незадействованные старшие биты регистров доступны только для чтения и всегда содержат нуль.
Бит xn регистра DDRx определяет направление передачи данных через контакт ввода/вывода. Если этот бит установлени в состояние «лог. 1», то n-й вывод порта является выходом, если же сброшен в «лог. 0» - входом.
Бит PORTxn регистра PORTx выполняет двойную функцию. Если вывод функционирует как выход (DDRxn = 1), то этот бит определяет состояние вывода порта. Если бит установлен в «лог. 1», на выводе устанавливается напряжение высокого уровня. Если бит сброшен в «лог. 0», на выводе устанавливается напряжение низкого уровня.
Если же вывод функционирует как вход (DDRxn = 0), то бит PORTxn определяет состояние внутреннего подтягивающего резистора для данного вывода. При установке бита PORTxn в 1 подтягивающий резистор подключается между выводом микроконтроллера и линией питания.
Задание
«Огонь», появляющийся в начале работы программы в младшем разряде PORTA, проходит все его разряды, после чего проходит последовательно все разряды других портов,
возвращаясь в исходную позицию так, как показано на рисунке 1.1.
Рис 1.1. Иллюстрация к заданию
Алгоритм программы
Проверка кода в программе Proteus
Рисунок 1.2 Схема подключения в программе Proteus
И
сходный код программы
Вывод
При выполнение лабораторной работы мною были изучены:
– назначения и устройство портов ввода-вывода микроконтроллера AVR ATmega128;
– схемотехнические решения подключения к портам ввода-вывода кнопок и светодиодов;
– разработана первая программа «Бегущие огни».
- Представлена соответствующая программе блок-схема работы.
- Программа проверена в программном обеспечении Proteus.
- Программа проверена на лабораторном стенде на контроллере AVR ATMega128.