Дисплеи от мобильных телефонов- осцилограммы работы

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение neonix »

Дисп сложный не спорю, но зачастую и такой весьма сложно найти. Грех не пользоваться тем, что есть :) я кстати свой дисп запустил, целый день правда убил на него. Уж больно умудренная инициализация и передача картинки.
Вот результат ;)
Изображение
Вложения
DSC00115.jpg
(51.72 КБ) 11498 скачиваний
Where technology meets enjoyment.
Dalt
Родился
Сообщения: 1
Зарегистрирован: Вс окт 31, 2010 20:28:39

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Dalt »

есть информация по дисплею от cx75?

Изображение
Аватара пользователя
plutonium
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Чт окт 21, 2010 21:05:35
Откуда: г.Архангельск
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение plutonium »

neonix, Молодца! не сомневался что запустишь, инициализацию не кинешь?

Dalt, инфы нет (на гранях дисплея ничего не написано?)
судя по контактам... интерфейс паралельный 8битный...
20 ног, из них 2 ноги под подсветку, 2 ноги под питание, Reset, cs еще 2 ноги 8ног данные, 1 нога Команды Данные ну т.д.
итого уже 15 ног ну и плюсом всякие там VSYNC HSYNC

Первое что сделай это узнай его распиновку, чтобы узнать - Гугль в помощь и в поиске Схема для Siemens CX75

Недолго искав:
Изображение

Посмотрев на твой рисунок, видно что счет ног идет справа налево, ну как сфотографирован ЗАД :) так и считаем
Вложения
CX75.jpg
Схема подключения
(79.83 КБ) 14460 скачиваний
Последний раз редактировалось plutonium Вс окт 31, 2010 21:13:11, всего редактировалось 1 раз.
Аватара пользователя
neonix
Электрический кот
Сообщения: 1040
Зарегистрирован: Чт фев 19, 2009 17:46:34
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение neonix »

Вот инициализация:
Запустить удалось только после орудования с логическим анализатором. В даташите нифиа нету, сам дисплей весьма сложный.


Код: Выделить всё

void LCDDEV_Reg_Set(unsigned int cmd,unsigned int data)
{

    lcd_Command(cmd);


    lcd_data16(data);
}


Код: Выделить всё


void lcd_init   (void)
{  LCD_LO(LCD_CS);
    _delay_ms(5);

    LCDDEV_Reg_Set(0x28, 0x0006);
    _delay_ms(5);
    LCDDEV_Reg_Set(0x10, 0x1F92);
    LCDDEV_Reg_Set(0x00, 0x0001);
    _delay_ms(10);
    LCDDEV_Reg_Set(0x02, 0x0380);
    //LCDDEV_Reg_Set(0x11, 0x0014);

    LCDDEV_Reg_Set(0x11, 0x0014);
    LCDDEV_Reg_Set(0x12, 0x0509);
    LCDDEV_Reg_Set(0x13, 0x2B00);

    LCDDEV_Reg_Set(0x03, 0x6830);
    LCDDEV_Reg_Set(0x07, 0x0233);
    LCDDEV_Reg_Set(0x28, 0x0006);
    LCDDEV_Reg_Set(0x01, 0x31AF);

    LCDDEV_Reg_Set(0x04, 0x0000);
    LCDDEV_Reg_Set(0x05, 0x0000);

    LCDDEV_Reg_Set(0x16, 0x8300);
    LCDDEV_Reg_Set(0x17, 0x0109);

    LCDDEV_Reg_Set(0x44, 0x8300);
    LCDDEV_Reg_Set(0x45, 0xAF00);


    LCDDEV_Reg_Set(0x30, 0x0000);
    LCDDEV_Reg_Set(0x31, 0x0000);
    LCDDEV_Reg_Set(0x32, 0x0000);
    LCDDEV_Reg_Set(0x33, 0x0000);
    LCDDEV_Reg_Set(0x34, 0x0000);
    LCDDEV_Reg_Set(0x35, 0x0000);
    LCDDEV_Reg_Set(0x36, 0x0000);
    LCDDEV_Reg_Set(0x37, 0x0000);

    LCDDEV_Reg_Set(0x3A, 0x0000);
    LCDDEV_Reg_Set(0x3B, 0x0000);
    LCDDEV_Reg_Set(0x2C, 0x3000);

    LCDDEV_Reg_Set(0x21, 0x0000);
    lcd_Command(0x22);
    for(y=0; y<132; y++){
      for(x=0; x<176; x++){
                lcd_data16(0x0000);

      }
   }
   


Dalt Дисплей на фото имеет контроллер SSD1286, и паралельную шину 8 бит.
Where technology meets enjoyment.
Аватара пользователя
Man
Встал на лапы
Сообщения: 83
Зарегистрирован: Чт ноя 13, 2008 19:22:03

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Man »

Dalt Дисплей на фото имеет контроллер SSD1286, и паралельную шину 8 бит.

А зовется он случайно не LPH8924-1 ?
Bruse
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс ноя 14, 2010 23:44:31

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bruse »

Доброго времени суток!!
Судя по форуму разобрались с дисплеем LPH8731-3C. Я мучаюсь всю неделю и ничего не получается, инит не проходит. Подскажите пожалуйста минимальный набор команд для инициализации LCD Siemens A70 (LPH8731-3C)!! Не могу понять линия RS что означает, если в мануалах написано что самый первый бит отвечает за переключение Data/Control или я все нетак понял??
Аватара пользователя
Moto_v3x
Потрогал лапой паяльник
Сообщения: 307
Зарегистрирован: Ср мар 31, 2010 11:45:58
Откуда: Славянск

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Moto_v3x »

шлейф почти как у с75(желтый)
Изображение
а внутри надпись ALPS
Изображение
Вложения
vnutri.jpg
(159.96 КБ) 10967 скачиваний
c75.jpg
фото дисплея
(154.38 КБ) 10966 скачиваний
Последний раз редактировалось Moto_v3x Чт фев 02, 2012 11:56:43, всего редактировалось 1 раз.
Аватара пользователя
plutonium
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Чт окт 21, 2010 21:05:35
Откуда: г.Архангельск
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение plutonium »

Bruse
конечно ты все не так понял. Минимальный набор команд написан на предидущей странице.
Ты мануалы от чего читаешь? разберись. Мануал от LPH8731-3C ? или всетаки мануал от самого контроллера дисплея?
итак. То что ты написал, это ты вычитал про трехпиновый режим последовательного интерфейса, где передается 9 бит и первый бит это RS. В LPH8731-3С используется 4пиновый режим, где Данные/Команда вынесен как отдельный пин.
ИТАК! если в дисплей даешь команду то пин RS переводишь в 0. если передаешь данные то в 1.
Bruse
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс ноя 14, 2010 23:44:31

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bruse »

Спасибо plutonium!
Я действительно читал мануал на контроллер. Если я правильно понял то RS необходимо изменять в то время когда CS=1, или это не кретичьно?
Если можно подскажите минимум команд, чтобы хоть чтото хаотично загорелось.
Бьюсь долго, а дисплей ни каких признаков не подал :(
m210
Прорезались зубы
Сообщения: 218
Зарегистрирован: Сб окт 02, 2010 19:06:46
Откуда: Красногорск

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение m210 »

У меня есть дисплей от Nokia 6151, реально ли его приспособить под управление через AVR? :)
Аватара пользователя
plutonium
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Чт окт 21, 2010 21:05:35
Откуда: г.Архангельск
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение plutonium »

Bruse
хм...
минимальное количество команд при котором происходит
хоть какое то реагирование, инициализация:

Код: Выделить всё

procedure init_m();
begin
RS:=0;
CS:=0;
RESET:=0;
delay_ms(500);
RESET:=1;
delay_ms(500);
write(cmd,0x03); //Booster voltage ON
delay_ms(20);
Write(cmd,0x11); //sleep out
delay_ms(20);
write(cmd,0xb6); //Display control
Write(dat,0x80); //
Write(dat,0x04); //
Write(dat,0x8a); //
write(dat,0x54); //
write(dat,0x45); //
Write(dat,0x52); //
Write(dat,0x43); //
write(cmd,0x25); //Write contrast
Write(dat,0x5d); //
write(cmd,0x29); //Display ON
end;


Эффект экран становится как бы темнее. При такой инициализации нарисовать на нем ты ничего не сможешь
единственное, ты хоть поймешь что движешься в правильном направлении

к контроллеру подключаются все ноги (CS,Reset,RS,CLK,DAT)
питание и контроллера и подсветки от 3,3в

десять раз пересмотри как посылаешь поток команд, данных на дисплей.

алгоритм такой:
при посылке Команды:
1. CS->1
2. RS->0
3. CS->0
4. CLK->0
5. цикл - на пин DAT отдаем побитно последовательно со старшего бита команду
6. после каждой отдачи бита дергаем CLK т.е. бит отдали CLK->1 CLK->0

при посылке данных
1. RS->1
2. CLK->0
3. цикл - на пин DAT отдаем побитно последовательно со старшего бита байт данных
4. после каждой отдачи бита дергаем CLK т.е. бит отдали CLK->1 CLK->0
Последний раз редактировалось plutonium Вс ноя 21, 2010 23:24:44, всего редактировалось 1 раз.
Аватара пользователя
plutonium
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Чт окт 21, 2010 21:05:35
Откуда: г.Архангельск
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение plutonium »

по 6151
дисплей в своем составе имеет 2х рядный разъем 22 пина
он паралельный 8битный. какой контроллер сейчас посказать не могу
чтобы его запустить требуется подключить 12 ножек
D0-D7
WR
D/C
CS
Reset
если нужно из дисплея читать то и RD

если у тебя не менее ATMega16 (если ATMega8 то ты почти все отдашь на дисплей) и ты безболезнено сможешь отдать 1,5 порта под дисплей, вперед и с песней
m210
Прорезались зубы
Сообщения: 218
Зарегистрирован: Сб окт 02, 2010 19:06:46
Откуда: Красногорск

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение m210 »

ну у меня 8535, почти 16я :)) Да и если что, куплю другую, не проблема
Но с чего начинать подключать дисплей не знаю, даж не знаю что для инициализации нужно...наверно с программной частью будет больше проблем :)
Аватара пользователя
plutonium
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Чт окт 21, 2010 21:05:35
Откуда: г.Архангельск
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение plutonium »

