- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 9 von 9

Thema: Wie schließe ich mein LC-Display an meinen RP5 (Conrad) an?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165

    Wie schließe ich mein LC-Display an meinen RP5 (Conrad) an?

    Anzeige

    Powerstation Test
    Hallo allesamt
    Ich habe ber einen Bekannten ein einfaches Display bekommen, ganz ähnlich dem gewöhnlichen LCD für den RP5, das es bei Conrad zu kaufen gibt. Ich habe hier im Forum gelesen, dass es einige Leute geschafft haben, ihr Display auch ohne Basiserweiterung zum Laufen zu bringen. Daher hoffe ich, dass mir hier jemand mit genau diesem Problem helfen kann.

    Technische Daten des LCD's:
    +2 Zeile, á 16 Zeichen
    +jedes Zeichen hat 5*8 Punkte
    +keine Hintergrundbeleuchtung
    +läuft mit 5V Versorgungs- und Kontrastspannung
    +nicht beschädigt, ist wirklich noch ganz^^


    so... ich hab VCC und GND schon mal angeklemmt, kriege in der ersten Zeile wunderschön 16 Kästchen in tiefblau, die zweite Reihe bleibt leer (denke, dass das am fehlenden Signal zum aktivieren der 2. Zeile liegt...)

    abgesehen von diesen beiden Drähten, habe ich keine Ahnung, wo die anderen hinmüssen (es sind 12 stück...) oder was sie sind. ich hab leider auch keine ahnung, wo hier R/W, RS und E liegen... brauche also Hilfe zum Display selbst und zum Anschluss an RP5 (wenn möglich, auch noch n kleines Testprogramm^^)


    Habe bereits fleißig gegoogelt, das Forum und den RN-Wissen-Bereich durchsucht, allerdings ohne Erfolg...

    Bitte helft mir!

    Gruß
    Corone

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Anschluß LCD an RP5 ohne BE

    Das LCD könnte am RP5 funktionieren.
    Der Anschluß erfolgt bei dem Original-LCD an Byteport [2].
    lcd_rs -> port[14]
    lcd_rw -> port[13]
    lcd_e -> port[15]
    lcd_db4 -> port[9]
    lcd_db5 -> port[10]
    lcd_db6 -> port[11]
    lcd_db7 -> port[12]

    An den meisten LCDs ist die Reihenfolge so:
    VSS (1, rote Ader)
    VDD
    Vo
    RS
    R/W
    E
    DB0
    DB1
    DB2
    DB3
    DB4
    DB5
    DB6
    DB7 (14)

    DB0..3 werden nicht angeschlossen (4-Bit-Modus).

    Gruß Dirk

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    Hallo Dirk.
    Danke für deine Hilfe... ich habe mir jetzt mit nem (größeren) Bissel Lötarbeit das Display angeklemmt... nach wie vor ist die erste Zeile komplett blau und die Zweite leer. Ich habe aus dem Downloadbereich die Datei zum Anschluss eines LCDs zu Rate gezogen und auch das erste dort vorgestellte Testprogramm ausprobiert, allerdings ohne Erfolg. Das Display kümmerte sich überhaupt nicht drum, blieb einfach fröhlich weiter blau...
    Hbe dann auch in dem dortigen Programm byteport[1] durch [2] ersetzt (was du ja gesagt hattest), aber das hat keinerlei Veränderung gebracht. Könntest du mir vielleicht einen kleinen Testcode posten, mit dem das Display (richtiger Anschluss mal vorausgesetzt... hoffe, ich hab alles richtig gemacht) zumindest ein- oder zwei Zeichen ausspuckt? *liebguck*


    Hoffe, dass mir weiterhin Jemand helfen kann

    Gruß
    Corone

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    LCD am RP5

    Hallo Corone,

    nimm einfach irgendein Prog für den RP5 und füge das hier ein, wenn du das LCD richtig angeschlossen hast.
    Evtl. must du Variablen ändern.

    Gruß Dirk

    Code:
    '------ LCD INTERFACE ------
    define lcd_port  byteport[2] 'Frei, wenn kein LCD angeschlossen ist!
    define lcd_rs       port[14]
    define lcd_rw       port[13]
    define lcd_e        port[15]
    
    
    '---- LCD DRIVER -------------
    define lcd_buf       byte[7] 'Bytes 7 und 8 frei, wenn LCD nicht genutzt wird!
    define lcd_param     byte[8]
    
    
    ' LC-Display initialisieren:
    gosub LCD_INIT
    pause 1
    gosub LCD_CLS
    lcd_param = &H54 : gosub lcd_writechar    'T
    lcd_param = &H45 : gosub lcd_writechar    'E
    lcd_param = &H53 : gosub lcd_writechar    'S
    lcd_param = &H54 : gosub lcd_writechar    'T
    end
    
    
    '----------------------------------------
    '------------- LCD ROUTINES -------------
    '----------------------------------------
    #LCD_INIT
    ' alle ports 0
      lcd_port = OFF
    
    ' 8-Bit-Modus aktivieren
      lcd_param=&H38 : gosub LCD_WRITECMD
    
    ' mit 8-Bit-Command in 4-Bit-Modus umschalten
      lcd_port=&B00000010
      tog lcd_e
      tog lcd_e
    
    ' ab jetzt 4-Bit-Modus
      lcd_param = &H28 : gosub LCD_WRITECMD
      lcd_param = &H0C : gosub LCD_WRITECMD
    
    ' Display loeschen
    #LCD_CLS
      lcd_param = &H02 : gosub LCD_WRITECMD
      lcd_param = &H01 : gosub LCD_WRITECMD
    return
    
    ' Zeilenwechsel
    #LCD_GOTOLINE
      if lcd_param = 1 then lcd_param = &H80
      if lcd_param = 2 then lcd_param = &HC0
      goto LCD_WRITECMD
    
    ' LCD-Kommando
    #LCD_WRITECMD
      lcd_buf = OFF
      goto LCD_WRITE
    
    ' Zeichenausgabe
    #LCD_WRITECHAR
      lcd_buf = &B00100000
    
    ' Kommando oder Zeichen an Display senden
    #LCD_WRITE
      lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
      tog lcd_e
      tog lcd_e
      lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
      tog lcd_e
      tog lcd_e
    return

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    Hallo Dirk,
    vielen vielen Dank für deine Hilfe, damit bin ich schon ein gutes Stück weitergekommen
    Das Proggi läuft noch nicht ganz, aber das Display ist auf jeden Fall richtig angeschlossen. Bei der Initialisierung wird wie gewünscht das Display geleert (auch in der ersten Zeile keine blauen Kästchen mehr^^), aber ich krieg das Wort TEST nicht rein...

    Ich habe beim ersten 'T' mal aus spaß statt 'lcd_writechar' nur 'lcd_write' bzw. 'lcd_writecmd' hingeschrieben.' Im Ergebnis brachte er dann in der zweiten Zeile auf 4. oder 5. Position einen Cursor, beim darauf folgenden 'E' dann ein Sternchen (*) und dann für das 'S' und das zweite 'T' jeweils ein japanisches Zeichen... ich weiß nicht, warums nicht geht. Hoffe sehr, dass du noch ein wenig Geduld mit mir hast



    Ich muss dich leider noch mit etlichen Fragen zum Code löchern, da ich den nicht so ganz kapiere


    Code:
    ' Zeichenausgabe
    #LCD_WRITECHAR
      lcd_buf = &B00100000
    Warum wird da LCD_BUF auf irgend einen Binärwert gesetzt? (sorry, ich versteh den Sinn der beiden Variablen lcd_buf und lcd_param innerhalb des Programms überhaupt nicht, kann leider weder Hex-, noch Binärzahlen / -codes). Und nach dem Setzen von buf, müsste dann nicht noch ein 'goto WRITE' oder so etwas in der Art kommen? Irgendwie muss das Zeichen doch zum Display gelangen... kannst du mir bitte diesen Abschnitt noch einmal genauer erklären?



    Code:
    ' Kommando oder Zeichen an Display senden
    #LCD_WRITE
      lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
      tog lcd_e
      tog lcd_e
      lcd_port = lcd_buf or (lcd_param and &H0F)  ' Lo-Nibble
      tog lcd_e
      tog lcd_e
    Auch hier versteh ich wieder die beiden Variablen nicht... und warum setzt du irgendwas (was eigentlich?) 4 Stellen nach rechts? *Die beiden klammern und deren Inhalt nicht kapiert...* und was bedeutet Hi- und Lo-Nibble? Warum führst du 'tog' immer doppelt aus?


    Das mit dem 8- und 4-Bit-Modus kapier ich auch noch nicht...

    Tut mir leid, wenn ich dich mit so vielen Fragen nerve, ist meine erste hardwaretechnische Erweiterung von RP5, hab da noch keine große Ahnung von


    Würde mich sehr freuen, wenn du meine Fragen noch beantworten könntest.

    (sehr, sehr dankbar)
    Corone

    ps: ich hab aufgepast, dass keine Ports / Variablenplätze mit dem andern Zeug des Programms in Konflikt kommen, daran dürfte es nicht liegen...

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    LCD Befehle

    Hallo corone,

    sieh dir 'mal diese Seite an:
    http://www.sprut.de/electronic/lcd/index.htm
    Da werden die Initialisierungsbefehle der üblichen LCDs gut beschrieben.
    Du findest da auch den 4-Bit-Modus (wie in LCD_WRITE) beschrieben. Beim 4-Bit-Modus wird zuerst das High-Nibble (obere 4 Bit) nach unten geschoben (SHR) und an das LCD ausgegeben. Durch tog wird ein Impuls auf lcd_e ausgegeben, mit dem die 4 Bits eingelesen werden. Dann folgen die unteren 4 Bits durch maskieren (and &H0F) genauso.

    Gruß Dirk

    P.S.: Wie hast du eigentlich die Kontrasteinstellung gemacht?? Kann evtl. auch daran liegen.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    Hallo Dirk,
    danke wieder für deine Hilfe!
    Die Seite kannte ich schon, hat mir auch etwas geholfen... aber meine Fragen konnte ich damit leider nicht ganz beantworten. Hauptsächlich scheitert es an den mir unverständlichen Hex- / Binärzahlen...

    Die Kontrastspannung liegt zusammen mit der Versorgungsspannung einfach auf konstant 5 V, das passt ganz gut. Gestern Abend ging leider ne Kleinigkeit schief: er hat, nachdem ich frische Akkus reingemacht hatte, auf einmal beide Displayzeilen blau angezeigt (ohne jedes Programm... nur direkt nachm Anschalten) und kurz danach is die Sicherung durchgebrannt. Hoffe, ich krieg da morgen ne neue...

    Danke für deine Hilfe!
    Gruß Corone

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803

    Hex-/Binärzahlen

    Hallo Corone,

    mit Hex-/Dez-/Binär-Zahlen ist das im Prinzip einfach:

    Hex Binär
    00 0000 (Dez.: 0)
    01 0001
    02 0010
    03 0011
    04 0100
    05 0101
    06 0110
    07 0111
    08 1000
    09 1001
    0A 1010 (Dez.: 10)
    0B 1011
    0C 1100
    0D 1101
    0E 1110
    0F 1111 (Dez.: 15)

    Die Binär-Bits (= Stellen) haben also einen "Wert": Von links nach rechts 8 4 2 1.
    Immer wenn da eine 1 steht, wird mit dem Wert multipliziert.
    0B = 1011 ist also 8+2+1 = dezimal 11
    Das sind also einstellige Hex-Zahlen (bis 15 dez.).

    Bei den zweistelligen Hex-Zahlen (z.B. 2F) kommen links noch mal 4 Bit dazu:
    Hex. 2F = 00101111
    Die Werte der 8 Bits sind: 128 64 32 16 8 4 2 1
    Die höchste 8-Bit-Binärzahl ist also 11111111 = dez. 255 = hex. FF

    Gruß Dirk

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    So, da bin ich wieder...
    habe nun endlich eine passende Sicherung auftreiben können.
    Vielen Dank, dass du mir dieses Zahlensystem erklärt hast, jetzt verstehe ich zumindest schon mal, was da überhaupt im Quellcode steht. Ich wär wohl nie alleine darauf gekommen, dass da in diesen hexadezimalen Zahlen ASCII-Zeichen stehen...^^

    Ich werde nachher erst einmal weiter herumprobieren, ob ich vielleicht doch noch das Wort TEST auf mein Display bekomme


    Danke für die viele Hilfe!!!

    Gruß
    Corone

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad