- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: Mein erstes Lcd gibt nix aus :-( Anfänger bittet um HILFE

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.02.2005
    Ort
    Hamburg
    Alter
    40
    Beiträge
    176

    Mein erstes Lcd gibt nix aus :-( Anfänger bittet um HILFE

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo an die hilfsbereite Community!!!

    Also ich habe vor einiger Zeit mit der uC Programmierung in Assembler angefangen, was auch bis zum heutigen Tag recht erfolgreich verlief. Jetzt habe ich mir ein 1 Zeiliges Lcd von Pollin besorgt (HD44780 kompatibel), worauf ich es leider nicht schaffe etwas auszugeben .

    Es ist alles richtig angeschlossen und an dem Datenport und an (Enable,RS,RW) liegen auch die Signale an die ich ausgebe.

    Nachdem an dem Datenport etwas anliegt, schalte ich E an,warte ca.50ms und schalte E wiede aus. Aber irgendwie interessiert es das Display nicht was ich
    mache.

    Ist es richtig, das nach dem Initalisieren von :
    8 Bit
    Clear home
    Coursorrichtung
    Display + Coursor ON + Blinkend

    zumindest schonmal ein Coursor zu sehen sein sollte?
    Ich sitze jetzt bestimmt schon 7 Std an diesem Teil, aber leider erfolglos

    Was muss ich alles Initialisieren damit ich etwas sehe?
    Oder reicht nur initialisieren für zumindest einen Cursor nicht aus?


    vielen vielen Dank schonmal im voraus!!!!

    Philipp

  2. #2
    RN-Premium User Begeisterter Techniker
    Registriert seit
    30.04.2004
    Alter
    46
    Beiträge
    245
    Arbeitest du mit dem 8Bit interface oder 4bit?
    Ich hatte bei Displays ein ähnliches Problem, schlicht mein Timing war zu schnell.

    Prinzipell meine Initalisierungssequenz
    lcdinit:
    push r18
    push r16
    ldi r18,50
    powerupwait:
    rcall delay5ms
    dec r18
    brne powerupwait
    ldi r16, 0b00110000 ;muss 3mal hintereinander gesendet
    rcall setbyte ; Setzt das Byte auf den Port (gekapselt, weil ich ein schieberegister dazwischen habe zum pins sparen)
    rcall lcd_enable ;1
    rcall delay5ms
    rcall lcd_enable ;2
    rcall delay5ms
    rcall lcd_enable ;und 3!
    rcall delay5ms
    ldi r16, 0b00111000 ;8bit-Modus einstellen
    rcall lcd_command
    rcall delay5ms
    ldi r16, 0b00001100 ;11 Display an, 0 cursor aus,0 blinkt aus
    rcall lcd_command
    ldi r16, 0b00000110 ;entry mode set adresse increment
    rcall lcd_command
    pop r16
    pop r18
    ret
    LCD_Command:
    rcall SetByte
    cbi DataPort, DataPin ;set RS low
    rcall lcd_Enable
    ret

    lcd_Enable:
    nop ; Nops damit das timing gemütlicher wird
    nop
    sbi EnablePort, EnablePin
    nop
    nop
    nop
    cbi EnablePort, EnablePin
    ret

    lg

    Alex

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.02.2005
    Ort
    Hamburg
    Alter
    40
    Beiträge
    176

    Hmm, vom Prinzip her das gleiche in grün

    Soweit vielen dank für die Antwort!

    Jetzt bin ich ratlos. Zu schnell spreche ich das Display nicht an,da ich das ganze zum Test mal an Led´s geklemmt habe und dabei verzögerungen von Befehl zu Befehl problemlos erkennen konnte.

    Soweit ich das erkennen konnte, habe ich auch die gleichen Initialisierungsschritte gemacht wie du. *grübel

    Ist es denn richtig, das ich nach den Initialisierungs schritten zumindest schonmal einen Cursor sehen müssste? Oder muss ich schon etwas hineinschreiben?
    mfg, Philipp

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    08.11.2004
    Beiträge
    8
    ... im Datenblatt des HD44780 ist eine korrekte Initialisierung beschrieben. Für den Kompatiblen müsstest Du mal im Datenblatt nachschauen, gerade beim Timing gibts da öfters Unterschiede. Arbeite einfach diese Schritte ab:
    • 1. 8 Bit Modus und warten (beim HD44780 ca. 20ms, brauchst den Mist nicht 3x senden, funktioniert)
    • 2. Funktion Set (Zeilenanzahl, Font)
    • 3. Display an
    • 4. Display löschen
    • 5. Entry Set Mode (Cursorverhalten)

    Und baue ab dem Schritt 'Funktion Set' eine generelle Abfrage des Busy-Flags mit ein, daß erspart Dir beim Wechsel der AVR-Taktfrequenz (durch einen Typenwechsel z.B.) einige Unannehmlichkeiten mit dem Timing.

  5. #5
    RN-Premium User Begeisterter Techniker
    Registriert seit
    30.04.2004
    Alter
    46
    Beiträge
    245
    @pumann
    Ich habe die Abfrage des Busy Flags in meinen Routinen nicht implementiert, weil ich mir den Pin für die RW Leitung normalerweise spare und ich so nur 3 Pins zum ansteuern des Displays brauche (HCT164 ist dazw.)


    @Philipp83
    Das Display sollte leer sein. Der Cursor ist bei meiner Routine aber ausgeschalten.
    Weiters: Siehst du überhaupt was am Display? Oder stimmt vielleicht die Kontrastspannung nicht (Pin3)

    lg

    Alex

    lg

    Alex

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.02.2005
    Ort
    Hamburg
    Alter
    40
    Beiträge
    176

    Kein Datenblatt vorhanden

    Hallo,

    Nein, leider sehe ich garnix und habe auch nie etwas darauf gesehen
    Ich glaube das die positive Kontrastspannung richtig ist, habe aber auch leider kein Datenblatt zu dem Display gefunden .

    LC-Display HYUNDAI HB16102

    1-zeiliges Display mit integriertem Controller (HD44780-kompatibel), Lötkontakten zum Anlöten der Anschlussleitungen für Betriebsspannung, Kontrast und Datenübertragung.

    Technische Daten:
    - 1 Zeile x 16 Zeichen
    - Ansteuerung über 4-Bit- oder 8-Bit-Datenbus möglich
    - Kontrast über externes Poti regelbar
    - Anzeigefläche 64x13,5 mm
    - Zeichengröße 3x6 mm
    - Betriebsspannung 5 V-
    Maße (BxHxT): 80x36x9 mm.

    BestNR. 120 333 bei Pollin

    Vielleicht kennt ja jemand dieses Display und hat nähere Informationen für mich.

    Sollte denn ein Blinkender Cursor auf dem sonst leeren Display nach dem Initialisieren und eventueller Kontrastveränderung zu sehen sein oder nicht?






    .include "m16def2.inc"

    ldi r16, LOW(RAMEND) ;
    out SPL, r16 ; Stackpointer
    ldi r16, HIGH(RAMEND) ;
    out SPH, r16 ;

    ldi r16, 0xFF
    out DDRA, r16 ;Port A = Ausgabeport
    out DDRB, r16 ;Port B = Ausgabeport
    ldi r16, 0xFF
    ldi r17, 0x00
    ldi r18, 0b00000100 ; Enable Pin
    ldi r21, 0b00000110 ; Enable und RS Pin
    ldi r20, 0xFF

    Lcd_Init: ldi r19, 0x30
    out Porta, r19
    rcall Enable
    ldi r19, 0x30
    out Porta, r19
    rcall Enable
    ldi r19, 0x30
    out Porta, r19
    rcall Enable
    ldi r19, 0b00000010 ; Cursor Home
    out Porta, r19
    rcall Enable
    ldi r19, 0b00000110 ; Cursor Bewegungsrichtung
    out Porta, r19
    rcall Enable
    ldi r19, 0b00001111 ; Display ON
    out Porta, r19
    rcall Enable
    ldi r19, 0b10000010 ; Ram Adresse
    out Porta, r19
    rcall Enable
    ldi r19, 0b00000010 ;
    out Porta, r19 ;
    ldi r19, 0b00000010 ; Etwas reinschreiben
    out Portb, r19 ;
    rcall Setzen ;




    Tot: nop
    rjmp Tot


    Enable: out PortB, r18 ; ENABLE AN
    ldi r19, 0xFF ;

    Wait: dec r19 ;
    CP r19, r17 ;
    BREQ Wait1 ;
    rjmp Wait ;
    Wait1: dec r20 ; WARTEN
    CP r20, r17 ;
    BREQ Aus ;
    ldi r19, 0xFF ;
    rjmp Wait ;

    Aus: out PortB, r17 ; ENABLE WIEDER AUS
    ret



    Setzen: out PortB, r21 ; ENABLE und RS AN
    ldi r19, 0xFF ;

    Wait2: dec r19 ;
    CP r19, r17 ;
    BREQ Wait3 ;
    rjmp Wait2 ;
    Wait3: dec r20 ; WARTEN
    CP r20, r17 ;
    BREQ Aus1 ;
    ldi r19, 0xFF ;
    rjmp Wait2 ;

    Aus1: ldi r19, 0b00000010
    out PortB, r19 ; ENABLE WIEDER AUS (Rs bleibt)
    ret





    Hmm, sieht bei mir ordentlicher aus (warum erkennt der hier keine Leerstellen)

    mfg, Philipp

  7. #7
    RN-Premium User Begeisterter Techniker
    Registriert seit
    30.04.2004
    Alter
    46
    Beiträge
    245
    Also du sollest auf jeden Fall was am Display sehen. Geh mal mit der Kontrastspin (3) auf Masse. Wenn ich mich recht entsinne, hast du dann max. Kontrast, da solltest du auf jeden fall die Pixel des Displays sehen.
    Auch wenn nix draufsteht, kein Cursor da ist etc. Ich mach dir am abend ein Photo.

    lg
    Alex

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.02.2005
    Ort
    Hamburg
    Alter
    40
    Beiträge
    176

    Es geht !!! Es geht !!!!

    Nochmals vielen Dank für eure rasche Hilfe !

    Woran es jetzt genau gelegen hat kann ich nicht mit genauigkeit sagen,
    aber nach einem neuaufbau und einer neuprogrammierung geht jetzt alles
    und die ersten Worte stehen auf dem Lcd

    Aber wenn ich mir das jetzt hier so ansehe, finde ich keine wirkliche
    änderung des janzen. Auch das Programm welches ich neu geschrieben habe,
    sieht nicht gravierend anders aus. Naja soll mir ja jetzt auch egal sein

    Na dann noch einen schönen Abend euch allen!!!!!!!


    mfg, Philipp

  9. #9
    RN-Premium User Begeisterter Techniker
    Registriert seit
    30.04.2004
    Alter
    46
    Beiträge
    245
    na wer sagts den. Gratuliere dass es jetzt klappt. Ist mir auch schon mal passiert, dass ein komplett neuer Anlauf was gebracht hat. Auch wenn alles "gleich" ist .
    Viel Spaß noch - nun spricht er zu dir

    lg

    Ale

  10. #10

    Datenblatt

    Falls es noch von Interesse sein sollte:

    Das Datenblatt zum LC-Display HYUNDAI HB16102 (BestNR. 120 333 bei Pollin) gibt es hier:

    http://www.pollin.de/shop/downloads/D120333D.PDF

Berechtigungen

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

12V Akku bauen