www.mikrocontroller.net

Forum: Compiler & IDEs LCD lib für C


Autor: Cypher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mr.X (Gast)
Datum:

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

Autor: Martin Thomas (mthomas) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Cypher (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.