-
-
EA DIP204-4 4 bit modus
Erst mal guten Tag, bin neu hier.
Ich heisse Bernhard und habe nicht viel Ahnung vom Programmieren.
Dennoch habe ich es hinbekommen das 4 Zeilen LCD Modul EA DIP204-4 an einen Atmel MEGA 8515 zum Laufen zu kriegen - zumindest im 8-Bit-Modus.
Ich muss es aber in den 4-bit-Modus bekommen (sonst reichen mir die Anschlusspins des Prozessors für das Projekt nicht).
Wie kann ich das Display dazu überrreden?
Ich benutze "Studio4" von der Atmel Seite heruntergeladen.
Wäre sehr dankbar für Eure Hilfe!
-
Erfahrener Benutzer
Roboter-Spezialist
Ich habe zwar keine Ahnung von LCDs aber aber unter Funktion das Datenbyte 4 nicht mit setzen.
Alternativ, poste doch mal dein 8-Bit Programm. Da müssen wir nicht im Nebel rumstochern und die anderen haben auch noch was davon
-
So sieht die Initialisierung des LCD-Moduls in der acht bit Version aus:
LCD_INIT: LDI r16,$05
RCALL DEL_LANG ; Beim Einschalten 60ms warten
RCALL DEL_LANG
LDI r19,0b00110000
OUT PORTB,r19 ; muss 3mal hintereinander gesendet
RCALL LCD_ENABLE ; werden zur Initialisierung
LDI r16,$04 ; Timer / 256 => 7,5 msec
RCALL DEL_LANG
RCALL LCD_ENABLE
RCALL DEL_LANG
RCALL LCD_ENABLE
RCALL DEL_LANG
; hier würde Umstellen auf 4 bit erfolgen
LDI r19,0b00110100 ;RE-bit=1
OUT PORTB,r19
RCALL LCD_COMMAND
LDI r19,0b00001001 ; = 4 Zeilen Modus
RCALL LCD_COMMAND
LDI r19,0b00110000 ; RE-bit=0
RCALL LCD_COMMAND
LDI r19,0b00001100 ; Display Ein / Cursor Aus / Blnken Aus
RCALL LCD_COMMAND ; 0 0 0 0 1 D C B
RCALL LCD_CLEAR
RET
LCD_DATA: SBI PORTA,5 ; RS= High -> Daten
OUT PORTB,r19 ; ausgeben
NOP
NOP
RCALL LCD_ENABLE ; Enable-ROUTine aufrufen
NOP
NOP
CBI PORTA,5 ; zurücksetzen
RET zurück
LCD_COMMAND: CBI PORTA,5 ; RS = Low -> Befehl
NOP
NOP
OUT PORTB,r19 ; ausgeben
NOP
NOP
RCALL LCD_ENABLE ; Enable-ROUTine aufrufen
RET ;zurück
LCD_ENABLE: SBI PORTA,6 ; Enable high
NOP 6Taktzyklen warten
NOP
NOP
NOP ;erzeugt den Enable-Puls
NOP
NOP
CBI PORTA,6 ; Enable wieder low
LDI r16,$02 ; Timer / 8
RCALL Delay_50 ; normale Wartezeit für Ausgabe
RET ;Und wieder zurück
Das funktioniert, danach kann ich Schriftzeichen ausgeben etc.
Wenn ich in der Initialisierung das einfüge
LDI r19,0b00100000 ; 4 bit Modus wählen
OUT PORTB,r19
RCALL LCD_COMMAND
bleibt das Display ohne irgendein Zeichen beim Beschreiben.
Es ist an Port B(4-7) angeschlossen.
Beim Beschreiben in 4 bit-Modus gebe ich zuerst das höhere Nibble mit Enable Puls, dann das untere mit weiterem EN-Puls aus.
Was mache ich falsch??[/quote]
-
Erfahrener Benutzer
Roboter-Spezialist
-
Ich hab es gefunden!
Flsch ist:
LDI r19,0b00110000 ; RE-bit=0
RCALL LCD_COMMAND
denn das schaltet das LCD in den 8-bit-Modus zurück
Richtig ist:
LDI r19,0b00100000 ; RE-bit=0
RCALL LCD_COMMAND
und natürlich dafür sorgen das die Nibbles in LCD_COMMAND und LCD_DATA in der richtigen Reihenfolge ausgegeben werden. und auch das Bit an R/S muss passen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen