Freewaygrp.ru

Строительный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как подключить tft дисплей к микроконтроллеру

Цветной сенсорный TFT-дисплей 320×240 / 2,8”

Воспользуйтесь цветным TFT-экраном для вывода красочного текста, информативных графиков и живых анимаций. Встроенный тачскрин превратит дисплейный модуль в настоящий пульт управления.

Подключение и настройка

Напрямую к управляющей платформе дисплей подключить не удастся:

Проблему совместимости решает плата расширения для TFT-дисплеев — это прослойка между экраном и управляющей платформой формата Arduino Mega.

Для экономии памяти микроконтроллера, храните изображение на SD-карте. Установите флешку в картридер на обратной стороне дисплея.

Аппаратное оборудование настроено — смело переходите к примерам работы.

Элементы платы

Экран

Дисплей модуля выполнен по технологии LCD TFT с диагональю 2,8 дюйма. Разрешение экрана составляет 320×240 точек с глубиной 65536 цветов.

Матрица экрана подключена к встроенному чипу ILI9341, который выполняет роль моста между экраном и микроконтроллером.

Систему координат дисплея удобно представить в виде сетки, каждая ячейка которой является отдельным пикселем. Местоположение пикселя задается парой координат «x» и «y».

Контактные пины

Условно дисплейный модуль состоит из трёх устройств:

Все линии питания и управления дисплейным модулем выведены на отдельную контактную колодку с 2×20 пинами.

ВыводСигналУстройствоОписание
1GNDВсеЗемля
2DB0ДисплейШина данных (16-ти битный режим)
3VCCВсеПитание
4DB1ДисплейШина данных (16-ти битный режим)
5NCНе подключён
6DB2ДисплейШина данных (16-ти битный режим)
7RSДисплейВыбор передачи: данные или команда
8DB3ДисплейШина данных (16-ти битный режим)
9WRДисплейСигнал записи. Активный низкий уровень.
10DB4ДисплейШина данных (16-ти битный режим)
11RDДисплейСигнал считывания. Активный низкий уровень.
12DB5ДисплейШина данных (16-ти битный режим)
13DB8ДисплейШина данных (8-ми или 16-ти битный режим)
14DB6ДисплейШина данных (16-ти битный режим)
15DB9ДисплейШина данных (8-ми или 16-ти битный режим)
16DB7ДисплейШина данных (16-ти битный режим)
17DB10ДисплейШина данных (8-ми или 16-ти битный режим)
18T_CLKТачпадТактирование
19DB11ДисплейШина данных (8-ми или 16-ти битный режим)
20T_CSТачпадЧипселект сенсорной панели. Активный низкий уровень.
21DB12ДисплейШина данных (8-ми или 16-ти битный режим)
22T_DINТачпадВходные данные
23DB13ДисплейШина данных (8-ми или 16-ти битный режим)
24T_BUSYТачпадСтатус
25DB14ДисплейШина данных (8-ми или 16-ти битный режим)
26T_DOUTТачпадВыходные данные
27DB15ДисплейШина данных (8-ми или 16-ти битный режим)
28T_IRQТачпадПрерывание
29CSДисплейЧипселект дисплея. Активный низкий уровень.
30SD_SOSD-картаВыходные данные
31NCНе подключён
32SD_SCKSD-картаТактирование
33RSTДисплейАппаратный сброс дисплея. Активный низкий уровень.
34SD_SISD-картаВходные данные
35NCНе подключён
36SD_NSSSD-картаЧипселект карты памяти. Активный низкий уровень.
37LEDДисплейПодсветка дисплея
38NCНе подключён
39NCНе подключён
40NCНе подключён

Регулятор напряжения

Понижающий линейный преобразователь LM1117 с выходом 3,3 вольта обеспечивает питание и подсветку дисплея. Максимальный выходной ток составляет 800 мА.

Драйвер тачскрина

За контроль сенсорной панели отвечает драйвер XPT2046.

Какие бывают дисплеи для Ардуино и как их подключить

Микроконтроллеры позволяют сделать любые системы автоматизации и мониторинга. Но для взаимодействия техники и человека нужны как устройства ввода – различные кнопки, рычаги, потенциометры, так и устройства вывода – световые индикаторы (лампочки), различные звуковые сигнализаторы (пищалки) и наконец дисплеи. В этой статье мы рассмотрим символьные дисплеи для Arduino, как их подключить и заставить работать.

