де-факто, как пишут в этих наших интернетах... Материалов, как прицеплять их к PIC или Atmel в интернете полно, но есть один
нюанс: обычно код инициализации LCD примерно следующий:
Code: Select all
void LCD_ini(void){
_delay_ms(15); //Ждем 15 мс
send_half_byte(0b00000011); 3h
_delay_ms(4);
send_half_byte(0b00000011); 3h
_delay_us(100);
send_half_byte(0b00000011); 3h
_delay_ms(1);
send_half_byte(0b00000010); 2h
_delay_ms(1);
send_byte(0b00101000, 0); 28h //4бит-режим и 2 линии
_delay_ms(1);
send_byte(0b00001100, 0); 0Ch //включаем изображение на дисплее, курсоры никакие не включаем
_delay_ms(1);
send_byte(0b00000110, 0); 06h //курсор невидимый и будет двигаться влево
_delay_ms(1);}
вживую, но не работает на моделях Proteus (это правда, я проверял).

Этот LCD я надумал прицепить к проекту Gigatron и решил предварительно погонять
отдельный проект с LM016L, чтобы посмотреть, как и на что влияют разные задержки.
Ну и использовал я несколько иной код инициализации LCD от автора Nibbler.
Автор подробно расписал, что к чему, и его исходник в моём архиве есть.
Этот код реально работает и в железе, и на моделях Proteus - это я тоже
проверял, поскольку вживую у меня этих индикаторов два - купил как-то
по случаю по 150 рублей - показалось недорого...
Код такой: (CMD=0) 3h,3h,3h,2h, 2Ch, 0Fh, 01h
Программа написана, что называется "в лоб", без циклов и ухищрений, поскольку
примерно так и планирую я запрограммировать Gigatron с его "хитрозадумчивой"
системой команд и при отсутствии удобного ассемблера...
Схема для тестирования очень близка к вот этой моей железке, и, в ней нет
только ввода программы через LPT. В архиве - два проекта: первый для подбора точных интервалов времени при
заданной частоте, второй - собственно схема демонстрации работы LCD.
Также в архиве программы и справочные материалы по LM016L и идентичным. Надеюсь, материал будет полезным, если у кого заглючит проект с таким LCD.
Сразу можно будет выяснить "кто виноват": модель LCD или что-то другое...