Простота работы с этим дисплеем показала большие перспективы его использования. Подключили его к 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