2.2. Библиотека функций управления жк-дисплеем
Для облегчения разработки программ управления ЖК-дисплеем с контроллером Hitachi HD44780 в библиотеке пакета MCC18 имеются несколько функций, которые используют выводы портов микроконтроллеров семейства PIC18. Описания этих функций даны в заголовочном файле с именем xlcd.h. По умолчанию для управления контроллером используются выводы только порта В. Имеется возможность использования и других портов, но для этого надо произвести изменения некоторых констант, указанных в файле xlcd.h.
В данной лабораторной работе используется 4-разрядный формат передачи данных, и для управления дисплеем достаточно только 7 линий. В табл.3 указаны выводы ЖКД и соответствующие им выводы МК.
Таблица 3
Соответствие выводов ЖКД и МК
Наименования выводов ЖКД |
Наименование выводов порта В МК |
RS |
RB5 |
R/W |
RB6 |
E |
RB4 |
D4 |
RB0 |
D5 |
RB1 |
D6 |
RB2 |
D7 |
RB3 |
В данной лабораторной работе будут использованы следующие функции:
Функция |
Описание |
BusyXLCD |
Контроллер ЖКД занят? |
OpenXLCD |
Конфигурирует линии портов, используемых для ЖКД и инициализирует его |
putsXLCD |
Записывает строку в видеопамять контроллера ЖКД |
SetDDRamAddr |
Устанавливает адрес в видеопамяти контроллера ЖКД |
WriteCmdXLCD |
Записывает команду в контроллер ЖКД |
Для выполнения библиотечных функций управления ЖКД требуется также три функции временной задержки, которые должен организовать пользователь. Эти функции следующие:
Функция |
Описание |
DelayFor18TCY |
Задержка на 18 командных циклов |
DelayPORXLCD |
Задержка на 15 мс |
DelayXLCD |
Задержка на 5 мс |
Рассмотрим вкратце библиотечные функции.
BusyXLCD( ) - контроллер ЖКД занят? Эта функция возвращает значение флага занятости BF контроллера Hitachi HD44780. Если BF = 1, то контроллер занят, если BF = 0, то свободен. Обычно эта функция используется для ожидания готовности контроллера ЖКД с помощью оператора:
while(BusyXLCD( ));
OpenXLCD(unsigned char lcdtype) – функция конфигурации и инициализации ЖКД. Здесь ledtype – это маска из битов конфигурации ЖКД, значения которых определены в файле xlcd.h. Пример записи этой функции, который будет использоваться в лабораторной работе:
OpenXLCD(FOUR_BIT & LINES_5X7);
Здесь FOUR_BIT – режим 4-разрядных данных, LINES_5X7 - многострочный дисплей с символами 5×7 точек.
WriteCmdXLCD(unsigned char cmd) – запись команды в контроллер, cmd – маска из битов, определенных в файле xlcd.h. В лабораторной работе эта функция используется в виде:
WriteCmdXLCD(CURSOR_OFF & BLINK_OFF);
Здесь CURSOR_OFF – отключить отображение курсора, BLINK_OFF – отключить мерцание курсора.
SetDDRamAddr(unsigned char addr) – установка адреса в ОЗУ данных (видеопамяти) дисплея. Эта функция устанавливает адрес в ОЗУ данных контроллера Hitachi HD44780. Контроллер не должен быть занят во время выполнения этой операции – это можно проверить с помощью функции BusyXLCD( ). Пример использования этой функции в лабораторной работе:
while(BusyXLCD( )); // ожидание готовности контроллера ЖКД
SetDDRamAddr(0x40); // установка адреса видеопамяти равным 0x40 –
// установка курсора на начало второй строки дисплея