Оглавление:

LCD COG для Arduino Nano: 3 шага
LCD COG для Arduino Nano: 3 шага

Видео: LCD COG для Arduino Nano: 3 шага

Видео: LCD COG для Arduino Nano: 3 шага
Видео: Подключение дисплея GMG12864-06D на ST7565R к Arduino 2024, Июль
Anonim
LCD COG для Arduino Nano
LCD COG для Arduino Nano

В этом руководстве описывается, как использовать ЖК-дисплей COG с Arduino Nano.

ЖК-дисплеи COG дешевы, но с ними немного сложнее взаимодействовать. (COG означает «чип на стекле».) Тот, который я использую, содержит микросхему драйвера UC1701. Для этого требуется всего 4 контакта Arduino: SPI-часы, SPI-данные, выбор микросхемы и команда / данные.

UC1701 управляется шиной SPI и работает от 3,3 В.

Здесь я расскажу, как использовать его с Arduino Nano. Он также должен работать с Arduino Mini или Uno - скоро попробую.

Это мой первый проект Arduino, и я не писал C уже несколько десятилетий, поэтому, если я делаю очевидные ошибки, пожалуйста, дайте мне знать.

Шаг 1: Сборка оборудования

Сборка оборудования
Сборка оборудования
Сборка оборудования
Сборка оборудования
Сборка оборудования
Сборка оборудования

Купите ЖК-дисплей COG, содержащий микросхему UC1701. Он должен использовать шину SPI, а не параллельный интерфейс. Он будет иметь около 14 контактов, которые будут обозначены именами, подобными перечисленным ниже. (Вам не нужен параллельный интерфейс с большим количеством контактов, обозначенных D0, D1, D2…)

Я купил: https://www.ebay.co.uk/itm/132138390168 Или вы можете поискать на eBay «12864 LCD COG».

Выберите тот, у которого довольно широкий хвостик с контактами, расположенными на расстоянии 1,27 мм - более тонкие контакты будет трудно припаять. Убедитесь, что в нем есть микросхема UC1701. Обратите внимание, как на шестой картинке на странице ebay написано «CONNECTOR: COG / UC1701».

Дисплей прозрачный, и сложно понять, какой спереди, а какой сзади. Внимательно изучите мои фотографии. Обратите внимание, где находятся контакты 1 и 14 - они отмечены на хвосте.

Гибкий хвостовик довольно легко припаять, но для этого требуется переходник, чтобы вы могли подключить его к макетной плате. Я купил: https://www.ebay.co.uk/itm/132166865767 Или вы можете поискать на eBay «Адаптер Smd SSOP28 DIP28».

Адаптер принимает 28-контактный чип SOP с одной стороны или 28-контактный чип SSOP с другой стороны. Микросхема SOP имеет расстояние между выводами 0,05 дюйма (1,27 мм), что совпадает с задней частью ЖК-дисплея.

Вам также понадобятся штыри для заголовка. Всякий раз, когда я покупаю Arduino или другой модуль, он поставляется с большим количеством выводов, чем необходимо, так что у вас, вероятно, уже есть некоторые из них. В противном случае поищите на eBay «штырьки заголовка 2,54 мм».

Припаяйте 14 контактов разъема к адаптеру. Не проталкивайте их полностью - лучше, если задняя часть адаптера будет плоской. Положите его на скамью, чтобы штифты не вошли слишком глубоко в отверстия. Убедитесь, что контакты находятся на стороне SOP платы (т.е. на большей микросхеме).

Подушечки хвоста в своего рода окошке. Оболуживайте их с обеих сторон припоем. Залуживаем колодки адаптера. Удерживая хвостовик адаптера на месте, коснитесь каждой контактной площадки паяльником (вам понадобится довольно тонкий наконечник).

Проденьте нить через отверстия в адаптере, чтобы снять напряжение. (Я использовал "трансформаторный провод").

Если вы припаяли его не так, не пытайтесь распаять хвост. Вытаскивайте штифты по одному и перемещайте их на другую сторону доски. (Да, я допустил ту же ошибку и перепаял хвост, поэтому на фото немного беспорядок.)

Шаг 2: подключение к Arduino

Подключение к Arduino
Подключение к Arduino
Подключение к Arduino
Подключение к Arduino

В этом разделе объясняется, как подключиться к Arduino Nano. Это будет очень похоже на Mini или Uno, но я еще не пробовал.

Изучите принципиальную схему.

Arduino Nano, подключенный к USB-порту, работает от 5 В. ЖК-дисплей работает от 3,3 В. Таким образом, вам нужно запитать ЖК-дисплей от контакта 3V3 Nano и снизить напряжение на каждом управляющем контакте с 5V до 3,3V.

Распиновка ЖК-дисплея:

  • 1 CS
  • 2 RST
  • 3 компакт-диска
  • 4
  • 5 CLK
  • 6 ПДД
  • 7 3V3
  • 8 0В Земля
  • 9 VB0 +
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS - это Chip-Select. Он опускается на низкий уровень для выбора (включения) микросхемы UC1701. (CS может называться CS0, En или аналогичный.)

