Basic library for SHARP LCD LS027B4DH01/LS027B7DH01

Dependents:   AkiSpiLcd_demo AkiSpiLcd_demo2 LCDRAM AkiSpiLcd_example

Revision:
7:0c85f23a6568
Parent:
5:7061ce47a359
Child:
9:33d5888d1fb9
--- 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;