Проблемы какого характера? Ставил на нокию 3310 - рисует в верхнем левом углу окно 84х48, отображает всё корректно, всё остальное заполнено "мусором".sachok писал(а):а что тут думать? 3410 отлично работает, если он оригинал, с китайским проблемы
LCD nokia 3310
Re: LCD nokia 3310
Re: LCD nokia 3310
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пФ
Нашёл внешнее отличие "китайских" диспов - у "нового поколения" слева вверху отсутствует дуга, все они при подключении к контроллеру с прошивкой под "китайский" вариант смещают изображение на 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пФ
Re: LCD nokia 3310
ELcat
Команда сдвига для китайский 3310:
LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует)
---
Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился.
Работаю с экраном через arduino, библиотека PCD8544.
Команда сдвига для китайский 3310:
LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует)
---
Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился.
Работаю с экраном через arduino, библиотека PCD8544.
R9YAG
Re: LCD nokia 3310
UH9YAA писал(а):ELcat
Команда сдвига для китайский 3310:
LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует)
---
Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился.
Работаю с экраном через arduino, библиотека PCD8544.
У меня как раз без дуги слева. Как изменить размер буфера? Речь идёт о буфере в самом экране? Какой командой(ми) это можно сделать? Нужно менять прошивку с "китайца" на "оригинал"? Заранее спасибо...
Re: LCD nokia 3310
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 ), хотя на моем дисплее она и так не работает.
Нет, в интернете полно библиотек для работы с 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
Re: LCD nokia 3310
ПОЛУЧИЛОСЬ
при инициализации засылаем команду сдвига вверх на 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();
}

при инициализации засылаем команду сдвига вверх на 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 скачиваний
Re: LCD nokia 3310
ELcat,а статья, из того что получилось,предвидится?
Re: LCD nokia 3310
otus писал(а):ELcat,а статья, из того что получилось,предвидится?
Не знаю. Делалось вообще-то не "на показ", а для дома - для семьи. Ты уже не первый, кто об этом спрашивает. Может подготовлю статейку. Если что - сообщу.
Re: LCD nokia 3310
Делаю первые шаги в освоении этого дисплея. До этого был опыт с 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 (это как раз когда все сегменты включены)?
Хватит ли этого, или нужно сначала все доп. настройки провести (смещение, температура, контрастность)?
Есть у меня один купленный, и код из статьи по 3310 с этого сайта у него работает нормально. (Странно все же, работает при #define china и 0 и 1 корректно, хотя китаец все же).
Вопрос появился: какие минимальные действия нужны, чтобы просто залить весь экран черным? Ну то есть, ничего не закрашивая, а просто выполнив команду "all display segments on" из ДШ.
Хватит ли минимальной последовательности:
Выполняем сброс, обнуляя ногу RES дисплея и возвращая ее обратно на HIGH
Конфигурируем FunctionSet: PowerDown=0, Vertical=0/1, H=0
Конфигурируем DisplayControl: D=0, E=1 (это как раз когда все сегменты включены)?
Хватит ли этого, или нужно сначала все доп. настройки провести (смещение, температура, контрастность)?
Re: LCD nokia 3310
Только что отправил, ждёмс...otus писал(а):ELcat,а статья, из того что получилось,предвидится?
Re: LCD nokia 3310
Как и обещал, вот: http://www.radiokot.ru/circuit/digital/measure/60/ 