This initialization procedure puts the 256x128 LCD into graphics plus text mode. It sets up 32 characters per row, and 16 total character rows of eight pixels tall each character. The text area is located from address 0000 to 01FFh. The Graphics area is located from address 1000h to 1FFFh. NOTEs: 1) Sending a command byte means sending the byte with the address line high. 2) Sending a data byte means sending the byte with the address line low. 3) Some of the parameters are specified as "one less than the desired number". Thus, you will see some things like "7Fh = 128 lines". Initialization Steps: Assert the hardware reset pin & hold it active for 3 milliseconds. Negate the hardware reset pin & wait 50 milliseconds for reset completion. Send System Set command 40h Send data byte 30h = Internal CG, 32 character CGRAM, 8 lines/char, single pane, No invert, LCD, Normal Shift clock Send data byte 87h = 8 pixel-wide characters, 2 frame AC drive Send data byte 07h = Vertical character size = 8 pixels Send data byte 1Fh = 32 display character bytes per row C/R Send data byte 23h = Total address range per row = 36 bytes (this byte must be at least four greater than the C/R Send data byte 7Fh = 128 display lines total Send data byte 20h = low byte of virtual screen width in byte count. Send data byte 00h = high byte of virtual screen width in byte count. Send Scroll Command 44h Send data byte 00h = low byte of layer1 text home address Send data byte 00h = high byte of layer1 text home address Send data byte 7Fh = 128 scan lines for text layer Send data byte 00h = low byte of layer 2 graphic home address Send data byte 10h = high byte of layer 2 graphic home address Send data byte 7Fh = 128 scan lines for graphics layer Send horizontal scroll command 5Ah Send data byte 00h = no horizontal scroll adjustment Send Overlay Selections Command 5Bh Send data byte 00h = Or Layers, Text Block 1, 2 layers (NOTE: according to datasheet, layer 2 can ONLY be graphics) Send Auto Cursor Increment by +1 Command 4Ch --- Clear memory --- Send Cursor Write command 46h Send data byte 00h = low byte of cursor address Send data byte 00h = high byte of cursor address Send Memory Write command 42h Send 512 bytes of data of value 20h ; Sending 512 ascii blank characters Send 3584 bytes of data 00h ; Clearing CGRAM area Send 4096 bytes of data 00h ; Clear graphics area Send Cursor Format Command 5Dh Send data byte of 04h = five pixels wide cursor Send data byte of 86h = Vertical Cursor Size=7 pixels, block cursor Send Display On Command 59h Send data byte 14h = Layer 2 on, layer 1 on, cursor off Send Set CGRAM Address Command 5Ch Send data byte 00h = low byte of CGRAM address Send data byte 04h = high byte of CGRAM address NOW DRAW A DOT IN THE UPPER LEFT CORNER: Send Set cursor Command 46h Send data byte 00h = low byte of graphics address Send data byte 10h = high byte of graphics address Send Memory Write command 42h Send a data byte 80h = left hand dot of the byte at 1000h NOW PLACE A CHARACTER IN THE LEFT COLUMN, TOP ROW Send Set cursor Command 46h Send data byte 00h = low byte of text address Send data byte 00h = high byte of text address Send Memory Write command 42h Send a data byte 23h = "#" in top, left corner character position. You should now have the # character in the top left, and the top, leftmost graphics DOT should be shown as well.