Ну во первых, скачать схему от телефона 6151, чтобы четко понять какой пин дисплея телефона за что отвечает, Далее чтобы не мучаться с распайкой такого мелкого разъема, сделать печатную платку сзади дисплея чтобы развести ножки, т.к. они мелкие и паять неудобно, можно и вообще повредить. Далее все это дело к контроллеру подключить, незабывая про питание и согласование уровней. Можно и без согласования, запитать и контроллер и дисплей от 3,3в. благо АТМеги все с которыми я работал отлично работают и от такого напряжения. Т.к. современные дисплеи оперируют с 16 битными, а то и 32битными цветами, они требуют больших времязатрат процессора, поэтому обычно АТМегу сажают на внешний максимальный кварц 16МГц, а то и более (Мега гонится прекрасно), но не забываем что Мега с дисплеем будет работать на пониженном напряжении питания, так что лучше выше 16МГц не прыгать.Ну когда все железячное готово можно на просторах инета через Гугль заняться подбором совместимого контроллера дисплея.
собственно как я раньше и говорил дисплей займет полтора порта, на один порт полностью вешаешь данные D0-D7, на второй все остатки.
Инициализация: набор предварительных команд, которые настраивают дисплей перед работой, обычно:
Настройка напряжения для запала пикселя, направление сканирования памяти дисплея, возможно контраст, вывод из спящего режима, включение дисплея, настройка пикселя, сколько цветов будет отображать дисплей, температурная погрешность, Цветовая гамма и т.д. все зависит от контроллера дисплея. Есть дисплеи где для инициализации нужно всего 4 команды, есть где и все 50, а то и больше.
Thauris
Родился
Сообщения: 13
Зарегистрирован: Пн ноя 22, 2010 20:46:16

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Thauris »

есть дисплей от Siemens ST55/60, подскажите, каким образом я могу его подключить и инициализировать
опыт работы у меня лишь с символьными дисплеями
Изображение
Изображение
Аватара пользователя
plutonium
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Чт окт 21, 2010 21:05:35
Откуда: г.Архангельск
Контактная информация:

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение plutonium »

Thauris судя по тому что я увидел.... забудь это неблагодарное занятие :)
m210
Прорезались зубы
Сообщения: 218
Зарегистрирован: Сб окт 02, 2010 19:06:46
Откуда: Красногорск

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение m210 »

Изображение
Вот отрывок схемы от 6151 :))
Значит подключу я PA0 - D0 ... PA7 - D7, т.е. по порядку, а остальные дорожки подключать тоже последовательно по порядку?

И на счет изготовления платы - видел что делают такие платы для дисплеев, но не очень понял как эту плату соединяют со шлейфом дисплея, как? :)) Также как припаивают BGA-процессоры? :))
Bruse
Первый раз сказал Мяу!
Сообщения: 33
Зарегистрирован: Вс ноя 14, 2010 23:44:31

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Bruse »

Спасибо plutonium!
Разобрался с порядком записи команд/данных в дисплей выполнил инициализацию как Вы рекомендовали, дисплей становится белым проморгнув разноцветными пикселями в хаотичном состоянии. Пытаюсь инициализировать полноценно - невыходит. Перепробовал все выложенные инициализации в этой теме - невыводит ни одного пикселя.

У меня вопрос: После посылки команды поднимаю линию CS, перед посылкой данных (1 байт) CS=0 - по окончанию CS=1. Как посылается блок данных? Нужно ли дергать CS=1 CS=0 перед посылкой очередного байта данных следующих за командой?

