-         

Ergebnis 1 bis 7 von 7

Thema: Anschluss LCD an Microcontroller

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    09.03.2018
    Beiträge
    13

    Anschluss LCD an Microcontroller

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi ich will den LCD an einen µC anschließen. Das Datenblatt finde ich eine Katastrophe...Es gibt viele teure fertige LCD Module bei denen ich 4 digitale Pins für den 4-bit mode benötige und noch 1-2 für enable und write/read. Kann ich das mit diesem LCD(nicht mehr als 6 digitale Pins) auch realisieren und wenn ja wie? und welche zusätzlichen Bausteine oder ICs wären nötig? vll hat auch jemand schon eine ähnliche Schaltung parat...

    598655-da-01-en-LCD_3_ZIFFERN__31_LCD_S301C31TR_LMX.pdf

    Klicke auf die Grafik für eine größere Ansicht

Name:	Unbenannt.jpg
Hits:	8
Größe:	19,5 KB
ID:	33356

  2. #2
    RN-Premium User Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    501
    Blog-Einträge
    17
    Zitat Zitat von peterfb Beitrag anzeigen
    Es gibt viele teure fertige LCD Module bei denen ich 4 digitale Pins für den 4-bit mode benötige und noch 1-2 für enable und write/read.
    Diese fertigen Module beinhalten einen Controller und die Ansteuerschaltung für die Flüssigkristalanzeige. Für das von dir aufgeführte transflexive Display brauchst du noch die Ansteuerung. Ich nehme diese Displays gerne für Batteriebetriebene Basteleien, z.B. so was hier. Dafür kann man z.B. einen PIC Mikrocontroller aussuchen, der eine LCD Ansteuerung mit der benötigten Wechselspannung ohne Gleichanteil in Hardware hat, z.B. den PIC16F19155 oder PIC16F19175. Mit welchen µC bist du unterwegs?
    Geändert von witkatz (21.03.2018 um 07:21 Uhr)
    Gruß witkatz

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    09.03.2018
    Beiträge
    13
    Ich benutze ein ST Nucleo Board da ist ein Cortex-M4 drauf...ich habe nicht mehr viele Digitale Pins frei, da das ganze auf Arduino basiert. Weißt du wo ich eine Anleitung oder Schematic zu der Ansteuerschaltung finde? Ich wollte kein fertiges Modul kaufen.

  4. #4
    RN-Premium User Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    47
    Beiträge
    501
    Blog-Einträge
    17
    Zitat Zitat von peterfb Beitrag anzeigen
    ich habe nicht mehr viele Digitale Pins frei, [...] Ich wollte kein fertiges Modul kaufen.
    So wie ich die Ansteuerung von LCD Flüssigkristalanzeigen kenne, muss für das von dir vorgestellte Display an 23 Segmenten und am COM 50Hz Wechselspannung (ohne DC Komponente!) ausgegeben werden. Wenn du 24 freie digitale Ausgänge hättest, könntest du das vielleicht in Software realisieren.
    Was ist denn eigentlich dein Ziel? Wenn es nur darum geht ein paar Zahlen auszugeben, dann ist so ein 16x2 Display mit integriertem Controller für 2'fufzich schon die einfachste Lösung.

    - - - Aktualisiert - - -

    Wenn dir das Ansteuern des HD44780 zu kompliziert oder zu Pin-aufwendig ist, dann ist vielleicht ein LCD Display mit I2C oder ein mit I2C Adapter das richtige? Bin beim googlen zufällig drauf gestoßen...
    Geändert von witkatz (21.03.2018 um 10:19 Uhr)
    Gruß witkatz

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.03.2011
    Beiträge
    1.466
    Zitat Zitat von peterfb Beitrag anzeigen
    Kann ich das mit diesem LCD(nicht mehr als 6 digitale Pins) auch realisieren und wenn ja wie? und welche zusätzlichen Bausteine oder ICs wären nötig? vll hat auch jemand schon eine ähnliche Schaltung parat...
    Nein das geht nicht. Da brauchst du die komplette LCD-Ansteuerung einschließlich Spannungswandler und Takterzeugung. Wenn du das noch nie gemacht hast, bist du ein paar Monate gut beschäftigt.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2007
    Ort
    Berlin
    Beiträge
    580
    Ich habe grad mal gekramt und eine alte Schaltung von mir gefunden.
    Du brauchst dann eigentlich nur 3 Leitungen:

    Clock
    Chip Select
    Datenleitung

    Hier mal ein Ausschnitt aus dem Schaltplan:

    Klicke auf die Grafik für eine größere Ansicht

Name:	LCD Ansteuerung_2.jpg
Hits:	16
Größe:	47,7 KB
ID:	33359

    Es ist ewig her, als ich ein ähnliches Display mit nem PIC angesteuert habe, aber es gab da einiges zu beachten,
    wenn ich mich recht erinnere musste ich die Segment und die COM Leitung in einem Takt kontinuierlich invertiert ansteuern.
    Dies muss absolut symetrisch erfolgen, also 50:50 Prozent
    Schieberegister hab ich das "berühmte" 74595 genommen, die kann man ja beliebig kaskadieren, weis nicht ob man das auf dem Bild erkennen kann.
    Hier sollten "HC" Typen nicht "HCT" verwendet werden wenn dein Controller mit 3,3 Volt läuft, bei 5 Volt wärs egal.

    Aus meiner Erinnerung, ich hoffe ich liege nicht falsch, dann korrigiert mich bitte:
    Du schiebst die gesamten Daten rein, wobei die anzusteuernden Segmente High sind, dazu die COM Leitungen auf Low.
    Dann schiebst Du die gesamten Daten invertiert rein, also alle anzusteuernden Segmente auf Low und die COM Leitung auf High.
    Das muss im schnellen Wechsel erfolgen, aber absolut symetrisch erfolgen, sonst verblasst dein Display.

    Bei deinem Display benötigst Du laut Datenblatt nur 5 Volt Signale. Spannungsconverter brauchst Du nix.

    Ich vermute mal, es ist einfacher, wie schon beschrieben, ein Display mit fertigem Controller zu verwenden.

    --------------
    ich hab das grad nochmal ausprobiert.
    Ja, das funktioniert so, siehe Bild. Hier habe ich die COM Leitung und das BC-Segment (das ist die "1") wechselweise angesteuert.
    Es läuft bei 5 und auch bei 3,3 Volt wobei der Contrast etwas geringer wird.

    Klicke auf die Grafik für eine größere Ansicht

Name:	LCD_1.jpg
Hits:	13
Größe:	66,4 KB
ID:	33360

    Die Software Hauptschleife von meinem PIC Controller

    Code:
    while (1)
      {    
        LATA5 = 1;        // COM Leitung auf High
        LATA0 = 0;        // Segment Leitung auf Low
        Delay_ms(20);  
        LATA5 = 0;        // COM Leitung auf Low
        LATA0 = 1;        // Segment Leitung auf High
        Delay_ms(20);    
      }
    Fazit:
    Du hast 24 Pins bei deinem Display, dann brauchst Du lediglich 3 Schieberegister.
    Der Rest ist dann Software, wobei nur 3 Leitungen benötigt werden.

    Klicke auf die Grafik für eine größere Ansicht

