LCD nokia 3310

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

sachok писал(а):а что тут думать? 3410 отлично работает, если он оригинал, с китайским проблемы
Проблемы какого характера? Ставил на нокию 3310 - рисует в верхнем левом углу окно 84х48, отображает всё корректно, всё остальное заполнено "мусором".
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

UH9YAA, поделись, пожалуйста, командой сдвига по вертикали, уже всё обыскал.
Нашёл внешнее отличие "китайских" диспов - у "нового поколения" слева вверху отсутствует дуга, все они при подключении к контроллеру с прошивкой под "китайский" вариант смещают изображение на 3 пиксела вверх, оставляя 3 ряда "мусора" внизу. При этом Nokia их распознаёт без проблем и рисует всё корректно. На телефоне при проверке контрастность их немного завышена, с контроллером занижена. Выставляю контраст при инициализации:

void lcd_init (void)
{
// Pull-up on reset pin
lcd_rst_pin = 1;
delay_ms(10);
lcd_rst_pin = 0;
delay_ms(8);
lcd_rst_pin = 1;

// Disable LCD controller
lcd_ce_pin = 1;

lcd_send (0x21, lcd_cmd);
lcd_send (0xC5, lcd_cmd);
lcd_send (0x06, lcd_cmd);
lcd_send (0x13, lcd_cmd); //меняю на 0х14 для поднятия контрастности
lcd_send (0x20, lcd_cmd);
lcd_send (0x0C, lcd_cmd);

// Clear lcd
lcd_clear();
}
Также выявил 2 основные тпричины возникновения "артефактов" - трещина в стекле и неисправность внешнего конденсатора подключаемого к выводу Vout диспа. Я пользую смд керамический на 10мкФ, плата тонкая - 1мм и при приложении усилия кондёр незаметно треснул под металлизацией, с виду вроде и целый, а вот ёмкость тестером намерил аж 275пФ :)
UH9YAA
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт дек 10, 2010 18:10:56
Откуда: Барнаул

Re: LCD nokia 3310

Сообщение UH9YAA »

ELcat

Команда сдвига для китайский 3310:
LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует)
---
Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился.
Работаю с экраном через arduino, библиотека PCD8544.
R9YAG
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

UH9YAA писал(а):ELcat

Команда сдвига для китайский 3310:
LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует)
---
Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился.
Работаю с экраном через arduino, библиотека PCD8544.

У меня как раз без дуги слева. Как изменить размер буфера? Речь идёт о буфере в самом экране? Какой командой(ми) это можно сделать? Нужно менять прошивку с "китайца" на "оригинал"? Заранее спасибо...
UH9YAA
Встал на лапы
Сообщения: 124
Зарегистрирован: Пт дек 10, 2010 18:10:56
Откуда: Барнаул

Re: LCD nokia 3310

Сообщение UH9YAA »

ELcat
Нет, в интернете полно библиотек для работы с pcd8544 и в большинстве из них реализована работа с кит. дисплеем и есть возможность задать размер буфера(атмеги). Я проверял на библиотеке для arduino и под winavr из статьи http://we.easyelectronics.ru/lcd_gfx/biblioteka-dlya-raboty-s-displeem-nokia-3310.html только для последней необходимо убрать сдвиг на одну строчку по Y в n3310.c:

y = LoWaterMark / LCD_X_RES + 1; // Устанавливаем начальный адрес y+1 // + 1 убрать
LcdSend( 0x40 | y, LCD_CMD ); // относительно нижней границы LoWaterMark

Ну и там далее нужно закомментировать команду сдвига LcdSend( 0x45, LCD_CMD ), хотя на моем дисплее она и так не работает.
R9YAG
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

ПОЛУЧИЛОСЬ :music: при инициализации засылаем команду сдвига вверх на 5 точек и сдвигаем в программе вывод всех строк на 1: 0->1, 1->2, 2->3...
void lcd_init (void)
{
// Pull-up on reset pin
lcd_rst_pin = 1;
delay_ms(10);
lcd_rst_pin = 0;
delay_ms(8);
lcd_rst_pin = 1;

// Disable LCD controller
lcd_ce_pin = 1;


lcd_send (0x21, lcd_cmd);

lcd_send (0x40+5, lcd_cmd); //Только для китайских экранов без дуги слева сдвиг на 5 точек вверх

lcd_send (0xC5, lcd_cmd);
lcd_send (0x06, lcd_cmd);
lcd_send (0x14, lcd_cmd); //Vbias управляет контрастом, изначально было 0x13
lcd_send (0x20, lcd_cmd);
lcd_send (0x0C, lcd_cmd);

// Clear lcd

lcd_clear();

}
Изображение
Вложения
12345.jpg
(38.93 КБ) 6447 скачиваний
Аватара пользователя
otus
Опытный кот
Сообщения: 718
Зарегистрирован: Сб фев 20, 2010 03:11:56
Откуда: EU

Re: LCD nokia 3310

Сообщение otus »

ELcat,а статья, из того что получилось,предвидится?
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

otus писал(а):ELcat,а статья, из того что получилось,предвидится?

Не знаю. Делалось вообще-то не "на показ", а для дома - для семьи. Ты уже не первый, кто об этом спрашивает. Может подготовлю статейку. Если что - сообщу.
Falc-0n
Родился
Сообщения: 1
Зарегистрирован: Сб ноя 05, 2011 23:01:56

Re: LCD nokia 3310

Сообщение Falc-0n »

Делаю первые шаги в освоении этого дисплея. До этого был опыт с MT10T7 - десятиразрядный семисегментник.
Есть у меня один купленный, и код из статьи по 3310 с этого сайта у него работает нормально. (Странно все же, работает при #define china и 0 и 1 корректно, хотя китаец все же).
Вопрос появился: какие минимальные действия нужны, чтобы просто залить весь экран черным? Ну то есть, ничего не закрашивая, а просто выполнив команду "all display segments on" из ДШ.
Хватит ли минимальной последовательности:

Выполняем сброс, обнуляя ногу RES дисплея и возвращая ее обратно на HIGH
Конфигурируем FunctionSet: PowerDown=0, Vertical=0/1, H=0
Конфигурируем DisplayControl: D=0, E=1 (это как раз когда все сегменты включены)?

Хватит ли этого, или нужно сначала все доп. настройки провести (смещение, температура, контрастность)?
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

otus писал(а):ELcat,а статья, из того что получилось,предвидится?
Только что отправил, ждёмс...
Аватара пользователя
ELcat
Друг Кота
Сообщения: 3258
Зарегистрирован: Вт май 19, 2009 09:27:30
Откуда: Украина

Re: LCD nokia 3310

Сообщение ELcat »

Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»