Inhaltsverzeichnis:

LCD COG für einen Arduino Nano - Gunook
LCD COG für einen Arduino Nano - Gunook

Video: LCD COG für einen Arduino Nano - Gunook

Video: LCD COG für einen Arduino Nano - Gunook
Video: Тест st7567s lcd #arduinoproject 2024, Juli
Anonim
LCD COG für einen Arduino Nano
LCD COG für einen Arduino Nano

Dieses Instructable beschreibt, wie man ein COG-LCD mit einem Arduino Nano verwendet.

COG-LCD-Displays sind billig, aber etwas schwieriger zu verbinden. (COG steht für "Chip On Glass".) Der, den ich verwende, enthält einen UC1701-Treiberchip. Es benötigt nur 4 Pins des Arduino: SPI-Clock, SPI-Data, Chip-Select und Command/Data.

Der UC1701 wird über den SPI-Bus gesteuert und läuft mit 3,3V.

Hier beschreibe ich, wie man es mit einem Arduino Nano verwendet. Es sollte auch mit einem Arduino Mini oder Uno funktionieren - werde ich demnächst ausprobieren.

Dies ist mein erstes Arduino-Projekt und ich habe seit Jahrzehnten kein C mehr geschrieben. Wenn ich also offensichtliche Fehler mache, lassen Sie es mich bitte wissen.

Schritt 1: Aufbau der Hardware

Aufbau der Hardware
Aufbau der Hardware
Aufbau der Hardware
Aufbau der Hardware
Aufbau der Hardware
Aufbau der Hardware

Kaufen Sie ein COG-LCD, das einen UC1701-Chip enthält. Es sollte eher den SPI-Bus als eine parallele Schnittstelle verwenden. Es wird ungefähr 14 Pins haben, die mit Namen wie den unten aufgeführten beschriftet sind. (Sie möchten keine parallele Schnittstelle mit viel mehr Pins mit der Bezeichnung D0, D1, D2 …)

Die, die ich gekauft habe, ist: https://www.ebay.co.uk/itm/132138390168 Oder Sie können bei eBay nach "12864 LCD COG" suchen.

Wählen Sie einen mit einem ziemlich breiten Schwanz mit Stiften im Abstand von 1,27 mm - feinere Stifte sind schwer zu löten. Stellen Sie sicher, dass es einen UC1701-Chip hat. Beachten Sie, wie im sechsten Bild auf der ebay-Seite "CONNECTOR: COG/UC1701" steht.

Das Display ist transparent und es ist schwer zu erkennen, welche Vorder- und Rückseite ist. Studieren Sie meine Bilder sorgfältig. Beachten Sie, wo Pin 1 und 14 sind - sie sind am Schwanz markiert.

Der flexible Schwanz ist recht einfach zu löten, erfordert jedoch einen Adapter, damit Sie ihn an ein Steckbrett anschließen können. Ich habe gekauft: https://www.ebay.co.uk/itm/132166865767 Oder Sie können bei eBay nach "Adapter Smd SSOP28 DIP28" suchen.

Der Adapter nimmt auf der einen Seite einen 28-Pin-SOP-Chip oder auf der anderen Seite einen 28-Pin-SSOP-Chip auf. Ein SOP-Chip hat einen Pinabstand von 0,05 (1,27 mm), der dem Ende des LCD entspricht.

Sie benötigen auch einige Header-Pins. Immer wenn ich ein Arduino oder ein anderes Modul kaufe, kommt es mit mehr Header-Pins als benötigt werden, so dass Sie wahrscheinlich bereits welche haben. Andernfalls suchen Sie bei eBay nach "2,54 mm Stiftleisten".

14 der Headerpins auf den Adapter löten. Schieben Sie sie nicht ganz durch - es ist schöner, wenn die Rückseite des Adapters flach ist. Legen Sie es flach auf Ihre Bank, damit die Stifte nicht zu weit in die Löcher geschoben werden können. Stellen Sie sicher, dass sich die Pins auf der SOP-Seite der Platine befinden (dh der größere Chip).

