Hallo,
ich wollte mich jetzt mal mit LCD´s beschäftigen und mir mir zum ausprobieren dieses
http://www.reichelt.de/Hintergrund-...8AAAIAACHcUzAea7f36494b30fd26002756bcc4fbbc11
von Reichelt bestellt.
Hier das Datenblatt:
www.reichelt.de/index.html?;ACTION=...8AAAIAACHcUzAea7f36494b30fd26002756bcc4fbbc11
Ich habe es auch schon dazu bekommen zeichen anzuzeigen und das tut es auch so wie es soll.
Es lässt sich nur beim besten willen der Kontrast nicht einstellen.
an pin 3 habe ich es schon mit einem poti und verschiedenen Spannungsteilervariationen versucht doch es ändert sich immer nur der Kontrast
von einer Zeile und die andere bleibt weiß.
Kann es sein das die Kontrasteinstellung von einer der Controllereinstellungen zusammenhängt oder ist das Display bereits Kaputt?
hier noch der Assemblercode:
ich wollte mich jetzt mal mit LCD´s beschäftigen und mir mir zum ausprobieren dieses
http://www.reichelt.de/Hintergrund-...8AAAIAACHcUzAea7f36494b30fd26002756bcc4fbbc11
von Reichelt bestellt.
Hier das Datenblatt:
www.reichelt.de/index.html?;ACTION=...8AAAIAACHcUzAea7f36494b30fd26002756bcc4fbbc11
Ich habe es auch schon dazu bekommen zeichen anzuzeigen und das tut es auch so wie es soll.
Es lässt sich nur beim besten willen der Kontrast nicht einstellen.
an pin 3 habe ich es schon mit einem poti und verschiedenen Spannungsteilervariationen versucht doch es ändert sich immer nur der Kontrast
von einer Zeile und die andere bleibt weiß.
Kann es sein das die Kontrasteinstellung von einer der Controllereinstellungen zusammenhängt oder ist das Display bereits Kaputt?
hier noch der Assemblercode:
Code:
rjmp init
init:
;Stackpointer initialisieren
ldi r16,high(ramend)
out sph,r16
ldi r16,low(ramend)
out spl,r16
ldi r16,0b11111111
out ddrd,r16
ldi r16,0b00110000
out ddrc,r16
rcall initlcd
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main:
sbi portc,5 ;RS=1 gesendete Daten werden auf dem Bildschirm ausgegeben
rcall wait
ldi r16,'I'
out portd,r16
cbi portc,4 ;enable=0
rcall wait
sbi portc,4
rjmp main
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
wait:
ldi xh,high(5000)
ldi xl,low(5000)
loop:
sbiw xl,1
brne loop
ret
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
initlcd:
rcall wait
sbi portc,4 ;enable=1
cbi Portc,6 ; R/W=0 Daten können an Displaygesendet werden
cbi portc,5 ; RS=0 gesendete Daten sind Kommandobefehle
ldi r16,0b00111000 ;8-bitmodus /2-zeiliges Display /5x7Font
out portd,r16
rcall wait
cbi portc,7 ;enable=0
rcall wait
ldi r16,0b00001111 ;Display ein /Cursor ein /Cursor blinken
out portd,r16
rcall wait
cbi portc,4 ;enable=0
rcall wait
sbi portc,4 ;enable=1
ldi r16,0b00000001 ;Lösche Display und setze Cursor an Homeposition
out portd,r16
rcall wait
cbi portc,4 ;enable=0
rcall wait
sbi portc,4 ;enable=1
ldi r16,0b00000110 ;Cursoradresse nach Datensendung automatisch inkrementieren
out portd,r16
rcall wait
cbi portc,4 ;enable=0
rcall wait
sbi portc,4 ;enable=1
ret