hi ich habe folgendes lcd: http://www.dst-gmbh.de/avkat/av2040.pdf bis jetzt habe ich damit nur mit assembler und einem atmega16 gearbeitet, was auch gut klappte, aber jetzt wollte ich etwas aufwendigere programme schreiben und zwar mit c. assembler ist einfach zu aufwendig. kennt ihr libs für c über die man verschiedene lcds initialisieren und ansteuern kann ? oder muss ich jetzt den ganzen assembler code nach c übersetzen ? ich hab leider noch nicht viel ahnung von c programmierung für avr und wollte damit jetzt anfangen. aber das lcd direkt am anfang benutzen zu können, wäre schon nett, vorallem fürs debugging, wenn etwas nicht direkt auf anhieb funktioniert. vielleicht hat ja schon jemand von euch das lcd mit c quelltext angebunden. wäre super wenn mir jemand ne lib schicken könnte.
Hmm. Du könntest deine Assembler LCD Implementierung wenn die doch eh schon funktioniert in den C-Code einbauen.
- Nutze ich immer gerne, sobald Text-LCDs an AVR im Spiel sind: http://jump.to/fleury -> AVR Software -> libraries -> LCD Je nach verwendetem Controller muss man evtl. ein wenig anpassen aber wenn ohnhin schon Assembler-Quellcode vorhanden ist, dürfte das kein Problem sein. - das avr-gcc Tutorial (link oben links) enthält einige Erläuterungen und Text-LCD - Das Thema Code für AVR an Text-LCD ist hier schon mehrmals aufgekommen. Forensuche bereits bemüht?
ich glaube nicht dass die bibliothek für mein lcd geeignet ist, da es einen datenbus von 8bit hat, oder hat das nichts zu sagen ? ansonsten hat es auch einen ks0066 controller und keinen ks0073 oder HD44780. insofern ist das wohl nicht kompatibel. was das übersetzen meines asm codes nach c angeht, bin ich wohl zu schlecht, um das hinzubekommen. ich habe schon versucht den asm code aus meinem c code heraus zu benutzen. allerdings bekomm ich dabei massig fehler, weil bestimmte platzhalter aus den includes des avr studios anscheinend nicht in der winavr lib enthalten sind. im anhang ist das projekt und ein screenshot der ausgabe. die lcd routine hab ich schon vor über nem jahr aus einem quelltext file erstellt. gewisse sachen mussten für mein lcd modifiziert werden, vorallem das timing. das ziel wäre im c code ein char array anzugeben, was ich dann mit der lcd schreibroutine: ;--------------------------LCD-Schreibroutine--------------------------- ----------------------- lcd_write: ldi ZL, LOW(text*2) ; Low-Byte der Adresse in Z-Pointer ldi ZH, HIGH(text*2) ; High-Byte der Adresse in Z-Pointer rcall lcd_clear ; text soll auf lcd geschrieben werden rjmp print ; art der variablen text ist mir unklar! print: lpm ; Erstes Byte des Strings nach R0 lesen tst R0 ; R0 auf 0 testen breq print_end ; wenn 0, dann zu print_end mov r16, r0 ; Inhalt von R0 nach R16 kopieren rcall lcd_data ; LCD-Sendefunktion aufrufen adiw ZL, 1 ; Adresse des Z-Pointers um 1 erhöhen rjmp print ; wieder zum Anfang springen print_end: ret ;--------------------------LCD-Schreibroutine--------------------------- ----------------------- also in text[10] soll etwas drinstehen, was ich im c quelltext mache und wenn ich damit fertig bin, soll lcd_write() aufgerufen werden und dann steht der text auf dem lcd. wie soll ich das anstellen ? und wie ersetze ich die assembler zeilen die in der ausgabe als fehlerhaft stehen ? kennt jemand den winavr code ?
Einfache LCD-Lib: http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip 8Bit-Mode oder Busy-Abgfrage bringt keine Vorteile, da ja der Mensch das LCD ablesen können muß. Zeit sparen ist also unnötig. Auf die Clear-Funktion sollte man verzichten, bewirkt unprofessionelles Flackern. Einfach immer alten Text überschreiben. Peter
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.