|
Описание русское. Автор Гена Чернов. HD44780 - один из самых распространенных драйверов символьных индикаторов. На этом драйвере строятся индикаторы от одной до четырех строк. От 8 до 40 символов.
2х16 самый распространенный индикатор. Схема подключения.
Пример программы на Си - несколько
функции которые позволят управлять и выводить информацию на индикатор.
/* * Обслуживание LCD */ #include <delays.h> /* описание портов ввода вывод – это сделать лучше в основной программе под реальное подключение индикатора (эти параметры приведены для демоплаты).*/
#define LCD PORTD // определение порта #define LCD_TRIS TRISD // #define E PORTAbits.RA1 // определение E #define RW PORTAbits.RA2 // определение RW #define RS PORTAbits.RA3 // определение RS
void SendLCDdata(unsigned char data, unsigned char rs) // Данные, команда/данные { RW = 0; // режим записи в индикатор LCD = data >> 4; // загрузка полубайта в порт RS = rs; // 0-команда/1-данные E = 1; // Импуль записи E = 0; Delay10TCYx( 2 ); // задержка 20 мкС LCD = data & 0x0F; // send right nibble RS = rs; // set RS E = 1; // pulse E E = 0; Delay10TCYx( 2 ); // задержка 20 мС // проверка на занятости индикатора RW = 1; // режим чтения RS = 1; // чтение данных LCD_TRIS = 0x0F; // настройка R0--R4 на ввод RS = 0; // чтение команд E = 1; // импульс чтения E = 0; data = LCD; // загрузить данные while ( ( data & 8 ) == 8 ) // проверяем индикатор занят { E = 1; // читатать младший полубайт E = 0; // E = 1; // читатать старший полубайт E = 0; // data = LCD; // загрузить данные } LCD_TRIS = 0; // настроить порт на вывод }
void InitLCD(void) // функция начальной инициализации дисплея { char a; Delay1KTCYx(20); // задержка на подачу питания 20 ms for ( a = 0; a < 4; a++ ) { LCD = 0b00000011; // код инициализации 0х03 (4 битного интерфейса) 3 раза E = 1; // загрузить E = 0; // Delay1KTCYx( 6 ); // задержка 6 ms } LCD = 0b00000010; // включить режим 4битный интерфейс. E = 1; // загрузить E = 0; Delay1KTCYx( 6 ); // задержка 6 ms
SendLCDdata( 0b00101000, 0 ); // Настройка функций SendLCDdata( 0b00001100, 0 ); // Включить дисплей SendLCDdata( 0b00000001, 0 ); // Дисплей очистить SendLCDdata( 0b00000110, 0 ); // Entry Mode SendLCDdata( 0b10000000, 0 ); // DDRAM addresss 0000 SendLCDdata( 0b00000010, 0 ); // return home
} // очистка ииндикатора void ClearLCD(void) { SendLCDdata( 0x01, 0 ); // send 0x01 } // вывод void String(char *str) { int ptr = 0; // SendLCDdata(position, 0); // команда установить курсор в позицию while (str[ptr] != 0) SendLCDdata(str[ptr++], 1); // цикл передачи символов пока не достигнут ноль (конец строки) }
// вывод текста в положение курсора // корректно работает для одно и двух строчных дисплеев до 16 символов // значение вписывается в формате S,P где S- строка 0, верхняя 1 - нижняя // Р - столбец 0-16 void CursorLCD(unsigned char stroka,unsigned char stolbec) // положение курсора 0хстрока/столбец { if (stroka == 0) stroka = 0x80 | stolbec; else stroka = 0xC0 | stolbec; SendLCDdata(stroka, 0); }
Для получения дополнительной информации используйте: MAGETEX Ukraine Телефон: +380-50-575-98-63 Факс: +380-50-575-98-63 E-mail: invent-systems@ya.ru
|
|