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
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"
C-Anfänger schrieb: > leider bekomm ich immer Errors beim kompilieren. Diese Aussage hat Potential, noch präzisiert zu werden.
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
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?
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...
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
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...
und wenn ich RW einfach auf einen freien Pin zuweise? Dürfte doch eigentlich funktionieren
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.
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"
@Klaus Wachtler Ich hätte mir deine C++ Version gerne einmal angesehen, aber leider wiegelt dein Server nur mit "403 Forbidden" ab.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.