Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_Работа_3.doc
Скачиваний:
12
Добавлен:
04.05.2019
Размер:
185.86 Кб
Скачать

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

3.1. Вывод текстовой информации на жкд

3.1.1. Рассмотрим программу, которая после запуска выводит на ЖКД сообщение:

Hello,

student!

Текст программы на языке СИ имеет вид:

/*******************************************

hello.c – программа вывода текста приветствия на ЖКД

****************************************************/

#include<p18f242.h>

#include<stdio.h> // заголовочный файл для библиотеки функций вывода

#include<xlcd.h> // заголовочный файл для библиотеки функций

// управления ЖКД

#include<delays.h> // заголовочный файл для библиотеки функций задержек

#pragma config WDT=OFF, OSC=HS // установка битов конфигурации МК

void init(void); // прототип функции инициализации МК и ЖКД

void out_lcd(void); // прототип функции вывода сообщения на ЖКД

char line[17]; // объявление строчной переменной для вывода на ЖКД

void main(void)

{

init( ); // вызов функции инициализации

out_lcd( ); // вызов функции вывода сообщения на ЖКД

while(1); // зацикливание главной программы

}

void init(void) // функция инициализации МК и ЖКД

{

PORTB = 0; // очистить регистр данных порта В

TRISB = 0; // настроить все линии порта В на вывод

OpenXLCD(FOUR_BIT & LINES_5X7); // Сконфигурировать ЖКД

// для работы в 4-разрядном и многострочном

// режиме с символами 5×7 точек

while(BusyXLCD( )); // ожидание готовности дисплея

WriteCmdXLCD(CURSOR_OFF & BLINK_OFF); // записать команду

// в ЖКД: отключить отображение и мерцание курсора

}

void out_lcd(void) // функция вывода сообщения на ЖКД

{

sprintf(line, “Hello, “); // вывод (запись) текста Hello, в строку line

while(BusyXLCD( )); // ожидание готовности ЖКД

SetDDRamAddr(0x00); // установка курсора на начало 1-й строки ЖКД

putsXLCD(line); // вывод строки line на ЖКД

sprintf(line, “student! “); // вывод (запись) текста student! в строку line

while(BusyXLCD( )); // ожидание готовности ЖКД

SetDDRamAddr(0x40); // установка курсора на начало 2-й строки ЖКД

putsXLCD(line); // вывод строки line на ЖКД

}

void DelayFor18TCY(void) // функция задержки на 18 командных циклов

{

Delay10TCYx(2); // задержка на 20 мкс

}

void DelayPORXLCD(void) // функция задержки на 15 мс

{

Delay1KTCYx(15);

}

void DelayXLCD(void) // функция задержки на 5 мс

{

Delay1KTCYx(5);

}

3.1.2. Проверьте на диске E наличие своей папки для хранения проектов разрабатываемых программ. Полный путь к вашей папке может быть:

E:\Users\MPT\PM-41\Ivanov

Примечание. Буквы в именах директорий (папок) должны быть обязательно латинские. При использовании кириллицы возможна некорректная работа среды MPLAB IDE.

3.1.3. Запустите программу MPLAB IDE с помощью ярлычка на рабочем столе компьютера.

3.1.4. Выберите тип микроконтроллера, который будет использоваться в проекте: PIC18F242.

3.1.5. Далее создайте проект с именем pr13 в новой папке, которую можно назвать proj13. С этой целью выберите пункт меню Project > New. На рабочем столе MPLAB IDE откроется окно New Project. Введите имя создаваемого проекта pr13 в строку Project Name. Затем переведите курсор в строку Project Directory и запишите полный путь к проекту, который будет находиться в новой папке с именем proj1:

e:\Users\MPT\PM-41\Ivanov\proj13

Щелкните по кнопке OK. При этом на экране появится окно с текстом “The directory e:\Users\.....\proj13 does not exist. Would you like to create it?” (Директория e:\Users\....\proj13 не существует. Желаете ее создать?) Щелкните по кнопке OK для подтверждения выбора.

3.1.6. Наберите текст программы hello.c в окне редактора. Ввод текста постарайтесь выполнить в точном соответствии с расположением его в приведенном выше примере.