Содержание статьи

Виды дисплеев

Дисплеи можно разделить на:

Сегментные (такие, как на цифровых часах);

Сегментные используются для индикации простых величин, например: температура, время, количество оборотов. Такие используются в калькуляторах и на бюджетной бытовой технике и по сей день. Информация выводится путем засвечивания определенных символов.

Они могут быть как жидкокристаллическими, так и светодиодными. Алфавитно-цифровые дисплеи можно встретить на старой бытовой технике, игрушках, промышленной технике и прочем. Их еще называют знакосинтезирующими, текстовыми, символьными. Состоят из набора крупных пикселей. Могут быть выполнены по LCD, TFT и OLED-технологии.

К графическим дисплеям можно отнести даже монитор или экран смартфона, особых пояснений я думаю не требуется. В статье речь пойдет конкретно о совместной работе знакосинтезирующих или символьных дисплеях и Ардуино.

Знакосинтезирующие дисплеи

Дисплеи этого вида могут одновременно отображать определенное количество символов, ограниченное геометрическими размерами. Маркируются они по такому образцу:

Где первые две цифры – количество символов в строке, а вторая пара – количество строк. Таким образом дисплей с названием 1602 может отображать одновременно 2 строки по 16 символов.

По типу ввода данных различают дисплеи:

С параллельным вводом данных;

С вводом данных по протоколу I2C.

Параллельный ввод данных предполагает передачу 8 или 4-битных слов по 10 или 6 выводам соответственно (рис. ниже – схема подключения для управления 4 битами). Кроме данных на дисплей подаётся питание. Учитывайте это при проектировании, в противном случае вам может не хватить пинов платы Ардуино.

Передача данных на дисплей с помощью I2С займет 4 пина вашей Arduino, 2 из которых питание, а 2 – данные. Но подробнее рассмотрим этот вопрос немного ниже.

Среди отечественных производителей можно выделить фирму МЭЛТ. Среди продукции, которой есть целый ряд различных дисплеев. Например, ниже изображен дисплей с маркировкой 20S4, по аналогии с предыдущей рассмотренной, это говорит нам о том, что он отображает 4 строки по 20 знаков.

Он построен на контроллере КБ1013ВГ6, от ОАО «АНГСТРЕМ», который аналогичен HD44780 фирмы HITACHI и KS0066 фирмы SAMSUNG. На которых построены подавляющее большинство китайских дисплеев. Кстати он, как и дисплеи на перечисленных чипах поддерживает стандартную библиотеку параллельного управления Arduino IDE, но о ней позже.

Знакосинтезирующие дисплеи бывают с подсветкой и без неё, также могут отличаться цветом изображаемых символов. Яркость подсветки и контрастность изображения обычно регулируется. Ниже приведет пример схемы из даташита, на упомянутый выше МЭЛТ.

Переменный резистор R и служит для регулировки яркости.

Подключение

Подключение будем рассматривать на дисплее типа 1602. В первую очередь обратите внимание на подписи выводов. Встречается два варианта, нумерации. На двух рисунках ниже всё нормально – от 1 до 16 вывода.

Отметим, что под VSS понимается земля. В остальном назначения выводов идентичны. Но часто можно встретить и нестандартную нумерацию:

Что вы видите? Контакты подписаны только 1, 14 и 15. Причем в неправильной последовательности. В остальном – 15 и 16 контакт всё также остались анодом и катодом подсветки, а 1 и 2 – общий контакт и плюс питания. Будьте бдительны и обращайте внимание при подключении на этот факт!

1 – (Vss) земля или «—» питания.

2 – (Vcc) «+» питания. Чаще всего это 5 вольт.

3 – регулировка контрастности символов. Осуществляется через потенциометр, установленный между «+» питания и этим контактом. Чем выше напряжение – тем меньше яркость и энергопотребление.

4 – (RS) Адресный сигнал. По наличию сигнала от ардуино на этом входе контроллер дисплея понимает, на линии данных сигнал команды (перемещение курсора, например) или кода символа для отображения.

5 – (E) разрешения доступа к данным. Когда здесь логическая «1» — дисплей выполняет команду или выводит символ.

6-14 – через эти пины обеспечивается параллельный ввод данных.

15 – (BLA) анод подсветки. Чтобы она зажглась на всю яркость – сюда подают +5В.

16 – (BLC) катод подсветки. Подключают к земле.

Один из примеров подключения к Ардуино в 4 битовом режиме мы рассмотрели выше. Теперь взгляните на схему подключения в 8 битовом режиме управления. Кстати вы могли заметить переменный резистор. Он и нужен для регулировки яркости подсветки, как было сказано ранее.

Таким образом у вас оказываются занятыми половина входов платы Arduino UNO. Конечно если вы будете использовать MEGA – это будет не столь существенной проблемой, но всё же это не рационально, особенно если вы собираетесь подключать группу датчиков и клавиш управления.

Чтобы высвободить входы используйте конвертер I2C для LCD экрана (именно так он называется, и вы сможете найти его в магазинах под таким названием).

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

Гребёнка, изображенная снизу просто припаивается к дисплею, а четыре контакта на торце платы – подключаются к пинам Arduino, также есть третья группа из двух контактов (на фото сзади) – это включение подсветки, модели поставляются с установленной перемычкой.

Схема такого модуля выглядит следующим образом:

А вот так он выглядит припаянным непосредственно к контактам дисплея. Большинство моделей продаются уже распаянными.

Однако для его использования вам нужно будет найти в сети библиотеку LiquidCrystal_I2C её нет в стандартном наборе актуального на момент написания статьи Arduino IDE.

Напомним цоколевку плат Arduino UNO, по нумерации контактов она в принципе совпадает и с Nano и некоторыми другими (для увеличения нажмите на рисунок).

Для работы по I2C нужно сформировать 2 информационных сигнала – SDA и SCL, обратите внимание в нижний правый угол рисунка. Эти выводы в ардуино совмещены с A4 и A5 аналоговыми входами.

Переназначить их вы на другие выводы не можете.

Тогда монтажная схема подключения будет иметь вид:

Согласитесь, проводов намного меньше! От ардуино к дисплею идут всего 4 провода. А сигнальных пина использовано всего два!

Но просто подключить у вас ничего не получится вы должны знать адрес устройства, для этого есть еще одна группа контактов, где адрес задаётся с помощью перемычек. Это указывается в инициализирующей команде соответствующей библиотеки, об этом далее.

Научитесь разрабатывать устройства на базе микроконтроллеров и станьте инженером умных устройств с нуля: Инженер умных устройств

Программа

Естественно нам нужен какой-то скетч, который может показывать изображение на символьном дисплее. Если вы хотите «напрямую» работать с дисплеем – придется изучить даташиты и таблицы символов на каждое конкретное изделие. Но Ардуино была создана для простого и быстрого прототипирования электронных устройств. Поэтому мы пойдем другим путём и воспользуемся благами цивилизации. Мы уже упомянули, что в стандартном наборе библиотек в Arduino IDE есть готовое решение для работы с LCD-дисплеями. Найти его можно здесь:

Кстати после нажатия строка с объявлением о подключении библиотеки появляется автоматически.

Также в Arduino IDE есть несколько примеров для работы с дисплеем. Они отражают базовые операции и функции.

Рассмотрим простейший «Хэлоу ворд». Пример полностью совпадает с тем, что есть в стандартном наборе IDE, я лишь перевёл текст комментариев на русский язык. Обратите внимание – это пример работы в 4-битном режиме.

Работа с I2C практически аналогична:

Обратите внимание, что в этом примере кода первой командой указан несколько размер дисплея, количество строк и символов, но и его I2C адрес. А именно – 0x27, что соответствует отсутствующим перемычкам. Вообще это нужно для того, чтобы подключить на два сигнальных провода несколько дисплеев (8 штук).

Официальную документацию к библиотеке liquidcrystal с примерами и пояснениями вы сможете найти на официальном сайте Arduino:

Подборка видеоуроков по теме

Чтобы вам не было сложно освоить навык работы с дисплеем мы сделали подборку видеоуроков по этой теме.

Заключение

Оказывается, подружить плату Arduino и дисплей совсем не сложно. Вам доступна возможность как параллельной передачи данных, так и последовательной с помощью шины I2C, что выбрать – решать вам, как по удобству, так и по требованиям к быстродействию системы в целом. Пишите в комментариях какие вопросы нужно рассмотреть подробнее и что конкретно вы бы хотели видеть по теме микроконтроллеров!

