Hallo, nachdem ich einige Themen hier und in anderen Foren dazu gelesen habe, ist mir mein Fehler bei der Umsetzung einer Ansteuerung eines TC1602E-01 von Pollin über I2C, nicht ganz klar. Kurzum: Es funktioniert nicht und ich weiß nicht warum. Außer den schwarzen Balken zeigt es nichts an. Ich nutze folgendes: Display: TC1602E-01 von Pollin, das Datenblatt findet man z.B. hier: http://www.g-heinrichs.de/attiny/LCDisplay.pdf Den wohl bekannten Portexpander: PCF8574 Ich programmiere in C (AVR-Studio) µC: ATmega 644 mit 16 MHz Folgende Software nutze ich: Angelehnt an dieses Projekt: http://www.bralug.de/wiki/BLIT2008-Board-LCD Die dort erhältlichen Dateien i2clcd.c i2clcd.h twimaster.c (Von Peter Fleury) i2cmaster.h (Von Peter Fleury) verwende ich. Man kann sie allesamt hier downloaden: http://bralug.de/wiki-common/images/c/cb/Twi_lcd.tar.gz Ich habe die Portpins in der i2clcd.h angepasst. Als Anhang habe ich die von mir angepasste i2clcd.h beigefügt. Zum testen verwende ich folgenden Code in der main: // TWI initialisieren i2c_init(); // LCD initialisieren lcd_init(); // LCD-Anzeige loeschen lcd_command(LCD_CLEAR); // Text auf LCD ausgeben lcd_printlc(1,1,(unsigned char *)"TEST"); lcd_printlc(2,1,(unsigned char *)"Reihe 2"); Durch Tests kann ich sagen das immerhin der Portexpander funktioniert. Bei 0xF0 erhalte ich 4x Low und 4x High. Das Display zeigt (leider Dauerhaft) schwarze Balken. Der Kontrast ist also okay. Im Grunde genommen wird wohl die Datenverbindung zwischen Portexpander und Display nicht korrekt durchgeführt. Folgendes ist mir aufgefallen. Das Display hat eine 5x8 Pixel-Matrix. Vielleicht liegt es daran? Wer kann mir dazu mehr sagen? Gruß, Andi
Hi Andi, der Code funktioniert, bei mir fast auf Anhieb. Habs mit fünf Displays getestet. Mit einem DV40200-5 (2x40) funktionierte es sofort. Ein Optrex DMC20481 (4x20) brauchte noch eine Zeitanpassung. Diese Displays gehören noch zum Urgestein (Original HD44780 verbaut) und sind daher etwas träge. In der i2clcd.c muß in Zeile 124 der Wert lcd_wait_us(800) in lcd_wait_ms(5) geändert werden, dann klappts auch mit diesem Display. Das TC1602E-01 von Pollin funktioniert auch, allerdings wird nur Datenmüll angezeigt. Lediglich der Zähler wird einigermaßen korrekt angezeigt. Warum das so ist, kann ich noch nicht sagen. Initialisierung scheint ja zu funktionieren. Ein BT1602FB (Batron, 2x16) und ein MC1602FSBL (2x16) wollten noch garnicht spielen :) . Da die Ports bei dir funktionieren dürfte die eingestellte Adresse auch korrekt sein. Hab das ganze mit einem Atmega128 @ 16 MHz getestet. MfG BC
Habe heut ncohmal ein anderes TC1602E-01 getestet, funktioniert einwandfrei. Anscheinend hat das zuvor getestete ein anderes Problem. MfG BC
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.