3.1.7. Теперь необходимо внести исходный файл hello.c и файл сценария линкера 18f242.lkr в созданный проект pr13.

3.1.8. Перед выполнением компиляции программы необходимо проверить установки опций для создания проекта. С этой целью выберите пункт меню Project > Build Options... > Project и в раскрывшемся окне откройте вкладку Directories.

Затем щелкните по стрелке в правой части строки с заголовком Show directories for: . В раскрывшемся списке выберите строку Library Search Path (путь для поиска библиотек) и щелкните по кнопке Suite Defaults (установка по умолчанию). В окне должен появиться путь для поиска библиотек C:\MCC18\lib. Остальные пути поиска будут после этого установлены автоматически, если были правильно выбраны исполняемые файлы, входящие в пакет MCC18.

В заключение щелкните по кнопке OK для сохранения установок и закрытия окна.

3.1.9. После того, как были выполнены все указанные выше пункты по предварительной подготовке проекта, можно приступить к его построению, используя пункт меню Project > Build All . При этом сначала выполняется компиляция исходного файла, а затем компоновка всех файлов, входящих в проект.

В случае успешной компиляции проекта закройте его, выбрав пункт меню Project > Close…. Затем сверните окно MPLAB IDE.

3.1.10. Теперь нужно создать с помощью Proteus VSM схему МКУ, приведенную на рис. 1, для проверки работы программы hello.c. С этой целью запустите программу ISIS.exe пакета Proteus VSM с помощью ярлычка с надписью ISIS на рабочем столе компьютера. Создайте новый проект, используя пункт меню File > New Design. В открывшемся диалоговом окне щелкните по варианту DEFAULT, а затем по кнопке OK.

Рис. 1. Принципиальная схема МКУ

3.1.11. Для выбора элементов схемы из библиотек Proteus щелкните по иконке (значку) с всплывающей надписью Component Mode на панели инструментов, а затем по кнопке P в верхнем левом углу переключателя объектов Object Selector. На экране появится окно Pick Device библиотеки компонентов.

Для выбора ЖК-дисплея поставьте курсор мыши в окне Category (Категория) на строку Optoelectronics (Оптоэлектронные приборы) и щелкните левой кнопкой. Затем в окне Sub-category выберите строку Alphanumeric LCDs и также щелкните левой кнопкой. В окне Results (Результаты) щелкните по строке

LM016L DISPLAY 16 × 2 Alphanumeric LCD

Это алфавитно-цифровой жидкокристаллический двухстрочный дисплей для отображения 16 символов в строке.

Для выбора микроконтроллера наберите в окне Keywords слово pic18f242 и щелкните по строке в окне Results.

Если выбранные элементы появились в списке окна Object Selector, то закройте библиотеку нажатием на клавишу Enter.

3.1.12. Теперь разместите микроконтроллер и ЖК-дисплей в окне редактирования согласно схеме на рис. 1. Для удобства размещения компонентов увеличьте масштаб их отображения. При изменении масштаба возможно смещение компонентов на экране. Для настройки участка изображения используйте операцию позиционирования с помощью окна предварительного просмотра. С этой целью наведите курсор мыши в центр нового участка в окне предварительного просмотра и щелкните левой кнопкой. В окне появится изображение фигурного креста, означающего, что включен режим слежения. В этом режиме при перемещении мыши по окну предварительного просмотра рисунок двигается по окну редактирования. Можно одновременно с перемещением рисунка изменять его масштаб, прокручивая ролик мыши. Для выхода из режима позиционирования со слежением следует вновь щелкнуть левой кнопкой мыши. Курсор примет обычный вид стрелки.

В схеме МКУ, приведенной на рис.1, соединение ЖКД и МК выполнено с помощью шины. Для проведения шины в Proteus следует выбрать режим Buses Mode (режим шины), щелкнув по соответствующему значку на панели инструментов. Затем надо навести курсор мыши на место начала шины и щелкнуть левой кнопкой. Появится изображение шины синего цвета. Ведите шину согласно рис. 1. Если необходимо повернуть шину, то щелкните левой кнопкой. На изображении шины появится точка привязки, показанная маленьким крестиком, что зафиксирует предыдущую секцию шины перед продолжением разводки. Конец шины отмечается двойным щелчком левой кнопкой, при этом появляется квадратик голубого цвета.

Далее необходимо соединить линиями выводы ЖКД и МК с шиной. Для этого надо навести указатель мыши на вывод компонента до появления выделения (красного квадратика), щелкнуть левой кнопкой, и вести линию до шины. При появлении знака выделения на шине нужно вновь щелкнуть левой кнопкой для фиксации линии.

Теперь нужно присвоить линиям шины определенные метки (имена или номера), чтобы они выполняли необходимые соединения выводов МК и ЖКД. Можно для наглядности в качестве меток линий использовать имена выводов порта В микроконтроллера: RB0, RB1 и т.д. Для нанесения меток на линии шины нужно перейти в режим Wire Label Mode (Режим метки проводов), щелкнув по значку с надписью LBL на панели инструментов.

Начните разметку с линий шины, присоединенных к МК. Наведите курсор на линию, соединяющую шину с выводом RB0. Курсор примет форму крестика, что указывает на выделение (крестик должен размещаться около шины). Затем щелкните левой кнопкой мыши. На экране откроется окно редактирования метки Edit Wire Label. Наберите слово RB0 в строке String и щелкните по кнопке ОК. В результате рядом с линией появится ее метка RB0. Можно удалить метку провода, наведя на нее курсор. Затем щелкнуть правой кнопкой мыши и выбрать в раскрывшемся списке строку Delete Label.

Закончив с нанесением меток на линиях шины, присоединенных к МК, перейдите к ЖКД. Соответствие линий шины, соединяющих выводы МК и ЖКД, приведено в табл. 3. Начните, например, с линии, присоединенной к выводу RS дисплея. Согласно табл. 3, вывод RS должен соединяться с выводом RB5 микроконтроллера. Наведите курсор на линию (около шины) и щелкните левой кнопкой. В окне редактирования щелкните по стрелке в правой части строки String. В раскрывшемся списке выберите строку со словом RB5. Убедитесь также, что установлен переключатель (ромбик черного цвета) с надписью Vertical, что соответствует вертикальному расположению линий соединения с шиной. Затем щелкните по кнопке ОК. Рядом с выбранной линией должна появиться ее метка RB5. Используя данные табл. 3, аналогичными действиями поставьте метки на остальных линиях шины.

Далее перейдите в режим Terminals Mode, для чего требуется щелкнуть мышью по значку с соответствующей надписью на панели инструментов. После этого в окне Object Selector появится список доступных элементов. Выберите из списка клемму GROUND (земля, общий провод) и поместите ее под выводом VSS ЖК-дисплея (см. рис. 1). Затем выберите из списка клемму POWER (питание) и поместите ее около ЖКД и вывода MCLR микроконтроллера (см. рис. 1). Выполните соединение элементов между собой согласно схеме, приведенной на рис.1.

После завершения разводки необходимо сохранить проект. Для этого выберите пункт меню File > Save Design As…. В диалоговом окне раскройте папку e:\...\proj13 и сохраните в ней проект под именем hello.dsn.

3.1.13. Далее необходимо установить параметры компонентов схемы МКУ. С этой целью подведите курсор мыши на изображение микроконтроллера и дважды щелкните левой кнопкой. Откроется окно редактирования свойств компонентов Edit Component. Прежде всего нужно записать hex-код программы в память МК, или, как часто говорят, запрограммировать МК. С этой целью щелкните по кнопке в правой части строки Program File. Откроется окно Select File Name с hex-файлами из папки с проектами proj13. Выберите файл с именем pr13.hex (это скомпилированный файл исходной программы hello.c, написанной на языке Си), и нажмите кнопку «Открыть».

В строке Processor Clock Frequency (тактовая частота процессора) выставьте 4 МГц. Остальные установки изменять нет необходимости.

Щелкните по кнопке ОК для подтверждения выбора параметров. Затем щелкните по пустому месту схемы для снятия выделения с МК.

3.1.14. Теперь можно проверить работу МКУ. С этой целью с помощью кнопки Play – ПУСК запустите программу работы МК. Если на экране ЖК-дисплея появился текст “Hello, student!”, то все в порядке.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]