www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Pins einzeln Ansteuern?


Autor: marco (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hab ein Prob mit meinem LCD. Ist ein 2x16 mit HD44780 im 4-Bit-Mode.
Und zwar ist es bei mir nicht möglich dem LCD einen eigenen Port zu
spendieren. Also, ich kann´s nicht an PortA Bit0..5 hängen sondern muss
es über die Ports verteilen (Data an PortA 0..3; RS an PortC 0; E an
PortD 0; oder so).

Testweise hab ich es erstmal an einen Port gehängt, um die Ansteuerung
klar zu kriegen.

Problem: Wenn ich die Daten in einem Rutsch mit "out" an den Port
gebe funzt alles wunderbar. Aber wenn ich die Portpins einzeln setze
kommt nur Müll raus.

Den SourceCode hab ich mal drangehängt.

MfG
marco

Autor: Beeblebrox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, 2 Möglichkeiten. Entweder Du versuchst Dein Datennibble erst mit
0x0f zu verunden, dann den Porta mit 0xf0 zu verunden und dann noch das
Datenbyte mit dem Port zu verunden. In diesem Fall liegen die 4
Datenleitungen ganz kurz gemeinsam auf 0. Sollte das nicht gehen kannst
Du noch ein Latch dazwischenschalten, mußt dann aber einen weiteren Pin
für die Latch-Freigabe opfern. Dummerweise gibt es beim LCD keine
Clock-Leitung, CS-Leitung oder dergleichen. Soweit ich weiß ist die
Busy-Leitung ReadOnly.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das LCD ist quasi ein Latch, welches mit E die Daten übernimmt.

Alle anderen Pins müssen stabil bleiben, während E = 1 ist.

Oder anders gesagt, der Pin E muß als letztes auf 1 gesetzt werden,
dann min 1µs warten und E als erstes auf 0 setzen.

Solange E = 0 ist, kannst du die anderen Pins setzen wie Du lustig
bist.


Peter

Autor: Malte Bayer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eben so sieht es aus. Dein E-Pin am LCD verändert seinen Status nicht
und ist anscheinend immer HI. (oder immer LO)

Müsste so aussehen

Init: E= Low

Zeugs ans LCD senden:
-RS und RW setzen wie du sie brauchst
-4bit Daten anlegen
-5ns Pause
-E = HI
-5ns Pause
-E = LO
-zweite 4bit Daten anlegen
-5ns Pause
-E = HI
-2-5ns Pause
-E = LO

Gruss Malte

Autor: Beeblebrox (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh yeah. Den E-Pin habe ich voll vergessen. SChon lange her, daß ich den
Display-Treiber geschrieben habe :)

Autor: marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Enable kommt schon rüber so wie´s aussieht. Zumindest hüpft der
Cursor ab und zu durchs Display ( hab im Programm ne
Display-Shift-Schleife).

Ich denke mit der "LcdSet"-Routine muss irgendwas nicht stimmen.
Wenn ich die Schieberei überspringe und die Daten mit

;  out LcdPort,lcd ; Byte auf Ausgabeport

rüberschicke funzt es ja. Nur wenn ich mein Register "lcd" bitweise
nach links schiebe und jeweils entsprchend das Lcd-Bit setze (oder halt
nicht) gibt´s porbleme.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.