-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: LCD funktioniert nicht

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108

    LCD funktioniert nicht

    Anzeige

    Hallo

    Ich hoffe Ihr könnt mir helfen

    Ich habe an meinem ATmega162 mit 11,0592MHz Quarz das gleiche LCD wie bei RNKeyLCD
    Leider tut das LCD bei mir noch keinen Mucks...

    Ich weis auch nicht ob ich es korrekt verdrahtet habe bzw. den richtigen Bascom Code drauf habe.

    Hier der Link zum Datenblatt:
    http://www.robotikhardware.de/downlo...datenblatt.pdf

    Das Display betreibe ich im 4Bit Modus.
    D0-D3 habe ich an GND gelegt. D4 bis D7 mit dem AVR verbunden. Stromversorgung, E(Enable) und RS sind ebenfalls mit dem AVR verbunden. Die LED Beleuchtung brauche ich ja noch nicht
    Zu den restlichen Pins noch kurze checks ob ichs richtig gemacht habe.

    VEE; Kontrastspannung - Im Datasheet ist eine Schaltskizze zum Betreiben von VEE mit Poti und 27kOhm Widerstand eingezeichnet. Im Schaltplan von RNKeyLCD, den ich nun zum debuggen nutze fehlt dieser Widerstand. Was nun?

    R/W (Read/Write) habe ich nicht mit dem AVR verbunden sondern auf Masse gelegt. Ist das korrekt?

    RES (Reset, Interner 10K Pullup) habe ich gar nicht angeschlossen. Oder muss der irgendwo ran? Und was macht dieser Reset?

    Ansonsten hier ein ganz einfacher Bascom Code damit mir das LCD was anzeigen soll. Ich weis auch hier nicht ob er korrekt ist.

    Code:
    $regfile = "m162def.dat"
    $crystal = 11059200
    
    Config Lcd = 20 * 4                                         
    Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2      
    Config Lcdbus = 4                                          
    Config Lcdmode = Port                                       
    Config Portb = Output                                      
    
    Cls                                                        
    
    Portb = 63                                               
    
    Do                                                       
    
       Locate 1 , 1                                             
       Lcd "Hallo"                                    
       Waitms 5000
    Loop
    End
    Aber wie gesagt, das CD stellt sich tot, keine Kontrastbeleuchtung an, nichts....

  2. #2
    Murus
    Gast
    Hmm, meiner hat etwas weniger Inhalt... (Mega

    Config Lcd = 20 * 4
    Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2
    waitms 10 (damit es initialisieren kann, ohne das gings bei mir nicht...)

    RW hab ich auch auf Masse.

    Gruss
    Mario

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108
    Leider half das bei mir auch nichts
    könntest du mal den kompletten Code geben damit der bei mir schonmal stimmt.

  4. #4
    Murus
    Gast
    Das ist der komplette Code bei mir, um das LCD einzustellen.

    Dann noch
    cls
    locate 1,1
    lcd "Hello World

    End

    und fertich

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2
    Das sollte eigentlich reichen. Bascom erkennt damit schon selbst das es sich um 4Bit handelt usw.
    Mit Cls wird das Display initalisiert. Eigentlich ist waitms 10 völlig überflüssig, weil Bascom schon die benötigen Zeiten ausrechnet und mehr als genug Reserve dazu zählt.
    Ich glaube auch ganz fest dran, irgendwo mal gelesen zu haben, das wenn kein CLS im Programm steht dann sobald der erste LCD-Befehl auftaucht (also irgendein Befehl der auf's Display zugreift) ein Code eingefügt wird um das Display zu initalisieren.
    R/W muss auf Masse!
    Außer wenn du das Busyflag auslesen willst. Aber das ist n anderes Thema.

    VEE kannst du zum probieren auch erstmal auf Masse legen. Damit hast du den maximalen Kontrast.
    Die erste und dritte Zeile müssen dann nach anlegen der Versorgungsspannung komplett schwerz aufgefüllt erscheinen. Was das schonmal klappt hast du so gut wie gewonnen!

    RES ist für solche Display eher untypisch. Aber der muss auch auf Masse liegen so wie ich das Datenblatt deute.

    EA-Display sind eigentlich ganz tolle Displays. Normalerweise ist es wirklich Qualität, was man da kauft. Aber (und das steht auch im Datenblatt) da ist kein HD44780 Controller drauf verbaut. Der verwendete KS0073 ist zwar nahzu kompatibel zum HD44780, aber nur nahzu und nicht völlig 100%ig. (Ist wie mit SPD und Union. Wenn du SPD mit der Union regieren will, würden alle Sitze zählen, aber wenn es um die Einladung zu Gesprächen geht, zählen nur die Sitze der einzelnen Parteien )

    Solange du noch keinen Kontast hast und die schwarzen Balken siehst musst du den Fehler erstmal da suchen. (Wie gesagt, VEE mal auf GND legen)
    Danach wirst du aber sicherlich immer noch das Problem haben.
    Ich glaube einer der Unterschiede der beiden Kontroller ist die Initalisierungssequenz. Ich hab dir mal 4 Links rausgesucht. Gelesen habe ich sie nicht, aber ich denke, mind. einer wird dir dabei helfen können.
    http://www.roboternetz.de/phpBB2/zei...ghlight=ks0073
    http://www.roboternetz.de/phpBB2/zei...ghlight=ks0073
    http://www.roboternetz.de/phpBB2/zei...ghlight=ks0073
    http://www.roboternetz.de/phpBB2/zei...ghlight=ks0073

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108
    Vielen Dank

    Nur langsam wirds wirklich Frustbastelei...

    Erst hab ich ewig rumprogrammiert...irgendwann erschienen dann wie durch Zufall auf dem LCD die heiligen Worte "Hallo Welt".

    Voller Freunde hab ich dann das Sample runtergehauen, meinen eigentlichen Code drauf und seit dem ist die LCD Ansteuerung wieder tot.

    Auch wenn ich nun den alten Code draufspiele geht absolut nichts mehr, nada...

    Ich habe den AVR schon auf Funktion getestet. Er hat keine Schäden, führt jeden normalen Befehl (Tasterdruck -> LED leuchtet) korrekt aus, sofort aber das LCD ins Spiel kommt scheint alles zusammenzubrechen und er macht gar nichts mehr auch nicht mehr das mit dem Tasterdruck.

    Ich versteh das nicht wieso er nun den alten Code nicht mehr ausführt...
    Ich habe bei allen relevanten Pins nochmal den Kaltlötstellentest gemacht. Alle Lötstellen sind ok!

    Man muss sagen, dass bei mir Bascom auch ein bissl spinnt, hängt sich manchmal auf aber wenn es dann mal speichert, dann durchaus brauchbaren Code.

    Ich habe hier mal meinen LCD-Code. Bitte checkt den Mal, das muss doch gehen!!


    Code:
    $regfile = "m162def.dat"
    $crystal = 11059200
    
      Declare Sub Lcdinit
      Declare Sub Lcdwrite(byval Zeichen As Byte)
    
    Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2
    
    'Config Lcd = 20 * 4a                                       'ich habs mit und ohne versucht, nichts geht...
    
    Waitms 100
    
    Call Lcdinit
    
    Cls
    
    
    
    Do
    
       Lcd "Hallo Welt"                                              'Displayausgabe für den Benutzer
       Waitms 5000
       Cls                                                      'Display löschen
    Loop
    
       Sub Lcdinit
         Call Lcdwrite(&B00101100)
         Call Lcdwrite(&B00001001)
         Call Lcdwrite(&B00101000)
         Call Lcdwrite(&B00000110)
         Call Lcdwrite(&B00001100)
       End Sub
    
       'Schreibt die Initialisierungs - Bits zum LCD
    
       Sub Lcdwrite(byval Zeichen As Byte)
    
       ' Höherwertiges Nibble setzen
          If Zeichen.4 = 1 Then Portb.2 = 1 Else Portb.2 = 0
          If Zeichen.5 = 1 Then Portb.3 = 1 Else Portb.3 = 0
          If Zeichen.6 = 1 Then Portb.4 = 1 Else Portb.4 = 0
          If Zeichen.7 = 1 Then Portb.5 = 1 Else Portb.5 = 0
       ' Höherwertiges Nibble übertragen
          Portb.0 = 1
          Waitms 1
          Portb.0 = 0
          Waitms 1
    
       ' Niederwertiges Nibble setzen
          If Zeichen.0 = 1 Then Portb.2 = 1 Else Portb.2 = 0
          If Zeichen.1 = 1 Then Portb.3 = 1 Else Portb.3 = 0
          If Zeichen.2 = 1 Then Portb.4 = 1 Else Portb.4 = 0
          If Zeichen.3 = 1 Then Portb.5 = 1 Else Portb.5 = 0
       ' Niederwertiges Nibble übertragen
          Portb.0 = 1
          Waitms 1
          Portb.0 = 0
          Waitms 1
    
       End Sub
    
    
    End
    Das ist der Code den ich eigentlich will, wegen dem Zeileproblem dieses LCD-Treibers.

    Aber selbst das Programm das vorher funktionierte geht nicht mehr:

    Code:
    '===============================================================================
    ' Compiler
    '===============================================================================
    $regfile = "m162def.dat"
    $crystal = 11059200
    '-------------------------------------------------------------------------------
    
    
    '===============================================================================
    ' LCD Parametrieren
    '===============================================================================
    Config Lcdpin = Pin , E = Portb.0 , Rs = Portb.1 , Db7 = Portb.5 , Db6 = Portb.4 , Db5 = Portb.3 , Db4 = Portb.2
    Config Lcd = 20 * 4
    
    Cls
    Cursor Off Noblink
    
    
    '______________________________________________________________________________
    
    
    
    Do
        Cls
        Lcd "Hallo"
        Waitms 2000
    
    Loop
     End
    Wie gesagt, ich vermute sehr sehr stark dass es ein softwaretechnisches Problem gibt, denn vor dem ersetzen dieses Codes durch einen anderen funktionierte das Ding 1A. Das LCD scheint auch zu gehen. Man kann am Poti 1A den Kontrast verändern. Das ging ganz am Anfang noch nicht.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.06.2005
    Beiträge
    108
    Könnt ihr mir mal sagen ob die Pins zur Steuerung des LCDs die mit dem AVR verbunden sind bei euch dort Spannung anliegt wenn ihr die Stromversorgung des LCD kappt?


    Bei mir ist es so, dass nur Spannung an den Pins (Db4-Db7 sowie E und RS) anliegt wenn ich das LCD einschalte...Hat das seine Richtigkeit oder ist das bei mir ein Fehler. Denn eigentlich muss doch der AVR Signale senden auch wenn das LCD aus ist, das weis der AVR ja nicht nehme ich mal an?

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Noch ein Tipp zu LCDs. Die brauchen ja immer zwei Spannungen. Einmal die Betriebsspannung und die Kontrastspannung. Die Kontrastspannung darf niemals vor der Betriebsspannung angelegt werden.
    Zuerst B.Spannung und dann K.Spannung oder beide zur gleichen Zeit. Beim ausschalten das gleiche in umgekehrter Reihenfolge. Erst K.Spannung weg, dann B.Spannung. Oder beide gleichzeitig.

    Das mit den Spannungen versteh ich nicht so ganz was du da meinst.
    Es liegt Spannung an, obwohl keine Betriebsspannung da ist? Ich würd mir das patentieren lassen

    http://www.roboternetz.de/phpBB2/zei...ag.php?t=10766
    Hast du den Beitrag schon gelesen? Ist ein Link aus einer der Beiträge, die ich dir rausgesucht habe.

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.04.2004
    Ort
    München
    Alter
    29
    Beiträge
    288
    Ich plag mich auch grad mit exact dem selben Problem rum.
    Hab nen KS0076B, der lässt sich mit Bascom einfach auch nicht ansteuern.
    Es liegt wohl am Initialiesieren. Ich glaub der erste Link der oben geposteten is schon gar nicht schlecht.
    Man muss das LCd einfach *reusper* anders Initialisieren. Die machen das über eine LIB und nich direkt über Bascom (vlt is das zu langsam?!)
    Ich fusel da jetzt schon ne Woche rum, aber bin leider auch noch nciht auf eine Lösung gekommen.
    Aber die Hoffnung stirbt ja zuletzt... ^^

    Gruß Javik

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Es liegt wohl am Initialiesieren.
    Es liegt da 100%ig dran! Und das sind die paar Prozente, die dem KS0073 am HD44780 fehlen

    Der letzte Link von mir ist aber einer, wo das Problem gelöst wurde. Den einfach mal durchlesen.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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