Еще больше информации про Ардуино и особенности его использования в различных схемах смотрите в электронной книге — Ардуино для чайников. Иллюстрированное практическое руководство.

Совсем недавно вышел новый курс Максима Селиванова «Программирование дисплеев Nextion». Это «arduino» в мире дисплеев с сенсорным экраном. Но, информации по нему очень мало.

Что такое дисплеи Nextion? Если кратко, то эти дисплеи представляют собой программируемые дисплеи с тачскрином и UART для создания самых разных интерфейсов на экране. Для программирования используется очень удобная и простая среда разработки, которая позволяет создавать даже очень сложные интерфейсы для различной электроники буквально за пару вечеров! А все команды передаются через интерфейс UART на микроконтроллер или компьютер.

Здесь есть все что бы начать работать с дисплеями Nextion на новом уровне: Программирование дисплеев NEXTION

Максим Селиванов — автор видеокурсов «Программирование микроконтроллеров для начинающих», «Программирование микроконтроллеров на языке С», «Создание устройств на микроконтроллерах». Подробее о нем и его видеокурсах смотрите здесь — Обучение программированию и созданию устройств на микроконтроллерах

Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

Записывайтесь в онлайн-университет от GeekBrains:

Изучить C, механизмы отладки и программирования микроконтроллеров;

Получить опыт работы с реальными проектами, в команде и самостоятельно;

Получить удостоверение и сертификат, подтверждающие полученные знания.

Starter box для первых экспериментов в подарок!

После прохождения курса в вашем портфолио будет: метостанция с функцией часов и встроенной игрой, распределенная сеть устройств, устройства регулирования температуры (ПИД-регулятор), устройство контроля влажности воздуха, система умного полива растений, устройство контроля протечки воды.

Вы получите диплом о профессиональной переподготовке и электронный сертификат, которые можно добавить в портфолио и показать работодателю.

TFT-дисплеи Matrix Orbital с контроллерами FTDI FT81x.

Краткий обзор и сравнение с дисплеями Riverdi

