Дисплей Nokia 3410 (3310)

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Evgen88
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пн мар 09, 2009 02:14:34

Сообщение Evgen88 »

Недавно запустил дисплей 3310 - проблема таже - режет верхнюю сстроку.

Прочитав предыдущий пост и сходив по ссылке убедился что проблема не решена и там.

Путем проб выяснил:
1 контроллер поддерживает 102 колонки (экран отображает только 84 остальных не видно)
2 контроллер поддерживает более 48 строк экрана (так как кроме резаного верхнего (0-банка) еще режется и нижний (уже 6 банк))
3 контроллер имеет дополнительные инструкции (выяснилось по ссылке постом выше)
Из этих наблюдений становится ясно, что контроллер стоит не PCD8544 как считается, а какойто поновее.

Поискав контроллеры подходящие по условиям нашел следующие:
- PCF8813 - больше всего подходит
- STE2004 - шото рядом
- UC1602I - еще не пробывал

все они имеют дополнительные команды которые позволяют отображать на экране содержимое с любого места памяти, устанавливать прямую и инверсную адресацию и многое другое.

Определиться что за контроллер всетаки там стоит не получилось - почемуто дополнительные команду у меня както неадекватно работают (кроме инверсной адресации - она рботает как надо).

А так как 3310 наилучший дисплей для микроконтроллера (не вылазит размером экрана за 512 байт) давайте поднатужимся вместе и както решим эту проблему!

Остальные даташиты невлазят в форум по размеру - искать в гугле
Вложения
PCF8813.pdf
(241.29 КБ) 1076 скачиваний
Аватара пользователя
krolaka
Нашел транзистор. Понюхал.
Сообщения: 169
Зарегистрирован: Пн мар 02, 2009 12:23:37
Контактная информация:

Сообщение krolaka »

Evgen88, да польностю соглясен в контролер записывается 102 по х но отображается лиш часть у меня ето 96 пикселей у меня от 3410 :) и как выянилось там контролер точно PCF8812 или аналогичный OM6206 :) с работой дисплея уже разобрался только осталось как нить либу поправить :)
Аватара пользователя
Evgen88
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пн мар 09, 2009 02:14:34

Сообщение Evgen88 »

Помучал на досуге 3310 на предмет зарезервированных команд (зарезервированых для PCD8544)

Получился такой результат:
При Н= 0 или 1
#b 0_0_1_MX_MY_PD_V_H
добавились МХ - инверсия адресации по Х
МУ - инверсия адресации по У
остальное по даташиту

При Н=0 - ничего ни нашаманил

При Н=1
#b 0_0_0_0_1_DO_0_0
добавились DO - инверсия байта (меняется очередность записи битов в LCD (символы зеркалятся по вертикали)

и самое вкусное :)
#b 0_1_y_y_y_y_y_y
добавилось yyyyyy - смещение содержимого экрана по вертикали вверх в точках
При помощи этого смещения лечится обрезание :) верхней строки
Есть 2 варианта:
1 сдвигаем картинку на 5 пикселей вверх, при этом прячется нулевой банк а снизу появляется 6 (недостаток - придется за начало экрана принимать не нулевой адрес а адрес первого банка)
2 сдвигаем картинку вверх на максимально возможное число 63, при этом происходит цикличнй сдвиг через всю память и первая строчка (нулевой банк) оказывается в начале экрана , целая нерезанная (недостаток - по ходу оказалось что первая строчка на 1 пиксел недотягивается до своего места а значит сверху (над нулевым банком) остается полоска в 1 пиксел и соответственно внизу 6 строчка (5 банк) обрезается снизу на 1 пиксел)

Такие извращения с командами не объясняют почему новые дисплеи адекватно работают в старых телефонах. Всетаки должна быть правильная последовательность инициализации дисплея для коректной работы при любых вариантах контроллеров LCD.
Продолжаем искать!

З.Ы. Интересная возможность такого смещения - простой способ организовать плавную прокрутку, например для удобного чтения текста.

З.З.Ы. Эх! найти бы способ как ограничить координаты по Х до 84 для автоматической адресации - былобы ваще хорошо!
Аватара пользователя
Pahan
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35
Контактная информация:

Сообщение Pahan »

Лежал у меня года 2 дисплейчег от 3310 - никак лапы не доходили. Сегодня вот тоже оживил. У меня строго по даташиту, никаких отклонений. 8)
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Pahan писал(а):Лежал у меня года 2 дисплейчег от 3310 - никак лапы не доходили. Сегодня вот тоже оживил. У меня строго по даташиту, никаких отклонений. 8)


Где такую прогу достать, которая как у вас на скрине? Если есть возможность выложите сюда плиз.
Даташит - библия моя...
Изображение
Аватара пользователя
krolaka
Нашел транзистор. Понюхал.
Сообщения: 169
Зарегистрирован: Пн мар 02, 2009 12:23:37
Контактная информация:

Сообщение krolaka »

VenomXP, а чем Fast LCD не устраивает? :) я кучу фоток делал етой прогой для монохромного дисплея от нокии :) даже шрифт пытался делать но не хватило терпения :))
Вложения
FastLCD.rar
(63.23 КБ) 920 скачиваний
Аватара пользователя
Pahan
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35
Контактная информация:

