- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 5 von 5

Thema: LCD - Char übersenden ; Probleme mit _delay_ms();

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.05.2013
    Beiträge
    18
    Irgendwie check ich nicht was du da machen willst.
    *Wenn du mit chars arbeitest, dann arbeite auch mit chars und mische nicht int und char.
    *Die delays kommen mir teilweise irgendwie (zu) hoch vor.
    *Verarbeite deinen char in einer Funktion, und greife auf den port in einer anderen zu. So verliert man nicht die Übersicht. Bei dir scheint das alles irgendwie vermischt zu sein und es ist nicht ganz klar was du wo machst.

    Bei mir schaut das senden eines char an einen HD44780 im 4 bit Modus so aus:

    Code:
    #define LCD_DATA_PORT PORTB
    #define LCD_DB7 PB5
    #define LCD_DB6 PB4
    #define LCD_DB5 PB3
    #define LCD_DB4 PB2
    #define LCD_E_PORT PORTB
    #define LCD_E PB1
    #define LCD_RS_PORT PORTB
    #define LCD_RS PB0
    ....
    Code:
    void lcdShowChar(unsigned char show_ch)
    {
      LCD_RS_PORT |= (1 << LCD_RS);
      lcdSendNibble(show_ch >> 4);
      lcdSendNibble(show_ch);
      _delay_us(40);
    }
    
    void lcdSendNibble(unsigned char nibble)
    {
      LCD_DATA_PORT &= ~(1 << LCD_E) & ~(1 << LCD_DB4) & ~(1 << LCD_DB5)
      & ~(1 << LCD_DB6) & ~(1 << LCD_DB7);
    
      LCD_E_PORT |= (1 << LCD_E);
      LCD_DATA_PORT |= ((nibble & 0x01) << LCD_DB4);
      nibble >>= 1;
      LCD_DATA_PORT |= ((nibble & 0x01) << LCD_DB5);
      nibble >>= 1;
      LCD_DATA_PORT |= ((nibble & 0x01) << LCD_DB6);
      nibble >>= 1;
      LCD_DATA_PORT |= ((nibble & 0x01) << LCD_DB7);
      LCD_E_PORT &= ~(1 << LCD_E);
    }
    Vielleicht hilft dir das etwas. Geht aber sicher auch schöner und man könnte den PORT auch auf einmal mit einer Maske beschreiben als den char jedesmal um 1 zu verschieben. Wenn ich das nächste mal ein lcd brauche werde ich das auch wahrscheinlich dahingehend abändern.
    Geändert von Siad (19.06.2014 um 06:08 Uhr)

  2. #2
    Benutzer Stammmitglied Avatar von CsMTEch
    Registriert seit
    01.05.2013
    Ort
    bei Aurich (Niedersachsen)
    Beiträge
    73
    Ich hab jetzt den Tipp, bei den Chars zu bleiben, ausprobiert und siehe da, alles funktioniert jetzt noch LCD_String(); schreiben und das LCD ist abgehakt

    Vielen Dank

    Ulf

Ähnliche Themen

  1. char sprintf Probleme
    Von I_-_I---c im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 10.11.2013, 13:36
  2. Probleme mit LCD (HD44780) Wie sezt man einen ascii-char auf cursor pos ?
    Von fugitivus im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 23.04.2011, 11:14
  3. Probleme über Variabel-Addressierung auf Flash-Char
    Von Nicy im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.01.2009, 18:17
  4. RS232 P. Fleury Char und String Probleme mal wieder
    Von PCMan im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 31.10.2007, 15:52
  5. Laufschrift aktualisieren, Probleme mit char*
    Von PCMan im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 20.07.2007, 13:01

Berechtigungen

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

LiFePO4 Speicher Test