-         

Ergebnis 1 bis 5 von 5

Thema: EA DIP204-4 4 bit modus

  1. #1
    Neuer Benutzer
    Registriert seit
    05.03.2008
    Ort
    Nordschwarzwald
    Beiträge
    3

    EA DIP204-4 4 bit modus

    Anzeige

    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!

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200
    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

  3. #3
    Neuer Benutzer
    Registriert seit
    05.03.2008
    Ort
    Nordschwarzwald
    Beiträge
    3
    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]

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.03.2006
    Beiträge
    200
    hab noch was gefunden, vielleicht hilft es:
    http://www.mikrocontroller.net/artic...-Tutorial:_LCD

  5. #5
    Neuer Benutzer
    Registriert seit
    05.03.2008
    Ort
    Nordschwarzwald
    Beiträge
    3
    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
  •