Зато купил вот такие забавные штучки: тык и туц
LCD nokia 3310
- Сообщения: 10
- Зарегистрирован: Ср дек 08, 2010 08:51:35
- Реклама
не ну сам дисплей 3310 хороший, есть даташит, впринципе работает нормально, я сделал подсветку как на родной 3310 и светодиоды оттуда использовал, поставил их в ряд внизу и получил ровную подсветку всего дисплея как на телефоне. Вот только остается загадкой почему CS глючит.
ИМХО проблема с CS программая. Смотрел в протеусее осциллографом, что-то не то. Сильно часто дергает ЦС, при том что сигналы на других ногах идут. Можт это так и должно быть, но врядли. Факт что с ЦС не работает. Сделаюю эксперимент с линеей ЦС, попробую сам ее рулить. Т.е. перед вызовом функций управления экраном опускать уровень, а после поднимать.
дело в том что сама библиотека pcd8544.c впринципе не грамотно написана в плане отсыла байтов, когда нужно передать несколько байт подряд вызывается функция LcdSend которая перед отправкой каждого байта дергает CS отсылает байт, поднимает CS и тут же опускает для посыла следующего байта. ИМХО гамасятина где-то тут, к сожелению я уже собрал девайс и просто посадил на землю CS от дисплея ибо у меня тока одно устройство на SPI, хлтя он работал и когда SC висел на ножке порта где находится SPI, но в процессе экспериментов выяснилось что зависон происходит именно здесь: /* Send data to display controller. */
SPDR = data;
/* Wait until Tx register empty. */
while ( (SPSR & 0x80) != 0x80 ); -тут
потому что CS скорее всего рассинхронизирован. Впринципе грамотно былоб ставить CS не перед отправкой одного байта, а перед отправкой нескольких байт. Посмотри в протеусе как будет себя вести LCD если CS пересадить на другой порт (не на котором SPI) и просто вначале дернуть, погонять много байт на дисплей, потом CS поднять, немного подождать и повторить операцию.
SPDR = data;
/* Wait until Tx register empty. */
while ( (SPSR & 0x80) != 0x80 ); -тут
потому что CS скорее всего рассинхронизирован. Впринципе грамотно былоб ставить CS не перед отправкой одного байта, а перед отправкой нескольких байт. Посмотри в протеусе как будет себя вести LCD если CS пересадить на другой порт (не на котором SPI) и просто вначале дернуть, погонять много байт на дисплей, потом CS поднять, немного подождать и повторить операцию.
Добрый вечер уважаемые КОТЫ! Вот тоже решил разобратся с экранчиком от 3310. Скачал файлы которые прикреплены к статье. http://www.radiokot.ru/articles/29/
Пробывал просимулировать в протезе, но на дисплей ничего не выводится. Писал сам прогу, пробывал подставлять уже скомпилированые hex, из статьи, но дисплей молчит. Пробывал подставлять хексы из других источников дисплей выводит данные. Но хочу чтобы заработало из данной статьи, так как здесь есть возможность подключать китайский дисплей(именно такой я купил). помогите пожалуйста
Пробывал просимулировать в протезе, но на дисплей ничего не выводится. Писал сам прогу, пробывал подставлять уже скомпилированые hex, из статьи, но дисплей молчит. Пробывал подставлять хексы из других источников дисплей выводит данные. Но хочу чтобы заработало из данной статьи, так как здесь есть возможность подключать китайский дисплей(именно такой я купил). помогите пожалуйста
- Вложения
-
- Design.rar
- проект в протеусе
- (12.81 КБ) 313 скачиваний
- Реклама
Всем привет! Вот тоже дошли руки до дисплейчика Nokia3310 "китайского" варианта. Пытаюсь прикрутить к Меге8-й, исходник под свою разводку переделывал от сюда http://radiokot.ru/articles/29/ , но так нифига и не получилось. Не мог бы кто поелиться рабочим исходничком под Мегу8?
fiksx, смотрю ты тож от туда драл? Две неудачи не мож быть совпдением, по ходу там лажа какая-то в исходниках. Я вообще-то дозиметр ваяю, всю обвязку уже запустил на готовой плате, осталось только дисп прилинковать.
CS надо вешать на землю., вместо кинроллера.
после команды LcdUpdate();
Обязательно LcdMode(2);
И не забываем с начала Проинициализировать LcdInit();
И выставить контрастность LcdContrast(0x40); // вместо 0х40 можно настроить под себя
после команды LcdUpdate();
Обязательно LcdMode(2);
И не забываем с начала Проинициализировать LcdInit();
И выставить контрастность LcdContrast(0x40); // вместо 0х40 можно настроить под себя
Самое интересное что с мегой16 в протеусе работает! Думал что глюк протеуса с м8, собрал в железе с м8, но результат 0!! И кстати попробывал залить хексы со статьи, так они в М8, почемуто недоливаются выскакивает ошибка.
Попробую! Но с М16, работал и без этих изменеий, и врежиме 2, и в режиме 3Valentin44 писал(а):CS надо вешать на землю., вместо кинроллера.
после команды LcdUpdate();
Обязательно LcdMode(2);
И не забываем с начала Проинициализировать LcdInit();
И выставить контрастность LcdContrast(0x40); // вместо 0х40 можно настроить под себя
- Сообщения: 195
- Зарегистрирован: Вт ноя 30, 2010 00:50:40
за прошивку огромное спасибо, переботал под себя ,дико доволен китайщиной) научился их легко клеить и пилить) прошивка имеет ограничения по колличеству линий шт 20-30 макс
немогу понять ток как вывести картинку , типа как её вбить в код или подогнать под карту памяти любую
немогу понять ток как вывести картинку , типа как её вбить в код или подогнать под карту памяти любую
Наиискреннейшим образом прошу прощения автора статьи http://radiokot.ru/articles/29/ Сачка за выше написанное мной. Всё работает, никакой CE никуда паять не надо, всем смотреть СВОЙ монтаж! Проблема была в контакте (я не паял дисплей). Автору СПАСИБО за статью 
- Сообщения: 195
- Зарегистрирован: Вт ноя 30, 2010 00:50:40
какая функция нужна для вывода картинки?под стандартную прошивку для китая, можно тупо глупо тело кинуть .далее я сам доработаю
Кому интересно, можно попробовать пробить по инету FD60146A - это надпись на стекле китайского дисплея N3310 (видно только под мелкоскопом), логотипчик " Rfd ", мож и даташит всплывёт.
- Сообщения: 10
- Зарегистрирован: Ср дек 08, 2010 08:51:35
Наконец-то таки и я запустил 3310 на своём арме LPC2103. Выяснил, что с выводом CS подключённому к МК дисплей не работает, а если повесить его на землю, то всё работает отлично.
Да помогут кому-нибудь выложенные мною исходники.
Пойти цветной 3510i помучать чтоли....
Кстати, очень удобная конвертилка bmp картинки в сишный код в компиляторе микроС. А также в микропаскале и микробейсике.
Да помогут кому-нибудь выложенные мною исходники.
Пойти цветной 3510i помучать чтоли....
Кстати, очень удобная конвертилка bmp картинки в сишный код в компиляторе микроС. А также в микропаскале и микробейсике.
- Вложения
-
- LCD_image.h
- (7.76 КБ) 404 скачивания
-
- LCD_fonts.h
- (6.93 КБ) 363 скачивания
-
- 1.c
- (7.36 КБ) 616 скачиваний
У меня CS висит на ноге контроллера, исходник автора статьи касательно функций управления диспом не менялся, всё отлично работает.
В добавление к символьному генератору, написал небольшую статейку и программу для подготовки на компьютере массива изображения, для последующего вывода на дисплей.
Генератор изображений

