- Функции для работы с LCD
Функции для работы с LCD
Рассмотрим функции для работы с наиболее широко распространёнными ЖКИ-контроллерами по четырёхбитному интерфейсу с использованием определенных программистом выводов. Схема подключения контроллера ЖКИ к PIC представлена на рисунке 24.
Рис. 24. Схема подключения ЖКИ
Перед тем как вызывать библиотечные функции, следует убедиться, что используемый для работы с ЖКИ порт настроен на вывод. Для работы с клавиатурой используются библиотечные функции Lcd_Custom_Config, Lcd_Custom_Out, Lcd_Custom_Out_Cp, Lcd_Custom_Chr, Lcd_Custom_Chr_Cp и Lcd_Custom_Cmd. Описание этих функций представлено в таблицах 7 -13 соответственно.
Таблица 7. Описание функции Lcd_Custom_Config
Прототип | void Lcd_Custom_Config(char * data_port, char D7, char D6, char D5, char D4, char* ctrl_port, char RS, char WR, char EN) |
Возвращаемое значение | Нет |
Описание | Инициализирует порт данных (data_port) и управления (controLport) в соответствии с заданным назначением разрядов |
Требования | Нет |
Пример | Lcd_Custom_Config(&P0RTD,3(2,1(0,&PORTB,2,3,4) |
Таблица 8. Описание функции Lcd_Custom_Out
Прототип | void Lcd_Custom_Out(char row, char col, char "text) |
Возвращаемое значение | Нет |
Описание | Выводит на LCD text в заданную строку и заданную позицию (аргументы row и col). В качестве text может использоваться как строковая переменная, так и литерал |
Требования | Порт, к которому подключен контроллер ЖКИ, должен быть проинициализирован функцией Lcd_Custom_Config |
Пример | Вывод «Hello!» на LCD 8 строку 1, с позиции 3: Lcd_Custom_Out(1, 3, "Hello!"); |
Таблица 9. Описание функции Lcd_Custom_Out_Cp
Прототип | void Lcd_Custom_Out_Cp(char "text) |
Возвращаемое значение | Нет |
Описание | Выводит text на ЖКИ, начиная с текущей позиции курсора. В качестве text может использоваться как строковая переменная, так и литерал |
Требования | Порт, к которому подключен контроллер ЖКИ, должен быть проинициализирован функцией Lcd_Custom_Config |
Пример | Вывод «Here!» с текущей позиции курсора: Lcd_Custom_Out_Cp( Here!") |
Таблица 10. Описание функции Lcd_Custom_Chr
Прототип | void Lcd_Custom_Chr(char row, char col, char character) |
Возвращаемое значение | Нет |
Описание | Вывод символа character на ЖКИ в заданную строку и позицию (аргументы row и col). В качестве character может использоваться как переменная, так и литерал |
Требования | Порт, к которому подключен контроллер LCD, должен быть проинициализирован функцией Lcd_Custom_Config |
Пример | Вывод «I» на ЖКИ в строку 2, позицию 3: Lcd_Custom_Chr(2, 3, 'i') |
Таблица 11. Описание функции Lcd_Custom_Chr_Cp
Прототип | void Lcd_Custom_Chr_Cp(char character) |
Возвращаемое значение | Нет |
Описание | Выводит символ character на ЖКИ в текущую позицию курсора. В качестве character может использоваться как переменная, так и литерал |
Требования | Порт, к которому подключен контроллер ЖКИ, должен быть проинициализирован функцией Lcd_Custom_Config |
Пример | Вывод «е» в текущую позицию: Lcd_Custom_Chr_Cp('e') |
Таблица 12. Описание функции Lcd_Custom_Cmd
Прототип | void Lcd_Custom_Cmd(char command) |
Возвращаемое значение | Нет |
Описание | Посылает команду command на ЖКИ. Здесь можно использовать одну из предопределённых команд. Список всех команд приведён ниже |
Требования | Поот, к которому подключен контроллер ЖКИ, должен быть проинициализирован функцией Lcd_Custom_Config |
Пример | Очистка LCD: Lcd_Custom_Cmd(LCD_CLEAR) |
Таблица 13. Список команд для управления LCD
Команда LCD | Назначение |
LCD FIRST ROW | Перемещение курсора в 1-ю строку |
LCD_SECOND_ROW | Перемещение курсора во 2-ю строку |
LCD_THIRD_ROW | Перемещение курсора в 3-ю строку |
LCD_FOURTH_ROW | Перемещение курсора в 4-ю строку |
LCD_CLEAR | Стирание дисплея |
LCD_RETURN_HOME | Возврат курсора в исходное положение и возврат сдвинутого изображения дисплея в первоначальное состояние. Данные в памяти контроллера дисплея не затрагиваются |
LCD_CURSOR_OFF | Выключение курсора |
LCD_UNDERLINE_ON | Включение курсора «подчёркивание» |
LCD_BLINK_CURSOR_ON | Включение мерцания курсора |
LCD_MOVE_CURSOR_LEFT | Сдвиг курсора влево без изменения данных в памяти контроллера дисплея |
LCD_MOVE_CURSOR_RIGHT | Сдвиг курсора вправо без изменения данных в памяти контроллера дисплея |
LCD_TURN_ON | Включение дисплея |
LCD_TURN_OFF | Выключение дисплея |
LCD_SHIFT_LEFT | Сдвиг экрана дисплея влево без изменения памяти контроллера дисплея |
LCD_SHIFT_RIGHT | Сдвиг экрана дисплея вправо без изменения памяти контроллера дисплея |
Следующий программный код демонстрирует пример использования описанных функций и позволяет отобразить на дисплее строку mikroElektronika.
void main() {
TRISD = 0 ; // PORTD на выход
// Инициализировать LCD на порт PORTD
Lcd_Custom_Conf ig(&PORTD,3,5,4,6,&PORTD,1,0,2);
Lcd_Custom_Cmd(Lcd_CURSOR_OFF); // Выключить LCD
Lcd_Custom_Out( 1 , 1 , text); //Вывести текст на LCD }