Дата последнего обновления файла 04.10.2012

Лабораторная работа 2. Ввод и вывод информации через параллельные порты микроконтроллера

Лабораторная работа выполняется с помощью учебного лабораторного стенда LESO1.

Цель работы: Изучить особенности работы параллельных портов микроконтроллера. Научиться проектировать схемы подключения светодиодов, реле, электронных ключей, кнопок и датчиков к микропроцессорным системам и микроконтроллерам. научиться управлять светодиодами и определять состояние кнопок при помощи программы. Научиться отлаживать программы микроконтроллера на реальных микропроцессорных устройствах.

Подготовка к лабораторной работе

По конспекту лекций изучить схемы параллельных портов микроконтроллеров семейства 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 состоит из трех элементов:

  • главное меню;
  • окно терминала;
  • окно состояния.
Интерфейс загрузчика nwFlash
Рисунок 1. Интерфейс загрузчика nwFlash

Главное меню позволяет производить операции со стендом, а также настраивать параметры терминала. Окно терминала служит для отображения данных, посылаемых микроконтроллером по интерфейсу UART, а также для отправки пользовательских данных (от компьютера микроконтроллеру) по этому же интерфейсу. В окне состояния отображаются результаты всех проведённых операций для контроля.

Для работы с программой nwFlash следует запустить программу. При нажатии на пункт главного меню "Подключение" программа выполнит поиск подключенных стендов и отобразит их названия в раскрывшемся меню. Если вы забыли подключить стенд, то появится надпись "нет подключенных стендов", в этом случае подключите стенд и снова раскройте меню "Подключение".

После выбора стенда из меню "Подключение". В окне состояния должна появиться надпись "Подключено к "имя_стенда". После этого становится доступным пункт меню "Операции", где можно:

  • выполнить сброс МК. На стенде начнёт выполняться программа, записанная в микроконтроллер в последний раз;
  • стереть flash-память микропроцессора;
  • прошить МК.

В появившемся окне необходимо указать путь к *.hex файлу.

Операции загрузчика nwFlash
Рисунок 2. Операции загрузчика nwFlash

После выполнения работы со стендом, выберите пункт "Отключиться" в меню "Подключение", затем закройте программу.

Порядок выполнения работы

  1. Войти в итегрированную среду программирования keil-C;
  2. Создать программный проект;
  3. Ввести подготовленную дома программу, зажигающую светодиоды в соответствии с номером варианта (в двоичном коде);
  4. Оттранслировать исходный текст программы;
  5. Исправить синтаксические ошибки и получить загрузочный модуль;
  6. Занести загрузочный файл программы во внутреннюю память программ микроконтроллера стенда LESO1 и убедиться, что зажглись заданные светодиоды;
  7. Усложнить программу. (Светодиоды должны зажигаться по нажатию кнопки и гаснуть по ее отпусканию)
  8. Получить новый загрузочный файл и занести его во внутреннюю память микроконтроллера
  9. Убедиться, что стенд работает именно так, как было задумано при разработке программы.

Содержание отчета

  1. Цель работы;
  2. Эквивалентная схема подключения светодиода к параллельному порту
  3. Эквивалентная схема подключения кнопки к параллельному порту
  4. Принципиальная схема микроконтроллера с используемой в работе периферией
  5. Графическую схему алгоритма программы
  6. Файл листинга (файл с расширением *.lst);
  7. Распечатка загрузочного файла (с расширением *.hex);
  8. Содержимое файла листинга программного проекта
  9. Выводы.

Контрольные вопросы

  1. Что такое параллельный порт?
  2. Какие виды параллельных портов вы знаете?
  3. Для чего применяются параллельные порты?
  4. Как настраиваются параллельные порты микроконтроллера?
  5. Что такое альтернативные функции параллельных портов микроконтроллера?
  6. Что такое вытекающий ток параллельного порта? Для чего нужен этот параметр?
  7. Что такое втекающий ток параллельного порта? Для чего нужен этот параметр?
  8. Как увеличить выходной ток параллельного порта микроконтроллера?
  9. Какое максимальное и минимальное напряжение выдерживает параллельный порт микроконтроллера? Как увеличить эти напряжения?
  10. Что такое подтяжка порта микроконтроллера?
  11. Как превратить замыкание и размыкание контактов кнопки или датчика в логические уровни?
  12. Как определить адрес порта в адресном пространстве микроконтроллера?
  13. Как выдать на выход параллельного порта микроконтроллера логическую единицу?
  14. Как выдать на выход параллельного порта микроконтроллера логический ноль?

Литература:

  1. М. Рафикумазан. Микропроцессоры и машинное проектирование микропроцессорных систем 1988
  2. В.В. Сташин А.В. Урусов О.Ф. Мологонцева Проектирование цифровых устройств на однокристальных микроконтроллерах 1990
  3. В.Я. Нерода В.Э. Торбинский Е.Л.. Шлыков Однокристальные микроЭВМ MCS-51 Архитектура 1995
  4. В.И. Сединин, А.В. Микушин. Однокристальный микроконтроллер семейства MCS-51 фирмы INTEL 8xC51GB 2001
  5. В.И. Сединин, А.В. Микушин. Программирование микропроцессорных систем на языке C-51 Москва, "Горячая линия – Телеком", 2009. — 216с.

Вместе с лабораторной работой "Ввод и вывод информации через параллельные порты микроконтроллера" выполняют:

Лабораторная работа 1. Знакомство с интегрированной средой программирования keil-C
http://digteh.ru/MCS51/lab/1/

Лабораторная работа 3. Ввод информации в микроконтроллер с клавиатуры
http://digteh.ru/MCS51/lab/3/

Лабораторная работа 4. Исследование работы таймеров микроконтроллеров MCS-51
http://digteh.ru/MCS51/lab/4/

Лабораторная работа 5. Работа с последовательным портом микроконтроллера ADuC842
http://digteh.ru/MCS51/lab/5/

Лабораторная работа 6. Вывод информации на жидкокристаллический дисплей
http://digteh.ru/MCS51/lab/6/


Автор Микушин А. В. All rights reserved. 2001 ... 2015

Предыдущие версии сайта:
http://neic.nsk.su/~mavr
http://digital.sibsutis.ru/

пЕИРХМЦ@Mail.ru


Rambler's Top100