Напиши свой код, я гляну скажу что подправить. У меня как раз такой дисплей в проекте используется. С той инициализацией, что у меня всё работает исправно, возможно проблема с временными задержками.
_________________ Where technology meets enjoyment.
Я пишу на паскале... ну думаю тут все понятно а вот отправка на дисплей непосредственно
Код:
const CMD:boolean=0; DAT:boolean=1; procedure write(w:boolean;datt:byte); var i:byte; begin Clk:=0; // ставлю все в 0 Outd:=0; if (old=1) and (w=0) then // проверяю старое значение RS begin CS:=1; RS:=w; CS:=0; end; if (old=0) and (w=1) then // собсно тоже begin CS:=1; RS:=w; CS:=0; end; if (old=0) and (w=0) then // и тут (мол если прутся одни команды то дергаем CS) begin CS:=1; RS:=w; CS:=0; end; for i:=0 to 7 do //собсно цикл передачи данных begin Outd:=datt.B7; // ставлю в порт DAT 7бит Clk:=1; // защелкиваю в дисплей datt:=datt shl 1; // делаю смещение влево Байта Clk:=0; // готовлю к следующей защелке delay_us(40); // тяну время 40 микросекунд end; old:=w; // запоминаю значение RS end;
собсно тут тема такая что при переходе с RS=0 в RS=1 или наоборот дергается CS. при подаче только данных CS не дергаю тут я отрабатываю как по диаграмме
Последний раз редактировалось plutonium Вс окт 31, 2010 22:17:42, всего редактировалось 1 раз.
Вроде глянул на первый взгляд всё верно, но для начала попробуй изменить немного. Поправь в конце вот так вот:
Код:
write(cmd,0xba); //Voltage control Write(dat,0x2f); // Write(dat,0x03); // write(cmd,0x25); //Write contrast Write(dat,0x64); // Стоит поиграться со значением контраста, у меня в примере контраст 100, если больше то на дисплее ничего нет write(cmd,0xbe); //Power control Write(dat,0x58); // У меня пишется в этот регистр значение 0х58 write(cmd,0x3a); //interfase pixel format Write(dat,0x03); //
_delay_ms(20); Перед включением ждем 20 миллисекунд
write(cmd,0x29); //Display ON
Если так и не поможет то выложу всю инициализацию как у меня. PS: на будущее лучше такие большие исходники прикладывать к посту вложением, а не просто текстом на всю страницу
_________________ Where technology meets enjoyment.
Да на самом деле контраст играет немалую роль в этом действе. Сделал как у тебя растр белые не появился... но по команде Memory write какая то хрень на экране появляется. Буду пробовать что то вразумительное вывести на нем. Да кстати... принцип вывода на дисплей: Column adress set Page Adress set Write memory
я прав? или еще пачка подводных камней
з.ы. Сижу ковыряю, разбираюсь как вообще организована работа с ним... после ч/б LCD этот кажется таким маразмом... У тебя есть какой недь кусок кода воодще хотябы что либо выводящий Принцип бы понять
попытка применить данный код... черный не дышащий экран
k:=0; while true do //бесконечный цикл begin inc(k); // увеличим к на 1 (использую как изменение цвета) if k=256 then k:=0; write(cmd,0x2c); //запись в память for i:=0 to 83 do // координата y begin for j:=0 to 103 do write(dat,k); // координата х end; write(cmd,0x29); // тупо давим на включение экрана delay_ms(100); //зырим end;
нда... дурная голова ногам... все проблема крылась совершенно в другом... блин эти грабли Подключал дисплей к порту А контроллера ATMega16, питал мегу 3,3в. 16МГц. дисплей от 3310 работал без проблем, потому на сам порт не обращал внимания. потом всетаки решил чиркануть тест на все единицы всех портов. Измерил мультиком... порты B,C,D единица= 3,2в. а вот порт А единица=2,5в. !!! вся проблема крылась в ножках AREF, AVCC они висели в воздухе. запитал от 3,3в - единичка в порту А выросла до 3,2в. Дисплей ожил мгновенно.
neonix огромный сенкс за помощь. Вот приперли еще дисплей LPH9157-2 от Siemens C75 ME75. Красава! экранищще. да инфы нема, что за контроллер
Однозначное подтверждение: LPH8731-3C (Siemens A60,C60,M55,MC60,S55) имеет полностью совместимый контроллер EPSON S1D15G14
Вложения:
Комментарий к файлу: + S55.jpg [29.76 KiB]
Скачиваний: 15969
Последний раз редактировалось plutonium Вс окт 31, 2010 21:47:28, всего редактировалось 1 раз.
Ну и отлично , что всё заработало, на будущее советую ни при каких обстоятельствах не оставлять не подключенными питающие и земляные ноги МК, сам на такие грабли натыкался Кстати у меня есть инициализация от LPH9157-2, но только она криво снялась ибо там очень высокая частота SPI, есть небольшие догадки о используемом в нём контроллере. Возможно будет время и я изучу этот дисплей по подробней и поделюсь с общественностью
_________________ Where technology meets enjoyment.
Вот пока отложил М55 дисплей, сейчас тоже займусь LPH9157-2 догадок по контроллеру пока нет... но инет дал такую инфу по 132*176: HD66766R - по идее отпадает - он для STN дисплеев (у нас TFT) HX8303A HD66773R - используется в модификации нашумевшего дисплея от CX65 S6D0114 (S6D0110) LR38826 - Sharp контроллер, но по ходу не наш т.к. используется все в том же CX65 в LS020 короче тоже поковыряемся
такс для полноты картины, выкладываю только что наваяную распиновку этого дисплея
V_Sync я не использую (ну короче после обильного читания литературы, он используется для синхронизации встроенной в телефон Камеры, как я понял) +VBOOST - я через резистор 550ом сажаю на +12в -VBOOST - корпус.
Вложения:
Комментарий к файлу: * LPH9157-2.jpg [39.75 KiB]
Скачиваний: 17575
Последний раз редактировалось plutonium Вс окт 31, 2010 21:52:12, всего редактировалось 2 раз(а).
наверно всетаки обрадую... он запустился.... как ни смешно это звучит... НО ПО КОМАНДАМ ОН СОВМЕСТИМ с S1D15G14 Вот в него влетел код от M55 я делаю вывод что в нем контроллер не Sharp и не Hitachi либо Epson либо Samsung... ну это так... мои предположения ничем не обоснованные
Вложения:
Комментарий к файлу: + C75.jpg [31.73 KiB]
Скачиваний: 14113
Последний раз редактировалось plutonium Вс окт 31, 2010 21:54:06, всего редактировалось 1 раз.
Ну контроллер в нём кажеться Alps Solomon SSD1286 serial, ибо так его определяла прога которая читает инфу из сименсов. Я находил исходник под SSD1286, правда с паралельной шиной. Команды частично совпадали со снятыми мною. Этот контроллер или нет точно установить не удалось
updated ---------- Ух ты, здорово блин, а всегда стабильно картинка рисуеться ??? А то может и того, что есть хватит для работы с ним Кстати рано обрадовались, ведь по ходу дела он показывает в режиме 4096 цветов, это режим энергосбережения,а этот дисплей 262 тыс цветов. Всё таки приодеться разбираться с инициализацией.
_________________ Where technology meets enjoyment.
Последний раз редактировалось neonix Сб окт 30, 2010 14:13:10, всего редактировалось 1 раз.
Рисуется всегда стабильно, при условии что контроллер и дисплей только включились (подали питание) если потом контроллеру ATMega дать резет то больше не рисует
--- Рисует даже не в 4096 а в 256 цветов, (для своих поделок на М55 мне не нужно было 4096цветов)
Значит точно режим энергосбережения, попробуй убрать всю начальную инициализацию из исходника, и оставить только рисование на дисплей. Интересно что получиться в итоге.
_________________ Where technology meets enjoyment.
Вообщем, это конечно извращения, 1. Убрана инициализация, только рисование - экран чист. 2. Инициализация включена но из нее убрано Display ON, Contrast,Pixel Format - экран чист 3. Инит оставлен, вкючен Display ON, Контраста нет, Pixel Format нет- инит проходит, рисует ЧБ...явно 1 пиксель на 8 бит рисует справа налево 4. Из Инита убрано все кроме: Booster ON, Sleep OUT, Initial Escape,Refresh Set,Display On - инит проходит, ЧБ экран, рисует слева направо 5. В конце концов в инициализации 2 команды: Sleep Out, Display ON - все также как по пункту 4 убрать какую либо команду из ини что в 5 пунке - дисплей чист не инициализируется...
о как
Собсно вот вывод на дисплей, все бы хорошо и по идее уже с ним можно работать попиксельно (в инициализацию добавлен Pixel Format). Но вопервых контрастность минимальная - он тусклый... ну и конечно не все его возможности известны... я ухожу в поиск мануала по твоему предположению на контроллер... нарою чего подскажу... кстати у тебя нет случаем мануала по SSD1286?
-------P.S. Даташит по SSD1286 нашел, по командам...хм да он вообще никак не сходится с тем как я его инициализирую
Хм тогда вполне возможно что существует несколько вариантов дисплея. Значит тут другой контроллер, надо искать по даташитам на Epson'вские контроллеры. Но на ум ничего не приходит
_________________ Where technology meets enjoyment.
Итак... походу Контроллер, что стоит в LPH9157-2 фирмы ILITEK, командами полностью совместим с контроллером ILI9163, Правда ILI9163 для экранов размером 132*162. какой именно ILI в нашем пока не нашел. Собсно я скачал мануал по ILI9163, все его команды четко отрабатывают, что написано то и делает. Кстати молодцы китайцы, Мануалы у них расписаны от и до. Да кстати.. на контроллере в LPH9157-2 нога EXTC посажена на 0. О чем это говорит? А говорит это о том что нам предоставляется урезаный набор команд, и разрешены команды от 0x00 до 0x3A и 0xDA до 0xDC - все что не входит данный диапазон не работает.
Вот тут возникает вопрос! Как регулировать яркость данного дисплея... из всего что я нашел в разрешенных командах что хоть както меняет яркость это команда 0х26 Gamma Set... да не тут то было - у этой команды всего 4 режима... из них по дефолту самый яркий (но яркость эта...мягко сказать... ничего не сказать). Есть команда Color Setting... это набор данных из 128 байт... что и как менять я ваще в полном улете Это я так понял калибровочная таблица цветов.
Вот блин, решил глянуть на свой дисплей, так он у меня другой с желтой подложкой! Это значит что я не так сильно и ошибался, по поводу контроллера в моём дисплее.
_________________ Where technology meets enjoyment.
Подключил свой дисплей, со старым кодом от S1D15G14 он никак не реагирует, переписал код для SSD1286, появился мусор на экране нарисовать ничего так и не удалось. Пока даже незнаю куда двигаться дальше. Версия что есть несколько разных контроллеров подтвердилась
_________________ Where technology meets enjoyment.
Отличный дисплей с минимум инициализации (4 команды), согласно командам основная работа попиксельная.
Вот инициализация, пожалуйте: Команда по 0, Данные по 1
Код:
procedure init_m(); var i:word; begin old:=0; RS:=0; CS:=1; RESET:=0; delay_ms(500); RESET:=1; delay_ms(500); Write(cmd,0x01); //Софт резет контроллера дисплея delay_ms(20); write(cmd,0x36);//Способ передачи внутренней памяти в дисплейную (Зеркально по Х или по Y, сканировать слева направо или наоборот write(dat,0x80); Write(cmd,0x11); //Выходим из слип режима delay_ms(20); write(cmd,0x3a); //Информация о выводе пикселя Write(dat,0x55); //Два байта на пиксель 65536 цветов delay_ms(20); write(cmd,0x29); //Включаем дисплей end;
Цвет на пиксель передается за два байта D7R D6R D5R D4R D3R D2G D1G D0G D7G D6G D5G D4B D3B D2B D1B D0B
plutonium здорово У меня такой же лежит только с паралельной шиной, надо будет попробовать запустить с этим примером инициализации. А свой с желтой подложкой я еще не победил, уж больно заумный он. Пока добился отображения но всё мерцает и очень бледное изображение. Мучаю его дальше
_________________ Where technology meets enjoyment.
нда... я почитал про этот SSD1286, он полностью 16 битный, все команды и данные посылаются двухбайтно. инициализация немаленькая. Я считаю что он для AVRки не очень подходит (я имею ввдиду самые распространенные AVR c 8-32кб), код большой. Значит для своих проектов, если искать дисплей, то LPH9157-2 с зеленым текстолитом. Если применять знакогенератор 6*8 (5*7 буквы) то на экране получается 16строк по 29 букв. Очень неплохо.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения