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?
Wie hast du den Kontrast eingestellt???? Dachte auch schon mein LCD sei kapput, aber dabei war das Potentiometer für den Kontrast defekt.
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.
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.
> 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?
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.
> 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).
Vo auf Masse ist der Fehler. Pack nen Poti rein und stell den Kontrast richtig ein.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.