Съдържание:

LCD COG за Arduino Nano: 3 стъпки
LCD COG за Arduino Nano: 3 стъпки

Видео: LCD COG за Arduino Nano: 3 стъпки

Видео: LCD COG за Arduino Nano: 3 стъпки
Видео: Текстовые LCD дисплей на контроллере HD44780, Уроки Arduino 2024, Юли
Anonim
LCD COG за Arduino Nano
LCD COG за Arduino Nano

Тази инструкция описва как да използвате COG LCD с Arduino Nano.

COG LCD дисплеите са евтини, но са малко по -трудни за взаимодействие. (COG означава „Chip On Glass“.) Този, който използвам, съдържа чип драйвер UC1701. Изисква само 4 пина на Arduino: SPI-часовник, SPI-данни, избор на чип и команда/данни.

UC1701 се управлява от SPI шината и работи при 3.3V.

Тук описвам как да го използвам с Arduino Nano. Трябва да работи и с Arduino Mini или Uno - скоро ще го пробвам.

Това е първият ми проект на Arduino и не съм писал C от десетилетия, така че ако правя някакви очевидни грешки, моля, уведомете ме.

Стъпка 1: Изграждане на хардуера

Изграждане на хардуер
Изграждане на хардуер
Изграждане на хардуер
Изграждане на хардуер
Изграждане на хардуер
Изграждане на хардуер

Купете COG LCD, който съдържа чип 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 мм), което е същото като опашката на LCD.

Ще ви трябват и някои щифтове за заглавки. Всеки път, когато купувам Arduino или друг модул, той идва с повече щифтове за заглавки, отколкото са необходими, така че вероятно вече имате такива. В противен случай потърсете в eBay „2,54 мм щифтове за заглавки“.

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

Подложките на опашката са в един вид прозорец. Калайдийте двете страни с припой. Подредете подложките на адаптера. Задръжте опашката на адаптера на място, след което докоснете всяка подложка с поялника (ще ви трябва доста фин връх).

Завържете резба през отворите в адаптера, за да действа като облекчаване на напрежението. (Използвах "трансформаторен проводник").

Ако сте го запоявали по грешен начин, не се опитвайте да разпаявате опашката. Изваждайте щифтовете един по един и ги премествайте от другата страна на дъската. (Да, направих тази грешка и отново запоявах опашката, поради което на снимката е малко бъркотия.)

Стъпка 2: Свързване към Arduino

Свързване към Arduino
Свързване към Arduino
Свързване към Arduino
Свързване към Arduino

Този раздел обяснява как да се свържете с Arduino Nano. Ще бъде много подобен за Mini или Uno, но все още не съм го пробвал.

Проучете електрическата схема.

Arduino Nano, който е свързан към USB порт, работи при 5V. LCD работи при 3.3V. Така че трябва да захранвате LCD от 3V3 щифта на Nano и да намалите напрежението на всеки контролен щифт от 5V на 3.3V.

Извеждането на LCD дисплея е:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 ПДР
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS е Chip-Select. Издърпва се, за да се избере (разреши) чипа UC1701. (CS може да се нарече CS0 или En или подобен.)

RST е нулиран. Той е изтеглен ниско, за да нулира чипа. (RST може да се нарече Нулиране.)

CD е команда/данни. Той се дърпа ниско при изпращане на команди към чипа през SPI. Той е висок при изпращане на данни. (CD може да се нарича A0.)

CLK и SDA са щифтовете на шината SPI. (SDA може да се нарича SPI-данни. CLK може да бъде SCL или SPI-часовник.)

VB0+ и VB0- се използват от вътрешната зареждаща помпа на UC1701. Зареждащата помпа генерира нечетните напрежения, необходими на LCD дисплея. Свържете 100n кондензатор между VB0+ и VB0-. Документацията на UC1701 препоръчва 2uF, но не виждам разлика с този конкретен LCD.

Ако вашият LCD дисплей има VB1+ и VB1- пинове, свържете също 100n кондензатор между тях. (Ако вашият LCD дисплей има VLCD щифт, можете да опитате да свържете 100n кондензатор между VLCD и Gnd. Това няма значение за моя LCD.)

Свържете LCD към Nano, както следва:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*" означава използване на потенциален делител за намаляване на напрежението. Ако Arduino работи на 3V3 от независимо захранване, няма да имате нужда от резисторите.)

3.3V се извежда от Nano и може да осигури достатъчен ток за LCD дисплея. (Дисплеят изразходва около 250uA.)

5V също се извежда от Nano и може да се използва за захранване на подсветката. Ограничете тока до подсветката със 100ohm резистор.

Ако нямате пинове на Nano, можете да свържете RST към 3V3 - тогава можете да използвате D6 за нещо друго. U1701 може да бъде нулиран в софтуер чрез команда на SPI. Никога не съм имал проблеми с това, но ако използвате своя собствена верига в шумна среда, може да е по -добре да използвате хардуерно нулиране.

Стъпка 3: Софтуер

Софтуер
Софтуер

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

Можете да изтеглите библиотеката ми от тук (бутон Изтегляне на тази страница). Приложена е примерна скица и ръководство за потребителя. Уеб страницата https://www.arduino.cc/en/Guide/Libraries описва как да импортирате библиотека; отидете в раздела „Импортиране на.zip библиотека“.

Инициализирайте LCD дисплея с

UC1701Begin ();

UC1701Begin може да вземе параметри за промяна на щифтовете или за игнориране на RST пина. Библиотеката използва само хардуерен SPI (софтуерен SPI не е предоставен). Дисплеят може да се обърне по осите x и y. Това е полезно, ако искате да монтирате LCD дисплея в различна ориентация.

Няколко процедури са дублирани от библиотеката U8g2:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Някои процедури са малко по -различни:

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

Процедурите за рисуване на низове се предават на индекса на шрифт. Шрифтовете са декларирани във флаш паметта на Arduino, така че не заемат ценни SRAM. Предлагат се три шрифта (малък, среден и голям). Те са свързани и заемат флаш памет само ако ги използвате (приблизително 500 до 2000 байта всеки).

„Цвят“се обработва по различен начин от библиотеката U8g2. Когато LCD се изчисти, той има тъмен фон. Ако MakeMark (глобална променлива) е вярно, рисуването се извършва в бяло. Ако MakeMark е невярно, рисуването се извършва на тъмно.

Някои процедури са уникални за UC1701:

SetInverted рисува в черно-бяло, а не бяло-черно.

void SetInverted (bool inv);

Яркостта и контрастът на UC1701 се задават от:

  • void SetContrast (uint8_t стойност); // предлага се 14
  • void SetResistor (uint8_t стойност); // предлага се 7

Те работят заедно по доста незадоволителен начин.

SetEnabled изключва LCD дисплея:

void SetEnabled (bool en);

Дисплеят приема 4uA, когато спи. Трябва също да изключите подсветката - задвижвайте я от щифт на Nano. След повторно активиране, UC1701 ще бъде нулиран; дисплеят се изчиства и контрастът и резисторът ще бъдат възстановени до стойностите по подразбиране.

И така, в заключение, COG дисплеите са евтини и с приличен размер. Те са лесни за свързване с Arduino.

Препоръчано: