LCD 1602/1604/2002/2004 seriell mit nur einer Leitung ansteuern

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Wer schon einmal versucht hat, "mal eben" ein beispielsweise 1602 LCD anzuschließen, der kennt das daraus resultierende Kabelchaos.

    Für eines meiner Projekt (wird demnächst vorgestellt) benötige ich eine Lösung, bei der ein LCD mit nur einer einzigen Leitung (TX) angesteuert wird. Fündig geworden bin ich hier. Da ich allerdings mehrere dieser LCD benötige, habe ich mir eine Platine dazu erstellt.

    Um das LCD sowohl per TTL als auch per RS232 ansteuern zu können, habe ich die Idee dieses Autors übernommen, hierfür zwei Dioden einzusetzen. Ob und wie die Platine im einen wie im anderen Anwendungsfall bestückt wird, ist aufgedruckt. Der Zugriff auf den ATmega erfolgt wie üblich über den Footprint des Tag-Connect Kabels. Da er aber nur einmalig geflasht werden muss, kann man ihn theoretisch auch vor dem Einbau flashen.

    Heraus gekommen ist die im Anhang zu sehende Platine (Prototyp). Diese wird entweder per Buchsenleiste mit dem LCD verbunden oder direkt mit einer Steckerleiste fest verlötet. Die Maße sind etwa 49 x 24mm.

    Über den Anschluss an der Stirnseite kann sowohl eine Platinenklemme als auch eine Stecker- oder Buchsenleiste angeschlossen werden, über die die Schaltung und das LCD mit 5V, GND und dem TX Signal versorgt werden. Über die kleinen Potis lässt sich sowohl der Kontrast als auch die Helligkeit des LCD einstellen. Wer es kann und möchte, für den habe ich auf der Platine die Möglichkeit vorgesehen, die Helligkeit per Software zu regulieren.

    Wer Interesse an der Platine hat, kann sich gerne per PN bei mir melden.

  • LCD 1602/1604/2002/2004 seriell mit nur einer Leitung ansteuern? Schau mal ob du hier fündig wirst!

  • klasse du Platinenbastler,

    aber mal ehrlich wenn schon einen Atmel als Umsetzer warum dann nicht auch per Software LCD Hintergrundbeleuchtung per PWM und Kontrasteinstellung per gesiebter PWM mit Spannungseinstellung (so hatte ich meine erste AVR Platine gemacht:

    Theorie dahinter:
    http://www.holger-klabunde.de/dcdc/picdcdc.htm

    und bei mega32 und folgende mit dem hälftigen 16 bit A B timer einen 8-bit PWM Chanel für die LED Beleuchtung und einen für die Kontrastspannung.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Die Hintergrundbeleuchtung ist bereits per Software schaltbar. Das hatte ich gemeint mit "Wer es kann und möchte, für den habe ich auf der Platine die Möglichkeit vorgesehen, die Helligkeit per Software zu regulieren."

    Der BC847 ist nur nicht aufgelötet, weil ich besser Hardware (Poti) als Software kann :blush: Außerdem fehlt noch der Basiswiderstand. Der ist mir im Eifer des Gefechts durch gegangen. Im Anhang meine aktuelle Lösung zur Ansteuerung.

    Im praktischen Einsatz stelle ich beide Werte einmalig ein und dann ändere ich daran im Normalfall auch nichts mehr. Daher reichen mir die Potis aus. Aber ich werde mir die Seite trotzdem mal anschauen.

    Aktuell habe ich zwar einen 328P drauf, aber eigentlich soll da ein ATmega8 werkeln. Für diese Anwendung sollte der ausreichen und kostet noch nicht mal mehr als ein Tiny.


  • ...Aber ich werde mir die Seite trotzdem mal anschauen.

    http://www.holger-klabunde.de/dcdc/picudoub.gif
    Bild1

    ich nehme keine 7414, sondern nur den PWM Ausgang erzeuge die negative Spannung und mit 2 R nach +VCC und Mittelpunkt an Kontrast kann ich die Spannung von unter 0V bis +V verschieben durch PWM bis der Kontrast passt in der SW noch Grenzen setzen um in beide Richtungen nicht zu übertreiben. R und C muss ermittelt werden, wenn du magst schaue ich noch mal in mein Eagle und Software, kann dir auch alles zusenden.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • So, einige Wochen und PNs später hier nun das Ergebnis. Inzwischen habe ich beide Potis von der Platine entfernt. Mit dazu gekommen ist aber eine Ladungspumpe, um eine negative Kontrastspannung erzeugen zu können. An dieser Stelle noch mal danke an jar für die hilfreichen Infos!

    Die Platine kann direkt per Stiftleiste an das LCD gelötet werden, wodurch alles sehr platzsparend verbaut werden kann. Da der ATmega nur einmalig geflasht werden muss, habe ich keinen ISP-Adapter vorgesehen.

    Die Einstellung der Helligkeit und des Kontrastes erfolgt über die serielle Leitung. HEX 80 0-FF stellt die Helligkeit ein und HEX 82 0-FF den Kontrast. Die so eingestellten Werte werden automatisch im nichtflüchtigen Speicher des ATmega abgelegt und bei jedem Start neu geladen.

    Wer (wie ich) lieber mit einem GUI als im Terminal arbeitet, dem kann ich cutecom empfehlen. (danke an ds für den Tip!!) Mit sudo apt-get install cutecom kann man es sehr schnell installieren. Auch die Anwendung ist denkbar einfach. Mit den auf dem Screenshot zu sehenden Einstellungen läuft es auf meinem Ubuntu-Rechner einwandfrei.

    Somit ist das LCD sehr "GPIO sparend" an 3,3V des RasPi einsetzbar, aber ebenso an anderen µC. Ein Betrieb an 5V ist ebenfalls möglich.

    Ich werde mir die Tage einige der Platinen ordern. Wer Bedarf hat, kann sich gerne bei mir melden.

  • geil, eine Platine für mich

    wenn du das layout überabreitest denke an mögl. 5V Betrieb für alle LCD , naicht alle sind 3,3V tolerabel und Rx Tx Anpassung an PI mit 470 Serien R und Ableitdioden BAT42/47/48 nach 3,3V

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Die Platinen sind eingetrudelt und der Vorschlag eine Ableitdiode einzubauen wurde umgesetzt. Damit die Platine nicht versehentlich gegen die LCD-Platine gedrückt wird, wurden drei (eckige) Durchkontaktierungen vorgesehen, in die man als Abstandhalter einen Pin einer Stiftleiste einsetzen kann. Auf diesem Bild unten links ist gut zu sehen, wie das gemeint ist: https://www.forum-raspberrypi.de/attachment.php?aid=10261

    edit: Die Belegung der Platine ist für die auf dem Bild zu sehenden LCD ausgelegt.

    Wie so oft habe ich auch von diesen Platinen mehr als ich selber benötige. Wer Interesse hat, kann mich gerne anschreiben.

  • Hallo Neueinsteiger,


    Einfach nur noch geil, was Du da so alles zauberst :thumbs1:

    :cool:

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Moin Neueinsteiger
    ich schliesse mich meinen Vorschreibern an. ;-))

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.


  • Um das LCD sowohl per TTL als auch per RS232 ansteuern zu können, habe ich die Idee dieses Autors übernommen, hierfür zwei Dioden einzusetzen. Ob und wie die Platine im einen wie im anderen Anwendungsfall bestückt wird, ist aufgedruckt. Der Zugriff auf den ATmega erfolgt wie üblich über den Footprint des Tag-Connect Kabels. Da er aber nur einmalig geflasht werden muss, kann man ihn theoretisch auch vor dem Einbau flashen.

    ... Freak :D:lol::thumbs1:

  • angekommen, mal sehen wann ich testen kann....

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)


  • Was sind denn die Vor-/Nachteile gegenüber i2c?

    Vorteil
    keine I2C Treiber oder Aktivierung nötig
    gegenüber I2C eine Leitung gespart
    mit RS232 Treiber >=100m problemlos
    Takt kann bei längeren Leitungen auf 300Bd runtergesetzt werden
    kein Protokoll muss eingehalten werden wie ACK/NACK
    kann an jedem seriellen laufen, nicht jeder kann I2C

    Nachteile
    dürft ihr selber suchen
    ok einen, es gibt keine Rückmeldung obs angekommen ist und keine Möglichkeit das zu prüfen.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Es wird im Gegensatz zu I²C nur eine Leitung benötigt. Ich kann mir vorstellen, dass ich nicht der Einzige bin, der regelmäßig das Problem hat, dass ihm die GPIO des RasPi, bzw. I/O des ATmega/ATtiny ausgehen.
    Sowohl Kontrast als auch Helligkeit der Hintergrundbeleuchtung werden ebenfalls über diese eine Leitung (einmalig) eingestellt. Sofern das LCD 3V3fähig ist, können Schaltung und LCD auch mit 3V3 betrieben werden.

    edit: ups, da war einer schneller.

  • für eine Neuentwicklung wäre dieses hier doch nett
    https://www.mikrocontroller.net/topic/413804#new

    Terminal Emulation mit Auswertung der ESC Sequenzen /b <BACKPACE> o.ä.

    für die Ausgabe von BELL \0x07 fehlt dem noch ein Beeper

    was ich noch nicht weiss ist deine letzte Version konfigurierbar? (wenn ja wie?)

    Es gibt ja verschiedene Display von 8 Zeichen bis 40 Zeichen bis zu 4 Zeilen und das auch noch mit verschiedenen Startadressen im GCRAM vom LCD Controler
    Bei fast allen kann man eigene Zeichen im Bereich 0-7 definieren, wie bekommt man die über RS232 in deinen Atmel?
    Es gibt KS0066 und HD kompatible, wie unterscheidet man das in der Atmel Config?

    PS ich habe ein eagle Footprint für eine 1,6mm Bohrung/PAD somit kännte man die Pinfassung fürs LCD im Board versenken und es wäre niedrig steckbar.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (20. Dezember 2016 um 13:33)

  • Den Link habe ich zur Hälfte gelesen. Für die dahinter stehende Idee habe ich im Augenblick allerdings keine Anwendung.

    Das Projekt ist vorbehaltlich noch nicht festgestellter Bugs abgeschlossen. Die ursprüngliche Idee war, ein LCD mit nur einer einzigen Leitung anzusteuern. Das wurde umgesetzt. Deine zusätzlichen Vorschläge und Ideen habe ich ebenfalls mit eingebaut. Die Geschichte mit der Ansteuerung über RS232 habe ich zwar optional verbaut, weil es ohne viel Aufwand mit auf die Platine passte, aber noch nie getestet, da ich bisher keinen Bedarf hatte.

    Die Eckdaten (Zeilen, Zeichen, Baudrate, etc.) des Atmega sind änderbar. Wie das geht, ist im Sketch ersichtlich. Die Änderung der Einstellungen über den Aufruf der speziellen "Kommandos" habe ich über die Eingabe in HEX erfolgreich hin bekommen.

    Ist der Sketch also einmal auf dem ATmega, kann man alle Einstellungen über die Rx-Leitung (des ATmega) vornehmen. Ob und wie das per RS232 funktioniert, kann ich aber nicht sagen.

    Der Autor hat LCDs mit 16 und 20 Zeichen so wie 2 oder 4 Zeilen im Sketch vorgesehen. Das entspricht den von mir in meinen Projekten genutzten LCD. Wer andere LCD implementieren möchte, kann das natürlich gerne tun. Ich bin dazu leider nicht in der Lage (bekennender Softwareanalphabet).

  • danke

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!