Подключение LСD дисплея Nokia 5110 к микроконтроллеру ATmega8.

LСD дисплей Nokia 5110.

Простота работы с этим дисплеем показала большие перспективы его использования. Подключили его к ATtyni, значит надо идти дальше. Следующая станция назначения микроконтроллер ATmega-8. Да, весь интернет завален советами как это делать. Ну и я, конечно, хочу внести свои пять копеек в эту копилку.


Начнем с того, что большая часть пособий по подключению этого дисплея к ATmega-8, использует громоздкую библиотеку, применять которую целиком, для любительских проектов, на мой взгляд, проблематично. К тому же ее концепция работы с дисплеем требует выделения более 500 байт оперативной памяти под свои нужды. Конечно для ATmega-8 это не проблема, но все же как-то не рационально. С другой стороны, в пользу такого подхода можно сказать то, что, создавая образ дисплея в памяти контроллера, появляется возможность посмотреть, что и где отображено на дисплее в данный момент. Но так как я в обозримом будущем не собираюсь заниматься графическими изысками на этом дисплее, то и обратная связь мне пока ни к чему.

Как и в прошлый раз я хочу представить минимальный набор подпрограмм, который позволит начать общаться с дисплеем подключив ее к контроллеру семейства ATmega. Даташиты на дисплей Nokia 5110 и ATmega-8 можно свободно скачать в интернете и скрупулёзно изучить за чашкой чая, посему опустим теорию и приступим сразу к делу.

Вот схема подключения дисплея к Меге.

Сразу хочу сказать о нюансах. Во-первых, я подключал дисплей к МК по упрощённой схеме. Т.е. без возможности подключения еще каких-либо устройств, общающихся по SPI. Только дисплей Nokia 5110. Это дает возможность сократить количество выводов МК используемых для управления дисплеем, а также слегка упрощает подпрограмму пересылки данных. Во-вторых, подключал дисплей без переходников, запитав контроллер 3-мя вольтами. В-третьих, из-за того, что для подключения я использовал аппаратный SPI, юзать PORTB.4 (MISO) для управления дисплеем проблематично т.к. при включении SPI в качестве мастера этот вывод автоматически переходит в режим приема данных. Это если я правильно понял даташит. Безусловно можно подтянуть этот вывод внешним резистором к питанию и попытаться замутить на нём сброс дисплея, но это уже будет вторая часть «Марлезонского балета» и, если у меня получится я обязательно отпишусь.

Итак, немного о том для чего какие выводы у дисплея и куда мы их приткнем.
VCC – +3.3v.
GND - бщий.
CE (SCE) – Включение дисплея. Активный уровень низкий. Замыкаем его на общий.
RST (RESET) – Сброс. Можно подключить к выводу порта (В) 0, 1, 2, 6, 7. У меня (2).
DC (D/C) – Флаг данные/команда. Можно подключить к выводу порта (В) 0, 1, 2, 6, 7. У меня (1).
DIN (SDIN) – Вход данных. Линия приема данных. Подключаем только к PORTB.3 (MOSI).
CLC (SCLC) – Тактовый сигнал. Подключаем только к PORTB.5 (SCK).
BL (LED) – подсветка. Линия включения подсветки дисплея. Ее можно подключить к любому рабочему выводу МК. У меня (PORTB.0). Подсветка настраивается отдельно. И ее, на всякий случай, лучше подключать через транзистор, а максимальную интенсивность свечения установить подбором резистора, находящегося непосредственно на плате дисплея.

Теперь немного о предлагаемых подпрограммах работы с устройством.
В прилагаемом файле на мой взгляд минимальное, но в тоже время достаточное количество подпрограмм, с помощью которых можно организовать все остальное великолепие.
1. Подпрограмма пересылки данных в дисплей. Три строчки, но без них никуда.
2. Подпрограмма установки позиции курсора. Также очень часто используемая подпрограмма.
3. Изменение режима дисплея. Написал, чтоб было, а в общем слегка изменив подпрограмму инициализации от нее можно и отказаться. На мой взгляд «белые» цифры на «черном фоне» смотрятся не очень хорошо. Но тут уж как говорится - на вкус и цвет.
4. Функция очистки экрана. Также нужна в основном только при инициализации. Ведь если информация на экране имеет свои закрепленные места и размер, то в обновлении всего экрана нет необходимости.
5. Подпрограмма инициализации дисплея. Подробней о ней я писал ранее.

Еще есть небольшая подпрограмма паузы, которая также используется при инициализации дисплея, но которую можно использовать и в других местах по необходимости.

Вот и весь минимальный набор. Соответственно до включения в работу необходимо посмотреть правильность настроек подключения дисплея.

Об организации подпрограмм для пересылки в дисплей массивов данных я также писал ранее.

Для тестирования подпрограмм работы с дисплеем я использовал написанную мной библиотеку цифр, скорректированную под новые названия подпрограмм.

Вот как это работает.


Ну, вот вроде бы и все, чем я могу сейчас поделиться.


А на сегодня всё. Удачи.

22.02.2018



Небольшая доработка библиотеки.

Доработал библиотеку подключения дисплея Nokia5110 к контроллерам семейства ATmega. Причесал немного и унифицировал названия подпрограмм с библиотекой подключения этого дисплея к контроллерам семейства ATtiny .

В прилагаемом файле новая библиотека для подключения Nokia 5110 к микроконтроллерам семейства ATmega.

А на сегодня всё. Удачи.

06.03.2018

Если вдруг найдете в статье неточности или заблуждения. Напишите мне об этом. Я подправлю.

Приложение:
Проект в CVavr, библиотека и схема подключения 22.02.18
Доработанная библиотека от 06.03.2018