Fixes for line numbers

Fork of AkiSpiLcd by Kazuki Yamamoto

Committer:
Chris
Date:
Wed May 11 11:58:05 2016 +0100
Revision:
22:5ac00ac2a4be
Parent:
21:8de1035017b5
change to lcdconf

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