Forum: Mikrocontroller und Digitale Elektronik HD44780 an PCF8574


von Nils S. (kruemeltee) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe hier erst im Netz eine kleine Lib entdeckt, welche ein 
Textdisplay über einen PCF8574 ansteuern soll.
http://scriptkiller.de/de/a19/computer_elektronik/mikrocontroller/hd44780_display_via_pcf8574_i%C2%B2c_io-expander/

Ich habe nun ein 8x2 Anag Vision 0802 Display dran ("KS0066 or 
equivalent"), welches mit der Fleury-Lib und eigenem Code ohne Probleme 
direkt an Portpins funktioniert. Das Display kommt nur nicht mit klar, 
wenn die Pins D0 bis D3 im 4 Bit Mode auf 0 liegen, müssen floaten.

Die Lib verwendet eine i2c.h, welche ich nicht finden konnte, so hab ich 
einfach die Ausgabe Funktion etwas angepasst:
1
void lcdOut(unsigned char c) {
2
3
  //i2cMasterSendNI(LCD_I2C_ADDR, 1, &c);
4
  set_pcf8574(0x4e, c);
5
6
}
7
8
char set_pcf8574(unsigned char address, unsigned char val) {
9
  unsigned char ret = i2c_start(address+I2C_WRITE);
10
  if(ret) {
11
    i2c_stop();
12
    return -1;
13
  } else {
14
    i2c_write(val);
15
    i2c_stop();
16
  }
17
  return 0;
18
}

Die PCFs (sind 6 Stück auf der Platine) funktionieren alle ohne 
Probleme.

Das Display kommt anscheinend auch über init hinaus, da die schwarzen 
Balken verschwinden, allerdings mehr tut sich auch nicht. Ob ein 
lcd_clear() funktioniert, kann ich nicht sagen, da es nichts zu clearen 
gibt.

Hier der Ausschnitt meiner main(), welcher relevant ist:
1
  i2c_init();
2
  sei();
3
  lcdInit();
4
  lcdClear();
5
  lcdPrintString((unsigned char *)"test");
Wenn ich den typecast nach unsigned char * für die PrintString weglasse, 
dann meckert er wegen "differ in signedness", tut sich aber auch nichts 
am Display.

Im Anhang die lcd.c und lcd.h aus meinem Projektordner.
http://www2.produktinfo.conrad.com/datenblaetter/175000-199999/183369-da-01-en-LCD_Modul_8x2_Zeichen.pdf 
Hier das Datenblatt des Displays

Ich hoffe ihr könnt mir da helfen!

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.