Basic library for SHARP LCD LS027B4DH01/LS027B7DH01

Dependents:   AkiSpiLcd_demo AkiSpiLcd_demo2 LCDRAM AkiSpiLcd_example

Files at this revision

API Documentation at this revision

Comitter:
k4zuki
Date:
Fri Sep 26 13:48:17 2014 +0000
Parent:
10:eed99ef09e63
Child:
12:30b31d87a30e
Commit message:
ram2lcd fix

Changed in this revision

AkiSpiLcd.cpp Show annotated file Show diff for this revision Revisions of this file
AkiSpiLcd.h Show annotated file Show diff for this revision Revisions of this file
--- a/AkiSpiLcd.cpp	Mon Sep 15 14:12:33 2014 +0000
+++ b/AkiSpiLcd.cpp	Fri Sep 26 13:48:17 2014 +0000
@@ -5,6 +5,7 @@
 #include "mbed.h"
 #include "AkiSpiLcd.h"
 //#include "Ser23K256.h"
+extern const uint8_t lcd_line[];
 
 AkiSpiLcd::AkiSpiLcd(PinName mosi, PinName miso, PinName sck, PinName csl, PinName csr)
     :_spi(mosi, miso, sck), _csl(csl), _csr(csr)
@@ -18,7 +19,8 @@
     
     uint8_t data[240];
     for(int i=0; i<240; i++) {
-        data[i]=( ( (i+1) & 0x01 ) << 7 )|
+        data[i]=(uint8_t)lcd_line[i];
+        /*( ( (i+1) & 0x01 ) << 7 )|
              ( ( (i+1) & 0x02 ) << 5 )|
              ( ( (i+1) & 0x04 ) << 3 )|
              ( ( (i+1) & 0x08 ) << 1 )|
@@ -26,7 +28,7 @@
              ( ( (i+1) & 0x20 ) >> 3 )|
              ( ( (i+1) & 0x40 ) >> 5 )|
              ( ( (i+1) & 0x80 ) >> 7 );
-
+*/
     }
     ram_write(RAMLINE_BASE,data,240);
     uint8_t buffer[4] = {0,0,0,0};
@@ -61,10 +63,11 @@
     clearflag=0;
 
     _csl=1;
-    wait_us(5);
+    wait_us(1);
 
     _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
-
+_spi.write((uint8_t)lcd_line[line]);
+/*
     _spi.write(
         ( ( (line+1) & 0x01 ) << 7 )|
         ( ( (line+1) & 0x02 ) << 5 )|
@@ -74,7 +77,8 @@
         ( ( (line+1) & 0x20 ) >> 3 )|
         ( ( (line+1) & 0x40 ) >> 5 )|
         ( ( (line+1) & 0x80 ) >> 7 )
-    );
+    );*/
+    
     for(int i=0; i<50; i++) {
         _spi.write( *(data+i) );
     }
@@ -101,7 +105,8 @@
         wait_us(5);
         for (int j=0; j<length; j++) {
             _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
-            _spi.write(
+            _spi.write((uint8_t)lcd_line[line]);
+/*            _spi.write(
                 ( ( (line+1) & 0x01 ) << 7 )|
                 ( ( (line+1) & 0x02 ) << 5 )|
                 ( ( (line+1) & 0x04 ) << 3 )|
@@ -111,7 +116,7 @@
                 ( ( (line+1) & 0x40 ) >> 5 )|
                 ( ( (line+1) & 0x80 ) >> 7 )
             );
-
+*/
             for(int i=0; i<50; i++) {
                 _spi.write( *(data+(50*j+i)) );//hogepic[50*j+i]
             }
--- a/AkiSpiLcd.h	Mon Sep 15 14:12:33 2014 +0000
+++ b/AkiSpiLcd.h	Fri Sep 26 13:48:17 2014 +0000
@@ -42,6 +42,23 @@
 #define SCREEN0 0
 #define SCREEN1 1
 
+const uint8_t lcd_line[240]={0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0,0x08,
+0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8,0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8,0x04,
+0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4,0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4,0x0C,
+0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC,0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC,0x02,
+0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2,0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2,0x0A,
+0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA,0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA,0x06,
+0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6,0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6,0x0E,
+0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE,0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE,0x01,
+0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1,0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1,0x09,
+0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9,0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9,0x05,
+0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5,0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5,0x0D,
+0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED,0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD,0x03,
+0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3,0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3,0x0B,
+0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB,0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB,0x07,
+0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7,0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7,0x0F,
+};
+
 class AkiSpiLcd
 {
 public: