Forum: Mikrocontroller und Digitale Elektronik LCD-Display DEM16101


von jojo (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

seit 2 Tagen kämpfe ich mit obigem LCD an einem ATmega 32 herum.

Es handelt sich um ein 1x16 LCD, das ich glaube mal bei csd gekauft 
habe. Hinten drauf steht als Bestückungsdruck: DEM16101 und auf einem 
kleinen Aufkleber: DEM16101 TGH/V 469.

Problem ist, dass es sich scheinbar nicht initialisieren lässt.
Speziell scheint es kein HD44780 kompatibles zu sein (habe ich trotzdem 
getestet...).
Die restlichen Beiträge zu Displays und speziell diesem habe ich mir 
schon durchgesehen, leider bisher keine Lösung gefunden.

Konfiguration:

Grundboard ist das NetIO von Pollin über dessen ext-Port ich das Display 
angeschlossen habe.

RS  --> PD3
R/W --> PD2
E   --> PB3

DB4 --> PD4
DB5 --> PD5
DB6 --> PD6
DB7 --> PD7

GND auf GND des Controllers, Vdd auf +5V, V0 auf GND (mit Poti bin ich 
auch bei 0V gelandet, sonst sieht man überhaupt nichts).

Als Code-Basis habe ich den Code aus dem Wiki zur Ansteuerung von 
Displays in C geholt und etwas angepasst, da Enable ja nicht auf dem 
selben Port liegt:

static void lcd_enable( void )
{
    PORTB |= (1<<LCD_EN);     // Enable auf 1 setzen
    _delay_us( LCD_ENABLE_US );  // kurze Pause
    PORTB &= ~(1<<LCD_EN);    // Enable auf 0 setzen
}

void lcd_init( void )
{
    // verwendete Pins auf Ausgang schalten
    uint8_t pins = (0x0F << LCD_DB) |           // 4 Datenleitungen
                   (1<<LCD_RS);                 // R/S Leitung
    DDRB |= (1<<LCD_EN);      // Enable Leitung
    LCD_DDR |= pins;

    // initial alle Ausgänge auf Null
    LCD_PORT &= ~pins;
    PORTB &= ~(1<<LCD_EN);

        _delay_ms(100);
      // Function Set
       //LCD_PORT &= 0xF0;
       LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0
       LCD_PORT = (0x02<<4);
       lcd_enable();
       lcd_enable();
       //LCD_PORT &= 0xF0;
       LCD_PORT = (0x04<<4);  // N=0 und F auf "1", N=1 auch wirkungslos
       lcd_enable();

       _delay_ms(5);

       // Display On/Off
       //LCD_PORT &= 0xf0;
       LCD_PORT = 0x00;
       lcd_enable();
       LCD_PORT = (0x0F<<4);   // D,C und B auf "1"
       lcd_enable();

       _delay_ms(5);

       //Display Clear
       //LCD_PORT &= 0xF0;
       LCD_PORT = 0x00;
       lcd_enable();
       LCD_PORT = (0x01<<4);    // display-Clear
       lcd_enable ();

       _delay_ms(10);        // 5ms warten bis display ok

       //Entry Mode Set
       //LCD_PORT &= 0xF0;
       LCD_PORT = 0x00;
       lcd_enable();
       LCD_PORT = (0x06<<4);    // I/D="1"  SH="0"
       lcd_enable();

}

Dabei habe ich mich zur Initialisierung an das Datenblatt gehalten und 
den Code aus diesem Thread übernommen 
Beitrag "welches LCD passt zum LCD Tutorial" und an meine 
Port-Konfiguration angepasst.

Was kann ich beobachten:

Wenn ich den Strom einschalte sind die ersten 8 Zeichen des Displays 
schwarz. Danach passiert nichts mehr.
Die Enable Pulse sehe ich mit dem Oszilloskop und die einzelnen Byte 
habe ich einmal langsam durchprobiert, die stimmen auch.

Die Timings habe ich schon deutlich hochgefahren:

#define LCD_ENABLE_US           100

Leider auch keine Veränderung.

Was kann ich noch machen?

Viele Grüße

jojo

von g457 (Gast)


Lesenswert?

wo versteckt sich R/W in der Initialisierung?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

jojo schrieb:
> Speziell scheint es kein HD44780 kompatibles zu sein (habe ich trotzdem
> getestet...)

Doch, der KS0066 ist eigentlich zum 44780 kompatibel. Die 4-bit 
Initialisierung ist allerdings ( wie immer ) ein wenig holprig:
*'function set' setzen und lange warten .
*Nochmal 'function set' schreiben und kürzer warten.
*Ein letztes mal 'function set' schreiben und kürzer warten.

Das kommt auf Seite 12 des Datenblattes nicht so richtig rüber.

von Uwe (de0508)


Lesenswert?

jojo,

laut Datenblatt benötigt Vo eine negative Spannung.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Da er aber die Segmente in der ersten Hälfte sieht , ist das dieses mal 
anscheinend nicht das Problem.

Es sollten übrigens die bewährten Libraries für den HD44780 alle gehen, 
lohnt sich also meistens nicht, das Rad neu zu erfinden, es sei denn, 
man braucht Assembler oder so.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.