www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Datenleitungen invertieren


Autor: Michael K. (mmike)
Datum:

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

Autor: Sami Bautz (Gast)
Datum:

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

0xFF - 0x05 = 0xFA

Autor: Sami Bautz (Gast)
Datum:

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

Autor: Benedikt (Gast)
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

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

Autor: Michael K. (mmike)
Datum:

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

Autor: Horst-Otto (Gast)
Datum:

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

Autor: Michael K. (mmike)
Datum:

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

Autor: D. W. (dave) Benutzerseite
Datum:

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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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:
                       
  Port 0  -------------+  D3 <-----+
                       +---------+ |
  Port 1  ---------+      D2 <-+ | |
                   |           | | |
  Port 2  -------+ +----> D1   | | |
                 +-------------+ | |
  Port 3  -----+          D0 <---+ |
               +-------------------+
dann ist jeweils der richige Portpin mit dem richtigen
Datenpin am LCD verbunden. Und braucht auch nocht sooo
viel Mehrplatz.

: Bearbeitet durch Moderator
Autor: Michael K. (mmike)
Datum:

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

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.