Forum: Mikrocontroller und Digitale Elektronik LCD zeigt nur Balken an, weis nicht mehr weiter;)


von Marius (Gast)


Lesenswert?

Hallo zusammen

Ich nutze:

Atmega32 @ 16Mhz
LCD YL162-90

Mein Code sieht so aus:

$regfile = "m32def.dat"
 $framesize = 32
 $swstack = 32
 $hwstack = 32
 $crystal = 16000000
 $baud = 9600

 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , 
Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0

 Do
 Lcd "Hallo"
 Loop
 End

Aus irgendeinem Grund seh ich nur die schwarzen Balken, aber keinen 
Text:
Pin 1 ist an GND, Pin 2 an +5V, Pin 3 (Kontrastspannung) über ein Poti 
an -5V.
Ich habe schonmal ein LCD dieses Typs angeschlossen, damals hats 
geklappt.
Übrigens: JTAG Interface an Port C ist auch deaktiviert.

Habt ihr Ideen an was es liegen könnte?

Liebe Grüsse

von holger (Gast)


Lesenswert?

>Pin 1 ist an GND, Pin 2 an +5V, Pin 3 (Kontrastspannung) über ein Poti
>an -5V.

Braucht das die -5V? Dreh mal am Kontrast.

>Ich habe schonmal ein LCD dieses Typs angeschlossen, damals hats
>geklappt.
>Habt ihr Ideen an was es liegen könnte?

Falsch angeschlossen würde ich sagen. Oder ein kurzer
irgendwo, oder eine Leitung vergessen, oder.......

von Marius (Gast)


Lesenswert?

>Braucht das die -5V? Dreh mal am Kontrast.

Am Poti hab ich schon alles ausprobiert, jetzt scheint es mir gut 
eingestellt, so das man gerade noch ein bisschen die feldchen sieht, 
aber natürlich probier ich immer wieder alle stellungen aus, wenn ich 
was verändere, in der Hoffnung das es jetzt klappen sollte;)

>Falsch angeschlossen würde ich sagen. Oder ein kurzer
>irgendwo, oder eine Leitung vergessen, oder.......

Hm eigentlich nicht, hab mit dem Multimeter schon alles durchgemessen, 
kommt alles da an wos soll und es sind auch keine Leitungen 
kurzgeschlossen.

Noch ne Idee:
Ich arbeite mit Kupferlackdraht, der kommt auf der Schaltung natürlich 
nah zu anderen Leitungen. Kann es sein dass sich die Signale da induktiv 
irgendwie überlagern oder sowas?
Habe das Problem aber sonst nirgends, die RS232 Verbindung 
beispielsweise klappt wunderbar

von as_ (Gast)


Lesenswert?

Wär nur eine Idee, aber:

Funktioniert das Einstellen des Kontrastes über das Poti? Wenn nicht: 
kann es sein, dass du die Reihenfolge der Pins komplett vertauscht hast? 
Ist mir mal passiert, zufälligerweise haben dann auch die 
Spannungsversorgung des Controllers und die der Hintergrundbeleuchtung 
gepasst, alles dazwischen natürlich nicht.

mfg

von as_ (Gast)


Lesenswert?

Ok, Poti geht, ich ziehe zurück ;)

mfg

von Marius (Gast)


Lesenswert?

@as_ hab ich vorher auch gerade dran gedacht, doch zur Sicherheit 
nochmal im Datenblatt nachgeguckt, es stimmt so wies jetzt ist

Hm, einfach ein schlechtes LCD erwischt?

von holger (Gast)


Lesenswert?

>Hm, einfach ein schlechtes LCD erwischt?

RW hast du an Masse gelegt?

von as_ (Gast)


Lesenswert?

Noch ein Ansatz: du verwendest 4 Datenleitungen --> 4 bit Modus? Dann 
fehlt laut http://www.rn-wissen.de/index.php/Bascom_und_LCD's ein Config 
Lcdbus = 4

Evtl hilft's ja.

mfg

von AVRuser (Gast)


Lesenswert?

> Dann fehlt (...) ein 'Config Lcdbus = 4'

Da das Display im Pin-Modus verwendet wird ('Config LCDpin = Pin, ...'), 
muss das eigentlich nicht dazu; der BASCOM Pin-Modus kann nur 4bit.

Aber Probieren schadet nicht ...

von Marius (Gast)


Lesenswert?

>RW hast du an Masse gelegt?

jetzt schon, gebracht hats leider nichts

>Config Lcdbus = 4 , Evtl hilft's ja.

leider nein

von holger (Gast)


Lesenswert?

>>RW hast du an Masse gelegt?

>jetzt schon, gebracht hats leider nichts

Wieso jetzt erst? Ich denk mir meinen Teil und mach mich
dann mal vom Acker.

von Paul Baumann (Gast)


Lesenswert?

Mach es mal anders herum:
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 ,
Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0

Config Lcd = 16 * 2

MfG Paul

von Tobi W. (todward)


Lesenswert?

Wenn du mit bascom arbeitest kannst du über
>>Options -> Compiler -> LCD
Die pins und den Bus-Mode einstellen. bei mir wollte es erst auch nciht 
richtig klappen bis ich da die pins wie im Code eingestellt hatte und 
den Mode aus 4-Bit umgestellt hatte.

Versuch das mal. Ansonsten hast du vll noch ein anderes LCD um auszu 
schließen das es kaputt ist?
Leider steht im datenblatt nicht (was bei pollin drin ist) welches Level 
die LCD Spannung haben muss/soll. Versuch mal die Kontrastspannung mit 
dem Poti nicht an -5V sondern an +5V anzuschließen.

Gruß
Tobi

von Samuel C. (dragonsam)


Lesenswert?

Probier es mal, indem du es mit "INITLCD" initialisierst und dann erst 
den Text schreibst.

von Marius (Gast)


Lesenswert?

>Mach es mal anders herum:

hab ich probiert, bringt nix

>Die pins und den Bus-Mode einstellen.

leider erfolglos

>Versuch das mal. Ansonsten hast du vll noch ein anderes LCD um auszu
>schließen das es kaputt ist?

Ja ich hab gerade ein anderes angeschlossen -> selbes ergebniss: Balken 
aber kein Text

>Versuch mal die Kontrastspannung mit
>dem Poti nicht an -5V sondern an +5V anzuschließen.

Obwohl ich bei den anderen des selben Typs immer -5V am Poti hatte werd 
ich das mal versuchen und von den Ergebnissen berichten

>Probier es mal, indem du es mit "INITLCD" initialisierst und dann erst
>den Text schreibst.

hat leider auch nix gebracht

man man man, wo steh ich (wir?) auf dem Schlauch?

von Tobi W. (todward)


Lesenswert?

Marius schrieb:
> man man man, wo steh ich (wir?) auf dem Schlauch?
Wenn wir das wüssten wären wir weiter...

To W. schrieb:
> Wenn du mit bascom arbeitest kannst du über
>>>Options -> Compiler -> LCD
> Die pins und den Bus-Mode einstellen. bei mir wollte es erst auch nciht
> richtig klappen bis ich da die pins wie im Code eingestellt hatte und
> den Mode aus 4-Bit umgestellt hatte.
Haste das schon probiert?

Wenn ich mir den Code mal so ansehen würde ich da etwas ändern...

Marius schrieb:
> Mein Code sieht so aus:
>
> $regfile = "m32def.dat"
>  $framesize = 32
>  $swstack = 32
>  $hwstack = 32
>  $crystal = 16000000
>  $baud = 9600
>
>  Config Lcd = 16 * 2
>  Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 ,
> Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0
>
>  Do
>  Lcd "Hallo"
>  Loop
>  End

ich würde die
1
LCD "Hallo"
 außerhalb der
1
 Do ... Loop
 schreiben. Also:
1
LCD "Hallo"
2
Do
3
Toggle LED
4
...
5
Loop

Gruß
Tobi

PS.: Aber du weisst das der AVR läuft?

von Samuel C. (dragonsam)


Lesenswert?

Probiers mal damit:
1
$regfile = "m32def.dat"
2
$framesize = 32
3
$swstack = 32
4
$hwstack = 32
5
$crystal = 16000000
6
$baud = 9600
7
8
Config Lcd = 16 * 2
9
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 ,
10
Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0
11
12
Locate 1,1
13
Lcd "Hallo"
14
15
Do
16
Loop
17
End

