Sample code for NHD-1.8-128160EF-CTXI.
//--------------------------------------------------------- /* NHD_1_8_128160EF_CTXI_mega.ino Program for writing to Newhaven Display 1.8" TFT with ILI9163 controller (c) Newhaven Display International, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. */ //--------------------------------------------------------- // The 8 bit data bus is connected to PORTA of the Arduino Mega2560 // 5V voltage regulator on Arduino Mega has been replaced with a 3.3V regulator to provide 3.3V logic int DC = 30; // D/C signal connected to Arduino digital pin 30 int WR = 31; // /WR signal connected to Arduino digital pin 31 int RD = 32; // /RD signal connected to Arduino digital pin 32 int RST = 33; // /RST signal connected to Arduino digital pin 33 // /CS signal tied to ground void comm_out(unsigned char c) { digitalWrite(DC, LOW); PORTA = c; digitalWrite(WR, LOW); digitalWrite(WR, HIGH); } void data_out(unsigned char d) { digitalWrite(DC, HIGH); PORTA = d; digitalWrite(WR, LOW); digitalWrite(WR, HIGH); } void disp() { unsigned int i; comm_out(0x2C); //command to begin writing to frame memory for(i=0;i<20480;i++) //fill screen with red pixels { data_out(0xFF); data_out(0x00); data_out(0x00); } for(i=0;i<20480;i++) //fill screen with green pixels { data_out(0x00); data_out(0xFF); data_out(0x00); } for(i=0;i<20480;i++) //fill screen with blue pixels { data_out(0x00); data_out(0x00); data_out(0xFF); } } void setup() { DDRC = 0xFF; PORTC = 0x00; DDRA = 0xFF; PORTA = 0x00; digitalWrite(RD, HIGH); digitalWrite(WR, LOW); digitalWrite(RST, LOW); delay(150); digitalWrite(RST, HIGH); delay(150); comm_out(0x11); //exit SLEEP mode delay(100); comm_out(0x28); //display off comm_out(0x26); //select gamma curve data_out(0x04); comm_out(0xB1); //frame rate control data_out(0x0A); data_out(0x14); comm_out(0xC0); //power control 1 data_out(0x0A); data_out(0x00); comm_out(0xC1); //power control 2 data_out(0x02); comm_out(0xC5); //VCOM control 1 data_out(0x2F); data_out(0x3E); comm_out(0xC7); //VCOM control 2 data_out(0x40); comm_out(0x2A); //column address set data_out(0x00); data_out(0x00); //start 0x0000 data_out(0x00); data_out(0x7F); //end 0x007F comm_out(0x2B); //page address set data_out(0x00); data_out(0x00); //start 0x0000 data_out(0x00); data_out(0x9F); //end 0x009F comm_out(0x36); //memory access control data_out(0xC8); comm_out(0x3A); //pixel format = 18 bit per pixel data_out(0x06); comm_out(0x29); //display ON delay(10); } void loop() { disp(); delay(1000); }