Die Polster des Schwanzes befinden sich in einer Art Fenster. Verzinnen Sie beide Seiten mit Lötzinn. Verzinnen Sie die Pads des Adapters. Halten Sie den Schwanz des Adapters fest und berühren Sie dann jedes Pad mit dem Lötkolben (Sie benötigen eine ziemlich feine Spitze).

Binden Sie etwas Faden durch die Löcher im Adapter, um als Zugentlastung zu dienen. (Ich habe "Transformatordraht" verwendet).

Wenn Sie es falsch herum löten, versuchen Sie nicht, den Schwanz abzulöten. Nehmen Sie die Stifte nacheinander heraus und verschieben Sie sie auf die andere Seite des Bretts. (Ja, ich habe diesen Fehler gemacht und den Schwanz neu angelötet, weshalb es auf dem Foto ein bisschen durcheinander ist.)

Schritt 2: Verbinden mit dem Arduino

Verbindung zum Arduino
Verbindung zum Arduino
Verbindung zum Arduino
Verbindung zum Arduino

In diesem Abschnitt wird erläutert, wie Sie eine Verbindung zu einem Arduino Nano herstellen. Es wird für einen Mini oder Uno sehr ähnlich sein, aber ich habe es noch nicht ausprobiert.

Studieren Sie den Schaltplan.

Ein Arduino Nano, der an einen USB-Port angeschlossen ist, läuft mit 5V. Das LCD läuft mit 3,3V. Sie müssen also das LCD über den 3V3-Pin des Nano mit Strom versorgen und die Spannung an jedem Steuerpin von 5V auf 3,3V reduzieren.

Die Pinbelegung des LCD ist:

  • 1 KS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Masse
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS ist Chip-Select. Es wird niedrig gezogen, um den UC1701-Chip auszuwählen (zu aktivieren). (CS könnte CS0 oder En oder ähnlich heißen.)

RST ist Zurücksetzen. Es wird niedrig gezogen, um den Chip zurückzusetzen. (RST könnte als Reset bezeichnet werden.)

CD ist Befehl/Daten. Es wird niedrig gezogen, wenn Befehle über SPI an den Chip gesendet werden. Beim Senden von Daten ist es hoch. (CD könnte A0 heißen.)

CLK und SDA sind die SPI-Bus-Pins. (SDA könnte SPI-Data heißen. CLK könnte SCL oder SPI-Clock sein.)

VB0+ und VB0- werden von der internen Ladungspumpe des UC1701 verwendet. Die Ladungspumpe erzeugt die vom LCD benötigten ungeraden Spannungen. Schließen Sie einen 100n-Kondensator zwischen VB0+ und VB0- an. Die UC1701-Dokumentation empfiehlt 2uF, aber ich konnte bei diesem speziellen LCD keinen Unterschied feststellen.

Wenn Ihr LCD über VB1+- und VB1-Pins verfügt, schließen Sie auch einen 100n-Kondensator dazwischen an. (Wenn Ihr LCD einen VLCD-Pin hat, können Sie versuchen, einen 100n-Kondensator zwischen VLCD und Masse anzuschließen. Bei meinem LCD hat das keinen Unterschied gemacht.)

Verbinden Sie das LCD wie folgt mit dem Nano:

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

("*" bedeutet, einen Potenzialteiler zu verwenden, um die Spannung zu reduzieren. Wenn der Arduino mit 3V3 von einer unabhängigen Versorgung läuft, benötigen Sie die Widerstände nicht.)

3,3 V werden vom Nano ausgegeben und können ausreichend Strom für das LCD liefern. (Das Display zieht etwa 250uA.)

5V werden auch vom Nano ausgegeben und können zur Stromversorgung der Hintergrundbeleuchtung verwendet werden. Begrenzen Sie den Strom zur Hintergrundbeleuchtung mit einem 100-Ohm-Widerstand.

Wenn Ihnen die Pins auf dem Nano ausgehen, können Sie RST an 3V3 anschließen - dann können Sie D6 für etwas anderes verwenden. Das U1701 kann in der Software durch einen Befehl auf dem SPI zurückgesetzt werden. Ich hatte damit noch nie Probleme, aber wenn Sie Ihre eigene Schaltung in einer lauten Umgebung verwenden, ist es möglicherweise besser, einen Hardware-Reset zu verwenden.

Schritt 3: Software

Software
Software

Theoretisch können Sie den UC1701 aus der U8g2-Bibliothek (oder Ucglib oder den anderen verfügbaren Bibliotheken) fahren. Ich habe tagelang gekämpft, um es zum Laufen zu bringen, und bin gescheitert. Die U8g2-Bibliothek ist ein Monster, da sie eine Vielzahl von Chips steuern kann und es sehr schwer ist, dem Code zu folgen. Also gab ich auf und schrieb meine eigene kleinere Bibliothek. Es nimmt viel weniger Platz im Arduino ein (ca. 3400 Byte plus Schriftarten).

Sie können meine Bibliothek hier herunterladen (die Schaltfläche Download auf dieser Seite). Eine Beispielskizze und eine Bedienungsanleitung sind im Lieferumfang enthalten. Die Webseite https://www.arduino.cc/en/Guide/Libraries beschreibt, wie man eine Bibliothek importiert; Gehen Sie zum Abschnitt "Importieren einer ZIP-Bibliothek".

Initialisieren Sie das LCD mit

UC1701Begin();

UC1701Begin kann Parameter übernehmen, um die Pins zu ändern oder den RST-Pin zu ignorieren. Die Bibliothek verwendet nur Hardware-SPI (eine Software-SPI wird nicht bereitgestellt). Die Anzeige kann in der x- und y-Achse gespiegelt werden. Das ist nützlich, wenn Sie das LCD in einer anderen Ausrichtung montieren möchten.

Mehrere Prozeduren wurden aus der U8g2-Bibliothek dupliziert:

  • Linie zeichnen
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • Kreis zeichnen
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • Dreieck zeichnen
  • UC1701SetCursor
  • UC1701ClearDisplay

Einige Verfahren sind etwas anders:

  • void DrawChar(uint8_tc, Wortschriftart);
  • void DrawString(char * s, Wort Schriftart);
  • void DrawInt(int i, Wort Schriftart);

String-Zeichnungsprozeduren erhalten den Index eines Fonts. Schriftarten werden im Flash-Speicher des Arduino deklariert, sodass sie keinen wertvollen SRAM belegen. Es stehen drei Schriftarten zur Verfügung (klein, mittel und groß). Sie werden nur eingebunden und belegen Flash-Speicher, wenn Sie sie verwenden (jeweils ca. 500 bis 2000 Byte).

"Farbe" wird anders gehandhabt als die U8g2-Bibliothek. Wenn das LCD gelöscht ist, hat es einen dunklen Hintergrund. Wenn MakeMark (eine globale Variable) wahr ist, wird in Weiß gezeichnet. Wenn MakeMark false ist, wird im Dunkeln gezeichnet.

Einige Verfahren sind für den UC1701 einzigartig:

SetInverted zeichnet schwarz-auf-weiß statt weiß-auf-schwarz.

void SetInverted(bool inv);

Helligkeit und Kontrast des UC1701 werden eingestellt durch:

  • void SetContrast(uint8_t Wert); // vorgeschlagen ist 14
  • void SetResistor(uint8_t Wert); // vorgeschlagen ist 7

Sie arbeiten eher unbefriedigend zusammen.

SetEnabled schaltet das LCD aus:

void SetEnabled(bool de);

Das Display benötigt im Schlaf 4uA. Sie sollten auch die Hintergrundbeleuchtung ausschalten - treiben Sie sie von einem Stift des Nano an. Nach der erneuten Aktivierung ist der UC1701 zurückgesetzt; die Anzeige wird gelöscht und Kontrast und Widerstand werden auf ihre Standardwerte zurückgesetzt.

Zusammenfassend lässt sich sagen, dass COG-Displays günstig sind und eine anständige Größe haben. Sie sind einfach mit einem Arduino zu verbinden.

Empfohlen: