Basic library for SHARP LCD LS027B4DH01/LS027B7DH01

Dependents:   AkiSpiLcd_demo AkiSpiLcd_demo2 LCDRAM AkiSpiLcd_example

Committer:
k4zuki
Date:
Sun Sep 07 14:42:13 2014 +0000
Revision:
9:33d5888d1fb9
Parent:
7:0c85f23a6568
Child:
10:eed99ef09e63
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
k4zuki 1:57de84d2025c 1 /** this is for SHARP LCD LS027B4DH01
k4zuki 2:01979b296ab5 2 * by Kazuki Yamamoto, or _K4ZUKI_
k4zuki 0:b3c8fdd01601 3 */
k4zuki 0:b3c8fdd01601 4
k4zuki 0:b3c8fdd01601 5 #include "mbed.h"
k4zuki 0:b3c8fdd01601 6 #include "AkiSpiLcd.h"
k4zuki 9:33d5888d1fb9 7 #include "Ser23K256.h"
k4zuki 0:b3c8fdd01601 8
k4zuki 4:844693a617dc 9 AkiSpiLcd::AkiSpiLcd(PinName mosi, PinName miso, PinName sck, PinName csl, PinName csr)
k4zuki 4:844693a617dc 10 :_spi(mosi, miso, sck), _csl(csl), _csr(csr)
k4zuki 0:b3c8fdd01601 11 {
k4zuki 9:33d5888d1fb9 12 // Ser23K256 _ram(_spi,csr);
k4zuki 3:f835b8daf9a0 13 _csl=0;
k4zuki 4:844693a617dc 14 _csr=1;
k4zuki 0:b3c8fdd01601 15 _spi.format(8,0);
k4zuki 9:33d5888d1fb9 16 _spi.frequency(1000000);
k4zuki 0:b3c8fdd01601 17 comflag = modeflag = clearflag = 0;
k4zuki 5:7061ce47a359 18
k4zuki 5:7061ce47a359 19 int data=0;
k4zuki 9:33d5888d1fb9 20 for(int i=0; i<240; i++) {
k4zuki 5:7061ce47a359 21 data=( ( i & 0x01 ) << 7 )|
k4zuki 9:33d5888d1fb9 22 ( ( i & 0x02 ) << 5 )|
k4zuki 9:33d5888d1fb9 23 ( ( i & 0x04 ) << 3 )|
k4zuki 9:33d5888d1fb9 24 ( ( i & 0x08 ) << 1 )|
k4zuki 9:33d5888d1fb9 25 ( ( i & 0x10 ) >> 1 )|
k4zuki 9:33d5888d1fb9 26 ( ( i & 0x20 ) >> 3 )|
k4zuki 9:33d5888d1fb9 27 ( ( i & 0x40 ) >> 5 )|
k4zuki 9:33d5888d1fb9 28 ( ( i & 0x80 ) >> 7 );
k4zuki 5:7061ce47a359 29
k4zuki 9:33d5888d1fb9 30 ram_write(RAMLINE_BASE+i,(uint8_t)data);
k4zuki 4:844693a617dc 31 }
k4zuki 9:33d5888d1fb9 32 ram_write(RAMMODE_BASE,0x00000000,4);
k4zuki 5:7061ce47a359 33
k4zuki 0:b3c8fdd01601 34 }
k4zuki 0:b3c8fdd01601 35
k4zuki 0:b3c8fdd01601 36 void AkiSpiLcd::cls()
k4zuki 0:b3c8fdd01601 37 {
k4zuki 0:b3c8fdd01601 38 modeflag=0;
k4zuki 0:b3c8fdd01601 39 clearflag=1;
k4zuki 0:b3c8fdd01601 40
k4zuki 3:f835b8daf9a0 41 _csl=1;
k4zuki 0:b3c8fdd01601 42 wait_us(5);
k4zuki 0:b3c8fdd01601 43
k4zuki 0:b3c8fdd01601 44 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 45 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 46
k4zuki 0:b3c8fdd01601 47 wait_us(5);
k4zuki 3:f835b8daf9a0 48 _csl=0;
k4zuki 0:b3c8fdd01601 49
k4zuki 0:b3c8fdd01601 50 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 51 comflag = 1;
k4zuki 0:b3c8fdd01601 52 } else {
k4zuki 0:b3c8fdd01601 53 comflag = 0;
k4zuki 0:b3c8fdd01601 54 }
k4zuki 0:b3c8fdd01601 55 }
k4zuki 0:b3c8fdd01601 56
k4zuki 3:f835b8daf9a0 57 void AkiSpiLcd::directUpdateSingle(int line, uint8_t* data)
k4zuki 0:b3c8fdd01601 58 {
k4zuki 0:b3c8fdd01601 59 modeflag=1;
k4zuki 0:b3c8fdd01601 60 clearflag=0;
k4zuki 0:b3c8fdd01601 61
k4zuki 3:f835b8daf9a0 62 _csl=1;
k4zuki 0:b3c8fdd01601 63 wait_us(5);
k4zuki 0:b3c8fdd01601 64
k4zuki 0:b3c8fdd01601 65 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 3:f835b8daf9a0 66
k4zuki 0:b3c8fdd01601 67 _spi.write(
k4zuki 0:b3c8fdd01601 68 ( ( (line+1) & 0x01 ) << 7 )|
k4zuki 0:b3c8fdd01601 69 ( ( (line+1) & 0x02 ) << 5 )|
k4zuki 0:b3c8fdd01601 70 ( ( (line+1) & 0x04 ) << 3 )|
k4zuki 0:b3c8fdd01601 71 ( ( (line+1) & 0x08 ) << 1 )|
k4zuki 0:b3c8fdd01601 72 ( ( (line+1) & 0x10 ) >> 1 )|
k4zuki 0:b3c8fdd01601 73 ( ( (line+1) & 0x20 ) >> 3 )|
k4zuki 0:b3c8fdd01601 74 ( ( (line+1) & 0x40 ) >> 5 )|
k4zuki 0:b3c8fdd01601 75 ( ( (line+1) & 0x80 ) >> 7 )
k4zuki 0:b3c8fdd01601 76 );
k4zuki 0:b3c8fdd01601 77 for(int i=0; i<50; i++) {
k4zuki 0:b3c8fdd01601 78 _spi.write( *(data+i) );
k4zuki 0:b3c8fdd01601 79 }
k4zuki 0:b3c8fdd01601 80 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 81 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 82
k4zuki 0:b3c8fdd01601 83 wait_us(5);
k4zuki 3:f835b8daf9a0 84 _csl=0;
k4zuki 0:b3c8fdd01601 85
k4zuki 0:b3c8fdd01601 86 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 87 comflag = 1;
k4zuki 0:b3c8fdd01601 88 } else {
k4zuki 0:b3c8fdd01601 89 comflag = 0;
k4zuki 0:b3c8fdd01601 90 }
k4zuki 0:b3c8fdd01601 91 }
k4zuki 0:b3c8fdd01601 92
k4zuki 3:f835b8daf9a0 93 void AkiSpiLcd::directUpdateMulti(int line, int length, uint8_t* data)
k4zuki 0:b3c8fdd01601 94 {
k4zuki 0:b3c8fdd01601 95 modeflag=1;
k4zuki 0:b3c8fdd01601 96 clearflag=0;
k4zuki 0:b3c8fdd01601 97
k4zuki 0:b3c8fdd01601 98 if(length>0) {
k4zuki 3:f835b8daf9a0 99 _csl=1;
k4zuki 0:b3c8fdd01601 100 wait_us(5);
k4zuki 0:b3c8fdd01601 101 for (int j=0; j<length; j++) {
k4zuki 0:b3c8fdd01601 102 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 103 _spi.write(
k4zuki 5:7061ce47a359 104 ( ( (line) & 0x01 ) << 7 )|
k4zuki 5:7061ce47a359 105 ( ( (line) & 0x02 ) << 5 )|
k4zuki 5:7061ce47a359 106 ( ( (line) & 0x04 ) << 3 )|
k4zuki 5:7061ce47a359 107 ( ( (line) & 0x08 ) << 1 )|
k4zuki 5:7061ce47a359 108 ( ( (line) & 0x10 ) >> 1 )|
k4zuki 5:7061ce47a359 109 ( ( (line) & 0x20 ) >> 3 )|
k4zuki 5:7061ce47a359 110 ( ( (line) & 0x40 ) >> 5 )|
k4zuki 5:7061ce47a359 111 ( ( (line) & 0x80 ) >> 7 )
k4zuki 0:b3c8fdd01601 112 );
k4zuki 0:b3c8fdd01601 113
k4zuki 0:b3c8fdd01601 114 for(int i=0; i<50; i++) {
k4zuki 0:b3c8fdd01601 115 _spi.write( *(data+(50*j+i)) );//hogepic[50*j+i]
k4zuki 0:b3c8fdd01601 116 }
k4zuki 0:b3c8fdd01601 117 line+=1;
k4zuki 0:b3c8fdd01601 118 }
k4zuki 0:b3c8fdd01601 119 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 120 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 121 wait_us(5);
k4zuki 3:f835b8daf9a0 122 _csl=0;
k4zuki 0:b3c8fdd01601 123 }
k4zuki 0:b3c8fdd01601 124 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 125 comflag = 1;
k4zuki 0:b3c8fdd01601 126 } else {
k4zuki 0:b3c8fdd01601 127 comflag = 0;
k4zuki 0:b3c8fdd01601 128 }
k4zuki 0:b3c8fdd01601 129 }
k4zuki 0:b3c8fdd01601 130
k4zuki 0:b3c8fdd01601 131 void AkiSpiLcd::cominvert()
k4zuki 0:b3c8fdd01601 132 {
k4zuki 0:b3c8fdd01601 133 modeflag=0;
k4zuki 0:b3c8fdd01601 134 clearflag=0;
k4zuki 0:b3c8fdd01601 135
k4zuki 3:f835b8daf9a0 136 _csl=1;
k4zuki 0:b3c8fdd01601 137
k4zuki 0:b3c8fdd01601 138 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 139 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 140 wait_us(5);
k4zuki 3:f835b8daf9a0 141 _csl=0;
k4zuki 0:b3c8fdd01601 142 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 143 comflag = 1;
k4zuki 0:b3c8fdd01601 144 } else {
k4zuki 0:b3c8fdd01601 145 comflag = 0;
k4zuki 0:b3c8fdd01601 146 }
k4zuki 0:b3c8fdd01601 147 }
k4zuki 3:f835b8daf9a0 148 /*
k4zuki 0:b3c8fdd01601 149 void AkiSpiLcd::dispOn(bool disp)
k4zuki 0:b3c8fdd01601 150 {
k4zuki 0:b3c8fdd01601 151 if(disp) {
k4zuki 3:f835b8daf9a0 152 _csr=1;
k4zuki 0:b3c8fdd01601 153 } else {
k4zuki 3:f835b8daf9a0 154 _csr=0;
k4zuki 0:b3c8fdd01601 155 }
k4zuki 0:b3c8fdd01601 156 }
k4zuki 3:f835b8daf9a0 157 */
k4zuki 4:844693a617dc 158
k4zuki 9:33d5888d1fb9 159 /** Reads single line (400 bits = 50 bytes) from a screen
k4zuki 9:33d5888d1fb9 160 */
k4zuki 9:33d5888d1fb9 161 void AkiSpiLcd::ramReadSingle(int line, uint8_t* buffer, int screen)
k4zuki 9:33d5888d1fb9 162 {
k4zuki 4:844693a617dc 163 screen &=1;
k4zuki 9:33d5888d1fb9 164 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 165 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 166 } else {
k4zuki 7:0c85f23a6568 167 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 168 }
k4zuki 4:844693a617dc 169 // uint8_t buffer[50];
k4zuki 4:844693a617dc 170 line*=50;
k4zuki 4:844693a617dc 171 int address=screen+line;
k4zuki 9:33d5888d1fb9 172 ram_read(address,buffer,50);
k4zuki 5:7061ce47a359 173 /*
k4zuki 4:844693a617dc 174 _csr=0; //select VRAM
k4zuki 4:844693a617dc 175 _spi.write(0x03);
k4zuki 4:844693a617dc 176 _spi.write(address>>8);
k4zuki 4:844693a617dc 177 _spi.write(address&0xff);
k4zuki 4:844693a617dc 178 for(int i=0;i<50;i++){
k4zuki 4:844693a617dc 179 *(buffer+i)=_spi.write(0xaa);
k4zuki 4:844693a617dc 180 }
k4zuki 4:844693a617dc 181 _csr=1;
k4zuki 5:7061ce47a359 182 */
k4zuki 4:844693a617dc 183 // return buffer;
k4zuki 4:844693a617dc 184 }
k4zuki 4:844693a617dc 185
k4zuki 9:33d5888d1fb9 186 /** Reads multi lines(400 x N bits = 50 x N bytes) from a screen
k4zuki 9:33d5888d1fb9 187 */
k4zuki 9:33d5888d1fb9 188 void AkiSpiLcd::ramReadMulti(int line, int length, uint8_t* buffer, int screen)
k4zuki 9:33d5888d1fb9 189 {
k4zuki 4:844693a617dc 190 screen &=1;
k4zuki 9:33d5888d1fb9 191 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 192 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 193 } else {
k4zuki 7:0c85f23a6568 194 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 195 }
k4zuki 4:844693a617dc 196 line*=50;
k4zuki 4:844693a617dc 197 int address=screen+line;
k4zuki 5:7061ce47a359 198 // for(int j=0;j<length;j++){
k4zuki 9:33d5888d1fb9 199 ram_read(address,buffer,50*length);
k4zuki 5:7061ce47a359 200 // }
k4zuki 5:7061ce47a359 201 /*
k4zuki 4:844693a617dc 202 _csr=0; //select VRAM
k4zuki 4:844693a617dc 203 _spi.write(0x03);
k4zuki 4:844693a617dc 204 _spi.write(address>>8);
k4zuki 4:844693a617dc 205 _spi.write(address&0xff);
k4zuki 4:844693a617dc 206 for(int j=0;j<length;j++){
k4zuki 4:844693a617dc 207 for(int i=0;i<50;i++){
k4zuki 4:844693a617dc 208 *(buffer+i)=_spi.write(0xaa);
k4zuki 4:844693a617dc 209 }
k4zuki 4:844693a617dc 210 }
k4zuki 4:844693a617dc 211 _csr=1;
k4zuki 5:7061ce47a359 212 */
k4zuki 4:844693a617dc 213 // return buffer;
k4zuki 4:844693a617dc 214 }
k4zuki 9:33d5888d1fb9 215
k4zuki 9:33d5888d1fb9 216 /** Writes single line (400 bits = 50 bytes) into a screen
k4zuki 9:33d5888d1fb9 217 */
k4zuki 9:33d5888d1fb9 218 void AkiSpiLcd::ramWriteSingle(int line, uint8_t* data, int screen)
k4zuki 9:33d5888d1fb9 219 {
k4zuki 4:844693a617dc 220 screen &=1;
k4zuki 9:33d5888d1fb9 221 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 222 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 223 } else {
k4zuki 7:0c85f23a6568 224 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 225 }
k4zuki 4:844693a617dc 226 line*=50;
k4zuki 4:844693a617dc 227 int address=screen+line;
k4zuki 9:33d5888d1fb9 228 ram_write(address,data,50);
k4zuki 9:33d5888d1fb9 229
k4zuki 4:844693a617dc 230 _csr=0; //select VRAM
k4zuki 4:844693a617dc 231 _spi.write(0x02);
k4zuki 4:844693a617dc 232 _spi.write(address>>8);
k4zuki 4:844693a617dc 233 _spi.write(address&0xff);
k4zuki 9:33d5888d1fb9 234 for(int i=0; i<50; i++) {
k4zuki 4:844693a617dc 235 _spi.write(*(data+i));
k4zuki 4:844693a617dc 236 }
k4zuki 4:844693a617dc 237 _csr=1;
k4zuki 4:844693a617dc 238 }
k4zuki 4:844693a617dc 239
k4zuki 9:33d5888d1fb9 240 /** Writes multi lines(400 x N bits = 50 x N bytes) into a screen
k4zuki 9:33d5888d1fb9 241 */
k4zuki 9:33d5888d1fb9 242 void AkiSpiLcd::ramWriteMulti(int line, int length, uint8_t* data, int screen)
k4zuki 9:33d5888d1fb9 243 {
k4zuki 4:844693a617dc 244 screen &=1;
k4zuki 9:33d5888d1fb9 245 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 246 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 247 } else {
k4zuki 7:0c85f23a6568 248 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 249 }
k4zuki 4:844693a617dc 250 line*=50;
k4zuki 9:33d5888d1fb9 251
k4zuki 4:844693a617dc 252 int address=screen+line;
k4zuki 9:33d5888d1fb9 253 ram_write(address,data,50*length);
k4zuki 5:7061ce47a359 254 /*
k4zuki 4:844693a617dc 255 _csr=0; //select VRAM
k4zuki 4:844693a617dc 256 _spi.write(0x02);
k4zuki 4:844693a617dc 257 _spi.write(address>>8);
k4zuki 4:844693a617dc 258 _spi.write(address&0xff);
k4zuki 4:844693a617dc 259 for(int j=0;j<length;j++){
k4zuki 4:844693a617dc 260 for(int i=0;i<50;i++){
k4zuki 4:844693a617dc 261 _spi.write(*(data+j*50+i));
k4zuki 4:844693a617dc 262 }
k4zuki 4:844693a617dc 263 }
k4zuki 4:844693a617dc 264 _csr=1;
k4zuki 5:7061ce47a359 265 */
k4zuki 4:844693a617dc 266 }
k4zuki 4:844693a617dc 267
k4zuki 9:33d5888d1fb9 268 /** copies whole data in screen into LCD
k4zuki 9:33d5888d1fb9 269 */
k4zuki 9:33d5888d1fb9 270 void AkiSpiLcd::ram2lcd(int startline, int length, int screen)
k4zuki 9:33d5888d1fb9 271 {
k4zuki 4:844693a617dc 272 screen &=1;
k4zuki 9:33d5888d1fb9 273 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 274 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 275 } else {
k4zuki 7:0c85f23a6568 276 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 277 }
k4zuki 7:0c85f23a6568 278 // screen<<=7;
k4zuki 4:844693a617dc 279
k4zuki 7:0c85f23a6568 280 int address=screen+length*50;
k4zuki 7:0c85f23a6568 281 uint8_t dummy[50];
k4zuki 5:7061ce47a359 282 /*
k4zuki 4:844693a617dc 283 _csr=0; //select VRAM
k4zuki 4:844693a617dc 284 _spi.write(0x03);
k4zuki 4:844693a617dc 285 _spi.write(address>>8);
k4zuki 4:844693a617dc 286 _spi.write(address&0xff);
k4zuki 5:7061ce47a359 287 */
k4zuki 9:33d5888d1fb9 288 ram_write(RAMMODE_BASE,(modeflag << 7) | (comflag << 6) | (clearflag << 5));
k4zuki 9:33d5888d1fb9 289 _csl=1;
k4zuki 9:33d5888d1fb9 290 for(int j=0; j<length; j++) {
k4zuki 9:33d5888d1fb9 291 ram_read(RAMMODE_BASE);
k4zuki 9:33d5888d1fb9 292 ram_read(RAMLINE_BASE+startline);
k4zuki 9:33d5888d1fb9 293 ram_read(address+50*j,dummy,50);
k4zuki 9:33d5888d1fb9 294 ram_read(RAMMODE_BASE+2,dummy,2);
k4zuki 5:7061ce47a359 295 wait_us(5);
k4zuki 5:7061ce47a359 296 _csl=0;
k4zuki 5:7061ce47a359 297 if(comflag == 0) {
k4zuki 5:7061ce47a359 298 comflag = 1;
k4zuki 5:7061ce47a359 299 } else {
k4zuki 5:7061ce47a359 300 comflag = 0;
k4zuki 4:844693a617dc 301 }
k4zuki 4:844693a617dc 302 }
k4zuki 4:844693a617dc 303 _csl=0;
k4zuki 4:844693a617dc 304 }
k4zuki 9:33d5888d1fb9 305
k4zuki 9:33d5888d1fb9 306 uint8_t AkiSpiLcd::ram_read(int address)
k4zuki 9:33d5888d1fb9 307 {
k4zuki 9:33d5888d1fb9 308 ram_prepareCommand(READ, address);
k4zuki 9:33d5888d1fb9 309 int result = _spi.write(0);
k4zuki 9:33d5888d1fb9 310 ram_deselect();
k4zuki 9:33d5888d1fb9 311 return (uint8_t) result;
k4zuki 9:33d5888d1fb9 312 }
k4zuki 9:33d5888d1fb9 313
k4zuki 9:33d5888d1fb9 314 void AkiSpiLcd::ram_read(int address, uint8_t * buffer, int count)
k4zuki 9:33d5888d1fb9 315 {
k4zuki 9:33d5888d1fb9 316 ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 9:33d5888d1fb9 317 ram_prepareCommand(READ, address);
k4zuki 9:33d5888d1fb9 318 for (int i = 0; i < count; i++) {
k4zuki 9:33d5888d1fb9 319 buffer[i] = _spi.write(0);
k4zuki 9:33d5888d1fb9 320 }
k4zuki 9:33d5888d1fb9 321 ram_deselect();
k4zuki 9:33d5888d1fb9 322 ram_writeStatus(BYTE_MODE);
k4zuki 9:33d5888d1fb9 323 }
k4zuki 9:33d5888d1fb9 324
k4zuki 9:33d5888d1fb9 325 void AkiSpiLcd::ram_write(int address, uint8_t byte)
k4zuki 9:33d5888d1fb9 326 {
k4zuki 9:33d5888d1fb9 327 ram_prepareCommand(WRITE, address);
k4zuki 9:33d5888d1fb9 328 _spi.write(byte);
k4zuki 9:33d5888d1fb9 329 ram_deselect();
k4zuki 9:33d5888d1fb9 330 }
k4zuki 9:33d5888d1fb9 331
k4zuki 9:33d5888d1fb9 332 void AkiSpiLcd::ram_write(int address, uint8_t * buffer, int count)
k4zuki 9:33d5888d1fb9 333 {
k4zuki 9:33d5888d1fb9 334 ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 9:33d5888d1fb9 335 ram_prepareCommand(WRITE, address);
k4zuki 9:33d5888d1fb9 336 for (int i = 0; i < count; i++) {
k4zuki 9:33d5888d1fb9 337 _spi.write(buffer[i]);
k4zuki 9:33d5888d1fb9 338 }
k4zuki 9:33d5888d1fb9 339 ram_deselect();
k4zuki 9:33d5888d1fb9 340 ram_writeStatus(BYTE_MODE);
k4zuki 9:33d5888d1fb9 341 }
k4zuki 9:33d5888d1fb9 342
k4zuki 9:33d5888d1fb9 343 uint8_t AkiSpiLcd::ram_readStatus()
k4zuki 9:33d5888d1fb9 344 {
k4zuki 9:33d5888d1fb9 345 ram_select();
k4zuki 9:33d5888d1fb9 346 _spi.write(READ_STATUS);
k4zuki 9:33d5888d1fb9 347 uint8_t result = (uint8_t) _spi.write(0);
k4zuki 9:33d5888d1fb9 348 ram_deselect();
k4zuki 9:33d5888d1fb9 349 return result;
k4zuki 9:33d5888d1fb9 350 }
k4zuki 9:33d5888d1fb9 351
k4zuki 9:33d5888d1fb9 352 void AkiSpiLcd::ram_writeStatus(uint8_t status)
k4zuki 9:33d5888d1fb9 353 {
k4zuki 9:33d5888d1fb9 354 ram_select();
k4zuki 9:33d5888d1fb9 355 _spi.write(WRITE_STATUS);
k4zuki 9:33d5888d1fb9 356 _spi.write(status);
k4zuki 9:33d5888d1fb9 357 ram_deselect();
k4zuki 9:33d5888d1fb9 358 }
k4zuki 9:33d5888d1fb9 359
k4zuki 9:33d5888d1fb9 360 void AkiSpiLcd::ram_prepareCommand(uint8_t command, int address)
k4zuki 9:33d5888d1fb9 361 {
k4zuki 9:33d5888d1fb9 362 ram_select();
k4zuki 9:33d5888d1fb9 363 _spi.write(command);
k4zuki 9:33d5888d1fb9 364 _spi.write(address >> 8);
k4zuki 9:33d5888d1fb9 365 _spi.write(address & 0xFF);
k4zuki 9:33d5888d1fb9 366 }
k4zuki 9:33d5888d1fb9 367
k4zuki 9:33d5888d1fb9 368 void AkiSpiLcd::ram_select()
k4zuki 9:33d5888d1fb9 369 {
k4zuki 9:33d5888d1fb9 370 _csr=0;
k4zuki 9:33d5888d1fb9 371 }
k4zuki 9:33d5888d1fb9 372
k4zuki 9:33d5888d1fb9 373 void AkiSpiLcd::ram_deselect()
k4zuki 9:33d5888d1fb9 374 {
k4zuki 9:33d5888d1fb9 375 _csr=1;
k4zuki 9:33d5888d1fb9 376 }