-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: I2C LCD- problem

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214

    I2C LCD- problem

    Hallo,
    Ich habe die angefügte Schaltung aufgebaut und das 16*2 LCD angeschlossen (das zumindest richtig die oberen 4 pins und e,rs,gnd,vcc). Dann habe ich das Beispielprogramm von der http://www.mcselec.com/an_118.htm Seite angepasst (an den Mega16) spirch die Ports verändert (C0 und C1) und alle keyboard Befehle herausgenommen. Das LCD zeigt einen schwarzen Balken. Das ganze ist an das rn-controlboard angeschlossen und zwei lcd´s blinken auf. Nur auf dem Display verändert sich nichts. Ist die Schaltung falsch?
    Danke Gruß Stefan
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken lcd_127.jpg  

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    Hier nochmal das Programm
    Angehängte Dateien Angehängte Dateien

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    HI

    Die Schaltung sieht gut aus.
    Allerdings das Programm...
    Kannst du die "Lcd_i2c.lib" posten?

    Ohne die können wir keine genauen Aussagen treffen...
    Allerdings wird das wohl in ASM sein.

    Sonst musst du das LCD eben über normalen I²C steuern.
    Das ist kein großes Problem, funzt bei mir auch.

    Grüße,
    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    Hallo,
    danke für deine Antwort. Die lib ist auf der oben genannten HP zu finden http://www.mcselec.com/an_118.htm und sollte es eigentlich tun...

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    hallo,
    kannst du mir mal dein I2C programm zur ansteuerung des lcd´s schicken?
    vielleicht kann ich dan ja den fehler eingrenzen!
    gruß
    Stefan

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    21.09.2004
    Ort
    Augsburg
    Beiträge
    49
    Zitat Zitat von tobimc
    HI

    Die Schaltung sieht gut aus.
    ... das LCD eben über normalen I²C steuern.
    Das ist kein großes Problem, funzt bei mir auch.

    Grüße,
    Tobi
    @ tobi wie hast du es denn genau gemacht ?
    @Stefan hast du es jetzt schon zum laufen gebracht?

    gruß Werner...

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    22.11.2003
    Beiträge
    214
    @ edgar: ja weitgehend, scheint mir ein Wackelkontakt oder ein ein anderer doofer Fehler gewesen zu sein. Allerdings leuchtet nur eine Hälfte des LCD´s auf!? Ich muss das Ganze noch einmal nachbearbeiten und ein anderes LCD ausprobieren...

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    Hi ihr!

    Ich habe diesen Thread in der letzten Zeit irgendwie vernachlässigt, sorry.

    Hier mein Quelltext:

    Function Clearlcd() As Byte

    I2csend Lcddataaddr , 1 'Clear
    Waitms Default_i2c_delay_time


    I2csend Lcdcntrladdr , 1 'Enable...
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 0 'Enable...
    Waitms Default_i2c_delay_time


    End Function



    Function Startlcd() As Byte

    I2csend Lcddataaddr , 56 'Mit 2 Zeilen initialisieren...
    Waitms 5


    I2csend Lcdcntrladdr , 1 'Enable...
    Waitms 5

    I2csend Lcdcntrladdr , 0 'Enable...
    Waitms 5



    I2csend Lcddataaddr , 12 'Einschalten, kein Cursor, kein blinken, siehe Datenblatt LCD für Werte...
    Waitms 5


    I2csend Lcdcntrladdr , 1 'Enable...
    Waitms 5

    I2csend Lcdcntrladdr , 0 'Enable...
    Waitms 5



    I2csend Lcddataaddr , 2 'Cursor HOME
    Waitms 5


    I2csend Lcdcntrladdr , 1 'Enable...
    Waitms 5

    I2csend Lcdcntrladdr , 0 'Enable...
    Waitms 5


    End Function



    Function Lcdprint() As Byte
    Dim Sign As String * 1 'Variablendeklaration
    Dim Prnt As Byte
    Dim Schlvar3 As Byte 'Schleifenvariablen...
    Dim Schlvar4 As Byte



    For Schlvar3 = 1 To 20 'Schleife für die ersten 20 Zeichen...

    Sign = Mid(lcdupline , Schlvar3 , 1) '1 zeichen auslesen, mittels mid
    Prnt = Asc(sign) 'Zeichen in ASCII-Wert umwandeln...


    I2csend Lcddataaddr , Prnt 'Per I²C an den Datenchip legen (PCF8574)
    Waitms Default_i2c_delay_time 'Besteimmte Zeit warten...


    I2csend Lcdcntrladdr , 4 'Enable...
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 5
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 4
    Waitms Default_i2c_delay_time

    Next



    I2csend Lcddataaddr , 192 'Steuerzeichen 192 für Zeilenwechsel...
    Waitms Default_i2c_delay_time


    I2csend Lcdcntrladdr , 0
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 1 'Enable...
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 0
    Waitms Default_i2c_delay_time



    For Schlvar4 = 1 To 20 '2te Schleife für die 2ten 20 Zeichen, untere Linie...

    Sign = Mid(lcdlowline , Schlvar4 , 1) 'Zeichen holen...
    Prnt = Asc(sign) 'Wie oben umwandeln...


    I2csend Lcddataaddr , Prnt 'Siehe oben...
    Waitms Default_i2c_delay_time


    I2csend Lcdcntrladdr , 4
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 5
    Waitms Default_i2c_delay_time

    I2csend Lcdcntrladdr , 4
    Waitms Default_i2c_delay_time

    Next


    End Function

    Lcddataaddr it ein define, das die Addresse des 8574ers angibt, an dem von 0-7 DB0-DB7 hängen;
    lcdcntrladdr ist das gleiche für den Baustein mit RS/RW und E.

    Und i2cdelay ist die wartezeit.

    Ich glaube aber kaum, dass ihr daraus schlau werdet...

    Liebe Grüße und viel Glück!
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    28
    Beiträge
    1.614
    hi,

    ich misch mich ja nicht gern in anderer beiträge ein aber könnte man die i2c-lib wohl so umschreiben, das man damit nicht mit nem I2C portexpander sondern mit nem serial in/parallel-out shiftregister das display betreibt?

    muss ich da nicht nur statt dem i2cwrite nen shiftout... schreiben?

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    26
    Beiträge
    1.461
    HI

    Jao rein theoretisch... Wenn du asm kannst...
    Ich meine irgendwo gelesen zu haben, dass man als lib nur asm-code einbinden kann.
    Aber würde ich nicht drauf schwören.

    Warum willst du das in ne Lib packen? Ich habe dass im 'Anhang' vom Hauptprogramm, wo auch die restlichen Funktionen sind. Das vereinfacht die Fehlersuche ein bisschen...

    Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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