Basic library for SHARP LCD LS027B4DH01/LS027B7DH01
Dependents: AkiSpiLcd_demo AkiSpiLcd_demo2 LCDRAM AkiSpiLcd_example
Diff: AkiSpiLcd.cpp
- Revision:
- 7:0c85f23a6568
- Parent:
- 5:7061ce47a359
- Child:
- 9:33d5888d1fb9
diff -r e3ed7599692c -r 0c85f23a6568 AkiSpiLcd.cpp --- a/AkiSpiLcd.cpp Thu Aug 28 16:02:01 2014 +0000 +++ b/AkiSpiLcd.cpp Thu Aug 28 17:23:43 2014 +0000 @@ -159,7 +159,11 @@ */ void AkiSpiLcd::ramReadSingle(int line, uint8_t* buffer, int screen){ screen &=1; - screen<<=7; + if(screen==0){ + screen=SCREEN0_BASE; + }else{ + screen=SCREEN1_BASE; + } // uint8_t buffer[50]; line*=50; int address=screen+line; @@ -181,7 +185,11 @@ */ void AkiSpiLcd::ramReadMulti(int line, int length, uint8_t* buffer, int screen){ screen &=1; - screen<<=7; + if(screen==0){ + screen=SCREEN0_BASE; + }else{ + screen=SCREEN1_BASE; + } line*=50; int address=screen+line; // for(int j=0;j<length;j++){ @@ -206,7 +214,11 @@ */ void AkiSpiLcd::ramWriteSingle(int line, uint8_t* data, int screen){ screen &=1; - screen<<=7; + if(screen==0){ + screen=SCREEN0_BASE; + }else{ + screen=SCREEN1_BASE; + } line*=50; int address=screen+line; _ram->write(address,data,50); @@ -225,7 +237,11 @@ */ void AkiSpiLcd::ramWriteMulti(int line, int length, uint8_t* data, int screen){ screen &=1; - screen<<=7; + if(screen==0){ + screen=SCREEN0_BASE; + }else{ + screen=SCREEN1_BASE; + } line*=50; int address=screen+line; @@ -246,12 +262,17 @@ /** copies whole data in screen into LCD */ -void AkiSpiLcd::ram2lcd(int screen){ +void AkiSpiLcd::ram2lcd(int startline, int length, int screen){ screen &=1; - screen<<=7; + if(screen==0){ + screen=SCREEN0_BASE; + }else{ + screen=SCREEN1_BASE; + } +// screen<<=7; - int address=screen; - uint8_t* dummy; + int address=screen+length*50; + uint8_t dummy[50]; /* _csr=0; //select VRAM _spi.write(0x03); @@ -261,10 +282,9 @@ for(int j=0;j<240;j++){ _ram->write(RAMMODE_BASE,(modeflag << 7) | (comflag << 6) | (clearflag << 5)); _csl=1; - _ram->read(RAMMODE_BASE,dummy,2); - for(int i=0;i<50;i++){ - _ram->read(address,dummy,50); - } + _ram->read(RAMMODE_BASE); + _ram->read(RAMLINE_BASE+startline); + _ram->read(address+50*j,dummy,50); _ram->read(RAMMODE_BASE+2,dummy,2); wait_us(5); _csl=0;