RST - это сброс. Он опускается на низкий уровень для сброса микросхемы. (RST можно назвать сбросом.)

Компакт-диск - это команда / данные. Он сбрасывается при отправке команд микросхеме через SPI. При отправке данных высокий. (CD можно было бы назвать A0.)

CLK и SDA - это выводы шины SPI. (SDA может называться SPI-Data. CLK может быть SCL или SPI-Clock.)

VB0 + и VB0- используются внутренней накачкой заряда UC1701. Зарядный насос генерирует нечетные напряжения, необходимые для ЖК-дисплея. Подключите конденсатор 100н между VB0 + и VB0-. Документация UC1701 рекомендует 2 мкФ, но я не заметил разницы с этим конкретным ЖК-дисплеем.

Если на вашем ЖК-дисплее есть выводы VB1 + и VB1-, также подключите между ними конденсатор емкостью 100нм. (Если на вашем ЖК-дисплее есть вывод VLCD, вы можете попробовать подключить конденсатор 100н между VLCD и Gnd. Это не имело никакого значения для моего ЖК-дисплея.)

Подключите ЖК-дисплей к Nano следующим образом:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0 В = Земля

(«*» означает использование делителя потенциала для уменьшения напряжения. Если Arduino работает от 3 В 3 от независимого источника питания, резисторы вам не понадобятся.)

3,3 В выдает Nano и может обеспечить достаточный ток для ЖК-дисплея. (Дисплей потребляет около 250 мкА.)

5 В также выводится Nano и может использоваться для питания подсветки. Ограничьте ток подсветки резистором 100 Ом.

Если у вас не хватает контактов на Nano, вы можете подключить RST к 3V3 - тогда вы можете использовать D6 для чего-то другого. Сброс U1701 можно выполнить программно с помощью команды SPI. У меня никогда не было проблем с этим, но если вы используете свою собственную схему в шумной среде, может быть лучше использовать аппаратный сброс.

Шаг 3: Программное обеспечение

Программное обеспечение
Программное обеспечение

Теоретически вы можете управлять UC1701 из библиотеки U8g2 (или Ucglib или других доступных библиотек). Я несколько дней боролся, чтобы заставить его работать, и потерпел неудачу. Библиотека U8g2 - это чудовище, потому что она может управлять огромным количеством микросхем, и очень сложно следовать коду. Так что я сдался и написал свою небольшую библиотеку. В Arduino он занимает намного меньше места (около 3400 байт плюс шрифты).

Вы можете скачать мою библиотеку отсюда (кнопка «Скачать» на этой странице). Образец эскиза и руководство пользователя прилагаются. На веб-странице https://www.arduino.cc/en/Guide/Libraries описано, как импортировать библиотеку; перейдите в раздел «Импорт библиотеки.zip».

Инициализируйте ЖК-дисплей с помощью

UC1701Begin ();

UC1701Begin может принимать параметры для изменения выводов или игнорирования вывода RST. Библиотека использует только аппаратный SPI (программный SPI не предусмотрен). Дисплей можно переворачивать по осям x и y. Это полезно, если вы хотите установить ЖК-дисплей в другой ориентации.

Несколько процедур были продублированы из библиотеки U8g2:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701 Очистить дисплей

Некоторые процедуры немного отличаются:

  • void DrawChar (uint8_t c, word Font);
  • void DrawString (char * s, word Font);
  • void DrawInt (int i, слово Font);

Процедурам рисования строк передается индекс шрифта. Шрифты объявлены во флеш-памяти Arduino, поэтому они не занимают драгоценную SRAM. Предусмотрено три шрифта (маленький, средний и большой). Они связаны и занимают флэш-память только в том случае, если вы их используете (примерно от 500 до 2000 байт каждый).

"Цвет" обрабатывается иначе, чем в библиотеке U8g2. Когда ЖК-дисплей очищен, он имеет темный фон. Если MakeMark (глобальная переменная) имеет значение true, отрисовка выполняется белым цветом. Если MakeMark имеет значение false, рисование выполняется в темноте.

Некоторые процедуры уникальны для UC1701:

SetInverted рисует «черное на белом», а не «белое на черном».

void SetInverted (bool inv);

Яркость и контраст UC1701 устанавливаются:

  • void SetContrast (значение uint8_t); // предлагается 14
  • void SetResistor (значение uint8_t); // предлагается 7

Они работают вместе довольно неудовлетворительно.

SetEnabled отключает ЖК-дисплей:

void SetEnabled (bool en);

В спящем режиме дисплей потребляет 4 мкА. Также следует выключить подсветку - прогнать ее с штыря Нано. После повторного включения UC1701 будет сброшен; дисплей очищается, а контрастность и резистор будут сброшены на значения по умолчанию.

Итак, в заключение, дисплеи COG дешевы и имеют приличный размер. Их легко подключить к Arduino.

Рекомендуемые: