[AVR|C] LCD Routinen

Gast #2263281
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
Gast #2263300
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
Gast #2263332
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?
#2264243
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren