HD44780 Display via PCF8574 I²C IO-Expander
Code um ein HD44780 kompatibles LCD über den I²C-Bus durch einen 8-Bit IO-Expander-Baustein (PCF8574) zu steuern
Der PCF8574 von Philips ist ein 8-Bit IO-Expander für den I²C Bus (auch TWI genannt)
mit dem man einen ATMega leicht mit 8 weiteren IO-Leitungen ausrüsten kann.
Besonders leicht lässt sich solch ein Expander dazu benutzen, ein HD44780 kompatibles
LC Display im 4-Bit Modus anzusteuern. Man kann damit wertvolle IO-Pins am µC
sparen.
Ich habe Code geschrieben um ein an einen PCF8574 angeschlossenes Display
ganz simpel anzusteuern.
Konfiguriert wird die Belegung des Display in lcd.h :
/* i2c addr of expander chip */
#define LCD_I2C_ADDR 0x40 // (0100 000)
/* define what display-pin is connected
* to what io-pin of expander */
#define LCD_D4 P7
#define LCD_D5 P6
#define LCD_D6 P5
#define LCD_D7 P4
#define LCD_RS P1
#define LCD_RW P2
#define LCD_E P3
Es muss jediglich die I²C-Adresse des PCF8574 angegeben werden und welcher
Pin des LCD an welchem Pin des Expanders hängt!
Initialisieren des Display mit:
/* init the lcd */
void lcdInit(void);
Löschen des Displayinhalts mit:
/* clear the display */
void lcdClear(void);
Anzeigen eines Strings auf dem Display:
/* print a string on display,
* continues automatically in 2nd line,
* note that lcdClear() should be called
* before using this function */
void lcdPrintString(unsigned char *str);
Senden von Low-Level-Daten an das Display:
/* low level function, see lcd.c */
void lcd4BitOut(unsigned char c, unsigned char data);
Zusätzlich zu meinem Code ist zur Ansteuerung noch der I²C-Code
der avrlib nötig.
Download des Codes (veröffentlicht unter der GPL):
Version 1.0: hd44780_via_pcf8574-1.0.tar.gz
|