-         

Ergebnis 1 bis 7 von 7

Thema: Lcd ansteuern mit Atmega 16 ?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341

    Lcd ansteuern mit Atmega 16 ?

    Anzeige

    Hi,

    ich hab mir gerade dieses Display bei Pollin gekauft.

    http://www.pollin.de/shop/shop.php?c...a=OTc1OTc4OTk=

    Erstmal hab ich das Poti für den Kontrast angeschlossen, das klappte auch schon mal alles super.

    Dann hab ich die Pins wie folgt belegt:

    Atmega16 PinD0 an an DB 4
    Atmega16 PinD1 an an DB 5
    Atmega16 PinD2 an an DB 6
    Atmega16 PinD3 an an DB 7
    Atmega16 PinD4 an RS
    Atmega16 PinD5 an E

    und R/W hab ich auf Masse gelegt.

    Dann hab ich versucht das ganze mit folgendem Code anzusteuern:

    Code:
    $regfile = "m16def.dat"
     $crystal = 8000000
    
     Config Lcd = 16 * 2                                   
     Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 =Portd.3 , E = Portd.5 , Rs = Portd.4
    
     Cls                   
     Locate 1 , 1          
     Lcd "Hello world."
    Nur das Display bleibt leider leer und es tut sich nichts.

    Hat wer eine Lösung für das Problem ?

    mfg Yannic

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.07.2007
    Ort
    Greudnitz
    Alter
    29
    Beiträge
    344
    Hallo,

    grundsätzlich steht das im Wiki.

    DB0, DB1, DB2 und DB3 auf Masse legen und schau dann mal obs geht.

    Gruß
    Kollaps einer Windturbine
    (oder: Bremsen ist für Anfänger )

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Hab ich gemacht, bringt leider auch nichts

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    10.11.2006
    Beiträge
    78
    Hallo Blamaster,

    evtl. ist ein Tipp dabei:

    - groszügige Verzögerungsschleifen (Display Controller sind keine Rennflitzer)
    - Abfrage des Busy-Flags

    -----------------------------------------------------------------------
    Display_initiieren:
    rcall warte20 ; Reset vom Display abwarten

    ldi Befehl,0b00111000 ; Befehl "Function Set"
    rcall Display_Befehl_schreiben
    rcall warte20
    rcall Display_Befehl_schreiben
    rcall warte10
    rcall Display_Befehl_schreiben
    rcall warte1

    rcall Display_bereit
    ldi Befehl, 0b00111000 ; lade Befehl "2-zeilig, 5x8"
    rcall Display_Befehl_schreiben

    rcall Display_bereit
    ldi Befehl, 0b00001000 ; lade Befehl "Display aus"
    rcall Display_Befehl_schreiben

    rcall Display_bereit
    ldi Befehl, 0b000000001 ; lade Befehl "Display löschen"
    rcall Display_Befehl_schreiben

    rcall Display_bereit
    ldi Befehl, 0b000000110 ; Befehl "Cursor nach rechts"
    rcall Display_Befehl_schreiben

    rcall Display_bereit
    ldi Befehl, 0b000001111 ; lade Befehl "Display ein"
    rcall Display_Befehl_schreiben
    ret
    -----------------------------------------------------------------------

    Erklärungen:

    - rcall wartenxx: Subroutine mit Verzögerung um xx mSekunden

    - rcall Display_Befehl_schreiben: Subroutine, die Datenport auf "schreiben" setzt und Befehl ausgibt

    - rcall Display_bereit: Subroutine die Datenport auf "lesen" setzt und wartet, bis das Busy-Flag frei ist

    Gruß.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    27.08.2006
    Alter
    69
    Beiträge
    83
    Ich habe das Polin Board mir dem neuen Addon.Board verbunden.
    So funktioniert es bei mir.

    $regfile = "m16def.dat" 'definieren des verwendeten Chips

    $crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz)

    Dim A As Byte 'dimensionieren der verwendeten Variablen
    Dim B As Byte


    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portb.0 , Rs = Portb.2



    Ddrd = &B11100000 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
    Portd = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)

    Ddra = &B11111111 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
    Porta = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)

    Ddrb = &B11111111 'definieren der verwendeten Ports ( 1 = ausgang; 0= eingang)
    Portb = &B00000000 'definieren der einzelnen Pins an einem Port ( 0= low level; 1= high level)

    Cls
    Initlcd 'initialisiert das LCD

    Cls
    'Locate 1 , 1
    Lcd "PortA 4-7 B1-B3 "
    Lowerline
    Lcd "Polin AddonBoard"
    usw.

    Die Anschlüsse PA5-Pa7 wurden auf PB5 - PB7 verbunden.
    PB1 an R/W, PB0 an E und PB2 an RS

    Gruß
    Kurt

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.07.2007
    Ort
    Greudnitz
    Alter
    29
    Beiträge
    344
    Zitat Zitat von Blamaster
    Hab ich gemacht, bringt leider auch nichts
    Du musst noch "Config LCDbus=4" nach "Config LCDpin = pin ..." schreiben. Was man nicht alles so spät am Abend übersieht. \/

    Ansonsten kannste nur noch mal im Wiki lesen. ( http://www.roboternetz.de/wissen/ind...om_und_LCD%27s )

    Gruß
    Kollaps einer Windturbine
    (oder: Bremsen ist für Anfänger )

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    20.02.2007
    Beiträge
    341
    Hm funktioniert irgendwie immer noch nicht.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •