-         

Ergebnis 1 bis 5 von 5

Thema: Probleme mit LCD Ansteuerung (2. Zeile)

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    Probleme mit LCD Ansteuerung (2. Zeile)

    Anzeige

    Ich habe ein LCD 16x2 in Verwendung, doch kann ich nicht in der 2. Zeile schreiben...der Controller auf dem LCD ist ein EU KS70066 Chip

    Ich initialisiere es so:
    Code:
    /* ========================================================================== */
    void lcd_init(void)
    {
    // DDR Setzen
    LCD_DDR = 0xFF;  // Datenport 0..7  Output
    
    CONTROL_DDR |= (1 << EN) | (1 << RS); // Controllport EN + RS  Output
    _delay_ms(450);
    
    LCD_PORT = 0x00; // Datenleitungen,alles auf LOW setzen
    send_cmd(0x01);  // LCD clear
    _delay_ms(5);
    
    send_cmd(0x38);  // 8-Bit u. 2 Zeilen
    _delay_ms(5);
    
    send_cmd(0x0E);  // Display On , Cursor ON
    _delay_ms(5);
    
    //send_cmd(0x0F); // Cursor blink ON
    _delay_ms(5);
    
    //send_cmd(0x10);  // Cursor shift re
    _delay_ms(5);
    }
    
    /* ========================================================================== */
    Kommandos werden so geschrieben:
    Code:
    /* ========================================================================== */
    /*                                                                            */
    /*              Sende Kommandodaten                                           */
    /*                                                                            */
    /*                                                                            */
    /* ========================================================================== */
    void send_cmd(uint8_t cmd)
    {
    CONTROL_PORT &= ~(1<< RS);   //RS=0 command
    _delay_ms(1);
    LCD_PORT = cmd;
    CONTROL_PORT |=  (1 << EN);  //EN=1
    _delay_ms(1);
    CONTROL_PORT &= ~(1 << EN);  //EN=0
    _delay_ms(4);
    }
    einzelne Zeichen schreibe ich so:
    Code:
    /* ========================================================================== */
    /*                                                                            */
    /*                 Sende Char                                                 */
    /*                                                                            */
    /*                                                                            */
    /* ========================================================================== */
    void send_chr(char chr)
    {
    int ch = chr;
    CONTROL_PORT |= (1<< RS);   //RS=1 daten
    _delay_ms(1);
    LCD_PORT =ch;
    CONTROL_PORT |=  (1 << EN);  //EN=1
    _delay_ms(1);
    CONTROL_PORT &= ~(1 << EN);  //EN=0
    _delay_ms(1);
    
    
    }
    Im Test (main) geht es so von statten:
    /* ================================================== ======================== */
    /* */
    /* */
    /* Main-Routine LCD Test */
    /* */
    /* ================================================== ======================== */
    int main(void)

    {
    lcd_init();
    _delay_ms(200);
    send_cmd(0x82); // sende Command: Pos.3 1.Zeile(0x80)
    send_chr('A');
    send_chr('B');
    send_chr('C');
    send_cmd(0x42); // sende Command: Pos 3 2. Zeile(0x40)
    send_chr('D');
    send_chr('E');
    send_chr('F');
    return 0;
    }
    Ausgegeben werden nur in der ersten Zeile "ABC" an richtiger Stelle..."DEF" auf eigendlich der 2. Zeile erscheint gar nicht, ich kann auch nur den Cursor nicht in diese Zeile bringen.
    Lt Datenblatt soll 0x80... Zeile 1 und 0x40 ... Zeile 2 sein.
    Zeil1 kann ich nutzen wie ich möchte, nur die Zeile 2 eben GAR NICHT ???
    Weiss wer einen Rat ?
    Ich bin dankbar für jeden Hinweis !

    Gruss Gerhard
    Geändert von oderlachs (27.05.2014 um 20:20 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.186
    Ich verwende immer die LCD-Lib von Peter Fleury, da ich mich nie damit geplagt habe etwas eigenes zu schreiben.
    Deine Startadressen kommen mit etwas eigenartig vor. Schreib mal in die erste Zeile laufend Zeichen hinein. Nach 40 Zeichne solltest du in der zweiten Zeile sein.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Hubert !
    ich habe auch funktionierende "Fremd-Libs" , nur wollte ich mal versuchen zu Begreifen wie das von statten geht, mit der LCD Ansteuerung. Ja mit den Startadressen habe ich mich auch schon gewundert, aber es ist halt so angegeben ...?
    Heute habe ich erst mal die LCD_Module mit nem Arduino getestet, sind alle ok, hätte ja sein können das ein falscher Befehl an die falsche Adresse die Dinger taub gemacht hätte. Schon komisch das in manchem Datenbölatt nicht mal die Adressen angegeben sind, die muss man sich dann woanders aus den tiefen des Webs rauswuseln..
    Vielleicht auch ein wenig Dumm augedrückt die Hex 40 der 2.Zeile muss zu der Adresse 0 der 1. Zeile hinzuaddiert werden..habe verschieden Werte gefunden...schon alles probiert...

    Morgen ist Herrentag da mach ich erst mal ne AVR-Pause... also allen hier nen guten Feiertag mit schönem Ausflugswetter...hier regnets zur Zeit aus Eimern..

    Gruss und Dank

    Gerhard
    Geändert von oderlachs (28.05.2014 um 17:23 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2007
    Ort
    Eisenach
    Beiträge
    409
    Hallo,
    ich denke mal die2. Zeile beginnt bei 0xC0 und nicht bei 0x40.
    Ich kann damit falsch liegen, aber einen Versuch ist es wert.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Du hast Recht, wie schon geschrieben habe ich mich ein wenig dumm ausgedrückt 0x80 + 0x40 = 0xC0....usw... geht trotzdem nicht.
    Aber danke, Ich hatte das vorher genau so falsch gesehen, darum wohl auch so falsch dann beschrieben..

    lg
    Gerhard

    Nachtrag : Wie ich soeben bemerkt habe hatte ich nach der Initialisierung nur auf der ersten Zeile leicht schattierte Zeichenfelder , am Arduino sind es aber dann beide Zeilen. Hatte mir aber das Initkommando für Mehrzeilige LCDs mehrmals angesehen und auch ausgerechnet, ich muss dafür 0x38 übertragen bei einer Zele nur 0x30..(andere Zuordnungen wie Cursor usw. ) sind da mit einberechnet...

    Na vielleicht steige ich da noch dahinter wo es hängt..
    Geändert von oderlachs (28.05.2014 um 18:44 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. Probleme mit der Lcd-ansteuerung
    Von Jojo12 im Forum PIC Controller
    Antworten: 19
    Letzter Beitrag: 29.12.2007, 22:35
  2. Probleme mit LCD Ansteuerung PORT C Atmega32 MHz Quarz
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 36
    Letzter Beitrag: 27.05.2006, 00:10
  3. probleme mit lcd ansteuerung
    Von Mac Gyver im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 25.11.2005, 19:21
  4. 2. Zeile im LCD display
    Von schroejahr im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 02.10.2005, 11:32
  5. Probleme bei LCD-Ansteuerung
    Von Rosenthal im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 22.07.2005, 12:32

Stichworte

Berechtigungen

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