LCD 12864 mit Controller ST7920 seriell Anleitung zur Verkabelung mit UNO

Hallo Gemeinde

Ich erlaube mir mal einen Beitrag zu veröffentlichen.

Anleitung LCD Modul Modell 12864B seriell (SPI) – die Verkabelung.

Seit einiger Zeit nutze ich die Arduinos und habe viel mit dem Internet gelernt. Ich will nun auch was beitragen und Wissen teilen.

  • Display 12864B V2.0 mit Controller ST7920
  • Auflösung/Display 128 x 64 Pixel Abmessung/Dimension 93 x 70mm monochrome
  • Ansteuerung seriell oder parallel möglich
  • Achtung - optisch gleiche Module ABER mit Pin 15 "CS"1, Pin 16 “CS2” Die können aber nur parallel - – Achtung – es gibt auch 3V3 - Modelle am Markt !
  • Das Preis/Leistung Verhältnis ist optimal (einstelliger Euro Bereich)

Das LCD Modul versteckt seine serielle Schnittstelle ein wenig. Das steht erst im Datenblatt. Ich habe das nun mal (aus meiner Sicht) zusammengefasst.
Die Beschriftung auf dem Modul sieht eher nach paralleler Schnittstelle aus, aber es geht auch seriell.
Die Pins bedeuten dann:

Display Pin 1 = Vss = GND = 0V
Display Pin 2 = Vdd = Plus = +5V (4mA)
Display Pin 3 = NC nicht verwendet/ not connencted
Display Pin 4 = RS CS(SS) chip select SPI (RS in parallel Mode (RS=0: Instruktion, RS=1: Data)
Display Pin 5 = R/W = MOSI SPI = (R/W in parallel Mode (R/W=0: write, RS=1: read)
Display Pin 6 = E SCK = Clock SPI (E enable in parallel Mode)

Display Pin 7 = brauchen wir nicht DB0 in parallel Mode
Display Pin 8 = brauchen wir nicht DB1 in parallel Mode
Display Pin 9 = brauchen wir nicht DB2 in parallel Mode
Display Pin 10 = brauchen wir nicht DB3 in parallel Mode
Display Pin 11 = brauchen wir nicht DB4 in parallel Mode
Display Pin 12 = brauchen wir nicht DB5 in parallel Mode
Display Pin 13 = brauchen wir nicht DB6 in parallel Mode
Display Pin 14 = brauchen wir nicht DB7 in parallel Mode

Display Pin 15 = PSB - parallel serial Selector PSB=0: serial, PSB=1parallel
Display Pin 16 = nicht verwendet/ not connencted
Display Pin 17 = Reset RST=0: Display off
Display Pin 18 = LCD Kontrast Spannung - Poti auf der Platine / LCD contrast - Potentimeter on PCB
Display Pin 19 = Display LED + (5V = 33mA, 3,3V = 17mA)
Display Pin 20 = Display LED - = GND = 0V
Display Pin 1+15+20 können verbunden werden

Die Hardware ist der Teil 1 der Lösung. Ohne Software wird nichts am Display angezeigt werden. Es wird eine serielle Übertragung genutzt. Davon gibt es mehrere Arten (und ausreichend Literatur) aber hier wird SPI (heißt: Serial Peripheral Interface)verwendet.

Bei diesem System gibt es einen „master“ und „slaves“ am Bus.

Es gibt 4 Leitungen die verschiedene Namen und Funktionen haben.

  1. MISO = Master in –Slave out – also Daten vom Slave zum Master senden
  2. MOSI= Master out – Slave in – also Daten vom Master zum Slave senden
  3. Taktleitung – Serial Clock
  4. Eine „Auswahlleitung“ Das bedeutet alle Slaves hängen gleichzeitig am Bus und die „Auswahlleitung“ wird für jeden Slave extra benötigt. Die sagt dem Slave „nun bist du dran“ und darfst Empfangen oder senden. (Gelegentlich findet man auch CS – chip select)

Für das Display bedeutet dass, wir können die Leitung 1 MISO (also vom Slave zum Master) gleich wieder vergessen. Das (dieses !) Display kann nichts senden sondern nur empfangen.

Leitung 2 MOSI, Leitung 3 Takt und Leitung 4 Slave Select brauchen wir schon.

Nun wo muss welche Leitung angeschlossen werden ist noch zu besprechen. Da gibt es 2 Arten von SPI Systemen. Es gibt ein Hardware SPI (fix einem PIN zugeordnet) oder aber Soft SPI. Da macht die Software (legt die Software fest) welche Funktion welcher PIN hat. Die Hardware SPI hat noch eine kleine Tücke. Je nach dem welchen Arduino man verwendet sind es unterschiedliche Pins. Da bleibt ein Blick in die Doku Pflicht.

Bei der Software SPI legt es die Software fest. Irgendwie logisch.

Bleibt noch die Frage welche Software verwenden. Es gibt mal die Möglichkeit sich das selber zu programmieren. Gott sei Dank haben aber die Könner Bibliotheken programmiert die einem die Arbeit wesentlich erleichtern. Es gibt verschiedene Bibliotheken. Einige unterstützen nur Hard SPI, andere nur bestimmte Displays.
Die „Lieblings Bibliotheken“ muss jeder für sich finden und sich dann auch mit den Einstellungen beschäftigen oder sich anhand von Beispielen schlau machen.

Das kann dann so aussehen:

Name der Bibliothek_Name Display Auflösung Display Befehl(A, B, C, D);
Unter A,B,C,D erwartet die Bibliothek dann angaben welcher Pin verwendet werden soll.
A= Pin für Clock = Takt
B= Pin für MOSI
C= Pin für Slave Select
D=Pin für Reset oder man sagt der Bibliothek Befeh_ PIN_NONE also keine Angabe

Es gibt aber auch Bibliotheken
Name der Bibliothek_Name Display Auflösung Display Befehl(A)
A= nur mehr der PIN für Slave Select – damit erkennt die Bibliothek es muss die Hardware SPI verwendet werden und der Programmierer muss dann wissen wo die anderen Leitungen angeschlossen werden müssen.

Profis mögen über den Beitrag großzügig hinwegsehen (und Fehler bitte melden), Anfängern soll es den Einstieg ein wenig erleichtern.

LCD 12864 mit Controller ST7920 seriell Anleitung zur Verkabelung mit UNO.pdf (121 KB)

Danke Viktor,

Schon vornehm, dass du dich mit Links zur Hardware zurückhältst.
Wobei dein Hinweis “Das Preis/Leistung Verhältnis ist optimal (einstelliger Euro Bereich)” das ganze schon auf China-Direktimport via ebay & Co einschränkt.

Deine Ausführungen zu Hard- und Software-SPI sind zwar ok, aber …

Die „Lieblings Bibliotheken" muss jeder für sich finden und sich dann auch mit den Einstellungen beschäftigen oder sich anhand von Beispielen schlau machen

Dein persönlicher Lieblings-Github Link oder ein Link zu einem nicht-chinesischen Datenblatt, damit man sich selbst eine Bibliothek schreiben kann, würde das Ganze sogar nutzbar machen.
Dein Link auf den gleichen Text im pdf-Format ist zwar nett, dank der Bilder, aber nicht ganz so hilfreich.

Anfängern soll es den Einstieg ein wenig erleichtern.

Wenn dies nur “Teil1: Die Verkabelung” sein soll, super.
Dann wäre ich auf “Teil2: Erster Test-Sketch” gespannt.

Danke für deinen Input

Das mit dem Datenblatt schaffe ich, das mit den Anhängen übe ich. Eigentlich wollte ich die Bilder im Text einbauen - bin gescheiter und habe das pdf zumindest geschafft.

Code kann ich auch liefern - denke das geht auch irgendwie über die Funktion “Anhänge”

Die Links zur Hardware sind so eine Sache. Die Artikelnummern und Händler wechseln so schnell, da ist eine Suchmaschine wohl besser.

Also Datenblatt zum Controller als pdf im Anhang.
Code folgt.

ST7920.pdf (697 KB)

Hallo - nun sozusagen Teil 2 also die Software

Ich habe das mit einem Controllino MAXI gemacht (mal so zum testen) und ist wie ein mega zu programmieren.

Damit das Display was anzeigen kann habe ich noch einen DHT22 angeschlossen und lese die RTC aus dem Controllino aus.

Ich werde das bei zukünftigen Postings berücksichtigen.

Die Programmierung hat ein Anfänger gemacht also bitte “gnädig” sein.

Controllino_mit_TFT_und_RTC_und_DHT22.ino (4.77 KB)

Wenn die github.com/olikraus/u8glib passt, sollte das schon ok sein. Dein Komplett-Beispiel ist natürlich auch schön. Könntest du glatt bei Zeigt her eure geilen Projekte ! vorführen, wenn du raus hast, wie man Bilder einfügt :wink:

( Erst als Attachment, dann CopyImageLocation und das in More–Modify bei ‘Insert an Image’ verwenden)

Gute Anleitung für den ST7920.

Ich wollte noch erwähnen, dass die u8glib mittlerweile in die zweite Runde gegangen ist:

Und hier noch ein Bild aus meinem U8g2 Testaufbau:

Grüße,
Oliver

Hallo schöner Beitrag. Ich mach die Verkabelung immer mit dem ICSP Stecker.So kann ich das Display schnell an UNO, Mega oder Nano anschliessen

!(http://<img src=)

P1080322.JPG

Danke Viktor,

deine Anleitung hat mich draufgebracht, warum mein LCD nicht geht (CS pin= nur parallel). Manchmal steckt man fest und ist dann froh, wenn auch mal einer was ganz simples erklärt !

Gruß Manni