Forum: Mikrocontroller und Digitale Elektronik LCD Jedes Zeichen ein kästchen


von Markus (Gast)


Lesenswert?

Hallo!

Ich habe in Display mit dem KS0066 Controller und wenn ich ein zeichen 
ausgebe kommt immer nur ein kästchen. Ich betreibe das ganze an einem 
Atmega8. Meine Vermutung ist ein fehler in der initialisierung. Kanns 
aber nicht bestimmt sagen.
Hatte jemand schonmal diesen fehler?

von Fäbu (Gast)


Lesenswert?

Wie hast du den Kontrast eingestellt???? Dachte auch schon mein LCD sei 
kapput, aber dabei war das Potentiometer für den Kontrast defekt.

von Markus (Gast)


Lesenswert?

ich verwende kein poti.
Vss V0 und R/W liegen auf masse.
jedesmal wenn ich die platine einschalte ändert es sich ein bisschen. 
z.B. fehlen 3 pixel von den kästchen.

von Gast (Gast)


Lesenswert?

Code? Schaltplan?

von Fäbu (Gast)


Lesenswert?

hmmm,
hast du eine selbsgeschriebene Initialisierung des LCD's oder hast du 
sie runtergeladen??? Kontrollier noch mal genaustens die Anschlüsse das 
LCD zum uC. Könnte sein das eine Datenleitung oder so vertauscht ist, 
oder die Software noch auf die richtigen I/O Pins eingestellt werden 
muss.

von Dietmar E (Gast)


Lesenswert?

> Meine Vermutung ist ein fehler in der initialisierung. Kanns
aber nicht bestimmt sagen.

Kein Sourceocode. Ist die lustige Ratestunde zum Testen unsere 
Gedankenübertragungs-Kräfte hiermit eröffnet?

von Markus (Gast)


Lesenswert?

1
powerupwait:
2
  rcall  delay5ms
3
  dec  temp3
4
  brne  powerupwait
5
  ldi  temp1,0b00000010  ; muss 2mal hintereinander gesendet
6
  out  LCD_PORT,temp1  ; werden zur Initialisierung
7
  rcall  lcd_enable  ; 1
8
  rcall  delay5ms
9
  rcall  lcd_enable  ; 2
10
  rcall  delay5ms
11
  ldi  temp1,0b00001100  ; n f einstellen
12
  out  LCD_PORT,temp1
13
  rcall  lcd_enable
14
  rcall  delay5ms
15
  rcall  delay5ms
16
  ldi  temp1,0b00110000  ; DCB einstellen
17
  rcall  lcd_command
18
  rcall  delay5ms
19
20
  ldi  temp1,0b00010000  ; display clear
21
  rcall  lcd_command
22
  ldi  temp1,0b01100000  ; inc und entrie shift
23
  rcall  lcd_command
24
  ret

Wenn ich die initialisierung so mache wie oben (nach datenblatt) dann 
kommt gar nix mehr. mit dem init aus dem tutorial kommen wie gesagt 
anstatt zeichen kästchen.

von Markus (Gast)


Lesenswert?


von Dietmar E (Gast)


Lesenswert?

> powerupwait:
>  rcall  delay5ms

Wenn ich meinem EA-LCD mit 5ms kommen würde, bliebe es auch leer. Ich 
nehme 500ms, damit es immer zuverlässig startet (langsam startendes 
Power Supply).

von Guido Körber (Gast)


Lesenswert?

Vo auf Masse ist der Fehler. Pack nen Poti rein und stell den Kontrast 
richtig ein.

von yalu (Gast)


Lesenswert?

Markus schrieb:
> ich verwende kein poti. Vss V0 und R/W liegen auf masse.

Guido Körber schrieb:
> Pack nen Poti rein und stell den Kontrast richtig ein.

So ist es. V0 muss meist in der Gegend von 1 V liegen, deutlich
darüber wird alles weiß, deutlich darunter alles schwarz.

von Gerhard (Gast)


Lesenswert?

Bei meinem letzten Versuch, die LCD Routinen aus dem GCC Tutorial zu 
benutzen hatte ich das gleiche Problem. Konnte die Zeichen nur sehen, 
wenn ich mit dem Poti den Kontrast definiert einstellte und den Pin 
nicht direkt auf Masse legte. Da aber mit einem älteren 
Assembler-Programm alles korrekt funktionierte (ohne Kontrastregelung), 
war die Hardware in Ordnung.

Im Endeffekt musste ich dann in lcd_init nach den Zeilen:
1
   // 4 Bit Modus aktivieren 
2
   LCD_PORT &= 0xF0;
3
   LCD_PORT |= 0x02;
4
   lcd_enable();

noch ein
1
   _delay_ms(1);

einfügen. Danach ging es mit dem C-Programm auch ohne Kontrastregelung. 
(Habe danach das zusätzliche Delay im Tutorial eingefügt.)

Kann also durchaus an deiner Initialisierung liegen.

Gerhard

von Guido Körber (Gast)


Lesenswert?

Wenn die Spannung am Vo nicht stimmt ist es egal was man für Befehle an 
das Display schickt, es ist nichts zu sehen...

Grundzustand sollte sein, dass auf dem nicht initialisierten Display 
leicht graue Felder zu sehen sind, nicht satt schwarz.

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.