Цель работы: Научиться осуществлять вывод текстовой информации на экран компьютера при помощи последовательного порта микроконтроллеров семейства MCS-51.
Подготовка к лабораторной работе
1. По конспекту лекций изучить работу последовательного порта микроконтроллеров семейства MCS-51. По DataSheet ADuC842 ознакомиться с особенностями работы последовательного порта в данном микроконтроллере. К сожалению информация доступна только на английском языке. В русском переводе она отсутствует. По таблице регистров специальных функций (SFR) определить адреса регистров управления и настройки последовательного порта. Рассчитать коэффициенты, влияющие на скорость работы последовательного порта и определить значение регистров настройки последовательного порта и таймера, используемого для синхронизации.
Реализация программы передачи байта по последовательному порту
Применение в микроконтроллерных устройствах в качестве устройства отображения информации персонального компьютера позволяет значительно снизить цену и габариты данного устройства. То, что в современных компьютерах и ноутбуках часто отсутствует COM-порт сути вопроса не изменяет. Достаточно поставить на плату разрабатываемого микроконтроллерного устройства микросхему моста USB-UART, подобную FT232 фирмы FTDI.
Работа с последовательным портом производится в два этапа. На первом этапе требуется настроить порт на необходимый режим работы. В данном случае при работе с COM-портом компьютера нужно перевести последовательный порт микроконтроллера в асинхронный 8-ми битовый режим с настраиваемой скоростью работы (режим 1). Так как скорость работы задается при помощи одного из таймеров, то необходимо настроить его на заданную скорость работы. Так как этот участок программы требуется только один раз в течение выполнения программы, то его называют инициализацией.
Листинг 1. Исходный текст функции настройки последовательного порта микроконтроллера ADuC842
void InitUART(void) {SCON=(1<<6)| //Настроить последовательный порт на первый режим работы (1<<4); //Разрешить прием по последовательному порту T3CON=(1<<7)| //Настроить синхронизацию последовательного порта от таймера 3 (3); //Делитель таймера 3 DIV = 3 T3FD=0xFD; //Настроить скорость передачи 9600 бит/с PLLCON=3; //Настроить частоту ядра процессора 9600 МГц }
Для вывода символа через последовательный порт достаточно записать этот символ в регистр данных передатчика последовательного порта SBUF. Его адрес можно определить в документации на микроконтроллер ADuC842. Перед началом передачи следует убедиться в том, что передача предыдущего байта закончена. Это можно определить по содержимому флага TI регистра SCON. В языке программирования C вывод одного байта производится функцией putchar. В keil-c приведен исходный текст этой функции. Ее исходный текст приведен в листинге 2.
Листинг 2. Исходный текст функции передачи одного байта через последовательный порт микроконтроллера
char putchar(char smv) {while(!TI); //Если передатчик закончил передачу предыдущего символа, {TI=0; //то сбросить флаг передатчика return(SBUF=smv); //и начать передачу нового символа } }
Для отображения текста на экране компьютера применяются таблицы ASCII для DOS и ANSI для WINDOWS. При передаче текста на экран дисплея персонального компьютера можно воспользоваться этими таблицами и передавать цифровые коды, соответствующие нужным символам, но намного эффективнее воспользоваться символьными константами, которые записываются в апострофах:
putchar('Б');
Отображение принимаемой информации на экране компьютера
Первое, что необходимо решить при организации эксперимента — это измерительный прибор, при помощи которого можно оценить результаты работы. В данном случае мы отправляем данные в персональный компьютер и должны увидеть их на экране его дисплея. Отобразить данные на экране компьютера позволяют специализированные программы — терминалы. При использовании нашего лабораторнного стенда LESO1 в качестве программы — терминала можно использовать программу nwFlash.
Настройка терминала nwFlash осуществляется в пункте главного меню «Опции терминала». Опции терминала nwFlash позволяют:
- выбрать режим отображения данных: текстовый или шестнадцатеричный, при этом изменяется также тип посылаемых данных;
- выбрать кодировку ANSI (Windows-1251) или ASCII (DOS-866);
- включать и выключать режим автоматической прокрутки текста;
- очистить окно терминала;
- сохранять принятую от микроконтроллера информацию в файл:
- в том виде, как она пришла — пункт меню "Сохранить";
- в том виде, как она отображается в терминале — пункт меню "Сохранить как текст".
Скрин-шот меню настройки режимов работы программы-терминала nwFlash показан на рисунке 1.
Рисунок 1. Настройка терминала nwFlash
В нашем случае необходимо установить текстовый режим работы и кодировку ANSI.
При выполнении лабораторной работы необходимо настраивать скорость работы виртуального COM-порта компьютера. Выбрать необходимую скорость обмена с микроконтроллером можно при помощи меню "Подключение". Внешний вид программы nwFlash при настройке скорости работы COM-порта приведен на рисунке 2.
Рисунок 2. Настройка скорости работы COM-порта
Задание к работе
Составить алгоритм и разработать программу, отображающую на экране компьютера фамилию имя и отчество студента. Скорость передачи данных должна соответствовать варианту, приведенному в таблице 1. Взаимодействие микроконтроллера с компьютером осуществляется через терминал программы загрузчика — nwFlash.
Таблица вариантов заданияНомер варианта | Скорость UART | Источник синхронизации UART |
---|---|---|
1 | 300 бит/с | Таймер 3 |
2 | 600 бит/с | Таймер 3 |
3 | 1200 бит/с | Таймер 3 |
4 | 1800 бит/с | Таймер 3 |
5 | 2400 бит/с | Таймер 3 |
6 | 4800 бит/с | Таймер 3 |
7 | 7200 бит/с | Таймер 3 |
8 | 9600 бит/с | Таймер 3 |
9 | 600 бит/с | Таймер 1 |
10 | 1200 бит/с | Таймер 1 |
11 | 1800 бит/с | Таймер 1 |
12 | 2400 бит/с | Таймер 1 |
13 | 4800 бит/с | Таймер 1 |
14 | 7200 бит/с | Таймер 1 |
15 | 9600 бит/с | Таймер 1 |
Порядок выполнения работы
Вывод информации через последовательный порт- Войдите в интегрированную среду программирования Keil-C. Создайте и настройте должным образом проект.
- Разработайте и введите текст программы в соответствии с созданным алгоритмом.
- Оттранслируйте программу, и исправьте синтаксические ошибки.
- Настройте скорость UART терминала программы nwFlash соответственно заданию.
- Загрузите полученный *.hex файл в лабораторный стенд LESO1.
- Убедитесь, что в окне терминала вывелась фамилия студента.
- Измените программу таким образом, чтобы данные из микроконтроллера отсылались только по текстовой команде 'Кто?', переданной с компьютера. Передача команды осуществляется через терминал nwFlash.
- Загрузите полученный *.hex файл в лабораторный стенд LESO1.
- Введите в окне терминала nwFlash строку 'Кто?'.
- Убедитесь, что в окне терминала на этот вопрос вывелась фамилия студента.
Содержание отчета
- Цель работы;
- Принципиальная схема подключения микроконтроллера к компьютеру;
- Временная диаграмма передачи данных по UART;
- Структурная схема временной синхронизации последовательного порта микроконтроллера ADuC842;
- Расчет коэффициентов, загружаемых в управляющие регистры микроконтроллера;
- Графическую схему алгоритма работы программы вывода информации на экран компьютера;
- Содержимое файла листинга программы вывода информации на экран компьютера;
- Выыводы по выполненной лабораторной работе
Контрольные вопросы
- Назначение последовательного порта?
- Назначение порта UART?
- Особенности реализации схемы передачи данных из микроконтроллера в компьютер?
- Виды режимов работы последовательного порта?
- Особенности работы последовательного порта в нулевом режиме?
- Особенности работы последовательного порта в первом режиме?
- Особенности работы последовательного порта во втором режиме?
- Особенности работы последовательного порта в третьем режиме?
- Особенности настройки таймера для последовательного порта?
- Особенности настройки частоты работы ядра микроконтроллера?