Forum: Mikrocontroller und Digitale Elektronik [AVR|C] LCD Routinen


von C-Anfänger (Gast)


Lesenswert?

Hallo allemiteinander,

ich bin C-Anfänger und probiere gerade ein wenig mit LCDs rum.
Ich suche nun einen Bibliothek, in der ich alle Pins frei setzen kann, 
da ich nicht ganz am "Standard" bin.

Als µC nutze ich einen AtMega8 und das 1.95E Display von Pollin (dieses 
kleine mit Folienkabel)
Belegung wie folgt:
PC5 - RS
PC4 - E
PC3 - D4
PC2 - D5
PC1 - D6
PC0 - D7

Ich muss dabei sagen, dass ich davor ein wenig mit BASCOM programmiert 
habe, also bin ich kein Anfänger auf dem Gebiet µC.


Die Bibliothek von Peter Fleury habe ich auch schon ausprobiert, doch 
leider bekomm ich immer Errors beim kompilieren.
Die lcd.c und lcd.h sind eingebunden und in der lcd.h sind die 
Pinbelegungen angepasst sowie die Taktfrequenz des µCs.


Ich hoffe ihr könnt mir helfen

von Klaus W. (mfgkw)


Lesenswert?

Falls dich C++ nicht abschreckt, dann kann man in dieser Version die 
Pins frei setzen (beim Aufruf der Initialisierung, ohne 
#define-Gefummel):

Beitrag "Re: LCD Library gesucht für HD44780"

von MitLeser (Gast)


Lesenswert?

die lcd-lib von p.fleury ist recht gut und unterstützt auch
den 4Bit-Mode.

von MitLeser (Gast)


Lesenswert?

Sorry. Habe den Start-Thread nicht zu Ende gelesen ;-)

von Klaus W. (mfgkw)


Lesenswert?

C-Anfänger schrieb:
> leider bekomm ich immer Errors beim kompilieren.

Diese Aussage hat Potential, noch präzisiert zu werden.

von Stephu (Gast)


Lesenswert?

Wenn du Programmier-Neuling bist, würde mit Hilfe vom Datenblatt ein 
paar Dinge selber Programmieren und dann die Lib von Peter Fleury 
nehmen. Die Funktioniert einwandfrei... evtl. einfach einmal deine Error 
posten.

Greez

von C-Anfänger (Gast)


Lesenswert?

Also Programmierneuling bin ich nicht. Programmiere nebenbei noch mit 
Delphi für Windows. Ich bin eigentlich nur C-Neuling.

Komisch, irgendwas hab ich vorher falsch gemacht. Das einzigste was er 
jetzt beanstanded ist das LCD_RW_PORT, etc.
Auskommentieren kann ich das ja nicht, weil ihm sonst eine Deklaration 
fehlt.
Was trage ich denn dort ein, wenn ich RW von Anfang an auf GND gelegt 
habe?

von Klaus W. (mfgkw)


Lesenswert?

Wird LCD_RW_PORT überhaupt irgendwo verwendet?
Wenn ich mich recht entsinne, steht das da nur als Leiche.

Wenn du natürlich einen Link auf die von dir verwendete Lib hättest, 
bräuchte man nicht danach suchen...

von C-Anfänger (Gast)


Lesenswert?

Hier der Link dazu:
http://homepage.hispeed.ch/peterfleury/avr-software.html


RW muss anscheinend 4x verwendet worden, da ich 8x einen Error bekomme, 
jeweils RW_PORT und RW_PIN

von Klaus W. (mfgkw)


Lesenswert?

Irgendwo gab es heir aber auch mal eine Version, die RW fest auf GND 
voraussetzt.
Hast du mal danach gesucht? Habe gerade nicht die rechte Lust dazu...

von C-Anfänger (Gast)


Lesenswert?

und wenn ich RW einfach auf einen freien Pin zuweise? Dürfte doch 
eigentlich funktionieren

von Klaus W. (mfgkw)


Lesenswert?

Das hilft nicht, wenn der Pin dann verwendet wird.

Man hat bei den LCDs zwei Möglichkeiten: Entweder wartet man nach jedem 
Kommando, bis der LCD-Controller fertig ist, indem man den Status 
abfragt (dafür braucht man RW, weil man ja nicht nur seine Kommandos 
schreibt, sondern auch die Antwort lesen will), oder man wartet einfach 
nach jedem Kommando lange genug, ohne den Status abzufragen - in der 
Hoffnung, daß der Controller dann irgendwann fertig ist.

Wenn du eine Lib hast, die den ersten Weg geht, dann kannst du das nicht 
einfach irgendwohin legen.

Such doch einfach nach einer Lib (es gibt irgendwo welche), die sich 
nicht um den Status kümmern, sondern mit irgendwelchen 
delay_*-Funktionen lange genug warten. Nur dann ist das RW überflüssig; 
am LCD wird es einfach auf GND gelegt (also: immer Schreiben, nie lesen) 
und am AVR gibt es kein RW dafür.

Der Vorteil der ersten Variante wäre, daß man etwas schneller ausgeben 
kann, weil nicht unnötig lange gewartet werden muß. Das hilft aber 
letztlich auch nicht viel, weil das LCD ohnehin relativ langsam ist und 
keine MB/sec ausgeben kann.

von mr. mo (Gast)


Angehängte Dateien:

Lesenswert?

im anhang ist eine version ohne r/w pin.

von Klaus W. (mfgkw)


Lesenswert?

Wenn du nun gar nicht selber suchen magst und meine C++-Version nicht 
nehmen willst, ist das hier vielleicht der richtige Startpunkt:
Beitrag "Re: LCD nicht nur für einen Port in C"

von Fabian G. (kjion) Benutzerseite


Lesenswert?

@Klaus Wachtler
Ich hätte mir deine C++ Version gerne einmal angesehen, aber leider 
wiegelt dein Server nur mit "403 Forbidden" ab.

von Klaus W. (mfgkw)


Angehängte Dateien:

Lesenswert?

Fabian G. schrieb:
> ... aber leider wiegelt dein Server nur mit "403 Forbidden" ab.

Den Lump werde ich mir am WE vorknöpfen; bis dahin hier als ZIP-Datei.

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.