Hallo,
ich schaffe es einfach nicht die Adressen der dritten und vierten Zeile
herauszufinden. Weiß die zufällig jemand? Wenn ich immer weiter
Buchstaben sende schreibt er auch in diese Zeilen bloß würde ich gerne
die Adresse wissen um direkt in die Zeile zu schreiben. Ich habe schon
ein Programm geschrieben das einfach die Adresse hoch zählt und immer
einen Buchstaben ausgibt. So habe ich aber nur Zeile 1 und 2
herausfinden können.
Gruß und Dank im Voraus Michael
Ich kenne jetzt dein Display und mag kaum glauben, daß die Adressen
nicht im Datenblatt stehen, aber ich hatte mal ein 4x16 mit folgenden
Adressen erfolgreich benutzt:
Michael Mayer schrieb:> Wenn ich immer weiter> Buchstaben sende schreibt er auch in diese Zeilen bloß würde ich gerne> die Adresse wissen um direkt in die Zeile zu schreiben.
Dann sende am besten den Zeichensatz. Etwa 80 Zeichen ab dem Buchstaben
A.
Dann kannst du anhand der Ausgabe die Adressen bestimmen.
Michael Mayer schrieb:> Hat sonst noch jemand ne Idee woran es liegen kann?
Falsche Initialisierung?
Es gibt da irgendwo ein Bit, wo man zwischen einzeiligen und
zweizeiligen unterscheiden kann (wobei das vierzeilige dann wohl als
zweizeiliges durchgeht).
Klaus Wachtler schrieb:> Es gibt da irgendwo ein Bit, wo man zwischen einzeiligen und> zweizeiligen unterscheiden kann (wobei das vierzeilige dann wohl als> zweizeiliges durchgeht).
Das ist
> 6). Function Set>> X: Do not care (0 or 1)> DL: It sets interface data length.> DL = 1: Data transferred with 8-bit length (DB7 - 0).> DL = 0: Data transferred with 4-bit length (DB7 - 4).> It requires two times to accomplish data transferring.> N: It sets the number of the display line.> N = 0: One-line display.> N = 1: Two-line display.> F: It sets the character font.> F = 0: 5 x 8 dots character font.> F = 1: 5 x 10 dots character font.
Klaus Wachtler schrieb:> Hier steht übrigens etwas mehr als in deinem Pollin-"Datenblatt":> http://www.google.com/url?sa=t&source=web&cd=14&ve...
Danke! Ich habe jetzt die Adressen 80 C0 90 D0 heraus gesucht. Diese
stimmen auch für die Zeilen, allerdings stehen die Buchstaben nicht ganz
links sondern mittig in der Zeile. Erhöhe ich die Adresse wandern die
Buchstaben nach rechts bis zum Rand und dann nochmal von der Mitte bis
zum Rand.
Ich glaube du hast da ein grundlegendes Problem.0x80 ist der Befehl für
den Kontroller, und die 0x00, 0x40, 0x10, 0x50 sind die Anfangsaddressen
für die Zeilen.Du must sie zusammen addieren.Also wenn du in die Zeile 0
schreiben willst dann gibst du 0x80 ein weil 0x00 + 0x80 = 0x80.Un so
weiter.
Du meinst, du hast diese routine mit einem anderen display benutzt und
es hat richtig funktioniert? Dann weiss ich nicht, muss bei dem Display
auch funktionieren.Ich meine wenn du schon was auf dem display sehen
kannst, dann ist es ein kleines Problem.Wenn die Zeichen nicht am Anfang
der Zeile sind dann sind bei dem Display warscheinlich die Addressen
anders, aber die erste Zeile muss sowieso am 0x00 anfangen.
Dieses Display hat den SPLC780D1 cotroller.
http://tinsharp.en.alibaba.com/product/50485537-210513951/character_lcd_TC1604A_01_.html
Programist schrieb:> Du meinst, du hast diese routine mit einem anderen display benutzt und> es hat richtig funktioniert?
Ja genau. Danke für das PDF. Werde mich mal damit beschäftigen.
Gruß Michael
Wenn ich die Adresse 0x00 (welche ja das erste Zeichen in der ersten
Zeile sein sollte) also das Kommando 0x80 sende steht der Text in der
ersten Zeile aber in der Mitte der Zeile. Damit ich an den Anfang komme
muss ich eine Adresse zwischen 0x20 und 0x2F verwenden. Aber es können
doch nicht 16 Adressen für ein Feld des Displays sein, oder doch?
Gruß Michael
>Damit ich an den Anfang komme>muss ich eine Adresse zwischen 0x20 und 0x2F verwenden. Aber es können>doch nicht 16 Adressen für ein Feld des Displays sein, oder doch?
Such mal nach einem Kurzschluss auf den Datenleitungen.
Vieleicht auch eine offene Leitung.
holger schrieb:> Such mal nach einem Kurzschluss auf den Datenleitungen.> Vieleicht auch eine offene Leitung.
Hab ich schon mehrfach und gerade noch mals. Kein Kurzschluss, keine
Unterbrechung, keine vertauschten Leitungen.
Gruß Michael
>> Such mal nach einem Kurzschluss auf den Datenleitungen.>> Vieleicht auch eine offene Leitung.>Hab ich schon mehrfach und gerade noch mals. Kein Kurzschluss, keine>Unterbrechung, keine vertauschten Leitungen.
Wie ist die Pinbelegung vom LCD am Port?
Welche Taktfrequenz und welcher Controller?
Wenn du die Infos lieferst kann ich dir mal
ne HEX Datei zum testen schicken.
Atmega 32 mit 4 Mhz Belegung des Displays im Anhang. Das mit den
geteilten Datenleitungen geht leider nicht anders weil ich Den INT1
brauche. Wäre echt nett wenn du mir den HEX Datei schicken würdest.
Gruß Michael
>Ich glaub ich spinne! Es funktioniert. Danke Holger! Jetzt musst mir>bitte nur noch verraten was ich falsch mache.:)
Du hast die Pins am Port anders angeschlossen als
die Standard Libs es haben möchten. Deine DB7 Leitung
ist schuld. Da wirst du im Assemblercode wohl einiges
ändern müssen.
Hi
>Zeile 2: 0xA8
Das wäre die DDRAM-Adresse 0x28. An der Stelle hat aber der SPLC780D1
keinen.
Datenblatt S.7:
1.Zeile 0x00...0x27
2.Zeile 0x40...0x67
MfG Spess
@ spess53 (Gast)
>>Zeile 2: 0xA8>Das wäre die DDRAM-Adresse 0x28. An der Stelle hat aber der SPLC780D1>keinen.>Datenblatt S.7:>1.Zeile 0x00...0x27>2.Zeile 0x40...0x67
Bitleitungen vertauscht? In Hardware oder Software?
MFG
Falk
Hi
Nachtrag:
>Weder noch. Die Texte und Kommandos komme ja alle richtig an.
Die kamen angeblich auch an als bei dir noch nicht berücksichtigt war,
das DB7 nicht PD3 sondern an PD4 hängt.
MfG Spess
spess53 schrieb:> Die kamen angeblich auch an als bei dir noch nicht berücksichtigt war,> das DB7 nicht PD3 sondern an PD4 hängt.
Nicht ganz, da kamen die Kommandos falsch an.