Сообщение Pahan »

VenomXP писал(а):Где такую прогу достать, которая как у вас на скрине?


Нигде :))) Это я сам писал. Давно. Под дисплей от 6510, там 96x65 и протокол другой. Щас тока протокол переписал и уменьшил размер экрана. А зачем она тебе? Я ее делал тока чтоб дисплей проверить, фсеж на дельфях удобнее писать, чем на МК. А потом уж и к МК подключать. Если очень надо, могу конечно скинуть, но толку от неё не много - только если для проверки работоспособности. Т.е. это не редактор картинок (хотя в принципе можно), а прога для проверки LCD.
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Благодарю за советы, да действительно, что то я забыл про FastLCD. :))
Даташит - библия моя...
Изображение
yakuzaa
Встал на лапы
Сообщения: 88
Зарегистрирован: Чт июл 24, 2008 12:35:30
Контактная информация:

Сообщение yakuzaa »

Pahan писал(а):Лежал у меня года 2 дисплейчег от 3310 - никак лапы не доходили. Сегодня вот тоже оживил. У меня строго по даташиту, никаких отклонений. 8)


Это потому, что дисплей у тебя Original Nokia.
Возьми тот, что сейчас продается в магазинах (с двумя полукругами на металлической рамке вверху) и изображение у тебя сместится вверх :)))

А дисплейчики действительно стоящие - я по 50 рублей брал - дешего!
Аватара пользователя
Pahan
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35
Контактная информация:

Сообщение Pahan »

yakuzaa писал(а):А дисплейчики действительно стоящие - я по 50 рублей брал - дешего!


Ну NOKIA 6310 мне больше нравицо. И точек больше, и на 1 ногу меньше надо. У него data/command не через ногу идет, а 9 битом в посылке. И есть команда read-modify, можно содержимое видеопамяти прочитать назад. Т.е. как буффер видеопамяти сам дисплей может выступать.
Аватара пользователя
Evgen88
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пн мар 09, 2009 02:14:34

Сообщение Evgen88 »

Evgen88 писал(а):и самое вкусное :)
#b 0_1_y_y_y_y_y_y
добавилось yyyyyy - смещение содержимого экрана по вертикали вверх в точках
При помощи этого смещения лечится обрезание :) верхней строки
Вложения
MVI_6925.00.zip
Плавный скролинг текста
(250.04 КБ) 1018 скачиваний
IMG_6920.jpg
Как стало
(60.29 КБ) 1590 скачиваний
IMG_6918.jpg
Как было
(60.18 КБ) 1699 скачиваний
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Как добился такого, исходники в студию :))
Даташит - библия моя...
Изображение
Аватара пользователя
Evgen88
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пн мар 09, 2009 02:14:34

Сообщение Evgen88 »

VenomXP писал(а):Как добился такого, исходники в студию :))

Исходник тут нипричем.
Просто в новых дисплеях стоит новый контроллер.
У нового контроллера есть новые команды.

Добавь в свой исходник в облать инициализации дисплея (ну там де контрастность, опорное напряжение устанавливается) следующее:

#b01111111 -> SPI - будет первая строчка на пиксель ниже нужного положения

или

#b01000101 -> SPI - первая строчка пропадет, зато со второй строчки все будет отображатся как надо

Несколькими постами выше я писал какие команды получилось найти методом "Тыка"
http://radiokot.ru/forum/viewtopic.php?p=189466#189466
Найти бы какой контроллер там реально стоит - было бы проще.
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Эм... Я пишу на С, как то пока непонятно куда это именно вставлять
Вот есть такое у меня

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

void LcdInit ( void )
{
    static byte FirstInit = TRUE;
   
    //  Pull-up on reset pin.
    PORTB |= LCD_RST_PIN;

    //  Set output bits on port B.
    DDRB |= LCD_RST_PIN | LCD_DC_PIN | LCD_CE_PIN | SPI_MOSI_PIN | SPI_CLK_PIN | LCD_POWER;

   PORTB |= LCD_POWER;
   
    Delay();

    //  Toggle display reset pin.
    PORTB &= ~LCD_RST_PIN;
    Delay();
    PORTB |= LCD_RST_PIN;

    //  Enable SPI port: No interrupt, MSBit first, Master mode, CPOL->0, CPHA->0, Clk/4
    SPCR = 0x50;

    //  Disable LCD controller
    PORTB |= LCD_CE_PIN;

    LcdSend( 0x21, LCD_CMD );  // LCD Extended Commands.
    LcdSend( 0xC8, LCD_CMD );  // Set LCD Vop (Contrast).
    LcdSend( 0x06, LCD_CMD );  // Set Temp coefficent.
    LcdSend( 0x13, LCD_CMD );  // LCD bias mode 1:48.
    LcdSend( 0x20, LCD_CMD );  // LCD Standard Commands, Horizontal addressing mode.
    LcdSend( 0x0C, LCD_CMD );  // LCD in normal mode.

    if (FirstInit == TRUE)
      {
      LoWaterMark = LCD_CACHE_SIZE;
       HiWaterMark = 0x00;
      LcdClear();
      FirstInit = FALSE;
      }
   else
      {
      LoWaterMark = 0;
       HiWaterMark = LCD_CACHE_SIZE;
      }
    LcdUpdate();
}

