Forum: Mikrocontroller und Digitale Elektronik LCD an 8051 - Portkonfiguration?


von KeinPlan (Gast)


Lesenswert?

Hi,

ich hab hier ein LCD, welches ich gerne mit einem 8051 Derivat ansteuern 
möchte. Standardmäßig sind bei diesem µC alle Pins Input Pins. Da ich 
aber für die Ansteuerung des LCDs 8 I/O Pins benötige muss ich die 
Konfiguration ändern. Im Datenblatt hab ich bereits die SFR gefunden mit 
denen ich die Ports konfigurieren kann, aber ich bin mir nicht sicher 
welcher Modus der richtige ist:

-) Quasi Bidirectional
-) Push Pull
-) Open Drain
-) Input Only

Meine Überlegung Open Drain mit einem Pull-Up Widerstand?

Liege ich damit falsch?


KeinPlan

von Gast (Gast)


Lesenswert?

>Meine Überlegung Open Drain mit einem Pull-Up Widerstand?

Das ist dann Quasibidirektional, die Standardeinstellung
nach einem Reset.

von KeinPlan (Gast)


Lesenswert?

Ah, ok wieder etwas gelernt :)

Besten Dank!

von haldol (Gast)


Lesenswert?

hi..
falls du zuwenig portpins hast, kannst du auch die geschichte
mit einem pcf8574-baustein per i2c-bus anbinden.
gruss c.

von R. W. (quakeman)


Lesenswert?

Falls es ein HD44780 kompatibles LCD ist dann würde ich das LCD im 4Bit 
Mode ansteuern bei welchem du mit 7 Pins (4 Daten, RW,EN,RS) auskommst. 
Mit ein paar Software Tricks auch mit 6 Pins (ohne EN).

Viele der neueren 8051er mit verschiedenen Portmodes sind nach dem Reset 
auf input-only gesetzt und nicht auf quasi-bidirektional. Abhängig von 
deinem Controller musst du also die Portpins erst auf diesen Mode 
umstellen per Software.

Ciao,
     Rainer

von Stephan H. (stephan-)


Lesenswert?

oder RW an GND, spart noch ein Pin.

von Ralf (Gast)


Lesenswert?

> Mit ein paar Software Tricks auch mit 6 Pins (ohne EN)
Wie soll das gehen? Ohne RW kann ich mir noch vorstellen. Aber ohne EN 
werden ja keine Kommandos übernommen, oder täuschts mir da?

Ralf

von Simon K. (simon) Benutzerseite


Lesenswert?

Ohne EN geht nicht. Oder man nimmt irgendeine externe Beschaltung. 
Übrigens ist ein einfaches Schieberegister einfacher und billiger als 
ein I2C PCF-Port Expander.

von Stephan H. (stephan-)


Lesenswert?

jko zB. das 164. Dann reichen 2-3 Leitungen.
Beitrag "Standard LCD über nur 3 Drähte"

von R. W. (quakeman)


Lesenswert?

Sorry, hab mich verschrieben gehabt. Ich meinte natürlich die RW Leitung 
und nicht die EN Leitung. :)

von MC (Gast)


Lesenswert?

Am einfachsten und schnellsten ist die Ansteuerung alledings über den 
Adressbus. Alle Steuersignale werden von der Hardware erzeugt. Du musst 
lediglich deine Daten an die entsprechende Adresse schicken oder 
auslesen und der Rest brauch dich garnicht zu interessieren.
So mache ich das schon seit Jahren ohne Probleme.

von Peter D. (peda)


Lesenswert?

MC wrote:
> Am einfachsten und schnellsten ist die Ansteuerung alledings über den
> Adressbus.

Lohnt sich aber nur, wenn der eh schon benutzt wird.
Ansonsten verlierst Du satte 18 Portpins.


> Alle Steuersignale werden von der Hardware erzeugt.

Nein.
Das E-Signal mußt Du mit zusätzlicher Logik erzeugen (NAND aus /RD,/WR 
mit AND vom Chip-Select).


> Du musst
> lediglich deine Daten an die entsprechende Adresse schicken oder
> auslesen und der Rest brauch dich garnicht zu interessieren.

Nur wenn es ein standard 8051 bei max 12MHz ist.
Moderne 8051-er sind aber zu schnell. Manche erlauben es, zusätzlich 
Waits einzufügen.


Peter

von MC (Gast)


Lesenswert?

>> Alle Steuersignale werden von der Hardware erzeugt.
>
>Nein.
>Das E-Signal mußt Du mit zusätzlicher Logik erzeugen (NAND aus /RD,/WR
>mit AND vom Chip-Select).
Das zusätzliche NAND hatte ich zu der Hardware dazugezählt.

>Nur wenn es ein standard 8051 bei max 12MHz ist.
>Moderne 8051-er sind aber zu schnell. Manche erlauben es, zusätzlich
>Waits einzufügen.
Nö, wieso? Ich benutze einen 8051er mit 14,7456MHz und das funktioniert 
einwandfrei. Auch bei 16MHz habe ich das schon erfolgreich und 
fehlerfrei gemacht. Außerdem sollte man den Zustand des LCDs immer 
Abfragen, wenn man Daten oder Komandos schreiben will.

von Peter D. (peda)


Lesenswert?

MC wrote:

> Nö, wieso? Ich benutze einen 8051er mit 14,7456MHz und das funktioniert
> einwandfrei. Auch bei 16MHz habe ich das schon erfolgreich und
> fehlerfrei gemacht.

"Funktioniert aufm Basteltisch", das ist natürlich ein fundiertes 
Qualitätskriterium. Wenn ich sowas meinem Arbeitgeber erzähle, müßte er 
mich fristlos entlassen.

Was allein zählt, ist eine Worst-Case-Betrachtung:
Und da steht im HD44780-Datenblatt E-Pulse: min 450ns.
Und gucke ich ins AT89C52 Datenblatt, steht da WR-Pulse: min 400ns 
[12MHz].

Ich bin also schon bei 12MHz außerhalb der Spezifikation!

Nehme ich jetzt nen schnelleren P89C668, ist dort WR-Pulse: 50ns 
[20MHz], also nur schlappe 800% zu schnell.


Peter

von MC (Gast)


Lesenswert?

>"Funktioniert aufm Basteltisch"
Vom Basteltisch war nie die Rede. Ich meinte ein 8051-System, welches 
kommerziell vertrieben wird.
Ansonsten habe ich mir die Datenblätter wenig angesehen. Wenn's läuft, 
dann läuft's. Was interessieren mich da die vom Hersteller angegebenen 
Grenzen.
Aber wenn es mal nicht funktionieren will, dann frage ich hier nach.

von Niels H. (monarch35)


Lesenswert?

MC wrote:

> Ansonsten habe ich mir die Datenblätter wenig angesehen. Wenn's läuft,
> dann läuft's. Was interessieren mich da die vom Hersteller angegebenen
> Grenzen.

?!? Ich hoffe, daß ist keine berufliche Grundeinstellung von dir :)
Das klingt jedenfalls nicht sehr professionell...

von MC (Gast)


Lesenswert?

Da ich ja bis jetzt nur Bastler bin, nehm ich's leicht. Wieso auch 
unnötig schwer machen.
Während verschiedener Praktika,... habe ich natürlich professioneller 
gearbeitet. Auch eine (lästige) Dokumentation hat da nicht gefehlt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.