Fixes for line numbers

Fork of AkiSpiLcd by Kazuki Yamamoto

Committer:
Chris
Date:
Sun Jan 24 01:08:40 2016 +0000
Revision:
18:376dbfc95025
Parent:
17:3b47e5044518
Child:
19:b53d3942c983
fixed the line numbering, would overdraw line 1 with line 2 and not do line 240

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 10:eed99ef09e63 7 //#include "Ser23K256.h"
k4zuki 11:16647ecd67ce 8 extern const uint8_t lcd_line[];
k4zuki 0:b3c8fdd01601 9
k4zuki 4:844693a617dc 10 AkiSpiLcd::AkiSpiLcd(PinName mosi, PinName miso, PinName sck, PinName csl, PinName csr)
k4zuki 4:844693a617dc 11 :_spi(mosi, miso, sck), _csl(csl), _csr(csr)
k4zuki 0:b3c8fdd01601 12 {
k4zuki 3:f835b8daf9a0 13 _csl=0;
k4zuki 4:844693a617dc 14 _csr=1;
k4zuki 0:b3c8fdd01601 15 _spi.format(8,0);
k4zuki 15:704dd6e688ab 16 _spi.frequency(10000000);
k4zuki 14:812873f3a933 17 _comflag = _modeflag = _clearflag = 0;
k4zuki 12:30b31d87a30e 18
k4zuki 14:812873f3a933 19 // if(_csr != NULL) {
k4zuki 14:812873f3a933 20 // uint8_t data[240];
k4zuki 14:812873f3a933 21 // data[0]=0;
k4zuki 14:812873f3a933 22 // for(int i=1; i<=240; i++) {
k4zuki 14:812873f3a933 23 // data[i]=(uint8_t)lcd_line[i];
k4zuki 14:812873f3a933 24 // }
k4zuki 14:812873f3a933 25 // ram_write(RAMLINE_BASE,data,240);
k4zuki 14:812873f3a933 26 // }
k4zuki 14:812873f3a933 27 // uint8_t buffer[4] = {0,0,0,0};
k4zuki 14:812873f3a933 28 // ram_write(RAMMODE_BASE,buffer,4);
k4zuki 5:7061ce47a359 29
k4zuki 0:b3c8fdd01601 30 }
k4zuki 0:b3c8fdd01601 31
k4zuki 0:b3c8fdd01601 32 void AkiSpiLcd::cls()
k4zuki 0:b3c8fdd01601 33 {
k4zuki 14:812873f3a933 34 _modeflag=0;
k4zuki 14:812873f3a933 35 _clearflag=1;
k4zuki 0:b3c8fdd01601 36
k4zuki 3:f835b8daf9a0 37 _csl=1;
k4zuki 0:b3c8fdd01601 38 wait_us(5);
k4zuki 0:b3c8fdd01601 39
k4zuki 14:812873f3a933 40 _spi.write( (_modeflag << 7) | (_comflag << 6) | (_clearflag << 5) );
k4zuki 0:b3c8fdd01601 41 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 42
k4zuki 0:b3c8fdd01601 43 wait_us(5);
k4zuki 3:f835b8daf9a0 44 _csl=0;
k4zuki 0:b3c8fdd01601 45
k4zuki 14:812873f3a933 46 cominvert();
k4zuki 0:b3c8fdd01601 47 }
k4zuki 0:b3c8fdd01601 48
k4zuki 12:30b31d87a30e 49 void AkiSpiLcd::cls_ram( int screen )
k4zuki 12:30b31d87a30e 50 {
k4zuki 12:30b31d87a30e 51 screen &=1;
k4zuki 12:30b31d87a30e 52 if(screen==SCREEN0) {
k4zuki 14:812873f3a933 53 _cls_ram( SCREEN0_BASE );
k4zuki 12:30b31d87a30e 54 } else {
k4zuki 14:812873f3a933 55 _cls_ram( SCREEN1_BASE );
k4zuki 12:30b31d87a30e 56 }
k4zuki 12:30b31d87a30e 57 }
k4zuki 12:30b31d87a30e 58
k4zuki 12:30b31d87a30e 59
k4zuki 3:f835b8daf9a0 60 void AkiSpiLcd::directUpdateSingle(int line, uint8_t* data)
k4zuki 0:b3c8fdd01601 61 {
k4zuki 14:812873f3a933 62 _modeflag=1;
k4zuki 14:812873f3a933 63 _clearflag=0;
k4zuki 0:b3c8fdd01601 64
k4zuki 3:f835b8daf9a0 65 _csl=1;
k4zuki 11:16647ecd67ce 66 wait_us(1);
k4zuki 0:b3c8fdd01601 67
k4zuki 14:812873f3a933 68
k4zuki 14:812873f3a933 69 _spi.write( (_modeflag << 7) | (_comflag << 6) | (_clearflag << 5) );
Chris 18:376dbfc95025 70 _spi.write((uint8_t)lcd_line[line+1]);
k4zuki 12:30b31d87a30e 71
k4zuki 0:b3c8fdd01601 72 for(int i=0; i<50; i++) {
k4zuki 0:b3c8fdd01601 73 _spi.write( *(data+i) );
k4zuki 0:b3c8fdd01601 74 }
k4zuki 0:b3c8fdd01601 75 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 76 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 77
k4zuki 0:b3c8fdd01601 78 wait_us(5);
k4zuki 3:f835b8daf9a0 79 _csl=0;
k4zuki 0:b3c8fdd01601 80
k4zuki 14:812873f3a933 81 cominvert();
k4zuki 0:b3c8fdd01601 82 }
k4zuki 0:b3c8fdd01601 83
k4zuki 3:f835b8daf9a0 84 void AkiSpiLcd::directUpdateMulti(int line, int length, uint8_t* data)
k4zuki 0:b3c8fdd01601 85 {
k4zuki 14:812873f3a933 86 _modeflag=1;
k4zuki 14:812873f3a933 87 _clearflag=0;
k4zuki 14:812873f3a933 88
k4zuki 0:b3c8fdd01601 89 if(length>0) {
k4zuki 3:f835b8daf9a0 90 _csl=1;
k4zuki 0:b3c8fdd01601 91 wait_us(5);
Chris 18:376dbfc95025 92 for (int j=0; j<=length; j++) {
k4zuki 14:812873f3a933 93 _spi.write( (_modeflag << 7) | (_comflag << 6) | (_clearflag << 5) );
Chris 18:376dbfc95025 94 _spi.write((uint8_t)lcd_line[line+1]);
k4zuki 0:b3c8fdd01601 95 for(int i=0; i<50; i++) {
Chris 18:376dbfc95025 96 _spi.write( *(data+(50*j+i)) );
k4zuki 0:b3c8fdd01601 97 }
k4zuki 0:b3c8fdd01601 98 line+=1;
k4zuki 0:b3c8fdd01601 99 }
k4zuki 0:b3c8fdd01601 100 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 101 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 102 wait_us(5);
k4zuki 3:f835b8daf9a0 103 _csl=0;
k4zuki 0:b3c8fdd01601 104 }
k4zuki 14:812873f3a933 105 cominvert();
k4zuki 0:b3c8fdd01601 106 }
k4zuki 0:b3c8fdd01601 107
k4zuki 0:b3c8fdd01601 108 void AkiSpiLcd::cominvert()
k4zuki 0:b3c8fdd01601 109 {
k4zuki 14:812873f3a933 110 _modeflag=0;
k4zuki 14:812873f3a933 111 _clearflag=0;
k4zuki 0:b3c8fdd01601 112
k4zuki 3:f835b8daf9a0 113 _csl=1;
k4zuki 0:b3c8fdd01601 114
k4zuki 14:812873f3a933 115 _spi.write( (_modeflag << 7) | (_comflag << 6) | (_clearflag << 5) );
k4zuki 0:b3c8fdd01601 116 _spi.write(0x00);
k4zuki 15:704dd6e688ab 117 // wait_us(5);
k4zuki 3:f835b8daf9a0 118 _csl=0;
k4zuki 14:812873f3a933 119 if(_comflag == 0) {
k4zuki 14:812873f3a933 120 _comflag = 1;
k4zuki 0:b3c8fdd01601 121 } else {
k4zuki 14:812873f3a933 122 _comflag = 0;
k4zuki 0:b3c8fdd01601 123 }
k4zuki 0:b3c8fdd01601 124 }
k4zuki 14:812873f3a933 125
k4zuki 14:812873f3a933 126 /** Reads single line (16 + 400 bits = 52 bytes) from a screen
k4zuki 3:f835b8daf9a0 127 */
k4zuki 14:812873f3a933 128 void AkiSpiLcd::ramReadSingleLine(int line, uint8_t* buffer, int screen)
k4zuki 9:33d5888d1fb9 129 {
k4zuki 4:844693a617dc 130 screen &=1;
k4zuki 9:33d5888d1fb9 131 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 132 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 133 } else {
k4zuki 7:0c85f23a6568 134 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 135 }
k4zuki 14:812873f3a933 136
k4zuki 14:812873f3a933 137 line*=RAMLINE_LENGTH;
k4zuki 4:844693a617dc 138 int address=screen+line;
k4zuki 14:812873f3a933 139 ram_read(address,buffer,RAMLINE_LENGTH);
k4zuki 4:844693a617dc 140 }
k4zuki 4:844693a617dc 141
k4zuki 14:812873f3a933 142 /** Reads multi lines( (16 + 400) x N bits = 52 x N bytes) from a screen
k4zuki 9:33d5888d1fb9 143 */
k4zuki 14:812873f3a933 144 void AkiSpiLcd::ramReadMultiLine(int line, int length, uint8_t* buffer, int screen)
k4zuki 9:33d5888d1fb9 145 {
k4zuki 4:844693a617dc 146 screen &=1;
k4zuki 9:33d5888d1fb9 147 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 148 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 149 } else {
k4zuki 7:0c85f23a6568 150 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 151 }
k4zuki 14:812873f3a933 152 line*=RAMLINE_LENGTH;
k4zuki 4:844693a617dc 153 int address=screen+line;
k4zuki 14:812873f3a933 154 ram_read(address,buffer,RAMLINE_LENGTH*length);
k4zuki 4:844693a617dc 155 }
k4zuki 9:33d5888d1fb9 156
k4zuki 9:33d5888d1fb9 157 /** Writes single line (400 bits = 50 bytes) into a screen
k4zuki 9:33d5888d1fb9 158 */
k4zuki 14:812873f3a933 159 void AkiSpiLcd::ramWriteSingleLine(int line, uint8_t* data, int screen)
k4zuki 9:33d5888d1fb9 160 {
k4zuki 4:844693a617dc 161 screen &=1;
k4zuki 9:33d5888d1fb9 162 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 163 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 164 } else {
k4zuki 7:0c85f23a6568 165 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 166 }
k4zuki 14:812873f3a933 167 line--;
k4zuki 14:812873f3a933 168 line*=RAMLINE_LENGTH;
k4zuki 4:844693a617dc 169 int address=screen+line;
k4zuki 14:812873f3a933 170 ram_write(address,data,50);
k4zuki 14:812873f3a933 171 }
k4zuki 14:812873f3a933 172
k4zuki 14:812873f3a933 173 /** Writes multi lines(400 x N bits = 50 x N bytes) into a screen
k4zuki 14:812873f3a933 174 */
k4zuki 14:812873f3a933 175 void AkiSpiLcd::ramWriteMultiLine(int line, int length, uint8_t* data, int screen)
k4zuki 14:812873f3a933 176 {
k4zuki 14:812873f3a933 177 _modeflag=1;
k4zuki 14:812873f3a933 178 _clearflag=0;
k4zuki 14:812873f3a933 179 screen &=1;
k4zuki 14:812873f3a933 180 if(screen==SCREEN0) {
k4zuki 14:812873f3a933 181 screen=SCREEN0_BASE;
k4zuki 14:812873f3a933 182 } else {
k4zuki 14:812873f3a933 183 screen=SCREEN1_BASE;
k4zuki 14:812873f3a933 184 }
k4zuki 14:812873f3a933 185 // line--;
k4zuki 14:812873f3a933 186 // line*=RAMLINE_LENGTH;
k4zuki 14:812873f3a933 187
k4zuki 14:812873f3a933 188 int address=screen+line*RAMLINE_LENGTH;
k4zuki 14:812873f3a933 189 _ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 14:812873f3a933 190 _ram_prepareCommand(WRITE, address);
k4zuki 14:812873f3a933 191 for(int i=0; i<length; i++) {
k4zuki 14:812873f3a933 192 _spi.write( (_modeflag << 7) | (_comflag << 6) | (_clearflag << 5) );
k4zuki 14:812873f3a933 193 _spi.write( (uint8_t)lcd_line[line] );
k4zuki 14:812873f3a933 194 for(int j = 0; j < LINE_LENGTH; j++) {
k4zuki 14:812873f3a933 195 _spi.write(*data);
k4zuki 14:812873f3a933 196 data++;
k4zuki 4:844693a617dc 197 }
k4zuki 14:812873f3a933 198 line++;
k4zuki 4:844693a617dc 199 }
k4zuki 14:812873f3a933 200 _ram_deselect();
k4zuki 14:812873f3a933 201 _ram_writeStatus(BYTE_MODE);
k4zuki 14:812873f3a933 202 // ram_write(address,data,50*length);
k4zuki 4:844693a617dc 203 }
k4zuki 4:844693a617dc 204
k4zuki 9:33d5888d1fb9 205 /** copies whole data in screen into LCD
k4zuki 9:33d5888d1fb9 206 */
k4zuki 9:33d5888d1fb9 207 void AkiSpiLcd::ram2lcd(int startline, int length, int screen)
k4zuki 9:33d5888d1fb9 208 {
k4zuki 14:812873f3a933 209 _modeflag=1;
k4zuki 14:812873f3a933 210 _clearflag=0;
k4zuki 4:844693a617dc 211 screen &=1;
k4zuki 9:33d5888d1fb9 212 if(screen==SCREEN0) {
k4zuki 7:0c85f23a6568 213 screen=SCREEN0_BASE;
k4zuki 9:33d5888d1fb9 214 } else {
k4zuki 7:0c85f23a6568 215 screen=SCREEN1_BASE;
k4zuki 7:0c85f23a6568 216 }
k4zuki 14:812873f3a933 217 if(startline==0)startline=1;
k4zuki 14:812873f3a933 218
k4zuki 14:812873f3a933 219 if(length>0) {
k4zuki 14:812873f3a933 220
k4zuki 14:812873f3a933 221 int address=screen+startline*RAMLINE_LENGTH;
k4zuki 14:812873f3a933 222 // uint8_t dummy[RAMLINE_LENGTH+2];
k4zuki 15:704dd6e688ab 223 int dummy=0;
k4zuki 4:844693a617dc 224
k4zuki 14:812873f3a933 225 _ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 14:812873f3a933 226 _ram_prepareCommand(READ,address);
k4zuki 15:704dd6e688ab 227 _spi.format(16,0);
k4zuki 14:812873f3a933 228 _csl=1;
k4zuki 15:704dd6e688ab 229 //wait_us(5);
k4zuki 15:704dd6e688ab 230
k4zuki 14:812873f3a933 231 for(int j = 0; j <= length; j++) {
k4zuki 14:812873f3a933 232 // _csl=1;
k4zuki 14:812873f3a933 233 for(int k = 0; k < RAMLINE_LENGTH; k+=4) {
k4zuki 15:704dd6e688ab 234 dummy = _spi.write(0x55de);
k4zuki 15:704dd6e688ab 235 // dummy = _spi.write(0xde);
k4zuki 15:704dd6e688ab 236 dummy = _spi.write(0xadaa);
k4zuki 14:812873f3a933 237 // dummy = _spi.write(0xbe);
k4zuki 14:812873f3a933 238 // dummy = _spi.write(0xaf);
k4zuki 15:704dd6e688ab 239 // dummy = _spi.write(0xaa);
k4zuki 14:812873f3a933 240 }
k4zuki 14:812873f3a933 241 // _csl = 0;
k4zuki 4:844693a617dc 242 }
k4zuki 4:844693a617dc 243 }
k4zuki 15:704dd6e688ab 244 _spi.write(0xdead);
k4zuki 15:704dd6e688ab 245 //wait_us(5);
k4zuki 14:812873f3a933 246 _csl = 0;
k4zuki 14:812873f3a933 247 // _spi.write(0xde);
k4zuki 14:812873f3a933 248 // _spi.write(0xad);
k4zuki 14:812873f3a933 249 _ram_deselect();
k4zuki 15:704dd6e688ab 250 _spi.format(8,0);
k4zuki 14:812873f3a933 251 cominvert();
k4zuki 4:844693a617dc 252 }
k4zuki 9:33d5888d1fb9 253
k4zuki 16:fa277cbcc890 254 /** copies whole data in screen into LCD
k4zuki 16:fa277cbcc890 255 */
k4zuki 16:fa277cbcc890 256 void AkiSpiLcd::ram2lcd(int screen)
k4zuki 16:fa277cbcc890 257 {
k4zuki 16:fa277cbcc890 258 uint8_t lineBuffer[RAMLINE_LENGTH];
k4zuki 16:fa277cbcc890 259 for (int y = 0; y < 240; y++) {
k4zuki 16:fa277cbcc890 260 ram_read(y * RAMLINE_LENGTH+2,lineBuffer,RAMLINE_LENGTH);
k4zuki 16:fa277cbcc890 261 directUpdateSingle(y + 1,lineBuffer);
k4zuki 16:fa277cbcc890 262 }
k4zuki 16:fa277cbcc890 263 }
k4zuki 9:33d5888d1fb9 264 uint8_t AkiSpiLcd::ram_read(int address)
k4zuki 9:33d5888d1fb9 265 {
k4zuki 14:812873f3a933 266 _ram_prepareCommand(READ, address);
k4zuki 9:33d5888d1fb9 267 int result = _spi.write(0);
k4zuki 14:812873f3a933 268 _ram_deselect();
k4zuki 9:33d5888d1fb9 269 return (uint8_t) result;
k4zuki 9:33d5888d1fb9 270 }
k4zuki 9:33d5888d1fb9 271
k4zuki 9:33d5888d1fb9 272 void AkiSpiLcd::ram_read(int address, uint8_t * buffer, int count)
k4zuki 9:33d5888d1fb9 273 {
k4zuki 14:812873f3a933 274 _ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 14:812873f3a933 275 _ram_prepareCommand(READ, address);
k4zuki 9:33d5888d1fb9 276 for (int i = 0; i < count; i++) {
m_wakayama 17:3b47e5044518 277 buffer[i] = _spi.write(0x00);
m_wakayama 17:3b47e5044518 278
k4zuki 9:33d5888d1fb9 279 }
k4zuki 14:812873f3a933 280 _ram_deselect();
k4zuki 14:812873f3a933 281 _ram_writeStatus(BYTE_MODE);
k4zuki 9:33d5888d1fb9 282 }
k4zuki 9:33d5888d1fb9 283
k4zuki 9:33d5888d1fb9 284 void AkiSpiLcd::ram_write(int address, uint8_t byte)
k4zuki 9:33d5888d1fb9 285 {
k4zuki 14:812873f3a933 286 _ram_prepareCommand(WRITE, address);
k4zuki 9:33d5888d1fb9 287 _spi.write(byte);
k4zuki 14:812873f3a933 288 _ram_deselect();
k4zuki 9:33d5888d1fb9 289 }
k4zuki 9:33d5888d1fb9 290
k4zuki 9:33d5888d1fb9 291 void AkiSpiLcd::ram_write(int address, uint8_t * buffer, int count)
k4zuki 9:33d5888d1fb9 292 {
k4zuki 14:812873f3a933 293 _ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 14:812873f3a933 294 _ram_prepareCommand(WRITE, address);
k4zuki 9:33d5888d1fb9 295 for (int i = 0; i < count; i++) {
k4zuki 9:33d5888d1fb9 296 _spi.write(buffer[i]);
k4zuki 9:33d5888d1fb9 297 }
k4zuki 14:812873f3a933 298 _ram_deselect();
k4zuki 14:812873f3a933 299 _ram_writeStatus(BYTE_MODE);
k4zuki 9:33d5888d1fb9 300 }
k4zuki 9:33d5888d1fb9 301
k4zuki 9:33d5888d1fb9 302 uint8_t AkiSpiLcd::ram_readStatus()
k4zuki 9:33d5888d1fb9 303 {
k4zuki 14:812873f3a933 304 _ram_select();
k4zuki 9:33d5888d1fb9 305 _spi.write(READ_STATUS);
k4zuki 9:33d5888d1fb9 306 uint8_t result = (uint8_t) _spi.write(0);
k4zuki 14:812873f3a933 307 _ram_deselect();
k4zuki 9:33d5888d1fb9 308 return result;
k4zuki 9:33d5888d1fb9 309 }
k4zuki 9:33d5888d1fb9 310
k4zuki 14:812873f3a933 311 void AkiSpiLcd::_ram_writeStatus(uint8_t status)
k4zuki 9:33d5888d1fb9 312 {
k4zuki 14:812873f3a933 313 _ram_select();
k4zuki 9:33d5888d1fb9 314 _spi.write(WRITE_STATUS);
k4zuki 9:33d5888d1fb9 315 _spi.write(status);
k4zuki 14:812873f3a933 316 _ram_deselect();
k4zuki 9:33d5888d1fb9 317 }
k4zuki 9:33d5888d1fb9 318
k4zuki 14:812873f3a933 319 void AkiSpiLcd::_ram_prepareCommand(uint8_t command, int address)
k4zuki 9:33d5888d1fb9 320 {
k4zuki 14:812873f3a933 321 _ram_select();
k4zuki 9:33d5888d1fb9 322 _spi.write(command);
k4zuki 9:33d5888d1fb9 323 _spi.write(address >> 8);
k4zuki 9:33d5888d1fb9 324 _spi.write(address & 0xFF);
k4zuki 9:33d5888d1fb9 325 }
k4zuki 9:33d5888d1fb9 326
k4zuki 14:812873f3a933 327 void AkiSpiLcd::_ram_select()
k4zuki 9:33d5888d1fb9 328 {
k4zuki 14:812873f3a933 329 _csr = 0;
k4zuki 14:812873f3a933 330 }
k4zuki 14:812873f3a933 331
k4zuki 14:812873f3a933 332 void AkiSpiLcd::_ram_deselect()
k4zuki 14:812873f3a933 333 {
k4zuki 14:812873f3a933 334 _csr = 1;
k4zuki 9:33d5888d1fb9 335 }
k4zuki 9:33d5888d1fb9 336
k4zuki 14:812873f3a933 337 void AkiSpiLcd::_cls_ram( int address )
k4zuki 9:33d5888d1fb9 338 {
k4zuki 14:812873f3a933 339 _modeflag=1;
k4zuki 14:812873f3a933 340 _clearflag=0;
k4zuki 14:812873f3a933 341 _ram_writeStatus(SEQUENTIAL_MODE);
k4zuki 14:812873f3a933 342 _ram_prepareCommand(WRITE, address);
k4zuki 14:812873f3a933 343 for (int i = 1; i <= (240); i++) {
k4zuki 14:812873f3a933 344 _spi.write( (_modeflag << 7) | (_comflag << 6) | (_clearflag << 5) );
k4zuki 14:812873f3a933 345 _spi.write( (uint8_t)lcd_line[i] );
k4zuki 14:812873f3a933 346 for(int j = 0; j < 50; j++) {
k4zuki 14:812873f3a933 347 _spi.write(0x00);
k4zuki 14:812873f3a933 348 }
k4zuki 14:812873f3a933 349
k4zuki 14:812873f3a933 350 }
k4zuki 14:812873f3a933 351 _ram_deselect();
k4zuki 14:812873f3a933 352 _ram_writeStatus(BYTE_MODE);
k4zuki 9:33d5888d1fb9 353 }