Gast
#12941
Hallo zusammen
Ich habe eine 2x16 LCD und programmiere mit Assembler 4 Bit
Interface(Atmega163 8MHz). Kann 1.Zeile ganz links und mitte anzeigen
lassen. Aber 2.Zeile kriege ich nichts, obwohl ich für 4 bit Interface
und 2 Zeilen Display schon definiere.
und für 2.Zeilebefehl ist
ldi temp, 0b11000000 ;2. Zeile 1pos.
rcall COMMAND_DISPLAY
LCD_INIT:
ldi temp,500 ; Wait at least 15msec after (200)
D1: ; powerup before writing
rcall WAIT_2msec ; to display
dec temp
brne D1
ldi temp, 00001100 ; System set 0b00010011
out PORTD,temp
nop
nop
nop
nop
sbi PORTD, EN
nop
nop
nop
nop
cbi PORTD,EN ; EN low to clock in data
;
rcall WAIT_2msec ; Wait 4 msec
rcall WAIT_2msec
;
ldi temp,0b00001100 ; System set
out PORTD,temp
nop
nop
nop
nop
sbi PORTD, EN
nop
nop
nop
nop
cbi PORTD,EN ; EN low to clock in data
rcall WAIT_2msec ; wait at least 100usec
rcall WAIT_2msec ; wait at least 100usec
ldi temp,0b00001000 ;System set
out PORTD,temp
nop
nop
nop
nop
sbi PORTD, EN
nop
nop
nop
nop
cbi PORTD,EN ; EN low to clock in data
;
rcall WAIT_2msec ; (2 msec)
ldi temp,0b00001000 ;System set 4 bit Display
out PORTD, temp
nop
nop
nop
nop
sbi PORTD, EN
nop
nop
nop
nop
cbi PORTD, EN
rcall WAIT_2msec
ldi temp,0b00101000 ; Function set
; 4 bit mode, 2 lines 5X7 pixels
rcall COMMAND_DISPLAY ;write to display
ldi temp,0b00001000 ;Display off, cursor off
; blink off
rcall COMMAND_DISPLAY
;
ldi temp,0b00000110 ; Entry mode set
; Increment RAM, dont shift
display
rcall COMMAND_DISPLAY
;
ldi temp,0b00001100 ; Display on, cursor/blink off
rcall COMMAND_DISPLAY
ret
Was ich hier falsch gemacht habe.
Vielen Dank für Eure Hilfe
Baby