:) :(
Thauris
Родился
Сообщения: 13
Зарегистрирован: Пн ноя 22, 2010 20:46:16

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение Thauris »

а по поводу этого http://read.pudn.com/downloads136/sourcecode/asm/582068/TXDT200A-2_54126/TXDT200A-2.pdf, можете что-то посоветовать?
renitch
Родился
Сообщения: 5
Зарегистрирован: Чт дек 02, 2010 19:13:08

Re: Дисплеи от мобильных телефонов- осцилограммы работы

Сообщение renitch »

Доброго времени суток всем!
Сейчас вожусь с дисплеем от сименса m55 lph8731-3C. Инициализацию делаю так, как приводил plutonium в посте от 25 октября 2010. Дисплей становится белым, реагирует на команды изменение контраста, включить/выключить все пиксели и т.п. Но нарисовать ничего на нем не могу. Подскажите, пожалуйста, в чем может быть проблема. Привожу куски кода инициализации и рисования.

Код: Выделить всё

void InitLCD()
{
   CLR_RESET;
   _delay_ms(100);
   SET_RESET;
   _delay_ms(1000);

   WriteToLCD(CMD,0x01); //reset sw
   _delay_ms(50);
   WriteToLCD(CMD,0x03); //Booster voltage ON
   _delay_ms(40);
   WriteToLCD(CMD,0x11); //sleep out
   _delay_ms(40);
   WriteToLCD(CMD,0xc6); //initial escape
   _delay_ms(40);
   WriteToLCD(CMD,0xb9); //Refresh set
   WriteToLCD(DAT,0x00);
   WriteToLCD(CMD,0xb6); //Display control
   WriteToLCD(DAT,0x80); //
   WriteToLCD(DAT,0x04); //
   WriteToLCD(DAT,0x8a); //
   WriteToLCD(DAT,0x54); //
   WriteToLCD(DAT,0x45); //
   WriteToLCD(DAT,0x52); //
   WriteToLCD(DAT,0x43); //
   WriteToLCD(CMD,0xb3); //Gray scale position set 0
   WriteToLCD(DAT,0x02); //
   WriteToLCD(DAT,0x0a); //
   WriteToLCD(DAT,0x15); //
   WriteToLCD(DAT,0x1f); //
   WriteToLCD(DAT,0x28); //
   WriteToLCD(DAT,0x30); //
   WriteToLCD(DAT,0x37); //
   WriteToLCD(DAT,0x3f); //
   WriteToLCD(DAT,0x47); //
   WriteToLCD(DAT,0x4c); //
   WriteToLCD(DAT,0x54); //
   WriteToLCD(DAT,0x65); //
   WriteToLCD(DAT,0x75); //
   WriteToLCD(DAT,0x80); //
   WriteToLCD(DAT,0x85); //
   WriteToLCD(CMD,0xb5); //Gamma curve
   WriteToLCD(DAT,0x01); //
   WriteToLCD(CMD,0xb7); //Temperature gradient
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(CMD,0xbd); //Common driver output select
   WriteToLCD(DAT,0x00); //
   WriteToLCD(CMD,0x36); //Memory access control
   WriteToLCD(DAT,0x48); //
   WriteToLCD(CMD,0x2d); //Colour set
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x03); //
   WriteToLCD(DAT,0x05); //
   WriteToLCD(DAT,0x07); //
   WriteToLCD(DAT,0x09); //
   WriteToLCD(DAT,0x0b); //
   WriteToLCD(DAT,0x0d); //
   WriteToLCD(DAT,0x0f); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x03); //
   WriteToLCD(DAT,0x05); //
   WriteToLCD(DAT,0x07); //
   WriteToLCD(DAT,0x09); //
   WriteToLCD(DAT,0x0b); //
   WriteToLCD(DAT,0x0d); //
   WriteToLCD(DAT,0x0f); //
   WriteToLCD(DAT,0x00); //
   WriteToLCD(DAT,0x05); //
   WriteToLCD(DAT,0x0b); //
   WriteToLCD(DAT,0x0f); //
   WriteToLCD(CMD,0xba); //Voltage control
   WriteToLCD(DAT,0x2f); //
   WriteToLCD(DAT,0x03); //
   WriteToLCD(CMD,0x25); //Write contrast
   WriteToLCD(DAT,0x7f); //
   WriteToLCD(CMD,0xbe); //Power control
   WriteToLCD(DAT,0x59); //
   WriteToLCD(CMD,0x3a); //interfase pixel format
   WriteToLCD(DAT,0x03); //

   WriteToLCD(CMD,0x29); //Display ON
}


void WriteToLCD(bool w, U8 datt)
{
   CLR_CLK;
   CLR_DAT;

   if(old && !w){
      SET_CS;
      if( w ){
         SET_RS;
      }else {
         CLR_RS;
      }
      CLR_CS;
   };
   if( !old && w ){
      SET_CS;
      if( w ){
         SET_RS;
      }else {
         CLR_RS;
      }
      CLR_CS;
   }
   if(!old && !w){
      SET_CS;
      if( w ){
         SET_RS;
      }else {
         CLR_RS;
      }
      CLR_CS;
   }

   for(int i=0;i < 8;i++){
      if( datt & 0x80 ){
         SET_DAT;
      }
      else {
         CLR_DAT;
      }

      SET_CLK;
      datt = datt << 1;
      CLR_CLK;
      _delay_us(TIME_TO_SLEEP_LCD);
   }

   old = w;
}

void DrawPixel(U8 XPos, U8 YPos, U16 Color)
{
   WriteToLCD( CMD, 0x2A );
   WriteToLCD( DAT, XPos );
   WriteToLCD( DAT, 100 );

   WriteToLCD( CMD, 0x2B );
   WriteToLCD( DAT, YPos+1 );
   WriteToLCD( DAT, 80 );

   WriteToLCD( CMD, 0x2C );
   WriteToLCD( DAT, (Color >> 8) & 0xFF );
   WriteToLCD( DAT, Color & 0xFF );
}

void DrawManyPixels()
{
   for(int i = 0; i < 50; i++)
   for(int j = 0; j < 50; j++)
      DrawPixel( i, j, i+j );
}
Ответить

Вернуться в «Периферия»