Подключение lcd от телефона Motorola C350

07/09/2009 - 15:55 Павел Бобков
   Это был мой первый мобильник. Как и все последующие он достался мне от сестры, которая регулярно их меняла и меняет. Помню особые надежды я возлагал на ее Nokia 7610, но за день до покупки нового телефона, она уронила его в туалет. Девайс испустил дух, не приходя в себя. Разбор, перебор и сушка феном ничего не дали. Вот ведь облом. Ну да ладно..
   Вообщем валялась у меня эта Motorola, валялась, пока в один прекрасный день мне не захотелось подключить ее экранчик к микроконтроллеру. Сказано, сделано. Посерфил сеть, нашел распиновку разъема, datasheet на контроллер экранчика и начал шаманить.

Аппаратная часть

   Экранчик подключается к микроконтроллеру довольно просто – по SPI интерфейсу. Назначение выводов экранчика приведено на рисунке.

pinout-lcd-c350-avr
  

   Хочу вас сразу предупредить – в интернете мне попадалась неправильная распиновка. Из-за нее я убил кучу времени на оживление экранчика. Разобраться с подключением мне помогла схема на телефон С250.
  
   Выводы 1, 2 подключаются к выводам апаратного SPI интерфейса микроконтроллера AVR – MOSI, SCK соответственно. Выводы 3, 4, 5 – к любым другим.
  Напряжение питания контроллера экранчика 2,7 - 3,3 вольта. Чтобы не заморачиваться, я подрубил экранчик к STK500 и через AVR Studio программно задал напряжение питания платы. (Если кто не знает, делается это так – на вкладке HW Settings в разделе Voltages с помощью ползунка устанавливаем VTarget на 3 вольта и нажимаем кнопку Write). Можно собрать простую схему согласования уровней на резисторах.
   Для подсветки 3,3 вольта мало. Поэтому пришлось собрать простенький удвоитель напряжения на конденсаторах и диодах. Если будете повторять – используйте диоды Шоттки, на них маленькое падение напряжения -  порядка 0,3 В. Не знаю, есть ли там встроенный ограничительный резистор, я на всякий случай его поставил. В программе микроконтроллера нужно будет постоянно дергать ножкой к которой подключен удвоитель и ,конечно, лучше по таймеру, а не как у меня.

схема подключения lcd от с350 к микроконтроллеру avr

Программная часть

   После включения питания на вывод Reset нужно подать сигнал сброса (логический 0)  в течении 10 мкс. Он запускает процесс внутренней инициализации контроллера экрана. Все его установки приводятся в начальное состояние.
   Затем нужно программно задать параметры настройки контроллера экрана. Их довольно много и если что-то выставить неправильно, отображаться ничего не будет. В datasheet на контроллер дисплея был кусок программы инициализации -  я его оттуда передрал.
   Дисплей может работать в двух цветовых режимах – 8 бит и 16 бит. Второй режим получается за счет уменьшения разрешения экрана, если я правильно понял. В описании на контроллер экрана задано разрешение 104 на 80 пикселей, реально у этого экранчика оно меньше.
    Чтобы вывести попиксельно на экран изображение нужно задать начальный и конечный адрес столбца, начальный и конечный адрес страницы. Затем потоком записать данные. Контроллер дисплея, в зависимости от настроек, сам инкрементирует адреса столбца и страницы. В этом отношении от обладает довольно богатыми возможностями.
   Есть правда один нюанс. В 8-ми битном режиме нужно устанавливать таблицу перекодировки. Пока я этого не знал, попытки накатать знакогенератор проваливались с полным непониманием происходящего. В конце концов я его добил. К сожалению, под рукой был только английский шрифт.
  Кроме этого, контроллер дисплея обладает встроенными графическими функциями – рисование линии, рисование прямоугольника с заливкой, очистка заданной области, копирование заданной области. Я добавил к этому функцию вывода пикселя и рисования окружности.
   Есть еще функция скрола. С ней я не разбирался.

пример вывода изображения


Ссылки

Файлы

 

Comments   

# unkarjedy 2009-12-22 07:55
cool
# Guest 2010-01-15 00:21
Оч. интересный дисплей... на нем можно без труда сделать рисовалку всяких графиков и вывод прочей инфы в компактных устройствах.
# Guest 2010-04-18 21:09
Автору респект! Повторил, работает. Прошивал контроллер через arduino. Без удвоителя тускло, но светит.
Спасибо!
# Pashgan 2010-04-19 03:30
Да пожалуйста.. ;-)
# Guest 2010-05-15 09:06
Круто!!!Респект !!!
# Guest 2010-05-30 20:23
Подключил экранчик к arduino. А тот к роутеру asus500gp. Удвоитель собирать не пришлось - в ардуине есть 5в. Теперь экранчик показывает температуру с датчика, свободное место на диске роутера и загрузку его процессора. Буду использовать как основу для домашней автоматизации. Тут про это подробнее накидал: http://wl500g.info/showthread.php?t=20497
# Guest 2010-06-20 23:43
Обязательно соберите все ВАШИ классные учебные статьи и напишите Учебник!!! Он станет одним из лучших! Пусть Ваше Доброе Имя останется ! С Уважением к Вам! Спасибо
# Жека 2010-12-21 14:05
Спасибо за инфу!))) Буду думать!!!))))
# Viperet 2011-03-12 23:18
Подскажите, а как вы подключались к этому lcd? Контакты такие мелкие...
# Pashgan 2012-03-03 09:25
Аккуратно припаял тонкие проводки.
# Viaceskav(C) 2011-03-22 22:25
у меня валяется моторола С365...
была идея подключить жки от нее, но не нахожу даташита на этот дисплей...
а может эти жки идентичны ?
может автор подскажет, как подключить ? :-)

с уважением.
# Nomad 2011-06-22 17:17
Спасибо за очень полезную информацию! Восполняю пробелы по вашим урокам, правда в переводе кода на CVAVR, не готов я пока с него перейти) Дисплеев от телефонов поднакопилось, большое желание где нибудь их применить. С моторчика аш 2 нашел, единственно что мешает - работаю в CVAVR, как следствие пытаюсь перегнать ваш код, и впринципе ничего сложного, но застрял на выводе строки, не могу понять принцип действия + компилятор ругается на несоответствие типов. Был бы очень признателен если бы вы немного помогли разобратся с выводом строки да и символа в CVAVR.
С уважением.
# Pashgan 2012-03-03 09:37
Почитай вот здесь, может станет понятнее..chipenable.ru/index.php/programming-c/34-lcd-avr-how-connection.html
# alexander gl 2012-02-02 15:52
спасибо за даташит
# Mosst 2013-09-21 09:27
Допоолнение по подключению: вывод контроллера MISO нельзя использовать, так как он работает как вход данных SPI. Даже если установить на нем режим выхода после включения SPI, то сигнал с него все равно поступает в сдвиговый регистр и приводит к искажениям на выходе MOSI. Я на это напоролся :). Вывод "Chip Select" дисплея тоже логично подключать к выводу "Slave Select" контроллера. А вот Reset дисплея можно подключать действительно как вздумается, но лучше чтобы все выводы были на одном порту.
# 1111 2015-10-30 15:51
Преобразователь напряжения можно убрать.
Подсветка ярко светится через 12ом резистор от 3.3В.

У вас недостаточно прав для комментирования.