PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit dem LCD über AT892051



semicolon
19.10.2005, 18:26
Ich habe jetzt schon vieles ausprobiert und auch mittels eurer Hilfe vom letzten Mal. Krieg es aber nicht hin auch nur eine Buchstaben auf dem Display anzuzeigen. Irgendwie bekomme ich das nicht hin. Liegt eventuell an der Initialisierung. Vielleicht kann mir jemand helfen.

;Variabeln bezeichnen
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;
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
call LCD_send_comandos
mov a, #30h
call LCD_send_comandos
mov a, #30h
call LCD_send_comandos
mov a, #30h
call LCD_send_comandos
mov a, #00001111b
call LCD_send_comandos
mov a, #1h
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

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

So sieht das LCD aus, wenn ich die Spannung anlege und der uC eigentlich laufen sollte

Cathrel
22.10.2005, 21:29
Das ein schwarzer Balken erscheint ist schon mal gut ;-).

Ich nehme jetzt mal an,da dass Display über 14 Leitungen verbunden ist, dass es einen HD44780 oder kompatiblen Baustein drauf hat.
Ich weiss zwar nicht mit welchem Controller du arbeitest (AVR scheint es nicht zu sein), aber ich würde als erstes mal überprüfen ob die Wartezeiten zwischen den einzelnen Befehlen stimmen.