PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD mit AT892051



semicolon
20.10.2005, 10:29
Ich weiss nicht mehr weiter. Mei LCD tut einfach keinen Wank sobald ich den AT892051 einschalte. Immer nur die erste Zeile ist zu sehen. Irgendetwas stimmt nicht.

uC: At892051
Quarz: 32.4kHz

Code:

cseg at 0;

ENABLE EQU P3.7;
RS EQU P3.5;
RW EQU P3.4;
DATEN EQU P1;

Start: call lcd_init;
mov a, #74h; ;buchstabe ausgeben
call LCD_send_data
stop: jmp stop

lcd_init: push ACC;
mov a, #10;
call LCD_wait
clr RS
clr RW
clr ENABLE
mov a, #30h ;Interface auf 8-bit setzen
call LCD_send_comandos
mov a, #30h ;Interface auf 8-bit setzen
call LCD_send_comandos
mov a, #30h ;Interface auf 8-bit setzen
call LCD_send_comandos
mov a, #30h ;Interface auf 8-bit setzen
call LCD_send_comandos
mov a, #38h ;8-bit Modus, 2 Zeilen, 5*8 Fonts
call LCD_send_comandos
mov a, #00001111b ;display on, courser on, blink on
call LCD_send_comandos
mov a, #1h ;display clear
call LCD_send_comandos
pop ACC
ret

LCD_wait: push ACC

F04_wait: push ACC;
mov a, #255
F04_wait2:
nop
nop
nop
nop
nop
djnz ACC, F04_wait2
pop ACC
djnz ACC, F04_wait
pop ACC
ret

LCD_send_comandos:
clr RW
clr RS
jmp LCD_send

LCD_send_data:
clr RW
setb RS

LCD_send: mov Daten, a
setb ENABLE
push ACC
mov a, #2
call LCD_wait
pop ACC
clr ENABLE
ret
END

Sandro
20.10.2005, 20:10
Ich konnte keinen Fehler in deinem Programm finden.

Auf dieser (http://www.erikbuchmann.de/) Seite findest du auch einen
Codegenerator für deinen Controller.
Lass dir davon einen Code erzeugen und teste das LCD. Wenn es dann
immer noch nicht geht hast du ein Hardwareproblem.

semicolon
21.10.2005, 12:02
Ok versuche mal mit einem generierten Code von dieser Seite das LCD zu testen. Schade das es nur ein 4-Bit anschluss ist, kann es aber dennoch testen. Mal sehen was passiert.

Danke für deine Hilfe. Wenn das nicht klappen sollte weiss ich nicht mehr weiter. Wie oder wo könnte das Hardwareproblem sein?

Danke nochmals

Sandro
21.10.2005, 13:44
-Der Controller könnte nicht anlaufen.
Bist du sicher das das Programm ausgeführt wird?
Schließe noch eine LED an und komplementiere sie an
Stellen in deinem Programm die du prüfen möchtest.

-Die Verbindungen könnten fehlerhaft sein.
Kalte Lötstelle? Sind die Ports richtig angeschossen? Port1 verdreht?
Ich prüfe meine Hardware immer mit einem Programm das die Portpins
einzeln auf low zieht. Man braucht dann nur noch messen ob das Signal
auch an der richtigen Stelle ankommt.

Benutzt du wirklich einen 32.4kHz Quarz?
Das Enable-Signal muß nicht so lang sein. Ein

setb Enable
clr Enable

reicht auch.

Ps.
Ich verstehe nicht was du gegen den 4-bit Bus einzuwenden hast.
Ein 8-bit Anschluß macht eigentlich nur Sinn wenn das LCD in den
Controllerbus integriert wird.

semicolon
21.10.2005, 18:44
Ah, eigentlich habe ich nichts gegen 4-Bit. War nur so ein Gedanke. Mit den Pins bin ich mir sicher. Habe das extra noch mals geprüft. Schaue aber nochmals nach.

Teste mal meine Port mit einer LED. Schauen ob auch ein Hight bei jedem Port kommt. Ist irgendwie schräg.

Wenn ich Spannung ans LCD lege, erscheinen in der ersten Zeile die 16 Quadrate. Dann passiert nichts mehr. Ist wirklich komisch.

Tja, versuche mal meine Hardware zu überprüfen.

Ärgere mich schon seit fast zwei Tagen an dem rum.