Технические характеристики LCD Nokia3310:
- Напряжение питания 2,7 – 3,3 В- Встроенный контроллер Philips PCD8544
- Интерфейс SPI
- Размер дисплея 38х35 мм
- Размер активной области 30х22 мм
- Разрешение 84х48 пикселей
- Диапазон рабочих температур –27…+70 0С
Схема подключения к микроконтроллеру
Питание схемы 3,3 В. Если понадобится подключать экран к схеме с 5 вольтовым питанием, нужно будет делать схему согласования уровней. Скорее всего, она будет выглядеть так. Сам не проверял, поправьте, если ошибаюсь.
Распиновка 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” );