JDI_MIP on ThunderBoardSense2(Silicon-Labs)

JDI_MIP (LPM013M126A) Sample on ThunderBoard2(Silicon-Labs)

/media/uploads/STakayama/mip8_tb2_sample0_.jpg LPM013M126A /media/uploads/STakayama/mip8_tb2_sample1.jpg

Links

https://os.mbed.com/teams/JapanDisplayInc/

https://os.mbed.com/teams/JapanDisplayInc/wiki/MIP-reflective-color-display

Committer:
STakayama
Date:
Fri May 11 04:13:11 2018 +0000
Revision:
0:dbc295c4383e
Child:
1:dfd9046278b7
UV_SAMPLE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
STakayama 0:dbc295c4383e 1
STakayama 0:dbc295c4383e 2
STakayama 0:dbc295c4383e 3 #include "mbed.h"
STakayama 0:dbc295c4383e 4 #include "SPI_MIP8.h"
STakayama 0:dbc295c4383e 5
STakayama 0:dbc295c4383e 6 memLCD8 WD(PK0,PK2,PF7,PA5,PA8,PF6); //PTC12); // mosi,miso,clk,cs,disp,power(EXTMODE)
STakayama 0:dbc295c4383e 7
STakayama 0:dbc295c4383e 8 InterruptIn UV_INT(PA6); // YV Interrupt
STakayama 0:dbc295c4383e 9 DigitalIn PushSW0(PD14); // Switch
STakayama 0:dbc295c4383e 10 DigitalIn PushSW1(PD15); // Switch
STakayama 0:dbc295c4383e 11
STakayama 0:dbc295c4383e 12 DigitalOut ledPJ14(PJ14);
STakayama 0:dbc295c4383e 13
STakayama 0:dbc295c4383e 14 DigitalOut led1(LED1);
STakayama 0:dbc295c4383e 15 DigitalOut ledPI0(PI0);
STakayama 0:dbc295c4383e 16 DigitalOut ledPI1(PI1);
STakayama 0:dbc295c4383e 17 DigitalOut ledPI2(PI2);
STakayama 0:dbc295c4383e 18 DigitalOut ledPI3(PI3);
STakayama 0:dbc295c4383e 19 DigitalOut ledR(PD11);
STakayama 0:dbc295c4383e 20 DigitalOut ledG(PD12);
STakayama 0:dbc295c4383e 21 DigitalOut ledB(PD13);
STakayama 0:dbc295c4383e 22
STakayama 0:dbc295c4383e 23 bool if16 = 0;
STakayama 0:dbc295c4383e 24 bool ifMargeTXT = 0;
STakayama 0:dbc295c4383e 25 int width =160;
STakayama 0:dbc295c4383e 26 int height=160;
STakayama 0:dbc295c4383e 27
STakayama 0:dbc295c4383e 28 int main() {
STakayama 0:dbc295c4383e 29 ledPJ14 =0;
STakayama 0:dbc295c4383e 30 ledPI0 =1; ledPI1 =1; ledPI2 =1; ledPI3 =1;
STakayama 0:dbc295c4383e 31 while(1){
STakayama 0:dbc295c4383e 32 for (int i=0; i<0x10000;i++) {
STakayama 0:dbc295c4383e 33 for (int j=0; j<0x100000;j++) ;
STakayama 0:dbc295c4383e 34 led1 = (i%8==0)?(1):(0);
STakayama 0:dbc295c4383e 35 ledR = (i%1==0)?(1):(0);
STakayama 0:dbc295c4383e 36 ledG = (i%2==0)?(1):(0);
STakayama 0:dbc295c4383e 37 ledB = (i%4==0)?(1):(0);
STakayama 0:dbc295c4383e 38 printf("aaa %d\n\r",i);
STakayama 0:dbc295c4383e 39 }
STakayama 0:dbc295c4383e 40 }
STakayama 0:dbc295c4383e 41 }
STakayama 0:dbc295c4383e 42
STakayama 0:dbc295c4383e 43 /* MIP Main Reference
STakayama 0:dbc295c4383e 44 #include "stdio.h"
STakayama 0:dbc295c4383e 45 #include "string"
STakayama 0:dbc295c4383e 46 #include "mbed.h"
STakayama 0:dbc295c4383e 47 #include "SPI_MIP8.h"
STakayama 0:dbc295c4383e 48 #include "SDFileSystem.h"
STakayama 0:dbc295c4383e 49 #include "StateSW.h"
STakayama 0:dbc295c4383e 50 #include "TglSW.h"
STakayama 0:dbc295c4383e 51
STakayama 0:dbc295c4383e 52
STakayama 0:dbc295c4383e 53 #include "Arial28x28.h"
STakayama 0:dbc295c4383e 54 #include "Prototype29x28.h"
STakayama 0:dbc295c4383e 55 #include "Prototype70x86.h"
STakayama 0:dbc295c4383e 56 #include "HGP23x29.h"
STakayama 0:dbc295c4383e 57 #include "HGP15x19.h"
STakayama 0:dbc295c4383e 58 #include "symbol.h"
STakayama 0:dbc295c4383e 59
STakayama 0:dbc295c4383e 60 #define ON 1
STakayama 0:dbc295c4383e 61 #define OFF 0
STakayama 0:dbc295c4383e 62
STakayama 0:dbc295c4383e 63
STakayama 0:dbc295c4383e 64 //K64F
STakayama 0:dbc295c4383e 65 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi,miso,sck,cs
STakayama 0:dbc295c4383e 66 memLCD8 WD(PTD2,PTD3,PTD1,PTD0,PTC4,PTD3); //PTC12); // mosi,miso,clk,cs,disp,power
STakayama 0:dbc295c4383e 67
STakayama 0:dbc295c4383e 68 TglSW HaltSW(PTA4); // SW3
STakayama 0:dbc295c4383e 69 InterruptIn OffSW(SW2);
STakayama 0:dbc295c4383e 70 DigitalIn TexSW(SW3);
STakayama 0:dbc295c4383e 71
STakayama 0:dbc295c4383e 72 void SD2BUF(char *filepath);
STakayama 0:dbc295c4383e 73 void SetMenu(void);
STakayama 0:dbc295c4383e 74 void OffSequence(void);
STakayama 0:dbc295c4383e 75 void DispAllDir(const char *fsrc);
STakayama 0:dbc295c4383e 76 void ReadBmp(const char *fsrc, uint32_t FileNum);
STakayama 0:dbc295c4383e 77 uint32_t CntFile(const char *fsrc);
STakayama 0:dbc295c4383e 78 int Menu = 0;
STakayama 0:dbc295c4383e 79 bool if16 = 0;
STakayama 0:dbc295c4383e 80 bool ifMargeTXT = 0;
STakayama 0:dbc295c4383e 81 int width =400;
STakayama 0:dbc295c4383e 82 int height=240;
STakayama 0:dbc295c4383e 83
STakayama 0:dbc295c4383e 84
STakayama 0:dbc295c4383e 85 int main() {
STakayama 0:dbc295c4383e 86
STakayama 0:dbc295c4383e 87 uint32_t filenum=0;
STakayama 0:dbc295c4383e 88 char filepath[40];
STakayama 0:dbc295c4383e 89 char pol;
STakayama 0:dbc295c4383e 90
STakayama 0:dbc295c4383e 91 if(OffSW==0) if16 = 1; //16color MODE
STakayama 0:dbc295c4383e 92 else if16 = 0;
STakayama 0:dbc295c4383e 93
STakayama 0:dbc295c4383e 94
STakayama 0:dbc295c4383e 95 if(TexSW==0) ifMargeTXT = 1;
STakayama 0:dbc295c4383e 96 ifMargeTXT = 0;
STakayama 0:dbc295c4383e 97 WD.setmarge(1);
STakayama 0:dbc295c4383e 98
STakayama 0:dbc295c4383e 99 sd.disk_initialize();
STakayama 0:dbc295c4383e 100 HaltSW.Enable(1);
STakayama 0:dbc295c4383e 101
STakayama 0:dbc295c4383e 102
STakayama 0:dbc295c4383e 103 FILE *fp = fopen("/sd/settings.txt", "rb");
STakayama 0:dbc295c4383e 104 if(fp != NULL) {
STakayama 0:dbc295c4383e 105 fscanf(fp, "%d",&width);
STakayama 0:dbc295c4383e 106 fscanf(fp, "%d",&height);
STakayama 0:dbc295c4383e 107 sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180")
STakayama 0:dbc295c4383e 108 }
STakayama 0:dbc295c4383e 109 else{
STakayama 0:dbc295c4383e 110 width =180;
STakayama 0:dbc295c4383e 111 height=180;
STakayama 0:dbc295c4383e 112 sprintf(filepath,"/sd/180x180"); //DispAllDir("/sd/180x180")
STakayama 0:dbc295c4383e 113 }
STakayama 0:dbc295c4383e 114 fclose(fp);
STakayama 0:dbc295c4383e 115
STakayama 0:dbc295c4383e 116
STakayama 0:dbc295c4383e 117 OffSW.fall(&OffSequence); // OFF Sequence
STakayama 0:dbc295c4383e 118 WD.setWH(width,height);
STakayama 0:dbc295c4383e 119
STakayama 0:dbc295c4383e 120 WD.background(Black);
STakayama 0:dbc295c4383e 121 WD.clsBUF();
STakayama 0:dbc295c4383e 122 WD.writeDISP();
STakayama 0:dbc295c4383e 123 WD.SwDisp(1);
STakayama 0:dbc295c4383e 124
STakayama 0:dbc295c4383e 125 while(HaltSW.State()){}
STakayama 0:dbc295c4383e 126 HaltSW.Clear();
STakayama 0:dbc295c4383e 127 // WD.background(White);
STakayama 0:dbc295c4383e 128 // WD.clsBUF();
STakayama 0:dbc295c4383e 129 // for (int i=0; i<8; i++) WD.fillrect(i*26+6,16, i*26+6+20, 36, i*2);
STakayama 0:dbc295c4383e 130 // WD.writeDISP();
STakayama 0:dbc295c4383e 131 // wait(0.5);
STakayama 0:dbc295c4383e 132 // while(HaltSW.State()){}
STakayama 0:dbc295c4383e 133 // HaltSW.Clear();
STakayama 0:dbc295c4383e 134
STakayama 0:dbc295c4383e 135
STakayama 0:dbc295c4383e 136 while(1){ //BITMAPS
STakayama 0:dbc295c4383e 137
STakayama 0:dbc295c4383e 138 filenum = CntFile(filepath);
STakayama 0:dbc295c4383e 139 for(uint32_t i=0; i<filenum; i++){
STakayama 0:dbc295c4383e 140 ReadBmp(filepath,i);
STakayama 0:dbc295c4383e 141
STakayama 0:dbc295c4383e 142 while(HaltSW.State()){ // VCOM invert when image is still
STakayama 0:dbc295c4383e 143 pol++;
STakayama 0:dbc295c4383e 144 WD.command( (pol << 6) & 0x40 );
STakayama 0:dbc295c4383e 145 wait(1); //1Hz
STakayama 0:dbc295c4383e 146 }
STakayama 0:dbc295c4383e 147 // Brink
STakayama 0:dbc295c4383e 148 // for(char j = 0; j < 8; j++){
STakayama 0:dbc295c4383e 149 // pol = j&0x01;
STakayama 0:dbc295c4383e 150 // EnterOrLeave = (j+1)&0x01;
STakayama 0:dbc295c4383e 151 // WD.command( (pol << 6) | (EnterOrLeave << 3) );
STakayama 0:dbc295c4383e 152 // wait(0.2);
STakayama 0:dbc295c4383e 153 // }
STakayama 0:dbc295c4383e 154
STakayama 0:dbc295c4383e 155 HaltSW.Clear();
STakayama 0:dbc295c4383e 156 WD.writeDISP();
STakayama 0:dbc295c4383e 157 wait(2);
STakayama 0:dbc295c4383e 158 }
STakayama 0:dbc295c4383e 159 }
STakayama 0:dbc295c4383e 160 }
STakayama 0:dbc295c4383e 161
STakayama 0:dbc295c4383e 162
STakayama 0:dbc295c4383e 163 void SD2BUF(char *filepath){
STakayama 0:dbc295c4383e 164 char R8[1],G8[1],B8[1] ,DUMMY[1];
STakayama 0:dbc295c4383e 165 int RGB;
STakayama 0:dbc295c4383e 166 FILE *fp ;
STakayama 0:dbc295c4383e 167
STakayama 0:dbc295c4383e 168 fp = fopen(filepath, "rb");
STakayama 0:dbc295c4383e 169 if(fp != NULL) {
STakayama 0:dbc295c4383e 170 for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes
STakayama 0:dbc295c4383e 171 for(int y=height-1; y>=0; y--) {
STakayama 0:dbc295c4383e 172 for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit
STakayama 0:dbc295c4383e 173 fscanf(fp, "%c",B8);
STakayama 0:dbc295c4383e 174 fscanf(fp, "%c",G8);
STakayama 0:dbc295c4383e 175 fscanf(fp, "%c",R8);
STakayama 0:dbc295c4383e 176
STakayama 0:dbc295c4383e 177 RGB = RGB8(*R8,*G8,*B8); //6bit(8bit) MIP MASK 0000 1110
STakayama 0:dbc295c4383e 178 WD.pixel(x,y,RGB);
STakayama 0:dbc295c4383e 179 }
STakayama 0:dbc295c4383e 180 if( y!=0) // The last data column doesn't need padding
STakayama 0:dbc295c4383e 181 for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column
STakayama 0:dbc295c4383e 182 }
STakayama 0:dbc295c4383e 183 }
STakayama 0:dbc295c4383e 184 fclose(fp);
STakayama 0:dbc295c4383e 185 }
STakayama 0:dbc295c4383e 186
STakayama 0:dbc295c4383e 187 void SDtex2BUF(char *filepath){
STakayama 0:dbc295c4383e 188 int x,y,font,color;
STakayama 0:dbc295c4383e 189 char text[40];
STakayama 0:dbc295c4383e 190 int ifEOF;
STakayama 0:dbc295c4383e 191 FILE *fp ;
STakayama 0:dbc295c4383e 192
STakayama 0:dbc295c4383e 193 fp = fopen(filepath, "r");
STakayama 0:dbc295c4383e 194 if(fp != NULL) {
STakayama 0:dbc295c4383e 195 // for(int i=0; i<3; i++){
STakayama 0:dbc295c4383e 196 while(ifEOF != -1){
STakayama 0:dbc295c4383e 197 ifEOF = fscanf(fp,"%d,%d,%d,%d,%[^,],",&x,&y,&font,&color,text);
STakayama 0:dbc295c4383e 198 WD.locate(x,y);
STakayama 0:dbc295c4383e 199 WD.foreground(color);
STakayama 0:dbc295c4383e 200 if (font ==1) WD.set_font((unsigned char*) HGP15x19);
STakayama 0:dbc295c4383e 201 else if (font ==2) WD.set_font((unsigned char*) HGP23x29);
STakayama 0:dbc295c4383e 202 else if (font ==3) WD.set_font((unsigned char*) Arial28x28);
STakayama 0:dbc295c4383e 203 else WD.set_font((unsigned char*) Prototype70x86);
STakayama 0:dbc295c4383e 204
STakayama 0:dbc295c4383e 205 WD.printf("%s",text);
STakayama 0:dbc295c4383e 206 }
STakayama 0:dbc295c4383e 207 }
STakayama 0:dbc295c4383e 208 fclose(fp);
STakayama 0:dbc295c4383e 209 }
STakayama 0:dbc295c4383e 210
STakayama 0:dbc295c4383e 211
STakayama 0:dbc295c4383e 212 void OffSequence(void){
STakayama 0:dbc295c4383e 213 WD.background(Black);
STakayama 0:dbc295c4383e 214 WD.clsBUF();
STakayama 0:dbc295c4383e 215 WD.SwDisp(0);
STakayama 0:dbc295c4383e 216 WD.writeDISP();
STakayama 0:dbc295c4383e 217 WD.writeDISP();
STakayama 0:dbc295c4383e 218
STakayama 0:dbc295c4383e 219 }
STakayama 0:dbc295c4383e 220 void DispAllDir(const char *fsrc)
STakayama 0:dbc295c4383e 221 {
STakayama 0:dbc295c4383e 222 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 223 struct dirent *p;
STakayama 0:dbc295c4383e 224 char filepath[40];
STakayama 0:dbc295c4383e 225
STakayama 0:dbc295c4383e 226 while ((p = readdir(d)) != NULL) {
STakayama 0:dbc295c4383e 227 sprintf(filepath, "%s/%s",fsrc,p->d_name);
STakayama 0:dbc295c4383e 228 SD2BUF(filepath);
STakayama 0:dbc295c4383e 229 WD.writeDISP();
STakayama 0:dbc295c4383e 230 }
STakayama 0:dbc295c4383e 231 closedir(d);
STakayama 0:dbc295c4383e 232 }
STakayama 0:dbc295c4383e 233
STakayama 0:dbc295c4383e 234 void ReadBmp(const char *fsrc, uint32_t FileNum)
STakayama 0:dbc295c4383e 235 {
STakayama 0:dbc295c4383e 236 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 237 struct dirent *p;
STakayama 0:dbc295c4383e 238 char filepath[40];
STakayama 0:dbc295c4383e 239
STakayama 0:dbc295c4383e 240 for(uint32_t i=0; i< FileNum; i++) readdir(d);
STakayama 0:dbc295c4383e 241 if ((p = readdir(d)) != NULL) {
STakayama 0:dbc295c4383e 242 sprintf(filepath, "%s/%s",fsrc,p->d_name);
STakayama 0:dbc295c4383e 243 SD2BUF(filepath);
STakayama 0:dbc295c4383e 244 if(ifMargeTXT){
STakayama 0:dbc295c4383e 245 sprintf(filepath, "%s_txt/%s.txt",fsrc,p->d_name);
STakayama 0:dbc295c4383e 246 SDtex2BUF(filepath);
STakayama 0:dbc295c4383e 247 }
STakayama 0:dbc295c4383e 248 }
STakayama 0:dbc295c4383e 249 closedir(d);
STakayama 0:dbc295c4383e 250 }
STakayama 0:dbc295c4383e 251
STakayama 0:dbc295c4383e 252 uint32_t CntFile(const char *fsrc)
STakayama 0:dbc295c4383e 253 {
STakayama 0:dbc295c4383e 254 DIR *d = opendir(fsrc);
STakayama 0:dbc295c4383e 255 uint32_t counter = 0;
STakayama 0:dbc295c4383e 256 while (readdir(d)!= NULL) counter++;
STakayama 0:dbc295c4383e 257 closedir(d);
STakayama 0:dbc295c4383e 258 return counter;
STakayama 0:dbc295c4383e 259 }
STakayama 0:dbc295c4383e 260
STakayama 0:dbc295c4383e 261 */