-
-
RN-Premium User
Begeisterter Techniker
Arbeitest du mit dem 8Bit interface oder 4bit?
Ich hatte bei Displays ein ähnliches Problem, schlicht mein Timing war zu schnell.
Prinzipell meine Initalisierungssequenz
lcdinit:
push r18
push r16
ldi r18,50
powerupwait:
rcall delay5ms
dec r18
brne powerupwait
ldi r16, 0b00110000 ;muss 3mal hintereinander gesendet
rcall setbyte ; Setzt das Byte auf den Port (gekapselt, weil ich ein schieberegister dazwischen habe zum pins sparen)
rcall lcd_enable ;1
rcall delay5ms
rcall lcd_enable ;2
rcall delay5ms
rcall lcd_enable ;und 3!
rcall delay5ms
ldi r16, 0b00111000 ;8bit-Modus einstellen
rcall lcd_command
rcall delay5ms
ldi r16, 0b00001100 ;11 Display an, 0 cursor aus,0 blinkt aus
rcall lcd_command
ldi r16, 0b00000110 ;entry mode set adresse increment
rcall lcd_command
pop r16
pop r18
ret
LCD_Command:
rcall SetByte
cbi DataPort, DataPin ;set RS low
rcall lcd_Enable
ret
lcd_Enable:
nop ; Nops damit das timing gemütlicher wird
nop
sbi EnablePort, EnablePin
nop
nop
nop
cbi EnablePort, EnablePin
ret
lg
Alex
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen