sorry thought it was a more generalized question. I cant fit all this into one post but here it goes
from lcd's .cpp
LCD_2000_7775::LCD_2000_7775(uint8_t cs,uint8_t wr ,uint8_t rs , uint8_t rest ,uint8_t pmw)
: Adafruit_GFX(176, 220)
{
this->_cs = cs;
//this->_rd = rd;
this->_wr = wr;
this->_rs = rs;
this->_rest = rest;
this->_pmw = pmw;
pinMode(this->_cs,OUTPUT);
//pinMode(this->_rd,OUTPUT);
pinMode(this->_wr,OUTPUT);
pinMode(this->_rs,OUTPUT);
pinMode(this->_rest,OUTPUT);
pinMode(this->_pmw,OUTPUT);
this->csport = portOutputRegister(digitalPinToPort(this->_cs));
//this->pmwport = portOutputRegister(digitalPinToPort(this->_pmw));
this->wrport = portOutputRegister(digitalPinToPort(this->_wr));
this->rsport = portOutputRegister(digitalPinToPort(this->_rs));
this->restport = portOutputRegister(digitalPinToPort(this->_rest));
this->cspinmask = digitalPinToBitMask(this->_cs);
//this->pmwpinmask = digitalPinToBitMask(this->_pmw);
this->wrpinmask = digitalPinToBitMask(this->_wr);
this->rspinmask = digitalPinToBitMask(this->_rs);
this->restpinmask = digitalPinToBitMask(this->_rest);
*(this->csport) |= this->cspinmask;
//*(this->pmwport) |= this->pmwpinmask;
*(this->wrport) |= this->wrpinmask;
*(this->rsport) |= this->rspinmask;
*(this->restport) |= this->restpinmask;
}
lcd's .cpp
void LCD_2000_7775::begin()
{
if( this->_rest )
{
*(this->restport) &= (~this->restpinmask);
delay(50); // Delay 50ms
*(this->restport) |= this->restpinmask;
delay(10); // Delay 10ms
}
this->write_cmd(0x0001, 0x011C); // set SS and NL bit
this->write_cmd(0x0002, 0x0100); // set 1 line inversion
this->write_cmd(0x0003, 0x1030); // set GRAM write direction and BGR=1,??16BIT 65K?MDT1=0,MDT0=0
this->write_cmd(0x0008, 0x0808); // set BP and FP
this->write_cmd(0x000C, 0x0000); // RGB interface setting R0Ch=0x0110 for RGB 18Bit and R0Ch=0111for
this->write_cmd(0x000F, 0x0e01); // Set frame rate
//*************Power On sequence ****************//
delay(50); // Delay 50ms
this->write_cmd(0x0010, 0x0A00); // Set SAP,DSTB,STB
this->write_cmd(0x0011, 0x1038); // Set APON,PON,AON,VCI1EN,VC
//delay(50); // Delay 50ms
this->write_cmd(0x00ff, 0x0003); //
this->write_cmd(0x00b0, 0x1411); //Set VCOM 1d
this->write_cmd(0x00b1, 0x0202); //GVCL/GVDD voltage setting
this->write_cmd(0x00b2, 0x0313); //VCL voltage setting
//------------------------ Set GRAM area set window --------------------------------//
this->write_cmd (0x0030, 0x0000);//???????
this->write_cmd (0x0031, 0x00db);
this->write_cmd (0x0032, 0x0000);
this->write_cmd (0x0033, 0x0000);//??????
this->write_cmd (0x0034, 0x00db);
this->write_cmd (0x0035, 0x0000);//R34H,R35H???????
this->write_cmd (0x0036, 0x00AF);
this->write_cmd (0x0037, 0x0000);
this->write_cmd (0x0038, 0x00DB);
this->write_cmd (0x0039, 0x0000);
delay(20);
this->write_cmd(0x00ff, 0x0003);
// WriteRegister(0x00b0, 0x1d01);
// ----------- Adjust the Gamma Curve ----------//
this->write_cmd(0x0050, 0x0000);
this->write_cmd(0x0051, 0x0300);
this->write_cmd(0x0052, 0x0103);
this->write_cmd(0x0053, 0x2011);
this->write_cmd(0x0054, 0x0703);
this->write_cmd(0x0055, 0x0000);
this->write_cmd(0x0056, 0x0400);
this->write_cmd(0x0057, 0x0107);
this->write_cmd(0x0058, 0x2011);
this->write_cmd(0x0059, 0x0703);
delay(50); // Delay 50ms
this->write_cmd(0x0020, 0x0000); // Set GRAM Address
this->write_cmd(0x0021, 0x0000); // Set GRAM Address
this->write_cmd(0x0007, 0x1017);
this->fillRect(0,0,LCD_2000_7775_TFTWIDTH,LCD_2000_7775_TFTHEIGHT,0xffff);
}
lcd's .cpp
void LCD_2000_7775::write_spi(const uint8_t data)
{
uint8_t bit,i;
for(bit = 0x01,i = 0 ; bit ; i++,bit <<= 1)
{
if(data & bit) *(this->dataport[i]) |= this->datapinmask[i];
else *(this->dataport[i]) &= (~this->datapinmask[i]);
//write_delay();
}
}
lcd's .h
LCD_2000_7775(uint8_t cs,uint8_t wr ,uint8_t rs , uint8_t rest ,uint8_t pmw );
void write_spi(const uint8_t data);
#if defined(ARDUINO_ARCH_SAM)
uint32_t _cs;
uint32_t _pmw;
uint32_t _wr;
uint32_t _rs;
uint32_t _rest;
volatile uint32_t *csport;
volatile uint32_t *pmwport;
volatile uint32_t *wrport;
volatile uint32_t *rsport;
volatile uint32_t *restport;
uint32_t cspinmask;
uint32_t pmwpinmask;
uint32_t wrpinmask;
uint32_t rspinmask;
uint32_t restpinmask;
volatile uint32_t data[8];
volatile uint32_t datapinmask[8];
volatile uint32_t* dataport[8];
#else
uint8_t _cs;
uint8_t _pmw;
uint8_t _wr;
uint8_t _rs;
uint8_t _rest;
volatile uint8_t *csport;
volatile uint8_t *pmwport;
volatile uint8_t *wrport;
volatile uint8_t *rsport;
volatile uint8_t *restport;
uint8_t cspinmask;
uint8_t pmwpinmask;
uint8_t wrpinmask;
uint8_t rspinmask;
uint8_t restpinmask;
volatile uint8_t data[8];
volatile uint8_t datapinmask[8];
volatile uint8_t* dataport[8];
#endif