Forum: Mikrocontroller und Digitale Elektronik LCD Datenleitungen invertieren


von Michael K. (mmike)


Lesenswert?

Hallo Leute,
hab nen kleines Programmierproblem:
Ich betreibe an meinem ATMega32 ein LCD Display und habe aufgrund eines
besseren Layouts die 8 Datenleitungen (0 - 7) invertiert an die
OutputPorts des µC's gehängt. Also:

µC Port 0  -  LCD Port 7
µC Port 1  -  LCD Port 6
µC Port 2  -  LCD Port 5
µC Port 3  -  LCD Port 4
µC Port 4  -  LCD Port 3
µC Port 5  -  LCD Port 2
µC Port 6  -  LCD Port 1
µC Port 7  -  LCD Port 0

Ich will beispielsweise jetzt den Wert 0x05 (0000 0101) auf die
Datenleitungen legen. Das LCD sieht den Wert jetzt aber als (1010
0000). Wie kann ich das Umrechnen ??

Besten Dank,

Michael

von Sami Bautz (Gast)


Lesenswert?

Du musst den Wert 0xFA (1111 1010) senden.

0xFF - 0x05 = 0xFA

von Sami Bautz (Gast)


Lesenswert?

...Ahaaa! Du hast Leitungen nicht invertiert, sondern
anders belegt (umgekehrt).
Sorry für mein zu schnelles Antworten

von Benedikt (Gast)


Lesenswert?

@Sami
falsch, er meint mit invertiert nicht den Oegel, sondern die
Anschlussbelegung.

@mmike
Entweder baust du eine Tabelle ein, oder du zerlegst das ganze in Bits
und setzt es wieder zusammen z.B. mit Schieben (alter Wert nach links,
und die Bist in den neuen Wert nach recht rein), oder so:
wertneu=((wertalt&128)/128)|((wertalt&64)/32)|((wertalt&32)/8)|((wertalt 
&16)/2)|((wertalt&8)*2)|((wertalt&4)*8)|((wertalt&2)*32)|((wertalt&1)*12 
8)

von Karl H. (kbuchegg)


Lesenswert?

Oder du überdenkst nochmal dein Layout.
Bei den Steuerleitungen ist es relativ egal wo
sie hängen. Aber die 4 Datenleitungen: das ist
keine gute Idee die zu verdrehen. Aus lange Sicht
macht das nur Ärger.

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

@Karl,

"Aus lange Sicht macht das nur Ärger."

Warum sollte es ?

Ich mach das ja auch immer so. Das Layout zu optimieren spart ne Menge
Arbeit.
Software ist da viel flexiebler, da gibt es keine Ebenenbeschränkungen
und Leitungskreuzungen.

Das Spiegeln eines Bytes wurde hier schon oft erläutert, ist überhaupt
kein Problem.


Peter

von Karl H. (kbuchegg)


Lesenswert?

> Warum sollte es ?

Weil erfahrungsgemäß nach 2 Monaten kein Mensch mehr weiss,
dass diePinbelegung gespiegelt wurde. Muss er dann nochmal
an das Teil ran, frägt er sich stundenlang, warum die
Pegel an den Leitungen vermeintlich nichts mit den gesendeten
Daten zu tun haben. Alles schon erlebt.

> Ich mach das ja auch immer so.

Peter: Du bist Profi. Du weist wie man sowas so einbaut und
dokumentiert, dass man auch nach 2 Jahren sofort drüberstolpert.

von Michael K. (mmike)


Lesenswert?

Hallo Leute,

vielen Dank für die Beiträge ! Ich hab mich jetzt doch entschlossen,
daß Layout zu ändern, da es wahrscheinlich den µC zu langsam machen
wird, wenn jedes Bytes gespiegelt werden muss. Auf dem Display wird
relativ hochfrequent was angezeigt .....
@Peter: Aber da das erste Layout auch schon fertig ist werde ich Deine
Funktion auf jeden Fall mal ausprobieren.
@Karl-Heinz: Das mit dem Platinen ätzen funktioniert super! (Ich bin
der mit der "Ersten Platine zur Fertigung") Hab mir das Ätzgerät I
von Reichelt geholt und es klappt wunderbar!! Nur das Bohren nervt ein
wenig, aber da muss man durch ....

