Notes on using the Crystalfontz I2C panels (CFAH2004AC-TMI-EW) This sequence seemed to work for initializing the panel. delay 500ms Probably not needed but can't hurt Send the byte 0x38 Function Set: 2 lines delay 120us Send the byte 0x0f Display on, cursor on, cursor blinks delay 120us Send the byte 0x01 Clear display delay 15ms Send the byte 0x06 Entry mode: cursor shifts right delay 120us Commands sent to the Crystalfontz I2C LCDs are a two byte transfer that consist of a control byte followed by a command byte containing the command value. Control byte has bit 7 (Co) set to 1 to indicate more commands can follow, and bit 6 (A0) cleared to 0 to put the data value in the command register, so this should be a 0x80 value. The command byte is the normal command value used with the HD44780 controller IC. For example, the command to clear the screen is a 0x01. To send this, the I2C write consists of two bytes: 0x80 (control byte with Co=1 and A0=0) and 0x01 (clear command). Data to be displayed on the LCD is sent with the control byte followed by any number of data bytes containing the ASCII codes to be displayed. Control byte has bit 7 (Co) cleared to 0 to indicate more data to follow, and bit 6 (A0) set to 1 to put the following bytes in the data register, so this should be a 0x40 value. For example, to show "Hello", the I2C write consists of six bytes: 0x40, 0x48, 0x65, 0x6C, 0x6C, 0x6f.