Forum: Mikrocontroller und Digitale Elektronik LCD falsch herum


von Hallo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, ich habe die Pins am LCD vertauscht. So dass es nicht in der 
Reihenfolge PA0-PA7 ist sondern PA7-PA0. Wie kann ich dies nun im 
Programm tauschen?

von B e r n d W. (smiley46)


Lesenswert?

Falls es sich um ein 2x16 Display handelt:
Eine Funktion in Assembler schreiben, welche das Data-Byte nach rechts 
ins Carry schiebt und von dort nach links in ein neues Byte. Dadurch 
werden high und low vertauscht.

Falls es sich um ein Grafik-Display handelt:
Nimm Fädeldraht un schließ es richtig an.

von Sauger (Gast)


Lesenswert?

Moin,

indem du vor dem Zugriff auf den Port die Reihenfolge drehst.

Auf die schnelle:
1
/*************************************************************************
2
 *
3
 *  Name         : T_Byte
4
 *
5
 *  Beschreibung : Bit's in einem Byte umdrehen 0->7 / 7->0
6
 *
7
 *************************************************************************/
8
uint8_t T_Byte( uint8_t Byte )
9
{
10
11
 uint8_t Ret;
12
13
 Ret  = Byte & 0b10000000 ? 0b00000001 : 0;
14
 Ret |= Byte & 0b01000000 ? 0b00000010 : 0;
15
 Ret |= Byte & 0b00100000 ? 0b00000100 : 0;
16
 Ret |= Byte & 0b00010000 ? 0b00001000 : 0;
17
 Ret |= Byte & 0b00001000 ? 0b00010000 : 0;
18
 Ret |= Byte & 0b00000100 ? 0b00100000 : 0;
19
 Ret |= Byte & 0b00000010 ? 0b01000000 : 0;
20
 Ret |= Byte & 0b00000001 ? 0b10000000 : 0;
21
22
 return Ret;
23
24
}
... nicht schön, aber selten :-)

MfG

von Detlev T. (detlevt)


Lesenswert?

Schneller: Tabelle mit 256 Bytes im Flash mit den "getauschten" Werten 
anlegen und das in der Routine einbauen, die die Bytes ausgibt.

von Knallo (Gast)


Lesenswert?

Sauger schrieb:
> indem du vor dem Zugriff auf den Port die Reihenfolge drehst.

Ich programmiere aber in BASCOM :-)

von holger (Gast)


Lesenswert?

Die Hintergrundbeleuchtung ist bestimmt schön hell;)

von Matthias L. (Gast)


Lesenswert?

Einfach das hier:

>Hallo, ich habe die Pins am LCD vertauscht.

in Ordnung bringen.


>Die Hintergrundbeleuchtung ist bestimmt schön hell;)

übrigens wird die RS232 auch nicht funktionieren:
Der IC2 hat keine Betriebsspannung.

von spess53 (Gast)


Lesenswert?

Hi

Gibt einen elegante Methode, allerdengs in C:

Beitrag "Re: Inline Assembler- Bits spiegeln"

MfG Spess

von Hallo (Gast)


Lesenswert?

Es handelt sich um ein Grafik LCD 128x64 Ks0108 Controller

von hp-freund (Gast)


Lesenswert?

Grafik? Dann kann ich nur B e r n d W. zustimmen. Sonst hast Du eine 
prima Fehlerquelle für die Zukunft.

von Sauger (Gast)


Lesenswert?

Moin,

Hallo schrieb:
> Es handelt sich um ein Grafik LCD 128x64 Ks0108 Controller

Vorschläge gab es ja genug.
Steckst du in deinen C-Buch noch im Editorial :-)

hp-freund schrieb:
> Sonst hast Du eine prima Fehlerquelle für die Zukunft.

Ich möchte nicht dumm sterben, gibt es eine Erklärung?

MfG

von Tom M. (Gast)


Lesenswert?

hp-freund schrieb:
> Grafik? Dann kann ich nur B e r n d W. zustimmen. Sonst hast Du eine
> prima Fehlerquelle für die Zukunft.

Nö. Einfach die "Übersetzung" der Pins konsequent umsetzen und dann 
passt's immer.

von René B. (reneb)


Lesenswert?

holger schrieb:
>Die Hintergrundbeleuchtung ist bestimmt schön hell
Normalerweise hat die Hintergrundbeleuchtung keinen eingebauten 
Widerstand zu Strombegrenzung.
=> Bitte prüfe nochmal A/K der Hintergrund-LED und verpasse ihr einen 
genügend großen Vorwiderstand.

lippy schrieb:
>Der IC2 hat keine Betriebsspannung.
Der Max232 hat 16 Pins. Im Plan sind 14 sichtbar und GND/VCC sind schon 
als Potentiale in der Library definiert. Wenn die beschaltet sind hat er 
Saft. V+/V- sind die Speicherkondensatoren.
=> Dein IC2 ist richtig beschaltet

