3. Выдать на порт PORT P байт данных (код символа или команда управления);
4. Перевести линию E в неактивное состояние (логический 0).
В процессе создания на основе этого алгоритма программы управления следует учесть все перечисленные ранее задержки между сигналами.
Программа управления ЖК индикатором.
Структура программы управления символьным ЖК индикатором представлена на рис. 5.13,а. Программа включает коллекцию функций, каждая из которых выполняет законченное смысловое действие. Разбиение задачи на отдельные функции — искусство разработчика. От выбранного набора функций и способов передачи параметров между ними зависит число возможных ошибок при последующем использовании этих функций в прикладной программе и компактность файла исполняемых кодов.а) Набор функций управления
б) Блок-схема алгоритма инициализации
Рис. 5.13.
Программное обеспечение для управления цифро-буквенным ЖК индикаторомБлок-схема функции инициализации дисплея представлена на рис. 5.13,б. Она реализует алгоритм начальной установки дисплея, который разработан в соответствии с техническими рекомендациями производителя.
Ниже приведен текст программы на Си для всех функций рис. 5.13,а.
/*------------------------------------------------------------------*/
/*filename: lcd.c */
/*содержит программный код для шести функций управления ЖК дисплеем */
/*------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
/* Функция initialize_lcd производит начальную установку режимов дисплея */
/*-----------------------------------------------------------------------*/
void initialize_lcd(void) {
delay_5ms();
delay_5ms();
delay_5ms(); //задержка 15 мс
putcommands(0x38); //команда установки формата интерфейса обмена
delay_5ms();
putcommands(0x38);
delay_l00us();
putcommands(0x38);
putcommands(0x38) ;
putcommands(0x0C);
putcommands(0x01); //очистить дисплей
putcommands(0x06); //установить режим ввода с автоматическим
//увеличением адреса
//символа на 1
putcommands(0x0E); //включить дисплей, режим курсора мигающий
putcommands(0x02); //установить курсор на первое знакоместо
}
/*---------------------------------------------------------------------*/
/* Функция putchars производит запись одного кода символа в контроллер */
/*дисплея */
/*---------------------------------------------------------------------*/
void putchars(unsigned char с) {
DDRP = 0xFF; //установить порт PORT P на вывод
DDRDLC = DDRDLC | 0x0C; //установить разряды 2 и 3 порта PORT DLC на
//вывод
PORTP = с; //Выдать в порт PORT P код символа с
PORTDLC = PORTDLC | 0x08; //установить линию RS в 1
PORTDLC = PORTDLC | 0x04; //установить линию E в 1
PORTDLC = 0; //установить E и RS в 0
delay_5ms(); //задержка 5 мс
}
/*-----------------------------------------------------------------------*/
/*Функция putcommands производит запись одного кода команды в контроллер */
/*дисплея */