Полная версия этой страницы:
Работа с ЖКИ PG-12864.
Oleg_IT
Mar 4 2009, 18:22
До сегодняшнего дня с этим ЖКИ работал через оперативную память (МК AVR), создавал картинку в ОЗУ, рисовал в неё и выводил на экран. В текущем проекте перестало хватать памяти, переходить на большей проц не хочу. Стал работать сразу в память ЖКИ. Код использую из примера. При выводе точки сначала считывается значение байта с того места куда нужно поставить точку, затем на этот байт накладывается маска и записывается обратно в память ЖКИ. Но считывается с пустого экрана 0xFF. И после записи получается полоса. Почему может не правильно читаться данные из ЖКИ?
rezident
Mar 4 2009, 23:03
Если в части обмена с LCD вы ничего не меняли, то проверьте визуально установлены ли все блокировочные конденсаторы на печатной плате модуля? Недавно наши партнеры столкнулись с тем, что давно используемые и нами и ими модули LCD PG-12864LRS (полную маркировку сейчас не вспомню) в старых приборах стали глючить. Причем только в старых давно выпускаемых приборах. Оказалось, что китайцы сэкономили несколько центов и не установили ни одного! блокировочного конденсатора на плате LCD модуля (контроллеры на нем в виде безкорпусных м/с, распаянных на плате и залитых черным компаундом, т.н. "кляксы"). В старых приборах запись была программная побайтовая с проверкой флага готовности после каждой записи. В новых - без проверки, просто использовалась необходимая по длительности пауза между записями, на запись работал автомат вывода из блочной памяти FPGA. Все модули были из одной партии, но на старых приборах глючили (иногда выдавали артефакты изображения), на новых приборах таких проблем не было.
Oleg_IT
Mar 5 2009, 09:11
Посмотрел. Свободно только одно посадочное место под резистор, стоят два конденсатора. Ещё на плате моего ЖКИ стоит инвертор.
Поэкспериментировал с задержками, ожиданием готовности, не помогает. И похоже контроллёр вообще не отвечает, считывается то что записываю в порт (подключён или не подключён подтягивающий резистор).
Цитата(Oleg_IT @ Mar 5 2009, 13:11)

И похоже контроллёр вообще не отвечает, считывается то что записываю в порт (подключён или не подключён подтягивающий резистор).
У меня была похожая ситуация. В моем LCD стоит контроллер S1D13700. Так вот перед считыванием данных из него обязательно надо перевести линию CMD/DATA (в моем случае A0) в положение CMD.
Ниже приведен пример моей функции чтения байта из экранной памяти.
u8 LCD_READ(void) {
u8 val;
LCD_A0_cmd(); // A0 must be = 1 when read data or cursor position from display
LCD_port_data_in();
LCD_WR_set();
LCD_CS_reset();
LCD_RD_reset();
Delay_10_nops();
FIO4MASK0 = 0;
val = FIO4PIN0;
LCD_RD_set();
LCD_CS_set();
LCD_port_data_out();
return val;
}
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.