Цель работы: Изучить особенности работы параллельных портов микроконтроллера. Научиться проектировать схемы подключения светодиодов, реле, электронных ключей, кнопок и датчиков к микропроцессорным системам и микроконтроллерам. научиться управлять светодиодами и определять состояние кнопок при помощи программы. Научиться отлаживать программы микроконтроллера на реальных микропроцессорных устройствах.
Подготовка к лабораторной работе
По конспекту лекций изучить схемы параллельных портов микроконтроллеров семейства MCS51 и их особенности в микроконтроллере ADuC842, схемы подключения светодиодов и кнопок к параллельным портам микроконтроллеров. Изучить принципиальную схему лабораторного стенда LESO1 и определить к каким портам микроконтроллера в данной схеме подключены светодиоды и кнопка. По принципиальной схеме стенда LESO1 пользуясь кратким описанием микроконтроллера ADuC842 на русском языке или полным описанием микроконтроллера ADuC842 на английском языке определить адреса светодиодов и кнопок в байтовом и битовом адресном пространстве этого микроконтроллера. Изучить особенности объявления переменных, связанных с регистрами специальных функций, в языке программирования C-51. Научиться заносить программу во внутреннюю память программ микроконтроллера ADuC842.
Особенности объявления переменных, связанных с регистрами специальных функций
Язык программирования C не предназначен для работы с несколькими видами памяти микропроцессора, поэтому в языке программирования C-51 ввели дополнительные виды переменных. Порты микроконтроллера находятся по определенным адресам внутренней памяти, поэтому кроме типа переменной при объявлении переменной, связанной с портом ей назначается конкретный адрес в адресном пространстве регистров специальных функций.
Пример объявления переменных, связанных с портами микроконтроллера:
sfr P0 = 0x80; /* Порт-0, адрес 80h */ sfr P1 = 0x90; /* Порт-1, адрес 90h */ sfr P2 = 0xA0; /* Порт-2, адрес A0h */ sfr P3 = 0xB0; /* Порт-3, адрес B0h */
После такого объявления с портом можно работать как с обычной однобайтовой переменной.
Следует отметить, что объявление имени переменной следует связать с тем устройством, что подключено к параллельному порту. Так программа будет выглядеть нагляднее. Например, если к порту подключена рука робота, то:
#define Podnata 128 /* Код 128 вызывает поднятие руки вверх */ #defihe Opushena 0 /* Код 0 вызывает опускание руки вниз */ sfr LevajaRuka = 0x80; //К порту P0 подключен манипулятор левой руки робота ... LevajaRuka = Podnata; 0x80; //По моему это даже комментировать не стоит :)
Намного чаще к порту подключаются не многоразрядные исполнительные устройства, а одноразрядные, такие как светодиоды, реле, кнопки. В этом случае удобнее пользоваться портами как независимыми одноразрядными ячейками памяти. Микроконтроллер это позволяет делать в битовом пространстве внутренней памяти. В языке программирования C-51 для этого существуют отдельные типы переменных. Они называются sbit. Пример объявления отдельных разрядов порта в качестве независимых переменных:
sbit p0_2 = 0x82; // непосредственный адрес бита sbit p0_2 = P0^2; // заранее объявленный P0 и номер бита этого порта sbit Knopka_1 = 0xA1; // Кнопка 1 подключена к первому биту порта P2 sbit KnVklVentiljat = 0xA2; // Кнопка включения вентилятора подключена к второму биту порта P2 sbit KnNajmiSebeNaNos = 0xA3; // Кнопка подключена к третьему биту порта P2
Пример программы, работающей со светодиодами приведен в описании структуры программ C-51
Загрузка hex-файла во внутреннюю память программ микроконтроллера
Для загрузки исполняемого кода во внутреннюю память микропроцессора и взаимодействия лабораторного стенда с ПК разработана программа nwFlash. Программа nwFlash позволяет:
- производить поиск подключенных к компьютеру по USB интерфейсу лабораторных стендов;
- активировать соединение с одним из найденных стендов;
- выполнять сброс микроконтроллера (Reset);
- загружать во flash - память микроконтроллера пользовательскую программу;
- принимать и отправлять данные в текстовом и шестнадцатеричном виде по интерфейсу UART (режим терминала).
Интерфейс nwFlash состоит из трех элементов:
- главное меню;
- окно терминала;
- окно состояния.
Рисунок 1. Интерфейс загрузчика nwFlash
Главное меню позволяет производить операции со стендом, а также настраивать параметры терминала. Окно терминала служит для отображения данных, посылаемых микроконтроллером по интерфейсу UART, а также для отправки пользовательских данных (от компьютера микроконтроллеру) по этому же интерфейсу. В окне состояния отображаются результаты всех проведённых операций для контроля.
Для работы с программой nwFlash следует запустить программу. При нажатии на пункт главного меню "Подключение" программа выполнит поиск подключенных стендов и отобразит их названия в раскрывшемся меню. Если вы забыли подключить стенд, то появится надпись "нет подключенных стендов", в этом случае подключите стенд и снова раскройте меню "Подключение".
После выбора стенда из меню "Подключение". В окне состояния должна появиться надпись "Подключено к "имя_стенда". После этого становится доступным пункт меню "Операции", где можно:
- выполнить сброс МК. На стенде начнёт выполняться программа, записанная в микроконтроллер в последний раз;
- стереть flash-память микропроцессора;
- прошить МК.
В появившемся окне необходимо указать путь к *.hex файлу.
Рисунок 2. Операции загрузчика nwFlash
После выполнения работы со стендом, выберите пункт "Отключиться" в меню "Подключение", затем закройте программу.
Порядок выполнения работы
- Войти в итегрированную среду программирования keil-C;
- Создать программный проект;
- Ввести подготовленную дома программу, зажигающую светодиоды в соответствии с номером варианта (в двоичном коде);
- Оттранслировать исходный текст программы;
- Исправить синтаксические ошибки и получить загрузочный модуль;
- Занести загрузочный файл программы во внутреннюю память программ микроконтроллера стенда LESO1 и убедиться, что зажглись заданные светодиоды;
- Усложнить программу. (Светодиоды должны зажигаться по нажатию кнопки и гаснуть по ее отпусканию)
- Получить новый загрузочный файл и занести его во внутреннюю память микроконтроллера
- Убедиться, что стенд работает именно так, как было задумано при разработке программы.
Содержание отчета
- Цель работы;
- Эквивалентная схема подключения светодиода к параллельному порту
- Эквивалентная схема подключения кнопки к параллельному порту
- Принципиальная схема микроконтроллера с используемой в работе периферией
- Графическую схему алгоритма программы
- Файл листинга (файл с расширением *.lst);
- Распечатка загрузочного файла (с расширением *.hex);
- Содержимое файла листинга программного проекта
- Выводы.
Контрольные вопросы
- Что такое параллельный порт?
- Какие виды параллельных портов вы знаете?
- Для чего применяются параллельные порты?
- Как настраиваются параллельные порты микроконтроллера?
- Что такое альтернативные функции параллельных портов микроконтроллера?
- Что такое вытекающий ток параллельного порта? Для чего нужен этот параметр?
- Что такое втекающий ток параллельного порта? Для чего нужен этот параметр?
- Как увеличить выходной ток параллельного порта микроконтроллера?
- Какое максимальное и минимальное напряжение выдерживает параллельный порт микроконтроллера? Как увеличить эти напряжения?
- Что такое подтяжка порта микроконтроллера?
- Как превратить замыкание и размыкание контактов кнопки или датчика в логические уровни?
- Как определить адрес порта в адресном пространстве микроконтроллера?
- Как выдать на выход параллельного порта микроконтроллера логическую единицу?
- Как выдать на выход параллельного порта микроконтроллера логический ноль?