void LcdContrast ( byte contrast )
{
    /* LCD Extended Commands. */
    LcdSend( 0x21, LCD_CMD );

    /* Set LCD contrast level. */
    LcdSend( 0x80 | contrast, LCD_CMD );

    /* LCD Standard Commands, horizontal addressing mode. */
    LcdSend( 0x20, LCD_CMD );
}

Укажите что надо куда вставить?
Даташит - библия моя...
Изображение
Аватара пользователя
Evgen88
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пн мар 09, 2009 02:14:34

Сообщение Evgen88 »

LcdSend( 0x21, LCD_CMD ); // LCD Extended Commands.
LcdSend( 0xC8, LCD_CMD ); // Set LCD Vop (Contrast).
LcdSend( 0x06, LCD_CMD ); // Set Temp coefficent.
LcdSend( 0x13, LCD_CMD ); // LCD bias mode 1:48.

LcdSend( 0x7F, LCD_CMD); // это для варианта 1

LcdSend( 0x45, LCD_CMD); // это вариант 2 (втавь шото одно)

LcdSend( 0x20, LCD_CMD ); // LCD Standard Commands, Horizontal addressing mode.
LcdSend( 0x0C, LCD_CMD ); // LCD in normal mode.
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Бесконечно благодарен. :)
Даташит - библия моя...
Изображение
Аватара пользователя
Evgen88
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Пн мар 09, 2009 02:14:34

Сообщение Evgen88 »

VenomXP писал(а):Бесконечно благодарен. :)

Ты проверил на своем LCD?
Работает?
Аватара пользователя
VenomXP
Грызет канифоль
Сообщения: 293
Зарегистрирован: Пн дек 24, 2007 07:09:09
Контактная информация:

Сообщение VenomXP »

Да, вроде что то есть, пока толком не пойму, но все четко и нигде сверху не пропадает ниче, тестить завтра дальше буду.
Даташит - библия моя...
Изображение
Аватара пользователя
Bird55
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Вт сен 02, 2008 18:17:29

Сообщение Bird55 »

Evgen88 писал(а):
и самое вкусное :)
#b 0_1_y_y_y_y_y_y
добавилось yyyyyy - смещение содержимого экрана по вертикали вверх в точках
При помощи этого смещения лечится обрезание :) верхней строки
Есть 2 варианта:
1 сдвигаем картинку на 5 пикселей вверх, при этом прячется нулевой банк а снизу появляется 6 (недостаток - придется за начало экрана принимать не нулевой адрес а адрес первого банка)
2 сдвигаем картинку вверх на максимально возможное число 63, при этом происходит цикличнй сдвиг через всю память и первая строчка (нулевой банк) оказывается в начале экрана , целая нерезанная (недостаток - по ходу оказалось что первая строчка на 1 пиксел недотягивается до своего места а значит сверху (над нулевым банком) остается полоска в 1 пиксел и соответственно внизу 6 строчка (5 банк) обрезается снизу на 1 пиксел)

Такие извращения с командами не объясняют почему новые дисплеи адекватно работают в старых телефонах. Всетаки должна быть правильная последовательность инициализации дисплея для коректной работы при любых вариантах контроллеров LCD.
Продолжаем искать!

З.Ы. Интересная возможность такого смещения - простой способ организовать плавную прокрутку, например для удобного чтения текста.

З.З.Ы. Эх! найти бы способ как ограничить координаты по Х до 84 для автоматической адресации - былобы ваще хорошо!


Evgen88, большое спасибо, за проделанную работу.
Все отлично работает, я использовал 1-й вариант.
За основу взял вот этот драйвер, исправив в нем процедуру инициализации и сброса кеша на ЖКИ.

В старых телефонах эти дисплеи работают, скорее всего, из-за того, что, во-первых, эта дополнительная строчка инициализации есть, но старыми дисплеями просто игнорируется. А во-вторых, заполнение памяти, видимо, организовано по-строчно, по 84 байта, а не передачей одного массива.
Аватара пользователя
Pahan
Мучитель микросхем
Сообщения: 487
Зарегистрирован: Чт ноя 23, 2006 22:47:35
Контактная информация:

Сообщение Pahan »

Bird55 писал(а):В старых телефонах эти дисплеи работают, скорее всего, из-за того, что, во-первых, эта дополнительная строчка инициализации есть, но старыми дисплеями просто игнорируется.

Врядли. Я пробовал эту команду на своем старом дисплее. Так вот если стоят единицы типа 0_1_1_1_y_y_y_y , то диспей отрубаецо, т.е. изображение на дисплее пропадает вообще. Правда типа этого 0_1_0_0_1_1_1_1 воздействия визуально не оказывают.
Скорее фсего данные действительно передаюцо строками и в начале каждой посылки идут команды set X и set Y.
Ответить

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