Name:	LCD_Sheet-2.jpg
Hits:	5
Größe:	36,7 KB
ID:	33362


    Dann hab ich mir eine Header Datei geschrieben:
    Code:
    /******************************************************************************
      File  : SEGCODE.H
      Autor : Siro
     ******************************************************************************/
    
    /* bit definition for the 7-segment-displays
    
             a
          -------
         |       |    
       f |       | b
         |   g   |
          -------
         |       | 
       e |       | c
         |       |
          -------
             d
    
    */
    
    /* hardware definitions where the segments are connected */
    #define SEG_A    0x80    /* Display Segment a  is Bit 7 */
    #define SEG_B    0x40    /* Display Segment b  is Bit 6 */
    #define SEG_C    0x20    /* Display Segment c  is Bit 5 */
    #define SEG_D    0x10    /* Display Segment d  is Bit 4 */
    #define SEG_E    0x08    /* Display Segment e  is Bit 3 */
    #define SEG_F    0x04    /* Display Segment f  is Bit 2 */
    #define SEG_G    0x02    /* Display Segment g  is Bit 1 */
    #define SEG_DP    0x01    /* Display Segment dp is Bit 0 */
    
    /* visible outline of Numbers and Characters */
    #define SEG_CODE_0 SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F
    #define SEG_CODE_1         SEG_B + SEG_C
    #define SEG_CODE_2 SEG_A + SEG_B         + SEG_D + SEG_E         + SEG_G
    #define SEG_CODE_3 SEG_A + SEG_B + SEG_C + SEG_D                 + SEG_G
    #define SEG_CODE_4         SEG_B + SEG_C                 + SEG_F + SEG_G
    #define SEG_CODE_5 SEG_A         + SEG_C + SEG_D         + SEG_F + SEG_G
    #define SEG_CODE_6 SEG_A         + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_7 SEG_A + SEG_B + SEG_C
    #define SEG_CODE_8 SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_9 SEG_A + SEG_B + SEG_C + SEG_D         + SEG_F + SEG_G
    #define SEG_CODE_A SEG_A + SEG_B + SEG_C         + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_b                 SEG_C + SEG_D + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_C SEG_A                 + SEG_D + SEG_E + SEG_F
    #define SEG_CODE_d         SEG_B + SEG_C + SEG_D + SEG_E         + SEG_G 
    #define SEG_CODE_E SEG_A                 + SEG_D + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_F SEG_A                         + SEG_E + SEG_F + SEG_G
    
    #define SEG_CODE_G SEG_A         + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_H         SEG_B + SEG_C         + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_i                                 SEG_E 
    #define SEG_CODE_I                                 SEG_E + SEG_F
    #define SEG_CODE_L                         SEG_D + SEG_E + SEG_F
    #define SEG_CODE_l                                 SEG_E + SEG_F
    #define SEG_CODE_n                 SEG_C         + SEG_E         + SEG_G
    #define SEG_CODE_o                 SEG_C + SEG_D + SEG_E         + SEG_G
    #define SEG_CODE_O SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F
    #define SEG_CODE_t                         SEG_D + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_u                 SEG_C + SEG_D + SEG_E
    #define SEG_CODE_P SEG_A + SEG_B                 + SEG_E + SEG_F + SEG_G
    #define SEG_CODE_r                            SEG_E         + SEG_G    
    #define SEG_CODE_S SEG_A         + SEG_C + SEG_D         + SEG_F + SEG_G
    #define SEG_CODE_T SEG_A                         + SEG_E + SEG_F
    #define SEG_CODE_U         SEG_B + SEG_C + SEG_D + SEG_E + SEG_F
    #define SEG_CODE_Y         SEG_B + SEG_C + SEG_D         + SEG_F + SEG_G
    #define SEG_CODE_h                 SEG_C         + SEG_E + SEG_F + SEG_G
    
    #define SEG_CODE_MINUS     SEG_G
    #define SEG_CODE_UNDERLINE SEG_D
    #define SEG_CODE_POINT       SEG_DP
    #define SEG_CODE_BLANK       0
    Geändert von Siro (21.03.2018 um 22:57 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    30
    Beiträge
    4.648
    Du kannst ein LCD auch mit einem EXOR Gatter ansteuern. Du benötigst einen Takt und das Signal (für jeden Balken).
    Takt gibst du auf die BP (Backplane = gemeinsamer Anschluss der Segmente), diesen Takt gibst du gleichzeitig auf einen Eingang des Gatters.
    Signal gibst du auf den 2ten Anschluss des Gatters.

    Wenn das Signal "0" ist sind BP und Segment gleichphasig, das Segment leuchtet nicht.
    Wenn das Signal "1" ist sind BP und Segment gegenphasig, das Segment leuchtet.

    Logiktabelle EXOR, A & B=Eingang, X=Ausgang:
    A B X
    0 0 0
    1 0 1
    0 1 1
    1 1 0

    Durch das EXOR hast du zwischen BP und Segment eine Wechselspannung. Wenn du Multiplexen willst wird es etwas komplizierter.

    MfG Hannes

Ähnliche Themen

  1. Daten von Microcontroller zu Microcontroller reichen
    Von MiniMax im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 9
    Letzter Beitrag: 07.12.2009, 15:48
  2. Anschluss I2C
    Von BlackBroom im Forum Elektronik
    Antworten: 6
    Letzter Beitrag: 27.04.2007, 22:40
  3. Antworten: 3
    Letzter Beitrag: 12.02.2007, 12:01
  4. LCD Anschluss
    Von Björn im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 23.09.2005, 20:48
  5. L298N wo ist anschluss 1 und anschluss 15????
    Von hoer173 im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 15.03.2004, 17:52

Berechtigungen

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