Grüße,
Michael

von Horst-Otto (Gast)


Lesenswert?

Zu langsam? Für ein Textdisplay? Noch alle Tassen im Schrank?

Ist Dir nicht klar wie scheiß langsam so ein LCD ist im Vergleich zu
nem Controller? Und wie wenig Daten dabei übertragen werden?
(rhetorische Frage, nicht Antworten).

von Michael K. (mmike)


Lesenswert?

Ist ja nicht so daß nur Gebrabbel ausgegeben wird, sondern da laufen
auch noch andere Berechnungen von Sensordaten ....

von D. W. (dave) Benutzerseite


Lesenswert?

Da du eh nur 128 ASCII-Zeichen hast und davon sicher nur die Hälfte
brauchst, wäre es eigentlich kein Problem im Sourcecode schon statt der
"echten" ASCII-Codes direkt umgewandelte zu senden.

Also anstatt für nen A 65 zu laden (0b0100 0001) lädst du gleich
(0b1000 0010). Ist nur das Problem, wenn du mal nen String senden
willst, musst du den mit Hex-Zeichen zusammenbaun. Aber ne 128/256Byte
Flash-Tabelle wäre auch kein Problem. Dann wäre man sogar freigestellt
die Datenleitungen nach beliebigem Schema zu verkabeln.

von Karl H. (kbuchegg)


Lesenswert?

> Das mit dem Platinen ätzen funktioniert super!

Ich sehe du hast Feuer gefangen.
Ist wirklich keine Hexerei.

Wie Horst-Otto schon sagte: Die Geschwindigkeit ist
sicherlich nicht das Problem. So schnell können LCD
gar nicht anzeigen wiedu sie füttern kannst.

Mir geht es auch nicht um die Steuerleitungen. An welchem
Pin die E, R/W oder Busy anschliesst spielt so gut wie keine
Rolle. Mir geht es um die 4 Datenleitungen (du benutzt
doch den 4-Bit Mode?).

Die 4 Leitungen zu spiegeln ist doch wirklich kein Problem:


 Port 0   -----------------> D3

 Port 1   -----------------> D2

 Port 2   -----------------> D1

 Port 3   -----------------> D0

so hast du es zur Zeit. Wenn du die Leiterbahnführung
so machst:
1
                       
2
  Port 0  -------------+  D3 <-----+
3
                       +---------+ |
4
  Port 1  ---------+      D2 <-+ | |
5
                   |           | | |
6
  Port 2  -------+ +----> D1   | | |
7
                 +-------------+ | |
8
  Port 3  -----+          D0 <---+ |
9
               +-------------------+
dann ist jeweils der richige Portpin mit dem richtigen
Datenpin am LCD verbunden. Und braucht auch nocht sooo
viel Mehrplatz.

: Bearbeitet durch User
von Michael K. (mmike)


Lesenswert?

> Mir geht es auch nicht um die Steuerleitungen. An welchem
> Pin die E, R/W oder Busy anschliesst spielt so gut wie keine
> Rolle. Mir geht es um die 4 Datenleitungen (du benutzt
> doch den 4-Bit Mode?).
Leider nicht. Ich bin im 8 Bit Mode (siehe 1.Beitrag). Aber das neue
PCB ist schon fertig und geht morgen abend ins Bad! Muss ja noch brav
üben! Aber so langsam stellt sich schon eine Ätzroutine ein. Ab und an
werden die Ergebnisse mal ein wenig unscharf und dann merkt man, daß
die Platine nicht sauber auf der Platte aufgelegen hat, weil an der
Seite noch der Grat vom zusammensägen abstand.... Naja, Übung macht
halt doch den Meister. Ist schon lustig, was man auf einmal alles
"basteln" nur weil's kein großer Aufwand mehr ist .... aber im
Endeffekt verbringt man mehr Zeit dabei, denn erst eaglen und dann
drucken und belichten und und und ... dann bohren usw. Da ist man auf
ner Lochraster 5 mal so schnell, aber es sieht halt einfach nicht so
professionell aus und größer ists auch....
Sobald ich endlich mal eine Cam finde werde ich mal nen paar Bilder
posten und vielleicht mich auch mal an SMD ranwagen .....

Beste Grüße,
Michael

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.