Hallo schrieb:
>Es handelt sich um ein Grafik LCD 128x64 Ks0108 Controller.
>Ich programmiere aber in BASCOM.
Beides schlechte Voraussetzungen für die Nutzung eines Grafikdisplays, 
weil beides die Darstellung auf dem kleinen mega32 unnötig verlangsamt. 
Auch wenn es nur ein s/w-Display ist, dauert das sehr sehr lange.
=>Wenn du es unbedingt in Bascom machen willst, dann kreuze die Strippen 
manuell per Draht. Die Pins am mega32 und am Display sind ja weit genug 
auseinander.

von hp-freund (Gast)


Lesenswert?

Und bitte die LCD read Funktion nicht vergessen...

von Matthias L. (Gast)


Lesenswert?

>GND/VCC sind schon  als Potentiale in der Library definiert.

Falls alle Potentiale exakt identisch heissen. Darauf habe ich mich noch 
nie verlassen. Zumal diese Pwr-Pin-Paar einen eigenen Block-Cs bedarf. 
Wenn ich den male, kann ich die IC-Versorgung dazu klicken.

Der Schaltplan-übersicht und -vollständigkeit halber !

von Sauger (Gast)


Lesenswert?

Moin,

Hallo schrieb:
> Hallo, ich habe die Pins am LCD vertauscht. So dass es nicht in der
> Reihenfolge PA0-PA7 ist sondern PA7-PA0. Wie kann ich dies nun im
> Programm tauschen?

... und postete die C-Quellen

Knallo schrieb:
> Sauger schrieb:
>> indem du vor dem Zugriff auf den Port die Reihenfolge drehst.
>
> Ich programmiere aber in BASCOM :-)

René B. schrieb:
> Hallo schrieb:
>>Es handelt sich um ein Grafik LCD 128x64 Ks0108 Controller.
>>Ich programmiere aber in BASCOM.

... hat Hallo nicht geschrieben, beachte die Namen

Sauger schrieb:
> hp-freund schrieb:
>> Sonst hast Du eine prima Fehlerquelle für die Zukunft.
> Ich möchte nicht dumm sterben, gibt es eine Erklärung?

... warte noch :-)

hp-freund schrieb:
> Und bitte die LCD read Funktion nicht vergessen...

jep. Wo ist eigentlich "Hallo" geblieben?

MfG

von Karl H. (kbuchegg)


Lesenswert?

Tom M. schrieb:
> hp-freund schrieb:
>> Grafik? Dann kann ich nur B e r n d W. zustimmen. Sonst hast Du eine
>> prima Fehlerquelle für die Zukunft.
>
> Nö. Einfach die "Übersetzung" der Pins konsequent umsetzen und dann
> passt's immer.

In einer idealen Welt würde ich dir zustimmen.
Praktisch gesehen gebe ich aber eher hp_freund recht. Sowas sind 
typische Fallen, die man sich selbst für die Zukunft stellt.

Nicht lange fackeln. Das lässt sich mit einem scharfen Messer und etwas 
Fädeldraht in 20 Minuten beheben und dann hat man (auch in der Zukunft) 
seine Ruhe. Und das nächste mal passt man eben besser auf, was man da im 
Schaltplan hinmalt.

von M. K. (sylaina)


Lesenswert?

Karl Heinz Buchegger schrieb:
> In einer idealen Welt würde ich dir zustimmen.
> Praktisch gesehen gebe ich aber eher hp_freund recht. Sowas sind
> typische Fallen, die man sich selbst für die Zukunft stellt.

Seh ich auch so. In nem halben Jahr schaut man nochmal in das Projekt 
rein, kopiert sich vielleicht was in das neue Projekt bzw. will nur mal 
schaun wie man ein Problem damals löste und fragt sich dann warums nicht 
klappt. Kann Tage dauern bis man merkt dass das Byte verkehrt herum ist 
und nochmal Tage dauern bis man wieder raus hat warum man das damals so 
löste. Lieber gleich richtig machen ;)

von Hallo (Gast)


Lesenswert?

So, habe die Pins jetzt mit Fädeldraht vertauscht. Jedoch wird das 
Display trotzdem nicht Initialisiert, habe es mit dem oben geposteten 
C-Code und auch in Bascom Probiert, beides mal nichts. Für die 
Hintergrundbeleuchtung ist am LCD ein Vorwiderstand eingelötet!

von holger (Gast)


Lesenswert?

>Jedoch wird das Display trotzdem nicht Initialisiert,

Wie hast du das festgestellt? Was siehst du?
Dreh mal am Kontrast. Ändert sich da was?

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.