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

   В интернете довольно много микроконтроллерных проектов с применением LCD от телефона Nokia3310. Причина большой популярности дисплея в его дешевизне и простоте использования. Вдохновившись удачным опытом работы с мотороловским экраном, я решил взяться за lcd от Nokia. Вот что из этого получилось.

Технические характеристики LCD Nokia3310:

-    Напряжение питания 2,7 – 3,3 В
-    Встроенный контроллер Philips PCD8544
-    Интерфейс SPI
-    Размер дисплея 38х35 мм
-    Размер активной области 30х22 мм
-    Разрешение 84х48 пикселей
-    Диапазон рабочих температур –27…+70 0С

Схема подключения к микроконтроллеру

Схема подключения lcd от Nokia3310 к микроконтроллеру
   Питание схемы 3,3 В. Если понадобится подключать экран к схеме с 5 вольтовым питанием, нужно будет делать схему согласования уровней. Скорее всего, она будет выглядеть так. Сам не проверял, поправьте, если ошибаюсь.
Схема согласования уровней lcd от nokia3310 для 5-ти вольтового питания

Распиновка LCD Nokia3310

Назначение выводов lcd от nokia3310

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

   Повозившись пару дней с этим дисплейчиком, я накатал аж целых три проекта. На этот раз не стал изобретать велосипед, а взял готовую библиотеку для микроконтроллера MSP430 и переделал ее под AVR.
    Библиотека оказалась очень тяжеловесной, и IAR не захотел ее компилировать для  ATMega8535. В программе был организован видео-буфер на 504 байта и компилятор ругался на нехватку ОЗУ. Зачем нужен видео-буфер? Дело в том, что контроллер этого дисплея позволяет записывать данные в свою память, но не позволяет их считывать. Это сильно ограничивает возможности по работе с дисплеем - нельзя, например, наложить одно изображение на другое. Один из путей решения проблемы - буфер в ОЗУ микроконтроллера, хранящий все, что в данный момент отображается на экране. Запись и считывание данных производятся сначала в буфер, и только потом весь буфер выводится на дисплей.
   Поскольку ATMega8535 пожалуй самый ходовой микроконтроллер в моих поделках, мне захотелось переделать библиотеку под него. Поэтому я удалил видео-буфер и переписал все функции, где он использовался. Добавил англо-русский шрифт, и получился отличный знакогенератор без всяких наворотов.    

Исходник библиотеки.
Тестовый проект.
Описание на контроллер дисплея.

Собственно для работы с дисплеем достаточно трех функций

void LCDInit(void)
   Конфигурирует выводы PORTB в режим выхода, настраивает модуль SPI, подает сигнал сброса контроллеру дисплея и последовательность команд для его настройки.

void LCDClear(void)
  Полностью очищает дисплей.

void LCDStr(unsigned char x, unsigned char row, unsigned char *dataPtr )
  Выводит текстовую строку на дисплей. X – знакоместо. Принимает значения от 0 до 13. Если строка не помещается на дисплее, оставшаяся часть просто не выводится. Row –  номер строки. Может принимать значения от 0 до 5. Верхняя строка считается нулевой.

Пример:
LCDStr(0, 2, “lcd Nokia3310” );

Пример вывода текста на lcd Nokia3310

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