Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
UH9YAA, поделись, пожалуйста, командой сдвига по вертикали, уже всё обыскал. Нашёл внешнее отличие "китайских" диспов - у "нового поколения" слева вверху отсутствует дуга, все они при подключении к контроллеру с прошивкой под "китайский" вариант смещают изображение на 3 пиксела вверх, оставляя 3 ряда "мусора" внизу. При этом Nokia их распознаёт без проблем и рисует всё корректно. На телефоне при проверке контрастность их немного завышена, с контроллером занижена. Выставляю контраст при инициализации:
// Clear lcd lcd_clear(); } Также выявил 2 основные тпричины возникновения "артефактов" - трещина в стекле и неисправность внешнего конденсатора подключаемого к выводу Vout диспа. Я пользую смд керамический на 10мкФ, плата тонкая - 1мм и при приложении усилия кондёр незаметно треснул под металлизацией, с виду вроде и целый, а вот ёмкость тестером намерил аж 275пФ
Команда сдвига для китайский 3310: LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует) --- Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился. Работаю с экраном через arduino, библиотека PCD8544.
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
UH9YAA писал(а):
ELcat
Команда сдвига для китайский 3310: LcdSend( 0x45, LCD_CMD ); // Сдвигаем картинку на 5 пикселей вверх (нестандартная команда китайца, оригинал её игнорирует) --- Мой вариант (без дуги слева), игнорирует эту команду. Для того, чтобы мой дисп отображал корректно без сдвига с прошивками под оригинальный дисплей, достаточно изменить размер буфера на 102х64 и все! Сдвига никакого не будет. Тоесть, видимо, китайцы улучшили работу контроллера. За контраст спасибо, попробую покрутить, пока успеха так и не добился. Работаю с экраном через arduino, библиотека PCD8544.
У меня как раз без дуги слева. Как изменить размер буфера? Речь идёт о буфере в самом экране? Какой командой(ми) это можно сделать? Нужно менять прошивку с "китайца" на "оригинал"? Заранее спасибо...
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 ), хотя на моем дисплее она и так не работает.
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
ПОЛУЧИЛОСЬ при инициализации засылаем команду сдвига вверх на 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 точек вверх
Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30 Сообщений: 3258 Откуда: Украина
Рейтинг сообщения:0
otus писал(а):
ELcat,а статья, из того что получилось,предвидится?
Не знаю. Делалось вообще-то не "на показ", а для дома - для семьи. Ты уже не первый, кто об этом спрашивает. Может подготовлю статейку. Если что - сообщу.
Делаю первые шаги в освоении этого дисплея. До этого был опыт с 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 (это как раз когда все сегменты включены)?
Хватит ли этого, или нужно сначала все доп. настройки провести (смещение, температура, контрастность)?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения