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:
1 | |
2 | |
3 | |
4 | |
Gast
#2230038
Ich würde mal für die Zeilen 3 und 4 den zweiten Chip-Select-Eingang benutzen (OC2 oder so ähnlich)
Also hier mal das Datenblatt: http://www.pollin.de/shop/downloads/D120628D.PDF Ich kann die Adresse nirgends finden. Was ich schon weiß:
1 | |
2 | |
Acer_Power schrieb: > Ich würde mal für die Zeilen 3 und 4 den zweiten Chip-Select-Eingang > benutzen (OC2 oder so ähnlich) Es gibt keinen CS-Eingang.
Den gibt es bei 4*40, weil die letztlich zwei Controller haben.
Hat sonst noch jemand ne Idee woran es liegen kann? Gruß Michael
Michael Mayer schrieb: > Was ich schon weiß:Zeile 0 = 0x80 + 0x60 > > Zeile 1 = 0x80 + 0x20 Dann probiere mal 0x80 + 0x00 und 0x80 + 0x40
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).
Hier steht übrigens etwas mehr als in deinem Pollin-"Datenblatt": http://www.google.com/url?sa=t&source=web&cd=14&ved=0CDMQFjADOAo&url=http%3A%2F%2Fread.pudn.com%2Fdownloads107%2Fdoc%2Fproject%2F439437%2FTC1604A-01%2520SpecV02.doc&rct=j&q=TC1604A-01&ei=fof8Tfu7BcmE-wabvcnCAw&usg=AFQjCNFLh9ym9tyxgzYQmPmf_cP7dFIM2A&cad=rja
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.
1 | |
2 | |
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.
Gast
#2230339
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.
Das ist mir schon klar. Bei den Displays von Reichelt hatte ich auch keine Probleme damit. Nur das von Pollin lauft nicht richtig.
Gast
#2230745
Dann hast du ihn nicht richtig initialisiert.
Meine Initialisierung sieht so aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
Gast
#2231270
Weiss nicht genau, aber Ich glaube das ist nicht ganz richtig. Vielleicht hilft dir das hier: http://www.8052.com/tutlcd
Was denkst du wo genau was falsch ist? Ich benutze die Routine schon länger und hatte nie Probleme. Gruß Michael
Gast
#2231719
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
Gast
#2232908
>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
Gast
#2232975
>> 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
Gast
#2233082
Probier mal.
Ich glaub ich spinne! Es funktioniert. Danke Holger! Jetzt musst mir bitte nur noch verraten was ich falsch mache.:)
Gast
#2233100
>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.
Ich hab meinen Code eigentlich angepasst hab ich zumindest gedacht.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Sollte doch eigentlich gehen, oder nicht?
Michael Mayer schrieb: > mov temp3, temp1 > andi temp3, 0b00001000 > rol temp3 > andi temp3, 0b00010000 > or temp1, temp3 > andi temp1, 0b11110111 Besser so: mov temp3, temp1 andi temp3, 0b00001000 lsl temp3 andi temp1, 0b11100111 or temp1, temp3
Gast
#2234546
Hi Warum so kompliziert?
1 | |
2 | |
3 | |
MfG Spess
Danke nun läuft es auch mit meinem Programm. Gruß Michael
Dann könntest du bitte für den nächsten den genauen LCD-Typ und die korrekten Adressen spendieren ....
Also der Typ nennt sich: TC1604A-01 Zeile 1: 0x80 Zeile 2: 0xA8 Zeile 3: 0x90 Zeile 4: 0xD0 Gruß Michael
Gast
#2235485
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
Weder noch. Die Texte und Kommandos komme ja alle richtig an.
Gast
#2236162
Hi
>Weder noch. Die Texte und Kommandos komme ja alle richtig an.
Na dann begründe mal deine Zeile in nicht vorhandenem DDRAM.
MfG Spess
Mein Fehler! Muss natürlich C0 statt A8 heißen. Hab erst jetzt gesehen das ich A8 geschrieben Habe. Sorry. Gruß Michael
Gast
#2236175
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.
Also wie jedes 4x16 (soweit ich es bisher gesehen habe): Zeile 1: 0x00 Zeile 2: 0x40 Zeile 3: 0x10 Zeile 4: 0x50 (jeweils zzgl. 0x80 für das Kommando)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
