-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: 4x20 LCD KS0073 EA-DIP204 ich dreh durch

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240

    4x20 LCD KS0073 EA-DIP204 ich dreh durch

    Anzeige

    Hi Leute, komm mir ziemlich dämlich vor

    ich hab das altbewährte DIP-204 LCD An meinen M16 gehängt und will für das laufende Projekt den Port A für die Steuerung verwenden.
    4-Bit
    a.2=RS
    a.3=E
    a.4=DB4
    a.5=DB5
    a.6=DB6
    a.7=DB7

    DB0-3 = GND

    Hab mich schon von der Lib verabschiedet und versuch das Ding "von Hand" mit dem folgenden Code zu betreiben, aber funzt nit.

    Ich tüftel da schon 2 Abende dran rum und seh vermutlich den Wald vor Bäumen nicht. Habt Ihr mal ne Minute Zeit mir n Fingerzeig zu geben?

    Code:
       
       $regfile = "m16def.dat"
       $crystal = 8000000
    
       $baud = 2400
    
       '$lib "ea-dip-Zeit.lib"
       'Initlcd
    
       Declare Sub Lcdinit(byval Zeichen As Byte)
    
       Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
       Config Lcd = 20 * 4a
       Initlcd
    
       Config Pina.2 = Output
       Config Pina.3 = Output
       Config Pina.4 = Output
       Config Pina.5 = Output
       Config Pina.6 = Output
       Config Pina.7 = Output
    
       E Alias Porta.3
       Rs Alias Porta.2
    
    
       Call Lcdinit(&B00100100)
       Waitms 5
       Call Lcdinit(&B00001001)
       Waitms 5
       Call Lcdinit(&B00100000)
       Waitms 5
       Call Lcdinit(&B00000110)
       Waitms 5
       Call Lcdinit(&B00000001)
       Waitms 5
       Call Lcdinit(&B00001100)
       Waitms 5
    
    
       Cls
    
       Dim Temp As Byte
    
       Do
       Waitms 500
       ' Hintergrundbeleuchtung aus
       Portd.7 = 0
    
       Incr Temp
       Lcd Temp
       Print Temp
    
       Waitms 500
       ' Hintergrundbeleuchtung ein
       Portd.7 = 1
    
       Loop
    
       'Schreibt die Initialisierungs - Bits zum LCD
    
       Sub Lcdinit(byval Zeichen As Byte)
         Print "init: ";
         Print Zeichen
    
         ' Höherwertiges Nibble setzen
         If Zeichen.4 = 1 Then Porta.4 = 1 Else Porta.4 = 0
         If Zeichen.5 = 1 Then Porta.5 = 1 Else Porta.5 = 0
         If Zeichen.6 = 1 Then Porta.6 = 1 Else Porta.6 = 0
         If Zeichen.7 = 1 Then Porta.7 = 1 Else Porta.7 = 0
         ' Höherwertiges Nibble übertragen
         E = 1
         Waitms 1
         E = 0
         Waitms 1
    
         ' Niederwertiges Nibble setzen
         If Zeichen.0 = 1 Then Porta.4 = 1 Else Porta.4 = 0
         If Zeichen.1 = 1 Then Porta.5 = 1 Else Porta.5 = 0
         If Zeichen.2 = 1 Then Porta.6 = 1 Else Porta.6 = 0
         If Zeichen.3 = 1 Then Porta.7 = 1 Else Porta.7 = 0
         ' Niederwertiges Nibble übertragen
         E = 1
         Waitms 1
         E = 0
         Waitms 1
    
       End Sub

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1
    Schau mal ins Projektforum
    http://www.roboternetz.de/phpBB2/viewtopic.php?t=10766

    Der Thread sollte dir helfen

  3. #3
    Gast
    ja, den Thread kenn ich auch schon, hab ich auch schon probiert, aber irgendwie funktionierts bei mir doch nicht ...

    die elektrischen Verbindungen stimmen, die hab ich schon vor und zurück getestet ohne Ergebniss ...

    Also es funktioniert soviel:
    Reset, Anzeige wird leer, Initialisierungsroutine läuft durch, alle Zeichen
    als 4-Ecke auf dem Display sichtbar,

    CLS Anzeige wird leer

    und das wars dann auch schon ... bin da echt am verzweifeln

    Vu 4,98V, sollte allso passen

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    der Letzte war von mir

  5. #5
    Gast
    Ich hab das gleiche Display und hab festgestellt, dass wenn der Kontrast zu hoch eingestellt ist, nur weiße Rechtecke statt den Buchstaben ausgegeben wird. Versuch doch mal den Kontrast zu ändern. Das ist bei diesem Display etwas anders als bei den "normalen". Du ein poti mit 5v und Pin3 (Vo) verbinden und nicht wie sonst üblich mit Masse.

    MFG

  6. #6
    Hatte mich nicht eingellogt, sorry

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Hallo!

    Ich habe das gleiche Problem! (Scheint ne Krankheit zu sein)
    Wie oben in dem Link beschrieben habe ich das mal versucht. Geht auch eigentlich optisch echt gut.
    Mein problem ist aber dass das ganze wohl ziemlich langsam ist.
    ich stell mal den Code dazu den ich benutze.
    Code:
    'ATMega8
      '11059200 Hz
      'BascomAVR 1.11.7.9
    
    
      $crystal = 11059200
    
       Declare Sub Lcdwrite(byval Zeichen As Byte)
    
    
       'Pins des LCD-Modules setzen ggf. an eigene Anschlüsse anpassen
    
       Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
       Initlcd
    
       Config Lcd = 20 * 4a                                     ' wird nicht benötigt daher auskommentiert
       'Config Lcdbus = 4        ' oder weglassen :-)
    
       Call Lcdwrite(&B00101100)
       Waitms 5
    
       Call Lcdwrite(&B00001001)
       Waitms 5
    
       Call Lcdwrite(&B00101000)
       Waitms 5
    
       Call Lcdwrite(&B00000110)
       Waitms 5
    
       Call Lcdwrite(&B00001100)
       Waitms 5
       Cls
       Dim N As Byte
       Do
       For N = 1 To 255
       Locate 3 , 12
       Lcd N
       Waitms 500
       Cls
       Next
       Loop
       End
    
       Sub Lcdwrite(byval Zeichen As Byte)
    
         ' Höherwertiges Nibble setzen
         If Zeichen.4 = 1 Then Portc.3 = 1 Else Portc.3 = 0
         If Zeichen.5 = 1 Then Portc.2 = 1 Else Portc.2 = 0
         If Zeichen.6 = 1 Then Portc.1 = 1 Else Portc.1 = 0
         If Zeichen.7 = 1 Then Portc.0 = 1 Else Portc.0 = 0
         ' Höherwertiges Nibble übertragen
         Portc.4 = 1
         Waitms 1
         Portc.4 = 0
         Waitms 1
    
         ' Niederwertiges Nibble setzen
         If Zeichen.0 = 1 Then Portc.3 = 1 Else Portc.3 = 0
         If Zeichen.1 = 1 Then Portc.2 = 1 Else Portc.2 = 0
         If Zeichen.2 = 1 Then Portc.1 = 1 Else Portc.1 = 0
         If Zeichen.3 = 1 Then Portc.0 = 1 Else Portc.0 = 0
         ' Niederwertiges Nibble übertragen
         Portc.4 = 1
         Waitms 1
         Portc.4 = 0
         Waitms 1
    
       End Sub
    Bis jetzt zum nächsten Wert hochgezählt wird, dauert es ganze 4! Sekunden.
    Kann mir jemand sagen warum?
    Ausserdem: Wenn man das LCD nicht säubert hat man 2 so komische KLammerreihen, woher kommen die?

    Danke schonmal für die Hilfe
    Marten83

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.04.2005
    Ort
    Hannover
    Beiträge
    190
    Hi!
    Hab gerade gemerkt das es wohl doch nicht so wirklich funktioniert!!
    Hab wieder die Anfangsprobleme!

  9. #9
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1
    Wie der Kontrast eingestellt wird und welchen Vorwiderstand man bei Licht nutzt steht ja im Datenblatt. Ich würde das nicht als Krankheit bezeichnen wenn das bei dem LCD anders ist als bei anderen.
    Die Ansteuerung ist bei dem DIP LCD halt leider etwas verzwickt. Aber wenn ihr die Initialisierungsroutine wie in dem Thread http://www.roboternetz.de/phpBB2/zei...ag.php?t=10766 nehmt, dann muss es gehn. Die Pins müsst ihr natürlich entsprechen eurer Belegung umschreiben.
    Und wenn alles nicht hilft, dann schaut Euch mal das Projekt RN-KeyLCD an. Da steckt ihr das Display rein und dann könnt ihr es ganz einfach mit RS232 oder I2C ansteuern.

    Gruß Frank

  10. #10
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Also,

    ich hab dann doch wieder auf die LIB zurückgegriffen und mein Layout etwas geändert. hab nicht mehr PortA.4 - PortA.7 sondern A.0 - A.3 verwendet für die DB-Leitungen, noch die RS und E auf Port D, die Lib angepasst und siehe da es funzt.

    Den Kontrast hab ich per 5K Poti Mittelabgriff und Poti zwischen +5 und GND, funzt auch.

    Das RN-Projekt find ich gut, nur ists für die Anwendung, die mir vorschwebt einfach zu sperrig. Wenn ich das LCD sockle kann ich darunter den Mega16 einlöten, das spart enorm Platz auf dem Layer

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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