- fchao-Sinus-Wechselrichter AliExpress         
Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte
Ergebnis 31 bis 40 von 43

Thema: LCD über I²C an ATmega 32: Dringend Hilfe benötigt!!!

  1. #31
    Erfahrener Benutzer Fleißiges Mitglied Avatar von mycroc
    Registriert seit
    29.11.2006
    Ort
    Bochum
    Beiträge
    111
    Anzeige

    Praxistest und DIY Projekte
    Ich hatte das Problem auch mal, ist schon eine weile her. Nach einiger zeit habe ich es aufgegeben mich mit dem LCD zu beschäftigen um mich im selben Programm anderer funktionen zu widmen. Nach dem das Programm die 4K grenze der Demo version erreicht hatte habe ich mir die vollversion gekauft und das LCD funktionierte ohne das ich etwas am code geändert habe.

  2. #32
    Benutzer Stammmitglied
    Registriert seit
    08.02.2008
    Ort
    Im Hegau
    Alter
    30
    Beiträge
    91
    Hallo Herculesheld,


    probier mal diesen code aus. Bei meinem Atmega 32 funktionier er perfekt

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    Config Scl = Portc.0
    Config Sda = Portc.1
    
    Const Pcf8574_lcd = &H40
    $lib "Lcd_i2c.lib"
    Dim _lcd_e As Byte
    _lcd_e = 128
    Waitms 200
    Config Lcd = 16 * 2
    Cls
    
    Wait 1
    
    Do
    
    Locate 1 , 1 : Lcd "Hello World"
    
    Loop
    End
    Gruß Max

  3. #33
    vielen dank 021aet04 für die internetseite.(sehr informativ, deshalb hilfreich) dort stand ja auch das der controller den mein lcd verwendet ein anderes timing hat als der standardcontroller HD44780 und deshalb nur eingeschräkt kompatibel ist und nicht zu 100%, wie der Hersteller sagt.
    @max: danke für den code erstmal.leider hat er mein lcd immer noch nicht zum laufen gebracht.
    mir ist aber eben noch was aufgefallen. wenn ich den controller anschalte und der contrast am display so eingestellt ist, dass die felder leicht dunkel sind, dann sieht man, dass erst alle dunkler sind und dann nur noch die erste zeile.(ich verwende das programm von max, bei dem in der ersten zeile etwas stehen sollte).wenn ich aber nun einen reset am controller durchführe, wird erst nur die erste zeile dunkler und dann die obere hälfte der zweiten zeile auch.und die bleibt dann so. vielleicht kann da jemand etwas mit anfangen.

  4. #34
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo Hercules,

    letztes Jahr habe ich mal die Lib für den PCA9555D umgebaut. Auf meiner Internetseite habe ich ein kleines Beispielprogramm:

    http://www.gerold-online.de/cms/uc-p...r-i2c-bus.html

  5. #35
    hi.
    also ich hab mich jetzt mal (als als totaler assembler-neuling) versucht in die .libs von Mcs und von guenter1604 reinzudenken und etwas rumprobiert. jetzt habe ich denk ich auch einen kleinen teilerfolg erziehlen können. ich habe in die lcd_12c.lib einen wait befehl eingebaut, was zur folge hat, dass ich bei start eines programms einen blinkenden cursor auf dem display habe.leider wars das auch schon.mehr passiert dann nicht.egal welchen ablauf das programm hat. jetzt wo ich selbst weiter bin kann mir an dieser stelle jemand weiterhelfen?

  6. #36
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo hercules,
    wenn du Fehler in der Verdrahtung und im Code ausschließen konntest, wirds wohl an der Displayansteuerung liegen. Da dein Display direkt am ATMega läuft, bleibt dir nichts anderes übrig, als die Datenblätter der Displaytreiber zu vergleichen und in der Lib den Code an der richtigen Stelle zu bremsen. Den blinkenden Cursor würde ich als erfolgreiche Initialisierung deuten! Glückwundsch.
    Schau dir jetzt noch den Bereich [_CLS] und [_Write_lcd] an.
    Füge einfach mal ein paar waits ein

  7. #37
    danke für den Tipp.
    ich habe den wait- Befehl an das ende von [_write_lcd] gehängt.
    mein display hängt gar nicht direkt am atmega sondern läuft über I2C mit hilfe des pcf8574p.
    also im Prinzip sieht der entsprechende bereich in der .lib bei mir jetzt so aus:
    ...
    _Write_lcd_nibble:
    Cbr _temp1,&HF0 ; E1, E2, RW, RS low
    *BASIC: waitms 5 ; der eingefügte wait- befehl

    _Send_to_LCD:
    push r26
    push r27
    ldi r25,3
    ...

    die länge der wartezeit scheint jedoch keine rolle zu spielen. ich hab den wert verschieden variiert. der blinkende cursor ist zwar da aber sonst passiert nichts.
    Der Bereich [_Cls] ist in der .lib ja gar nicht aufgeführt.welches ist bzw. sind denn die assembler befehle die dem entsprechen?
    ich hab meine veränderungen in der "original library" von kent andersson von der mcs electronics seite durchgeführt.

  8. #38
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo hercules,

    setze mal in deinem Basiccode:

    _lcd_e = 128 auf

    _lcd_e = 0

    Günter

  9. #39
    hallo günter,
    hat leider nicht geklappt.
    ich weiß nicht mehr was ich machen soll.
    lg

  10. #40
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.05.2007
    Beiträge
    329
    Hallo Hercules,
    nimm dir die Datenblätter der beiden Chips vor und vergleiche die Init Routinen. Sende nacheinander per I2C (z.B. auf Tastendruck) die angegebenen Befehle und kontrolliere die Anzeige am Display. Ganz ohne die Highlevelbefehle, dann müsste der Fehler doch zu finden sein...

Seite 4 von 5 ErsteErste ... 2345 LetzteLetzte

Berechtigungen

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

12V Akku bauen