/*
* Program for writing to NHD-C160100AZ-RN-GBW_Rev1A display with ST75160 controller.
*
* Newhaven Display invests time and resources providing this open source code,
* Please support Newhaven Display by purchasing products from Newhaven Display!
*
* This code is provided as an example only and without any warranty by Newhaven Display.
* Newhaven Display accepts no responsibility for any issues resulting from its use.
* The developer on the final application incorporating any parts of this
* sample code is responsible for ensuring its safe and correct operation
* and for any consequences resulting from its use.
* See the GNU General Public License for more details.
* Logic level shifters are required to convert the Arduino 5V logic to 3.3V logic
* Pin setup
*------------------------------
* Arduino Display |
* A0 1 (IF0) |
* A1 2 (IF1) |
* A2 3 (IF2) |
* - 4 (NC) |
* - 5 (NC) |
* GND 6 (VSS) |
* 3.3V 7 (VDD) |
* D7-D0 8-15 (DB7-DB0) |
* D8 16 (/RD) |
* D9 17 (/WR) |
* D10 18 (A0) |
* D11 19 (RSTB) |
* D12 20 (CSB) |
*------------------------------
*/
int mode = 0; // 0 = 8-bit 8080 1 = 8-bit 6800 2 = 3W-SPI 3 = 4W-SPI
#define E 8
#define RD 8
#define SDA 1
#define RW 9
#define WR 9
#define SCL 0
#define RS 10
#define RST 11
#define CS 12
#define IF0 A0
#define IF1 A1
#define IF2 A2
const unsigned char NHD_Logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E,
0x3F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x0C, 0x0C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D,
0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x0F, 0x0F, 0x0E, 0x03, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x07, 0x0F, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x0C, 0x0F, 0x0F, 0x01, 0x00, 0x07,
0x0F, 0x0E, 0x07, 0x00, 0x00, 0x07, 0x0F, 0x0C, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x01, 0x01, 0x01,
0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x0C, 0x0E, 0x07, 0x01, 0x00, 0x00, 0x00,
0x08, 0x0E, 0x0F, 0x01, 0x00, 0x00, 0x03, 0x0F, 0x0E, 0x08, 0x00, 0x00, 0x07, 0x0F, 0x0D, 0x0D,
0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0E, 0x07, 0x01, 0x00, 0x0F, 0x0F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x3E, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x3E, 0x0C, 0x0C,
0x0C, 0x8C, 0x8C, 0x8C, 0x8C, 0x1C, 0x38, 0x71, 0x73, 0xE7, 0xCE, 0x9C, 0x98, 0x98, 0x98, 0x98,
0x98, 0x98, 0x98, 0x98, 0x00, 0xF8, 0xF8, 0x00, 0xC0, 0xE0, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x00,
0xE0, 0xF0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0x70, 0xF0,
0x80, 0x00, 0xF0, 0xF0, 0x70, 0xE0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x80, 0x80, 0x80,
0xF0, 0xF0, 0x00, 0x00, 0x00, 0x10, 0x70, 0xF0, 0xC0, 0x40, 0x40, 0xC0, 0xF0, 0x30, 0x10, 0x00,
0x00, 0x00, 0x80, 0xF0, 0x70, 0x70, 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xB0, 0xB0,
0xB0, 0xB0, 0xB0, 0xB0, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x80, 0xC0, 0x70, 0xF0, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
0xF8, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x30, 0x70, 0x70, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x60, 0x60, 0x60, 0x60, 0x71, 0x3F, 0x1F, 0x00, 0x00, 0x00,
0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6F, 0x6F, 0x63, 0x00,
0x00, 0x00, 0x7F, 0x7F, 0x66, 0x66, 0x66, 0x66, 0x7E, 0x3C, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1F, 0x7B, 0x73, 0x7B, 0x1F, 0x07, 0x00, 0x00,
0x00, 0x60, 0x70, 0x38, 0x0F, 0x0F, 0x38, 0x70, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x00,
0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0,
0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
/***********************************************************/
void command(unsigned char c){
switch(mode){
case 0:
digitalWrite(RS,LOW);
PORTD=c;
digitalWrite(WR,LOW);
digitalWrite(WR,HIGH);
break;
case 1:
digitalWrite(RS, LOW);
digitalWrite(RW,LOW);
PORTD = c;
digitalWrite(E,LOW);
digitalWrite(E,HIGH);
break;
case 2:
digitalWrite(CS,LOW);
digitalWrite(SDA,LOW);
digitalWrite(SCL,LOW);
digitalWrite(SCL,HIGH);
for (int i = 0; i < 8; i++) {
if ((c & 0x80) == 0x80) {
digitalWrite(SDA, HIGH);
}
else {
digitalWrite(SDA, LOW);
}
c = (c << 1);
digitalWrite(SCL, LOW);
digitalWrite(SCL, HIGH);
}
digitalWrite(CS,HIGH);
break;
case 3:
digitalWrite(CS,LOW);
digitalWrite(RS,LOW);
for (int i = 0; i < 8; i++) {
if ((c & 0x80) == 0x80) {
digitalWrite(SDA, HIGH);
}
else {
digitalWrite(SDA, LOW);
}
c = (c << 1);
digitalWrite(SCL, LOW);
digitalWrite(SCL, HIGH);
}
digitalWrite(CS,HIGH);
break;
}
}
/***********************************************************/
void data(unsigned char d){
switch(mode){
case 0:
digitalWrite(RS,HIGH);
PORTD=d;
digitalWrite(WR,LOW);
digitalWrite(WR,HIGH);
break;
case 1:
digitalWrite(RS, HIGH);
digitalWrite(RW,LOW);
PORTD = d;
digitalWrite(E,LOW);
digitalWrite(E,HIGH);
break;
case 2:
digitalWrite(CS,LOW);
digitalWrite(SDA,HIGH);
digitalWrite(SCL,LOW);
digitalWrite(SCL,HIGH);
for (int i = 0; i < 8; i++) {
if ((d & 0x80) == 0x80) {
digitalWrite(SDA, HIGH);
}
else {
digitalWrite(SDA, LOW);
}
d = (d << 1);
digitalWrite(SCL, LOW);
digitalWrite(SCL, HIGH);
}
digitalWrite(CS,HIGH);
break;
case 3:
digitalWrite(CS,LOW);
digitalWrite(RS,HIGH);
for (int i = 0; i < 8; i++) {
if ((d & 0x80) == 0x80) {
digitalWrite(SDA, HIGH);
}
else {
digitalWrite(SDA, LOW);
}
d = (d << 1);
digitalWrite(SCL, LOW);
digitalWrite(SCL, HIGH);
}
digitalWrite(CS,HIGH);
break;
}
}
/***********************************************************/
void SetPins(){
for(int i=0;i<13;i++){
pinMode(i,OUTPUT);
}
pinMode(IF0, OUTPUT);
pinMode(IF1, OUTPUT);
pinMode(IF2, OUTPUT);
switch(mode){
case 0:
digitalWrite(RST, HIGH);
digitalWrite(CS, LOW);
digitalWrite(RD, HIGH);
digitalWrite(WR, HIGH);
digitalWrite(IF0, HIGH);
digitalWrite(IF1, HIGH);
digitalWrite(IF2, LOW);
break;
case 1:
digitalWrite(RST, HIGH);
digitalWrite(CS, LOW);
digitalWrite(E, HIGH);
digitalWrite(RW, LOW);
digitalWrite(IF0, LOW);
digitalWrite(IF1, HIGH);
digitalWrite(IF2, LOW);
break;
case 2:
digitalWrite(RST, HIGH);
digitalWrite(CS, LOW);
digitalWrite(SDA, HIGH);
digitalWrite(SCL, HIGH);
digitalWrite(IF0, LOW);
digitalWrite(IF1, LOW);
digitalWrite(IF2, HIGH);
break;
case 3:
digitalWrite(RST, HIGH);
digitalWrite(CS, LOW);
digitalWrite(SDA, HIGH);
digitalWrite(SCL, HIGH);
digitalWrite(IF0, LOW);
digitalWrite(IF1, LOW);
digitalWrite(IF2, LOW);
break;
}
}
/***********************************************************/
void One_pixel(){
command(0x15);
data(0x00);
data(0x9F);
command(0x75);
data(0x00);
data(0x14);
command(0x5c);
for(int x=0;x<160;x++){
if(x==0||x==159){
data(0xFF);
}else{
data(0x10);
}
}
for(int y=0;y<11;y++){
for(int i=0;i<160;i++){
if(i==0||i==159){
data(0xFF);
}else{
data(0x00);
}}
}
for(int x=0;x<160;x++){
if(x==0||x==159){
data(0xFF);
}else{
data(0x02);
}
}
}
/***********************************************************/
void fill_screen(unsigned char d){
command(0x15);
data(0x00);
data(0x9F);
command(0x75);
data(0x00);
data(0x14);
command(0x5c);
for (int i = 0; i < 17; i++) {
for (int j = 0; j < 128; j++) {
data(d);
}
}
}
/***********************************************************/
void ImageDisplay(const unsigned char *image) {
unsigned int i, j;
command(0x75); //Row Address Setting
command(0x00); //COM0 -> COM100
command(0x18); //(pg 38 IC Spec)
command(0x5C);
for (i = 0; i < 12; i++) {
for (j = 0; j < 160; j++) { //128 columns wide
data(*image); //send picture data
image++;
}
}
}
void setup() {
SetPins();
digitalWrite(RST,LOW);
delay(100);
digitalWrite(RST,HIGH);
delay(200);
command(0x30); // Extension Command 1
command(0x6e); // Enable Master
command(0x31); // EXT=1
command(0xD7); // Disable Auto Read
data(0x9F); //
command(0xe0); // Enable OTP Read
data(0x00);
delay(20);
command(0xe3); // OTP Up-Load
delay(40);
command(0xe1); // OTP Control Out
command(0x30); // EXT=0
command(0x94); // Sleep out
command(0xAe); // Display off
delay(50);
command(0x20); // Power control
data(0x0B); // D0=regulator ; D1=follower ; D3=booste, on:1 off:0
delay(100);
command(0x81); // EV control
data(0x02); // VPR[5-0] 4inch=0x1C ; 5inch=0x22 //33
data(0x03); // VPR[8-6]
command(0x31); // EXT=1
command(0x20); // Set Gray Scale Level
data(0x00);
data(0x00);
data(0x00);
data(0x17);
data(0x17);
data(0x17);
data(0x00);
data(0x00);
data(0x1d);
data(0x00);
data(0x00);
data(0x1d);
data(0x1d);
data(0x1d);
data(0x00);
data(0x00);
command(0x32); // Analog Circuit Set
data(0x00); //
data(0x01); // Booster Efficiency =6KHz
data(0x03); // 1/11Bias
command(0x51); // Booster Level x10
data(0xfb);
command(0x30); // EXT=0
command(0xf0); // Display Mode
data(0x10); // 10H=Monochrome Mode£¬11H=4Gray
command(0xca); // Display Control
data(0x00); // CL Dividing Ratio? Not Divide
data(0x66); // Duty
data(0x00); // Frame Inversion
command(0xBC); // Data Scan Direction
data(0x00); //
command(0xA6); // Normal display
command(0x31); // EXT=1
command(0x40); // Internal Power Supply
command(0x30);
command(0xAF);
delay(100);
}
void loop() {
fill_screen(0x00);
delay(1000);
ImageDisplay(NHD_Logo);
delay(1000);
One_pixel();
delay(1000);
fill_screen(0xFF);
delay(1000);
}