LCD - eigene Zeichen definieren

OP #857775
Lesenswert?

Hallo Leute,

ersteinmal möchte ich loswerden, dass ich blutiger Anfänger in Sachen
Programmierung und µC bin.
Ist auch mein erster Post hier im Forum.

Nunja dann wollen wir mal.

Ich habe ein 4x20 LCD bei Reichelt erworben und nun gibt es ja die
Möglichkeit 8 eigene Zeichen im CGRAM zu speichern.

Dazu nutze ich die lcd_bigdigits funktion, welche ihr im Anhang findet.
Der restliche Code ist der aus dem Assembler Tutorial.

Das eigentliche Problem, zu dem ich hier im Forum nichts leider nichts
finden konnte, ist, dass die übertragenen 8 Zeichen allesamt falsch
dargestellt werden. (siehe Bild).

http://img178.imageshack.us/img178/2636/dsc00466yr1.jpg

Irgendwas scheint also nicht richtig zu funktionieren oder der Code den
ich geschrieben habe ist schlichtweg fehlerhaft.

Es wäre nett wenn jemand von euch mal schnell einen Blick drüber werfen
könnte.

Im Hauptprogramm lasse ich die Zeichen hinternander ausgeben:

ldi temp1, $0
rcall lcd_data
ldi temp1, $1
rcall lcd_data
.... usw ...

Danke schonmal für eure Hilfe
Angehängte Dateien:
Gast #857859
Lesenswert?

>Muss ich nach jeder Zeichendefinition den Character RAM Zeiger auf die
>Startadresse des nächsten Zeichens setzen, oder springt dieser von
>alleine weiter?

Der springt von alleine weiter. Aber kannst es ja mal ausprobieren.
Irgendwie hat nach dem setzen der CG-RAM Adresse scheinbar der
Zähler schon von alleine 2 Schritte weitergezählt. Wenn das mal
nicht an deinem Aufbau liegt. Gibt es bei Texten auch solche
Merkwürdigkeiten?
OP #858379
Lesenswert?

Okay jetzt funktionierts.

Bin eben nochmal ins Tutorial eingestiegen und bin zufällig auf 
folgendes gestoßen:

; erzeugt den Enable-Puls
;
; Bei höherem Takt (>= 8 MHz) kann es notwendig sein,
; vor dem Enable High 1-2 Wartetakte (nop) einzufügen.
; Siehe dazu Beitrag "Re: Bitte helft mir. Schon wieder AtMega16"
lcd_enable:
           sbi PORTD, 5                 ; Enable high
           nop                          ; 3 Taktzyklen warten
           nop
           nop
           cbi PORTD, 5                 ; Enable wieder low
           ret                          ; Und wieder zurück

Da ich meinen Mega8 mit 8MHz betreibe war also ein zusätzliches nop vor 
dem enable high notwendig.

Trotzdem Danke
Gast #860996
Lesenswert?

Hallo,

bitte um Hilfe

versuche ein Paar Buchstaben auf ein LCD auszugeben aber funktioniert 
leider nicht ! habe hier viel gelesen und ausprobiert aber klappt 
einfach nicht :-) .

bin nach dem Tutorial bzw. mit dem Code von Tutorial (Asembler)und 
nichts, habe jetzt mit dem Code von : 
Beitrag "LCD Ansteuerung im 4bit-Modus"
in C und auch nichts!

LCD Barton 4x20 mit HD44780 (habe mit adere LCD und auch nichts) 
Atmega16, an LCD sehe ich nur die 4x20 Schwarze Kasten !

vielen Dank für die Hilfe
Gruß
Martin
Gast #861041
Lesenswert?

Hallo Holger,

danke für die schnelle Anwort!
mit dem Kontrastregler habe ich schon mal probiert aber auch nichts, 
habe gerade 2 Fehler gefunden in der "C Code" (.h) waren die Pins RS und 
E vertausch, dort steht auch das die Pins (von LCD) Datenbits 0-3 
sollten auf GND sein, jetzt sehe ich am LCD nur 2x20 Kasten aber von 
"Hallo Word" immer noch nichts :-(

Martin
Gast #2142488
Lesenswert?

Ich hätte mal eine weitere Frage.... ich habe jetzt die 8 eigenen 
Zeichen erfolgreich hinbekommen.... nur bräuchte ich mehr...

Ist es möglich während dem Programmablauf weitere zu programmieren,, und 
damit andere überschreiben? Ich hätte gerne Zahlen über 3 Zeilen... Aber 
die 7 sieht scheiße aus, deshalb die Frage ob ich für die sieben dann 
nicht einfach neue Zeichen programmieren kann, die dann in den RAM vom 
LCD legen und abrufen, und bei der nächsten Zahl wieder neue generieren?
#2142500
Lesenswert?

Hallo,

die Zeichen werden genauso wie aus dem Char-ROM des Displays vom 
Displaycontroller zyklisch zur Anzeige ausgelesen. Wenn Du umdefinierst 
erscheint das neue Symbol an allen Stellen im Displaystatt des alten 
Zeichens.

Warum nimmst Du für sowas kein Grafikdisplay?

Gruß aus Berlin
Michael
Gast #2142509
Lesenswert?

Ich finde kein passendes Grafikdisplay von den Maßen her. Ich habe ein 
4x20 von EA.

Kennt ihr ein von der Größe her vergleichbares Grafikdisplay? Sollte 
mindestens 70mm breit und 30 hoch sein, jedoch nicht über 100mm und 
45mm.

Wäre super wenn mir einer weiterhelfen könnte ;) Habe schon 100 mal den 
Reichelt Katalog durchgeblättert.

Gruß
Andreas

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