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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.