Fixes for line numbers

Fork of AkiSpiLcd by Kazuki Yamamoto

Committer:
k4zuki
Date:
Tue May 06 17:07:34 2014 +0000
Revision:
0:b3c8fdd01601
Child:
1:57de84d2025c
some formatting fix

Who changed what in which revision?

UserRevisionLine numberNew contents of line
k4zuki 0:b3c8fdd01601 1 /*
k4zuki 0:b3c8fdd01601 2 this is for SHARP LCD LS027B4DH01
k4zuki 0:b3c8fdd01601 3 by Kazuki Yamamoto, or _K4ZUKI_
k4zuki 0:b3c8fdd01601 4 */
k4zuki 0:b3c8fdd01601 5
k4zuki 0:b3c8fdd01601 6 #include "mbed.h"
k4zuki 0:b3c8fdd01601 7 #include "AkiSpiLcd.h"
k4zuki 0:b3c8fdd01601 8
k4zuki 0:b3c8fdd01601 9 AkiSpiLcd::AkiSpiLcd(PinName mosi,PinName sck, PinName cs, PinName disp)
k4zuki 0:b3c8fdd01601 10 :_spi(mosi,NC,sck), _cs(cs), _disp(disp)
k4zuki 0:b3c8fdd01601 11 {
k4zuki 0:b3c8fdd01601 12 _cs=0;
k4zuki 0:b3c8fdd01601 13 _spi.format(8,0);
k4zuki 0:b3c8fdd01601 14 _spi.frequency(2000000);
k4zuki 0:b3c8fdd01601 15 comflag = modeflag = clearflag = 0;
k4zuki 0:b3c8fdd01601 16 _disp=1;
k4zuki 0:b3c8fdd01601 17 }
k4zuki 0:b3c8fdd01601 18
k4zuki 0:b3c8fdd01601 19 void AkiSpiLcd::cls()
k4zuki 0:b3c8fdd01601 20 {
k4zuki 0:b3c8fdd01601 21 modeflag=0;
k4zuki 0:b3c8fdd01601 22 clearflag=1;
k4zuki 0:b3c8fdd01601 23
k4zuki 0:b3c8fdd01601 24 _cs=1;
k4zuki 0:b3c8fdd01601 25 wait_us(5);
k4zuki 0:b3c8fdd01601 26
k4zuki 0:b3c8fdd01601 27 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 28 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 29
k4zuki 0:b3c8fdd01601 30 wait_us(5);
k4zuki 0:b3c8fdd01601 31 _cs=0;
k4zuki 0:b3c8fdd01601 32
k4zuki 0:b3c8fdd01601 33 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 34 comflag = 1;
k4zuki 0:b3c8fdd01601 35 } else {
k4zuki 0:b3c8fdd01601 36 comflag = 0;
k4zuki 0:b3c8fdd01601 37 }
k4zuki 0:b3c8fdd01601 38 }
k4zuki 0:b3c8fdd01601 39
k4zuki 0:b3c8fdd01601 40 void AkiSpiLcd::updateSingle(int line, uint8_t* data)
k4zuki 0:b3c8fdd01601 41 {
k4zuki 0:b3c8fdd01601 42 modeflag=1;
k4zuki 0:b3c8fdd01601 43 clearflag=0;
k4zuki 0:b3c8fdd01601 44
k4zuki 0:b3c8fdd01601 45 _cs=1;
k4zuki 0:b3c8fdd01601 46 wait_us(5);
k4zuki 0:b3c8fdd01601 47
k4zuki 0:b3c8fdd01601 48 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 49 _spi.write(
k4zuki 0:b3c8fdd01601 50 ( ( (line+1) & 0x01 ) << 7 )|
k4zuki 0:b3c8fdd01601 51 ( ( (line+1) & 0x02 ) << 5 )|
k4zuki 0:b3c8fdd01601 52 ( ( (line+1) & 0x04 ) << 3 )|
k4zuki 0:b3c8fdd01601 53 ( ( (line+1) & 0x08 ) << 1 )|
k4zuki 0:b3c8fdd01601 54 ( ( (line+1) & 0x10 ) >> 1 )|
k4zuki 0:b3c8fdd01601 55 ( ( (line+1) & 0x20 ) >> 3 )|
k4zuki 0:b3c8fdd01601 56 ( ( (line+1) & 0x40 ) >> 5 )|
k4zuki 0:b3c8fdd01601 57 ( ( (line+1) & 0x80 ) >> 7 )
k4zuki 0:b3c8fdd01601 58 );
k4zuki 0:b3c8fdd01601 59
k4zuki 0:b3c8fdd01601 60 for(int i=0; i<50; i++) {
k4zuki 0:b3c8fdd01601 61 _spi.write( *(data+i) );
k4zuki 0:b3c8fdd01601 62 }
k4zuki 0:b3c8fdd01601 63 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 64 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 65
k4zuki 0:b3c8fdd01601 66 wait_us(5);
k4zuki 0:b3c8fdd01601 67 _cs=0;
k4zuki 0:b3c8fdd01601 68
k4zuki 0:b3c8fdd01601 69 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 70 comflag = 1;
k4zuki 0:b3c8fdd01601 71 } else {
k4zuki 0:b3c8fdd01601 72 comflag = 0;
k4zuki 0:b3c8fdd01601 73 }
k4zuki 0:b3c8fdd01601 74 }
k4zuki 0:b3c8fdd01601 75
k4zuki 0:b3c8fdd01601 76 void AkiSpiLcd::updateMulti(int line, int length, uint8_t* data)
k4zuki 0:b3c8fdd01601 77 {
k4zuki 0:b3c8fdd01601 78 modeflag=1;
k4zuki 0:b3c8fdd01601 79 clearflag=0;
k4zuki 0:b3c8fdd01601 80
k4zuki 0:b3c8fdd01601 81 if(length>0) {
k4zuki 0:b3c8fdd01601 82 _cs=1;
k4zuki 0:b3c8fdd01601 83 wait_us(5);
k4zuki 0:b3c8fdd01601 84 for (int j=0; j<length; j++) {
k4zuki 0:b3c8fdd01601 85 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 86 _spi.write(
k4zuki 0:b3c8fdd01601 87 ( ( (line+1) & 0x01 ) << 7 )|
k4zuki 0:b3c8fdd01601 88 ( ( (line+1) & 0x02 ) << 5 )|
k4zuki 0:b3c8fdd01601 89 ( ( (line+1) & 0x04 ) << 3 )|
k4zuki 0:b3c8fdd01601 90 ( ( (line+1) & 0x08 ) << 1 )|
k4zuki 0:b3c8fdd01601 91 ( ( (line+1) & 0x10 ) >> 1 )|
k4zuki 0:b3c8fdd01601 92 ( ( (line+1) & 0x20 ) >> 3 )|
k4zuki 0:b3c8fdd01601 93 ( ( (line+1) & 0x40 ) >> 5 )|
k4zuki 0:b3c8fdd01601 94 ( ( (line+1) & 0x80 ) >> 7 )
k4zuki 0:b3c8fdd01601 95 );
k4zuki 0:b3c8fdd01601 96
k4zuki 0:b3c8fdd01601 97 for(int i=0; i<50; i++) {
k4zuki 0:b3c8fdd01601 98 _spi.write( *(data+(50*j+i)) );//hogepic[50*j+i]
k4zuki 0:b3c8fdd01601 99 }
k4zuki 0:b3c8fdd01601 100 line+=1;
k4zuki 0:b3c8fdd01601 101 }
k4zuki 0:b3c8fdd01601 102 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 103 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 104 wait_us(5);
k4zuki 0:b3c8fdd01601 105 _cs=0;
k4zuki 0:b3c8fdd01601 106 }
k4zuki 0:b3c8fdd01601 107 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 108 comflag = 1;
k4zuki 0:b3c8fdd01601 109 } else {
k4zuki 0:b3c8fdd01601 110 comflag = 0;
k4zuki 0:b3c8fdd01601 111 }
k4zuki 0:b3c8fdd01601 112 }
k4zuki 0:b3c8fdd01601 113
k4zuki 0:b3c8fdd01601 114 void AkiSpiLcd::cominvert()
k4zuki 0:b3c8fdd01601 115 {
k4zuki 0:b3c8fdd01601 116 modeflag=0;
k4zuki 0:b3c8fdd01601 117 clearflag=0;
k4zuki 0:b3c8fdd01601 118
k4zuki 0:b3c8fdd01601 119 _cs=1;
k4zuki 0:b3c8fdd01601 120
k4zuki 0:b3c8fdd01601 121 _spi.write( (modeflag << 7) | (comflag << 6) | (clearflag << 5) );
k4zuki 0:b3c8fdd01601 122 _spi.write(0x00);
k4zuki 0:b3c8fdd01601 123 wait_us(5);
k4zuki 0:b3c8fdd01601 124 _cs=0;
k4zuki 0:b3c8fdd01601 125 if(comflag == 0) {
k4zuki 0:b3c8fdd01601 126 comflag = 1;
k4zuki 0:b3c8fdd01601 127 } else {
k4zuki 0:b3c8fdd01601 128 comflag = 0;
k4zuki 0:b3c8fdd01601 129 }
k4zuki 0:b3c8fdd01601 130 }
k4zuki 0:b3c8fdd01601 131
k4zuki 0:b3c8fdd01601 132 void AkiSpiLcd::dispOn(bool disp)
k4zuki 0:b3c8fdd01601 133 {
k4zuki 0:b3c8fdd01601 134 if(disp) {
k4zuki 0:b3c8fdd01601 135 _disp=1;
k4zuki 0:b3c8fdd01601 136 } else {
k4zuki 0:b3c8fdd01601 137 _disp=0;
k4zuki 0:b3c8fdd01601 138 }
k4zuki 0:b3c8fdd01601 139 }