Генератор изображений
- Сообщения: 6
- Зарегистрирован: Чт фев 10, 2011 12:48:05
Всем доброго времени суток. Применяю дисплей от 3310 (оригинальный), вывод данных, управление в стандартном наборе команд осуществляются прекрасно. Но по какой-то причине не работает ни одна команда из расширенного, причем вне зависимости от того, отправляются ли команды установки Vop, BIAS и TCx или что я в них пишу, дисплей прекрасно отображает данные. Собственно это не так и плохо, но хотелось бы изменять контраст. Инициализирую так:
//настройка портов и аппаратный срос LCD
LcdDdr |= (1<<ChipEnable)|(1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res);
LcdPort |= 1<<ChipEnable;
LcdPort &= ~( (1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res) );
delay_ms(10);
//SBR(LcdPort, Res);
LcdPort |= (1<<Res);
// блок расширенных команд с текущим дисплеем по какой-то причине не работает
// имеется подозрение что контролер LCD сам определяет оптимальный режим
LCDSend( 0x21, SEND_CMD ); // LCD Extended Commands.
LCDSend( 0x80|0xFF, SEND_CMD ); // Set LCD Vop (Contrast).
LCDSend( 0x06, SEND_CMD ); // Set Temp coefficent.
LCDSend( 0x13, SEND_CMD ); // LCD bias mode 1:48.
LCDSend( 0x20, SEND_CMD ); // LCD Standard Commands, Horizontal addressing mode.
LCDSend( 0x08, SEND_CMD ); // LCD blank
//вывести картинку
LCDSend( 0x0C, SEND_CMD ); // LCD in normal mode.
Затем пишу данные.
Даташит перерыл весь, там сказано что после сброса, внутренний генератор выключен. Однако, получается что включен и настроен, а так же настроены остальные служебные регистры. Подскажите, в чем дело
//настройка портов и аппаратный срос LCD
LcdDdr |= (1<<ChipEnable)|(1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res);
LcdPort |= 1<<ChipEnable;
LcdPort &= ~( (1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res) );
delay_ms(10);
//SBR(LcdPort, Res);
LcdPort |= (1<<Res);
// блок расширенных команд с текущим дисплеем по какой-то причине не работает
// имеется подозрение что контролер LCD сам определяет оптимальный режим
LCDSend( 0x21, SEND_CMD ); // LCD Extended Commands.
LCDSend( 0x80|0xFF, SEND_CMD ); // Set LCD Vop (Contrast).
LCDSend( 0x06, SEND_CMD ); // Set Temp coefficent.
LCDSend( 0x13, SEND_CMD ); // LCD bias mode 1:48.
LCDSend( 0x20, SEND_CMD ); // LCD Standard Commands, Horizontal addressing mode.
LCDSend( 0x08, SEND_CMD ); // LCD blank
//вывести картинку
LCDSend( 0x0C, SEND_CMD ); // LCD in normal mode.
Затем пишу данные.
Даташит перерыл весь, там сказано что после сброса, внутренний генератор выключен. Однако, получается что включен и настроен, а так же настроены остальные служебные регистры. Подскажите, в чем дело
- Сообщения: 6
- Зарегистрирован: Чт фев 10, 2011 12:48:05
Всем доброго времени суток. Применяю дисплей от 3310 (оригинальный), вывод данных, управление в стандартном наборе команд осуществляются прекрасно. Но по какой-то причине не работает ни одна команда из расширенного, причем вне зависимости от того, отправляются ли команды установки Vop, BIAS и TCx или что я в них пишу, дисплей прекрасно отображает данные. Собственно это не так и плохо, но хотелось бы изменять контраст. Инициализирую так:
//настройка портов и аппаратный срос LCD
LcdDdr |= (1<<ChipEnable)|(1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res);
LcdPort |= 1<<ChipEnable;
LcdPort &= ~( (1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res) );
delay_ms(10);
//SBR(LcdPort, Res);
LcdPort |= (1<<Res);
// блок расширенных команд с текущим дисплеем по какой-то причине не работает
// имеется подозрение что контролер LCD сам определяет оптимальный режим
LCDSend( 0x21, SEND_CMD ); // LCD Extended Commands.
LCDSend( 0x80|0xFF, SEND_CMD ); // Set LCD Vop (Contrast).
LCDSend( 0x06, SEND_CMD ); // Set Temp coefficent.
LCDSend( 0x13, SEND_CMD ); // LCD bias mode 1:48.
LCDSend( 0x20, SEND_CMD ); // LCD Standard Commands, Horizontal addressing mode.
LCDSend( 0x08, SEND_CMD ); // LCD blank
//вывести картинку
LCDSend( 0x0C, SEND_CMD ); // LCD in normal mode.
Затем пишу данные.
Даташит перерыл весь, там сказано что после сброса, внутренний генератор выключен. Однако, получается что включен и настроен, а так же настроены остальные служебные регистры. Подскажите, в чем дело
//настройка портов и аппаратный срос LCD
LcdDdr |= (1<<ChipEnable)|(1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res);
LcdPort |= 1<<ChipEnable;
LcdPort &= ~( (1<<DataCmd)|(1<<Clk)|(1<<Mosi)|(1<<Res) );
delay_ms(10);
//SBR(LcdPort, Res);
LcdPort |= (1<<Res);
// блок расширенных команд с текущим дисплеем по какой-то причине не работает
// имеется подозрение что контролер LCD сам определяет оптимальный режим
LCDSend( 0x21, SEND_CMD ); // LCD Extended Commands.
LCDSend( 0x80|0xFF, SEND_CMD ); // Set LCD Vop (Contrast).
LCDSend( 0x06, SEND_CMD ); // Set Temp coefficent.
LCDSend( 0x13, SEND_CMD ); // LCD bias mode 1:48.
LCDSend( 0x20, SEND_CMD ); // LCD Standard Commands, Horizontal addressing mode.
LCDSend( 0x08, SEND_CMD ); // LCD blank
//вывести картинку
LCDSend( 0x0C, SEND_CMD ); // LCD in normal mode.
Затем пишу данные.
Даташит перерыл весь, там сказано что после сброса, внутренний генератор выключен. Однако, получается что включен и настроен, а так же настроены остальные служебные регистры. Подскажите, в чем дело


