Forum: Compiler & IDEs LCD lib für C


von Cypher (Gast)


Lesenswert?

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.

von Mr.X (Gast)


Lesenswert?

Hmm. Du könntest deine Assembler LCD Implementierung wenn die doch eh 
schon funktioniert in den C-Code einbauen.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

- 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?

von Cypher (Gast)


Angehängte Dateien:

Lesenswert?

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 ?

von Peter D. (peda)


Lesenswert?

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
Noch kein Account? Hier anmelden.