Ha erstens den Startpunkt des Strings gesetzt und zweitens das ganze mal 
aus der Schleife genommen. Ich weiß nicht, wie so ein Display auf 
derartige Datenfluten reagiert.

MfG Sam

von Karl H. (kbuchegg)


Lesenswert?

Samuel C. schrieb:

> Ha erstens den Startpunkt des Strings gesetzt und zweitens das ganze mal
> aus der Schleife genommen. Ich weiß nicht, wie so ein Display auf
> derartige Datenfluten reagiert.

Das ist dem ziemlich egal.
Du könntest auch einfach nur LcdInit benutzen und nachsehen, ob die 
Balken verschwinden.

Zudem ist es ganz gut, bei ersten Tests Minimalbeispiele zu benutzen. In 
deinem Programm kommt keine UART vor, also sollte die erst mal raus.

von Daniel (Gast)


Lesenswert?

An PortC liegt auch JTAG.
Hast du das deaktiviert?

von Tobi W. (todward)


Lesenswert?

Daniel laut seiner aussage het er es deaktiviert...
Erstmal abwarten was von ihm kommt

Gruß
Tobi

von Marius (Gast)


Lesenswert?

To W. schrieb:
>> Die pins und den Bus-Mode einstellen. bei mir wollte es erst auch nciht
>> richtig klappen bis ich da die pins wie im Code eingestellt hatte und
>> den Mode aus 4-Bit umgestellt hatte.
> Haste das schon probiert?

Ja hab ich schon so eingestellt - ohne Ergebnis

To W. schrieb:
> ich würde dieLCD "Hallo" außerhalb der Do ... Loop schreiben.

hab ich versucht - gebracht hats nix

To W. schrieb:
> PS.: Aber du weisst das der AVR läuft?

Ja, hab Pin PD6 so programmiert, dass er al 2 Sekunden ein/ausschaltet - 
das funktioniert!

Karl heinz Buchegger schrieb:
> LcdInit
du meinst sicher initlcd?

Hab in meinem Programm die Baudeinstellung rausgenommen und nur initlcd 
als Quelltext (also natürlich noch die configsachen und so gelassen!) 
die balken bleiben

To W. schrieb:
> Daniel laut seiner aussage het er es deaktiviert...

genau, hab ich gemacht

Also, ich mache jetzt mal alle Verbindungen neu - dann schauen wir 
nochmal ob das Problem weiterbesteht;)

Bis später

von Fragender (Gast)


Lesenswert?

Samuel C. schrieb:
> Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 ,
> Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0

Darf man die 4 Datenleitungen so am Port verteilen?

oder wäre es beser so:

Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 ,
> Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0

von Tobi W. (todward)


Lesenswert?

Fragender schrieb:
> Samuel C. schrieb:
>> Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 ,
>> Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0
>
> Darf man die 4 Datenleitungen so am Port verteilen?
>
> oder wäre es beser so:
>
> Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 ,
>> Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Das ist völlig egal... das wird dann passend compiliert!

Marius schrieb:
> To W. schrieb:
>> PS.: Aber du weisst das der AVR läuft?
>
> Ja, hab Pin PD6 so programmiert, dass er al 2 Sekunden ein/ausschaltet -
> das funktioniert!
Das ist aber nicht im Code... kannste du vll. mal den ganzen Code 
posten? Der fehler muss ja nicht unbedingt in dem Teil iegen den du 
gepostet hast.

Gruß
Tobi

von Marius (Gast)


Lesenswert?

$regfile = "m32def.dat"
 $framesize = 32
 $swstack = 32
 $hwstack = 32
 $crystal = 1600000



 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , 
Db7 = Portc.1 , E = Portc.2 , Rs = Portc.0
 Config Lcd = 16 * 2
 Config Portd.6 = Output

initlcd

End

von Tobi W. (todward)


Lesenswert?

Naja das ist aber noch immer nicht der ganze code... wo ist der teil der 
die led zum blinken bringt bzw. den port togglet?

Noch ein Kleiner tip:
Bei dem code den du gepostet hast, ist keine endlos schleife... somit 
fällt der mega in einen undefinierten zustand zurück, was eher fürs LCd 
ist...

Gruß
Tobi

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.