Beispiel #1
0
void PICadillo35t::setRotation(uint8_t m) 
{
	writeCommand(HX8357_SET_ADDRESS_MODE);
	rotation = m % 4; // can't be higher than 3
	switch (rotation) 
	{
		case 0:
			//PORTRAIT
			writeData(0x0000);
			_width  = PICadillo35t::Width;
			_height = PICadillo35t::Height;
			break;
		case 1:
		    //LANDSCAPE
			writeData(0x0060);
			_width  = PICadillo35t::Height;
			_height = PICadillo35t::Width;
			break;
		case 2:	
			//UPSIDE DOWN PORTRAIT
			writeData(0x00C0);
			_width  = PICadillo35t::Width;
			_height = PICadillo35t::Height;
			break;
		case 3:
			//UPSIDE DOWN LANDSCAPE
			writeData(0x00A0);
			_width  = PICadillo35t::Height;
			_height = PICadillo35t::Width;
			break;
	}
    _cacheState = cacheInvalid;
    clearClipping();
}
Beispiel #2
0
//==============================================================
// Initialise HX8357 LCD Driver IC
//==============================================================
void PICadillo35t::initializeDevice() 
{
    PMCONbits.ON = 0;
    asm volatile("nop");

    PMCONbits.PTWREN = 1;
    PMCONbits.PTRDEN = 1;
    PMCONbits.CSF = 0;

    PMAEN = 0x0001; // Enable PMA0 pin for RS pin and CS1 as CS

    PMMODEbits.MODE16 = 1;
    PMMODEbits.MODE = 0b10;
    PMMODEbits.WAITB = 0;
    PMMODEbits.WAITM = 0;
    PMMODEbits.WAITE = 0;

    //PMADDR = 0; // Set current address to 0
    PMADDR = 0x0000; // Set current address to 0, CS1 Active

    PMCONbits.ON = 1;

    _width  = PICadillo35t::Width;
    _height = PICadillo35t::Height;
	
	colstart = 0;  //NEED TO CONFIRM
    rowstart = 0;  //NEED TO CONFIRM
	
    writeCommand(HX8357_EXIT_SLEEP_MODE); //Sleep Out
    delay(150);
	writeCommand(HX8357_ENABLE_EXTENSION_COMMAND);
	writeData(0xFF);
	writeData(0x83);
	writeData(0x57);
	delay(1);
	writeCommand(HX8357_SET_POWER_CONTROL);
	writeData(0x00);
	writeData(0x12);
	writeData(0x12);
	writeData(0x12);
	writeData(0xC3);
	writeData(0x44);
	delay(1);
	writeCommand(HX8357_SET_DISPLAY_MODE);
	writeData(0x02);
	writeData(0x40);
	writeData(0x00);
	writeData(0x2A);
	writeData(0x2A);
	writeData(0x20);
	writeData(0x91);
	delay(1);
	writeCommand(HX8357_SET_VCOM_VOLTAGE);
	writeData(0x38);
	delay(1);
	writeCommand(HX8357_SET_INTERNAL_OSCILLATOR);
	writeData(0x68);
	writeCommand(0xE3); //Unknown Command
	writeData(0x2F);
	writeData(0x1F);
	writeCommand(0xB5); //Set BGP
	writeData(0x01);
	writeData(0x01);
	writeData(0x67);
	writeCommand(HX8357_SET_PANEL_DRIVING);
	writeData(0x70);
	writeData(0x70);
	writeData(0x01);
	writeData(0x3C);
	writeData(0xC8);
	writeData(0x08);
	delay(1);
	writeCommand(0xC2); // Set Gate EQ
	writeData(0x00);
	writeData(0x08);
	writeData(0x04);
	delay(1);
	writeCommand(HX8357_SET_PANEL_CHARACTERISTIC);
	writeData(0x09);
	delay(1);
	writeCommand(HX8357_SET_GAMMA_CURVE);
	writeData(0x01);
	writeData(0x02);
	writeData(0x03);
	writeData(0x05);
	writeData(0x0E);
	writeData(0x22);
	writeData(0x32);
	writeData(0x3B);
	writeData(0x5C);
	writeData(0x54);
	writeData(0x4C);
	writeData(0x41);
	writeData(0x3D);
	writeData(0x37);
	writeData(0x31);
	writeData(0x21);
	writeData(0x01);
	writeData(0x02);
	writeData(0x03);
	writeData(0x05);
	writeData(0x0E);
	writeData(0x22);
	writeData(0x32);
	writeData(0x3B);
	writeData(0x5C);
	writeData(0x54);
	writeData(0x4C);
	writeData(0x41);
	writeData(0x3D);
	writeData(0x37);
	writeData(0x31);
	writeData(0x21);
	writeData(0x00);
	writeData(0x01);
	delay(1);
	writeCommand(HX8357_SET_PIXEL_FORMAT); //COLMOD RGB888
	writeData(0x55);
	writeCommand(HX8357_SET_ADDRESS_MODE);
	writeData(0x00);
	writeCommand(HX8357_SET_TEAR_ON); //TE ON
	writeData(0x00);
	delay(10);
	writeCommand(HX8357_SET_DISPLAY_ON); //Display On
	delay(10);
	writeCommand(HX8357_WRITE_MEMORY_START); //Write SRAM Data
    _cacheState = cacheInvalid;
    clearClipping();
}
Beispiel #3
0
void HX8347D::initializeDevice() 
{
    _dc_port = getPortInformation(_dc, &_dc_mask);
    _cs_port = getPortInformation(_cs, &_cs_mask);

    _spi->begin();
    _spi->setSpeed(20000000UL);

    pinMode(_dc, OUTPUT);
    pinMode(_cs, OUTPUT);
    digitalWrite(_dc, HIGH);
    digitalWrite(_cs, HIGH);

    _width  = HX8347D::Width;
    _height = HX8347D::Height;

    
    //Driving ability Setting

    setRegister(0xEA,0x00); //PTBA[15:8]
    setRegister(0xEB,0x20); //PTBA[7:0]
    setRegister(0xEC,0x0C); //STBA[15:8]
    setRegister(0xED,0xC4); //STBA[7:0]
    setRegister(0xE8,0x38); //OPON[7:0]
    setRegister(0xE9,0x10); //OPON1[7:0]
    setRegister(0xF1,0x01); //OTPS1B
    setRegister(0xF2,0x10); //GEN
    //Gamma 2.2 Setting
    setRegister(0x40,0x01); //
    setRegister(0x41,0x00); //
    setRegister(0x42,0x00); //
    setRegister(0x43,0x10); //
    setRegister(0x44,0x0E); //
    setRegister(0x45,0x24); //
    setRegister(0x46,0x04); //
    setRegister(0x47,0x50); //
    setRegister(0x48,0x02); //
    setRegister(0x49,0x13); //
    setRegister(0x4A,0x19); //
    setRegister(0x4B,0x19); //
    setRegister(0x4C,0x16); //
    setRegister(0x50,0x1B); //
    setRegister(0x51,0x31); //
    setRegister(0x52,0x2F); //
    setRegister(0x53,0x3F); //
    setRegister(0x54,0x3F); //
    setRegister(0x55,0x3E); //
    setRegister(0x56,0x2F); //
    setRegister(0x57,0x7B); //
    setRegister(0x58,0x09); //
    setRegister(0x59,0x06); //
    setRegister(0x5A,0x06); //
    setRegister(0x5B,0x0C); //
    setRegister(0x5C,0x1D); //
    setRegister(0x5D,0xCC); //
    //Power Voltage Setting
    setRegister(0x1B,0x1B); //VRH=4.65V
    setRegister(0x1A,0x01); //BT (VGH~15V,VGL~-10V,DDVDH~5V)
    setRegister(0x24,0x2F); //VMH(VCOM High voltage ~3.2V)
    setRegister(0x25,0x57); //VML(VCOM Low voltage -1.2V)
    //****VCOM offset**///
    setRegister(0x23,0x88); //for Flicker adjust //can reload from OTP
    //Power on Setting
    setRegister(0x18,0x34); //I/P_RADJ,N/P_RADJ, Normal mode 60Hz
    setRegister(0x19,0x01); //OSC_EN='1', start Osc
    setRegister(0x01,0x00); //DP_STB='0', out deep sleep
    setRegister(0x1F,0x88);// GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=0
    delay(5);
    setRegister(0x1F,0x80);// GAS=1, VOMG=00, PON=0, DK=0, XDK=0, DVDH_TRI=0, STB=0
    delay(5);
    setRegister(0x1F,0x90);// GAS=1, VOMG=00, PON=1, DK=0, XDK=0, DVDH_TRI=0, STB=0
    delay(5);
    setRegister(0x1F,0xD0);// GAS=1, VOMG=10, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0
    delay(5);
    //262k/65k color selection
    setRegister(0x17,0x05); //default 0x06 262k color // 0x05 65k color
    //SET PANEL
    setRegister(0x36,0x00); //SS_P, GS_P,REV_P,BGR_P
    //Display ON Setting
    setRegister(0x28,0x38); //GON=1, DTE=1, D=1000
    delay(40);
    setRegister(0x28,0x3F); //GON=1, DTE=1, D=1100
    setRegister(0x16,0x18); 
    //Set GRAM Area
    setRegister(0x02,0x00);
    setRegister(0x03,0x00); //Column Start
    setRegister(0x04,0x00);
    setRegister(0x05,0xEF); //Column End
    setRegister(0x06,0x00);
    setRegister(0x07,0x00); //Row Start
    setRegister(0x08,0x01);
    setRegister(0x09,0x3F); //Row End

    clearClipping();
}