В 2018 году компания Matrix Orbital начала производство цветных TFT-модулей с контроллерами FTDI серии FT812/813 под общим названием EVE2. Данное решение продиктовано ростом популярности данных контроллеров, а она, в свою очередь, обусловлена простотой работы и минимальными требованиями к управляющему микроконтроллеру (МК). Встроенная аппаратная графическая библиотека микросхем FT8xx и другие встроенные функции (работа со звуком и сенсорным экраном) позволяют быстро реализовать типовой графический интерфейс. За счет того, что вся графика обрабатывается контроллером FT8xx, базовые требования к управляющему МК минимальны. Типовой 8-разрядный МК может полноценно управлять цветным TFT-дисплеем с разрешением до 800 х 600 точек без необходимости подключать внешнее ОЗУ. Подробности о функциях этих графических контроллеров и работе с ними можно найти в наших предыдущих публикациях (http://mymcu.ru/articles.html?prod=ftdi).

Дисплеи Matrix Orbital с FT81x не являются новинкой на рынке. Первой, кто начал массовое производство таких дисплеев, была компания Riverdi. Сейчас дисплеи Riverdi с FT8xx успешно эксплуатируются в нескольких десятках проектов в России в течение последних 4 лет. Контроллер FTDI позволяет относительно просто перейти с монохромного дисплея на цветной TFT-дисплей без перехода на более мощные МК, что обеспечивает быстрый переход с монохромных дисплеев на цветные в старых проектах.

Рис.1 Блок-схема графического контроллера FT800

Учитывая популярность дисплеев Riverdi, Matrix Orbital постарались с одной стороны сохранить интерфейс, с другой — предложить свои варианты (http://mymcu.ru/support/tft-displei-matrix-orbital-na-baze-graficheskih-kontrollerov-ftdi-ft81x.html). В дисплеях Matrix Orbital используется полностью аналогичный физический интерфейс для подключения дисплеев. Это 20-контактный разъем под шлейф FFC с шагом 0.5 мм c полностью совпадающей разводкой питания и сигнальных линий.

Основным отличием дисплеев Matrix Orbital от Riverdi является тип графического контроллера. Matrix Orbital использует во всех дисплеях старшую серию FT812/813, одним из отличий которой от младшей серии FT800/801 является больший размер графической памяти (это обусловлено максимальным поддерживаемым разрешением 800 х 600 точек). Для дисплеев с размером диагонали до 4.3” и максимальным разрешением до 480 x 272 точек это дает преимущество в том, что можно единовременно загрузить в графическую память больше пользовательских элементов (шрифты, изображения, звуки). В некоторых приложениях это может снять часть нагрузки на микроконтроллер, связанной с перезагрузкой графических элементов. Напомним, что графические контроллеры FT80x и FT81x совместимы по базовому набору команд и программа для FT80x будет нормально работать с FT81x. Но есть отличия в регистрах, и их описание придется менять.

Также, Matrix Orbital предлагает дисплеи BAR-типа, которых нет в перечне продукции Riverdi. Эти варианты могут быть интересны для замены символьных и графических монохромных дисплеев и/или при наличии ограничений по размерам корпуса прибора. Единственным недостатком цветных дисплеев BAR-типа является цена, которая сейчас выше, чем на дисплеи стандартного размера.

Рис. 2 Модули EVE2 BAR-типа

Еще одним существенным отличием дисплеев Matrix Orbiatal от дисплеев Riverdi является тип контроллера емкостного сенсорного экрана. В модулях Riverdi используется контроллер FocalTech, который не требует своей инициализации при начале работы. В емкостных сенсорах модулей Matrix Orbital используется контроллер Goodix, который необходимо инициализировать перед работой. Описание процедуры инициализации приведено в документе FTDI “AN 336 FT8xx — Selecting an LCD Display”. На этот момент стоит обратить внимание при первом знакомстве с контроллерами FT8xx и модулями Matrix Orbital.

C чего начать работу с модулями EVE2 Matrix Orbital

Общее руководство по работе со всеми модулями EVE2 Matrix Orbital приводит в следующем документе “EVE2 TFT Module. Hardware Manual”. В нем приведены все параметры, необходимые для работы с этими дисплеями, включая настройки для инициализации графического контроллера FT81x для каждой модели дисплея.

Для подключения модуля к своей плате или отладочным средствам необходим плоский шлейф FFC — FFCE2008T115000-300 (расположение контактов с одной стороны шлейфа) или FFCE2008T215000-300 (расположение контактов с разных сторон шлейфа) (https://www.cvilux.com/product?id=207&level=pitch&text=0.50mm&product_id=344).

Ответный разъем для установки на своей плате можно рекомендовать CF25201D0R0-05-NH (https://www.cvilux.com/product?id=221&level=pitch&text=0.50mm&product_id=1068) с нижним расположением контактов и поворотной защелкой.

В качестве отладочных средств для оценки возможностей модулей EVE2 Matrix Orbital мы предлагаем переходные платы от Riverdi. Здесь есть два варианта на выбор — BREAK OUT BOARD 20 и HERMES BOARD, их описания можно найти здесь (http://mymcu.ru/support/tft-displei-riverdi-na-baze-graficheskih-kontrollerov-ftdi.html).

Рис.5 Платы Break Out board 20 (слева) и Hermes Board (справа)

Переходная плата BREAK OUT BOARD 20, на которой реализован переход с разъема FFC на IDC, удобна для подключения дисплеев к своим макетным платам или отладочным платам производителей микроконтроллеров. Например, так реализовано подключение дисплея к отладочной плате Microchip XMEGA-A3BU Xplained (http://mymcu.ru/support/primer-upravleniya-graficheskim-kontrollerom-ft80x-s-pomoshchyu-mk-xmega.html), а пример проекта для данного МК (AVR Studio 7.0) и дисплея Matrix Orbital EVE2-38G-BLH можно скачать по данной ссылке.

Рис.6 Результат вывода изображения на экран EVE2-38G-BLH

Плата HERMES BOARD представляет собой переходник USB-SPI и может быть использована для работы с модулями EVE2 с помощью ПК. В качестве преобразователя интерфейса используется мост FTDI FT232H, драйвер (один для всех мостов FTDI) для которого можно скачать с оф. сайта FTDI (https://www.ftdichip.com/Drivers/VCP.htm). В качестве среды разработки в данном варианте работы используется Visual Studio, а проект с примером работы с дисплеем EVE2-35G-BLM можно скачать по этой ссылке.

Рис.6 Результат вывода изображения на экран EVE2-35G-BLM

Требования к микроконтроллеру для TFT-дисплея

MicroGuy

Который имеет этот встроенный контроллер с 168 КБ выделенной оперативной памяти: http://www.buydisplay.com/download/ic/ILI9320.pdf

Без необходимости использовать дорогой Micro с выделенным чипом LTDC.

но это мой первый проект с использованием красивого дисплея (не только буквенно-цифрового), и я не совсем уверен, как выбрать для него микроконтроллер и нужен ли мне тот, который имеет LTDC. Я хочу отображать основные меню и мне не нужны причудливые анимации, но я хочу, чтобы они выглядели профессионально с минимальным мерцанием и быстро обновляющимися экранами при изменении меню. Любая идея, что требования к памяти / тактовая частота на MCU будут необходимы для проекта, как это?

Спасибо за любую помощь!

Мэтт Янг

tcrosley

Поскольку дисплей включает в себя контроллер Ilitek ILI9320, требования к интерфейсу намного ниже, так как микроконтроллеру больше не нужно напрямую взаимодействовать с TFT, а вместо этого он общается с микросхемой контроллера только через простой интерфейс: либо SPI, который использует шесть проводов: RS, CS, CLK, MOSI, MISO и RESET. Или вы можете использовать 8080-совместимый параллельный интерфейс, который использует 13 проводов: 8-битную шину данных и RS, CS, WR, RD и RESET. (Есть варианты использования больших шин данных, до 18 бит, но я не рекомендую это для младшего микроконтроллера.)

Есть два дополнительных интерфейса, в которых микроконтроллер генерирует все тактовые сигналы (VSYNC, HSYNC и DOTCLK); Вы не хотите делать это, так как для этого потребуется высококлассный контроллер.

Так что подойдет практически любой микроконтроллер, однако у вас должно быть достаточно флэш-памяти для хранения любых статических элементов, которые вы хотите отобразить; Например, если вы собираетесь отображать текст, вам нужно выделить массивы для хранения растровых изображений для любых шрифтов, которые вы будете использовать. Даже маленький шрифт может занять 60 КБ.

Одним из преимуществ этого контроллера является то, что он включает 172 800 байт оперативной памяти, что достаточно для хранения 320 * 240 * 18 бит. Однако он не имеет двойной буферизации, это означает, что при записи в ОЗУ он сразу же появится на экране, и если вы обновляете большую часть экрана, это будет заметно.

MicroGuy

Абдулла Кахраман

К. Таун Спрингер

Взаимодействие с полноцветным ЖК-дисплеем для минимальной системы поможет вам в этом разобраться. Обычные системы, работающие с разрешением 320×240 и выше, представляют собой либо серийно выпускаемые специализированные устройства, либо основанные на чипах ARM для телефонов и планшетов, работающих под управлением Android / Linux или WinCE.

Arduino, Pi и BBB имеют ужасные возможности ЖК-дисплея. Я бы проверил некоторые из систем, которые поддерживают дисплеи, такие как Mini2451 или NanoPC на ARMWorks или аналогичные — есть много источников. За стоимость Arduino и некоторых щитов вы получаете серьезную машину. Почти все модули на базе Samsung ARM 7/9 / A8 / A15 (S3C2451, 6410, S5PV210, 4412 Exynos Quad) и др. Будут иметь прямое ЖК-подключение. Осторожно — Linux 🙂 В противном случае настройка буфера кадров и правильная отправка данных на дисплей могут съесть все ваше время разработки. Это минимум 400 МГц и 128 МБ ОЗУ. Вы не должны иметь такую ​​скорость. MacSE был 32/16 бит на 8 МГц и немного оперативной памяти.

ПОДКЛЮЧЕНИЕ ДИСПЛЕЯ К МИКРОКОНТРОЛЛЕРУ

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


Нарисовал схему подключения. Для питания дисплея нужно напряжение 3,3V. Если запитывать микроконтроллер от 5V, то ставим резисторные делители и микросхему 78L33. В случае питания всей схемы от 3,3V резисторные делители не нужны. Вроде Atmega8A может работать от 3,3V при условие, что частота не выше 8 МГц. Лично я не пробовал. У меня все собрано на отладочной плате с питанием от 5V. Перед самим дисплеем ставить по питанию электролит большой емкости ни в коем случае не надо. В самом начале работы контроллер подает на дисплей команды инициализации. Для заряда конденсатора нужно время. Пока он зарядится и дисплей начнет работать пройдет некоторое время, и команды инициализации он не получит. Конечно это миллисекунды, но в даном случае эффект ощутим.


Схема распиновки дисплея

У дисплея Nokia 1202 9-ти битный SPI интерфейс. У выбранного нами микроконтроллера такой роскоши нет. По этому для связи с дисплеем мы используем не аппаратный, а программный SPI, так сказать «ногодрыг”. Как создавать новые проекты в CodeVision рассказывать не буду — думайте сами. Скажу только, что все выводы PORTB надо настроить на выход. В настройках проекта нужно поставить галочку на «Store Global Constants in FLASH Memory”. Данное действие нужно для того, чтоб массивы шрифтов и наших картинок хранились во флеше.

Итак, проект мы создали. Выбрали микроконтроллер, задали тактовую частоту, настроили проект. Что дальше? А дальше нужно добавить библиотеки для работы с дисплеем и библиотеки задержек. Распаковываем архив. Там есть два файла. Их нужно скопировать в определенные папки. Надеюсь CodeVision вы установили прямо на диск C:. Если да, то файлы копируем по соответствующим путям:

C:cvavrevalinc для файла 1100.inc, и
C:cvavrevallib для файла 1100.h .

Еще хочу сказать, что назначение пинов микроконтроллера можно изменять в файле 1100.h. Тогда и схема подключения изменится. Начинаем кодить. Просто выведем какую-то надпись на дисплей основным шрифтом 5*8. В самом начале добавим библиотеки.

#include // библиотека дисплея
#include // библиотека задержек

В самом низу до основного цикла while(1)<> делаем инициализацию дисплея и его очистку.

lcd_init(); // инициализация дисплея
lcd_clear(); // очистка дисплея

Нашу надпись поставим так же до основного цикла. Пусть сперва контролер выведет послание на дисплей, а после крутится в основном цикле. Пишем вот это:

print_string(«Выводим надпись»,5,0);
print_string(«Какую сами хотим»,0,1);
print_string(«БУХАРЬ»,10,2);

Думаю здесь все понятно. Первая цифра – координата по оси x на дисплее. Она может принимать значение от 0 до 96. Вторая – строка. Она от 0 до 7. В принципе там помещается 8 с половиной строк, но на пол строки мы читать не будем. Компилируем и прошиваем. Смотрим результат. Можно так же установить Proteus, и протестировать в нем. Контроллер можно настроить для работы от внутреннего генератора на частоту заданную в проекте с задержкой при старте 64 мсек. Добавляю архив с скомпилированным проектом. Частота 8 Мгц.

Но как уже писал в начале, в библиотеке есть еще и другие символы. Правда там нет букв, а только цифры. Теперь немного усложним задачу. Пусть надпись не будет инертной, а изменяется. Допустим считает от 0 до 9 с интервалом в 1 секунду. Когда дойдет до 9, после обнулится и снова наново. Возьмем цифры большие размером 24*32. Ну чтож приступим. Можно взять предыдущий проект и удалить три строки «print_string”. Сразу после добавления библиотек объявим некую глобальную переменную m.

Можно и просто написать:

В даном случае ей автоматически присвоится значение 0. В основном цикле пишем вот это:

char_24_32(m,35,2); //функция вывода символа 24*32
delay_ms(1000); // ждем 1 секунду
m++; // добавляем 1 к переменной m
if(m>9)m=0; // Условие. Если переменная m больше 9, то m равняется 0.

Снял небольшое видео работы программы

В следующей статье попробую рассказать как рисовать картинки и выводить их на экран дисплея. Как создавать массивы и функции к их выводу и как инвертировать изображение. Библиотеки позаимствовал с сайта cxem.net. Материал подготовил Бухарь.

Форум по обсуждению материала ПОДКЛЮЧЕНИЕ ДИСПЛЕЯ К МИКРОКОНТРОЛЛЕРУ

Пассивное охлаждение в радиоэлектронике — устройство и принцип работы тепловой трубки.

Самодельный аккумулятор на 9 В, литий-полимерный, собранный под стандартный корпус типа Крона.

Варианты выполнения гальванической развязки USB порта. Современные микросхемы для емкостной, оптической и электромагнитной развязки.

голоса
Рейтинг статьи
Читать еще:  Отделка окон металлическими откосами при отделке сайдинга
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector