Forum: Mikrocontroller und Digitale Elektronik Problem mit LCD


von Daniel Buergin (Gast)


Lesenswert?

Hallo

Habe mir von http://www.futurlec.com/ ein ATmega32 Board
gekauft. Passt genau für meine Bedürfnisse. Alles drauf
was ich brauche, vorallem ein LCD-Stecker mit 10k Kontrast-
wiederstand und VCC/GND auf den richtigen Leitung. Flachband-
kabel und Stecker dran und fertig.
Verwendet werden die PIN's des PORT C vom ATmega32.

Leider haben die Jungs einen (aus meiner Sicht) Fehler
gemacht. Sie haben die R/W Leitung nicht auf einen ATmega32
Port gelegt, sondern auf GND. Der Grund ist wohl, dass
Pin 0 und 1 von PORT C beim ATmega32 mit I2C (SDA,SCL)
belegt sind.

Das Problem ist nun, dass alle mir bekannten C-Libraries für
HD44780 LCD-Controller den R/W Pin brauchen um ein "BusyWait"
zu realisieren. (P. Fleury, avr-libc, avrlib)

Ich habe also die Variante die R/W Leitung nicht auf den LCD
Port zu legen, sondern fliegend direkt auf PC1 zu verkabeln,
oder eine Library zu finden (oder selber zu schreiben), welche
ohne die R/W Leitung auskommt.

Frage:

- Hat mir jemand einen Link auf Code, welcher ohne R/W Leitung
  mit einem HD44780 kompatiblen Display arbeitet.
- Stimmt überhaupt meine Annahme, dass es auch ohne R/W gehen
  muss.

Danke

Daniel

von johnny.m (Gast)


Lesenswert?

Wenn Du kein Busy-Wait brauchst und keine andere Quelle auf das Display
zugreift, so dass Du nicht vom Display lesen können musst, dann
brauchst Du den R/W-Pin nicht und kannst ihn fest verdrahten.

von Michael U. (Gast)


Lesenswert?

Hallo,

R/W fest auf GND geht üblicherweise schon, benutze ich auch öfter.
Nachteil ist eben nur, daß man Zwangswartezeiten für das Display
einfügen muß. Die max. nötigen Zeiten stehen im Datenblatt des
Display-Controllers, +10% schaden nicht.
In den Treibern mußt Du nur die Routine, die Busy abfragt, durch eine
entsprechend lange Warteschleife ersetzen.
Sollte eigentlich auch den Libs zu finden sein, wenn man sich nicht so
gut auskennt.

Gruß aus Berlin
Michael

von Stephan H. (stephan-)


Lesenswert?

Also ich betreibe mien LCD in einer ISR und habe auch R/W an GND.
Das Display ist komplett im RAM abgelegt und die ISR macht alle 5ms
( max. Wartezeit des LCD )ein Zeichen weiter
und wenn das Display 1 x durch ist, wieder von vorn.
So habe ich keine "Timing Sorgen" und muß nur den RAM beschreiben.


Gruß

von Daniel M. (usul27)


Lesenswert?

Also 5ms warten ist schon arg lang. Das kommt eigentlich nur bei
Operationen wie dem Löschen des Displays. Ein einzelnes Zeichen zu
schreiben, geht normalerweise sehr viel schneller.

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.