Animation demo with MIP8F_SPI_Ver60

Dependencies:   mbed MIP8F_SPI_Ver60 MIP8f_FRDM_LineBuffer_sample MIP8f_FRDM_TransferMode_sample

Introduction

Animation Demo. Some Goldfish swin in water, from left to right, from bottom to top. Color and monochrome version

Only for LPM027M128x (400x240) ,JDI DIsplay.

Other information , please refer to https://os.mbed.com/teams/JapanDisplayInc/code/MIP8f_FRDM_sample/

Usage

Copy Setting File and Image to micro SD-CARD. you can NOT use same sample color images of OTHER VERSION SAMPLE.

a) Download the following file corresponding to the target panel, and rename file identifier (.bin -> .zip), and unzip the file on micro SD Card's root directory.

LPM027M128x (400x240) :/media/uploads/JDI_Mbed_Team/goldfish_400x240.bin

b) Insert micro SD-CARD to FRDM-K64F. c) Upload binary file to FRDM-K64F.and push Reset Button.

Other information

refer to Usage on https://os.mbed.com/teams/JapanDisplayInc/code/MIP8f_FRDM_sample/

this Sample Code (.bin)

/media/uploads/JDI_Mbed_Team/mip8f_frdm_animation_sample.k64f.bin

Committer:
JDI_Mbed_Team
Date:
Tue Nov 06 02:16:33 2018 +0000
Revision:
10:167df76b02d0
Parent:
7:c7a676157b4d
Child:
12:40156f03a763
ver4.0 Line buffer mode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JDI_Mbed_Team 0:33fe30a2b785 1 /**
JDI_Mbed_Team 1:e5796aa9f1aa 2 * @file main.cpp
JDI_Mbed_Team 10:167df76b02d0 3 * @brief Ver4.0 Sample source code for MIP8 diplay.
JDI_Mbed_Team 1:e5796aa9f1aa 4 * @details
JDI_Mbed_Team 10:167df76b02d0 5 * Ver4.0 Addtional function is Line buffer version.the Sammple bitmap display color and monochrome by line buffer.
JDI_Mbed_Team 10:167df76b02d0 6 * Ver3.0 Addtional function is font display. this demo code is the nunber is counted up like a meter panel
JDI_Mbed_Team 7:c7a676157b4d 7 * ver2.0 Addtional function is Monochome display by 1bit mode of SPI transfer.
JDI_Mbed_Team 1:e5796aa9f1aa 8 *
JDI_Mbed_Team 1:e5796aa9f1aa 9 * spi-transfer to Display has 3 mode.
JDI_Mbed_Team 1:e5796aa9f1aa 10 * 4bit mode is color display, this bit arrange is R,G,B,x. R,G,B = R,G,B subpixel bit. a x bit is Dummy.
JDI_Mbed_Team 1:e5796aa9f1aa 11 * No ues(3bit mode is color display, this bit arrange is R,G,B. R,G,B = R,G,B subpixel bit. No bit is Dummy.)
JDI_Mbed_Team 1:e5796aa9f1aa 12 * 1bit mode is monocrome display,high speed refresh mode. a only Green subpixel of bitmap data is transfered.
JDI_Mbed_Team 1:e5796aa9f1aa 13 * <License>
JDI_Mbed_Team 1:e5796aa9f1aa 14 * Copyright 2018 Japan Display Inc.
JDI_Mbed_Team 1:e5796aa9f1aa 15 * Licensed under the Apache License, Version 2.0 (the "License");
JDI_Mbed_Team 1:e5796aa9f1aa 16 * you may not use this file except in compliance with the License.
JDI_Mbed_Team 1:e5796aa9f1aa 17 * You may obtain a copy of the License at
JDI_Mbed_Team 1:e5796aa9f1aa 18 *
JDI_Mbed_Team 1:e5796aa9f1aa 19 * http://www.apache.org/licenses/LICENSE-2.0
JDI_Mbed_Team 1:e5796aa9f1aa 20 *
JDI_Mbed_Team 1:e5796aa9f1aa 21 * Unless required by applicable law or agreed to in writing, software
JDI_Mbed_Team 1:e5796aa9f1aa 22 * distributed under the License is distributed on an "AS IS" BASIS,
JDI_Mbed_Team 1:e5796aa9f1aa 23 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
JDI_Mbed_Team 1:e5796aa9f1aa 24 * See the License for the specific language governing permissions and
JDI_Mbed_Team 1:e5796aa9f1aa 25 * limitations under the License.
JDI_Mbed_Team 1:e5796aa9f1aa 26 */
JDI_Mbed_Team 1:e5796aa9f1aa 27 #include "stdio.h"
JDI_Mbed_Team 0:33fe30a2b785 28 #include "string"
JDI_Mbed_Team 0:33fe30a2b785 29 #include "mbed.h"
JDI_Mbed_Team 0:33fe30a2b785 30 #include "MIP8F_SPI.h"
JDI_Mbed_Team 0:33fe30a2b785 31 #include "SDFileSystem.h"
JDI_Mbed_Team 0:33fe30a2b785 32 #include "StateSW.h"
JDI_Mbed_Team 0:33fe30a2b785 33 #include "TglSW.h"
JDI_Mbed_Team 0:33fe30a2b785 34
JDI_Mbed_Team 0:33fe30a2b785 35 #include "Arial12x12.h"
JDI_Mbed_Team 0:33fe30a2b785 36 #include "Arial24x23.h"
JDI_Mbed_Team 0:33fe30a2b785 37 #include "Arial28x28.h"
JDI_Mbed_Team 7:c7a676157b4d 38 #include "Arial37x36.h"
JDI_Mbed_Team 7:c7a676157b4d 39 #include "Arial42x42.h"
JDI_Mbed_Team 0:33fe30a2b785 40 #include "font_big.h"
JDI_Mbed_Team 7:c7a676157b4d 41 #include "Arial94x94.h"
JDI_Mbed_Team 0:33fe30a2b785 42 //#include "Prototype29x28.h"
JDI_Mbed_Team 0:33fe30a2b785 43 //#include "Prototype70x86.h"
JDI_Mbed_Team 0:33fe30a2b785 44 //#include "HGP23x29.h"
JDI_Mbed_Team 0:33fe30a2b785 45 //#include "HGP15x19.h"
JDI_Mbed_Team 0:33fe30a2b785 46 //#include "symbol.h"
JDI_Mbed_Team 0:33fe30a2b785 47
JDI_Mbed_Team 0:33fe30a2b785 48 #define ON 1
JDI_Mbed_Team 0:33fe30a2b785 49 #define OFF 0
JDI_Mbed_Team 0:33fe30a2b785 50
JDI_Mbed_Team 0:33fe30a2b785 51 //K64F
JDI_Mbed_Team 0:33fe30a2b785 52 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // mosi,miso,sck,cs
JDI_Mbed_Team 0:33fe30a2b785 53 memLCD8 WD(PTD2,PTD3,PTD1,PTD0,PTC4,PTD3); //PTC12); // mosi,miso,clk,cs,disp,power
JDI_Mbed_Team 0:33fe30a2b785 54 PwmOut BK(PTC3);
JDI_Mbed_Team 0:33fe30a2b785 55 PwmOut COM60HZ(PTC10); //add 20161108
JDI_Mbed_Team 0:33fe30a2b785 56 DigitalOut COMSEL(PTA2,0); //add 20161108
JDI_Mbed_Team 0:33fe30a2b785 57 DigitalOut BLCTRL(PTB10,0); //add 20171115
JDI_Mbed_Team 0:33fe30a2b785 58 // SW2
JDI_Mbed_Team 0:33fe30a2b785 59 StateSW swPWMorOFF(SW2); //PTC6);
JDI_Mbed_Team 0:33fe30a2b785 60 InterruptIn PWMorOFF(SW2);
JDI_Mbed_Team 0:33fe30a2b785 61 // SW3
JDI_Mbed_Team 0:33fe30a2b785 62 TglSW HaltSW(SW3); //PTA4);
JDI_Mbed_Team 0:33fe30a2b785 63 DigitalIn TexSW(SW3);
JDI_Mbed_Team 0:33fe30a2b785 64
JDI_Mbed_Team 1:e5796aa9f1aa 65 //for debug
JDI_Mbed_Team 10:167df76b02d0 66 //Serial pc(USBTX, USBRX); // tx, rx
JDI_Mbed_Team 7:c7a676157b4d 67
JDI_Mbed_Team 0:33fe30a2b785 68
JDI_Mbed_Team 1:e5796aa9f1aa 69 //function prototype
JDI_Mbed_Team 10:167df76b02d0 70 #if FRAMEBUFF_MODE
JDI_Mbed_Team 0:33fe30a2b785 71 void SD2BUF(char *filepath);
JDI_Mbed_Team 10:167df76b02d0 72 void SDtex2BUF(char *filepath);
JDI_Mbed_Team 10:167df76b02d0 73 void ReadBmp(const char *fsrc, uint32_t FileNum);
JDI_Mbed_Team 10:167df76b02d0 74 #endif
JDI_Mbed_Team 10:167df76b02d0 75
JDI_Mbed_Team 10:167df76b02d0 76 #if LINEBUFF_MODE
JDI_Mbed_Team 10:167df76b02d0 77 void SD2LINEBUF(char *filepath,int transfermode);
JDI_Mbed_Team 10:167df76b02d0 78 void ReadBmp2LineBuffer(const char *fsrc, uint32_t FileNum,int transfermode);
JDI_Mbed_Team 10:167df76b02d0 79 #endif
JDI_Mbed_Team 10:167df76b02d0 80
JDI_Mbed_Team 0:33fe30a2b785 81 void ifOFFseq(void);
JDI_Mbed_Team 0:33fe30a2b785 82 void ifswPWM(void);
JDI_Mbed_Team 0:33fe30a2b785 83 void OffSequence(void);
JDI_Mbed_Team 0:33fe30a2b785 84 void DispAllDir(const char *fsrc);
JDI_Mbed_Team 0:33fe30a2b785 85 uint32_t CntFile(const char *fsrc);
JDI_Mbed_Team 1:e5796aa9f1aa 86 //Grobal value
JDI_Mbed_Team 0:33fe30a2b785 87 int ifMargeTXT = 0;
JDI_Mbed_Team 0:33fe30a2b785 88 int width = 400;
JDI_Mbed_Team 0:33fe30a2b785 89 int height= 240;
JDI_Mbed_Team 0:33fe30a2b785 90
JDI_Mbed_Team 0:33fe30a2b785 91 float BKduty = 0;
JDI_Mbed_Team 0:33fe30a2b785 92 float BKjudge = 0;
JDI_Mbed_Team 0:33fe30a2b785 93 //double BKduty = 0;
JDI_Mbed_Team 0:33fe30a2b785 94 float bk_timer = 1.0;
JDI_Mbed_Team 0:33fe30a2b785 95 int blduty = 0;
JDI_Mbed_Team 0:33fe30a2b785 96 int bloff = 0;
JDI_Mbed_Team 1:e5796aa9f1aa 97 int blctrl_sel = 0; //0:40mA, 1:160mA //Y.S
JDI_Mbed_Team 7:c7a676157b4d 98 // Readed bitmap format, Color bit size = 1,4,8,(16),24,32
JDI_Mbed_Team 7:c7a676157b4d 99 uint16_t bmp_bitcount;
JDI_Mbed_Team 0:33fe30a2b785 100
JDI_Mbed_Team 0:33fe30a2b785 101 int main() {
JDI_Mbed_Team 0:33fe30a2b785 102
JDI_Mbed_Team 0:33fe30a2b785 103 uint32_t filenum=0;
JDI_Mbed_Team 0:33fe30a2b785 104 char filepath[40];
JDI_Mbed_Team 10:167df76b02d0 105 //char countup[3+1];
JDI_Mbed_Team 10:167df76b02d0 106 //char KMPH[4+1];
JDI_Mbed_Team 10:167df76b02d0 107
JDI_Mbed_Team 10:167df76b02d0 108
JDI_Mbed_Team 0:33fe30a2b785 109 sd.disk_initialize();
JDI_Mbed_Team 0:33fe30a2b785 110 HaltSW.Enable(1);
JDI_Mbed_Team 0:33fe30a2b785 111
JDI_Mbed_Team 0:33fe30a2b785 112 FILE *fp = fopen("/sd/settings2.txt", "rb"); //read binary
JDI_Mbed_Team 0:33fe30a2b785 113 if(fp != NULL) {
JDI_Mbed_Team 0:33fe30a2b785 114 fscanf(fp, "%d",&width); //width read
JDI_Mbed_Team 0:33fe30a2b785 115 fscanf(fp, "%d",&height); //height read
JDI_Mbed_Team 0:33fe30a2b785 116 fscanf(fp, "%d",&blctrl_sel);//blct_sel read //0:40mA, 1:160mA
JDI_Mbed_Team 0:33fe30a2b785 117 sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180") //file name write to filepath
JDI_Mbed_Team 0:33fe30a2b785 118 fclose(fp);
JDI_Mbed_Team 0:33fe30a2b785 119 } else {
JDI_Mbed_Team 0:33fe30a2b785 120 FILE *fp = fopen("/sd/settings.txt", "rb"); //read binary
JDI_Mbed_Team 0:33fe30a2b785 121 if(fp != NULL) {
JDI_Mbed_Team 0:33fe30a2b785 122 fscanf(fp, "%d",&width); //width read
JDI_Mbed_Team 0:33fe30a2b785 123 fscanf(fp, "%d",&height); //height read
JDI_Mbed_Team 0:33fe30a2b785 124 sprintf(filepath,"/sd/%dx%d",width,height); //DispAllDir("/sd/180x180") //file name write to filepath
JDI_Mbed_Team 0:33fe30a2b785 125 fclose(fp);
JDI_Mbed_Team 0:33fe30a2b785 126 } else{
JDI_Mbed_Team 0:33fe30a2b785 127 width =180;
JDI_Mbed_Team 0:33fe30a2b785 128 height=180;
JDI_Mbed_Team 0:33fe30a2b785 129 sprintf(filepath,"/sd/180x180"); //DispAllDir("/sd/180x180")
JDI_Mbed_Team 0:33fe30a2b785 130 }
JDI_Mbed_Team 0:33fe30a2b785 131 }
JDI_Mbed_Team 0:33fe30a2b785 132
JDI_Mbed_Team 0:33fe30a2b785 133 COMSEL.write(1); //
JDI_Mbed_Team 0:33fe30a2b785 134
JDI_Mbed_Team 0:33fe30a2b785 135 BLCTRL.write(blctrl_sel); //
JDI_Mbed_Team 0:33fe30a2b785 136
JDI_Mbed_Team 0:33fe30a2b785 137 WD.setWH(width,height); //input -> width, height
JDI_Mbed_Team 0:33fe30a2b785 138 WD.background(Black); //background = black
JDI_Mbed_Team 10:167df76b02d0 139 #if FRAMEBUFF_MODE
JDI_Mbed_Team 0:33fe30a2b785 140 WD.clsBUF(); //data initialize
JDI_Mbed_Team 0:33fe30a2b785 141 WD.writeDISP(); //picture write(black)
JDI_Mbed_Team 10:167df76b02d0 142 #endif
JDI_Mbed_Team 10:167df76b02d0 143 #if LINEBUFF_MODE
JDI_Mbed_Team 10:167df76b02d0 144 WD.clsLINEBUF(); //data initialize
JDI_Mbed_Team 10:167df76b02d0 145 WD.writeDISPLinebuffer(); //picture write(black)
JDI_Mbed_Team 10:167df76b02d0 146 #endif
JDI_Mbed_Team 0:33fe30a2b785 147 WD.SwDisp(1); //disp on
JDI_Mbed_Team 0:33fe30a2b785 148
JDI_Mbed_Team 10:167df76b02d0 149 //OffSW.fall(&OffSequence); // Renamed "OffSW" as "PWMorOFF" for BK PWM setting
JDI_Mbed_Team 10:167df76b02d0 150 //SW settings for PWM or OFF
JDI_Mbed_Team 0:33fe30a2b785 151 PWMorOFF.fall(&ifswPWM); // Backlight //sw2 fall edge
JDI_Mbed_Team 0:33fe30a2b785 152 PWMorOFF.rise(&ifOFFseq); // OFF Sequence //sw2 rise edge
JDI_Mbed_Team 0:33fe30a2b785 153
JDI_Mbed_Team 0:33fe30a2b785 154 swPWMorOFF.Enable(8, 2, 1); //int ModeNum, int NoiseCancel, int OpenTime //????
JDI_Mbed_Team 0:33fe30a2b785 155 swPWMorOFF.IfCntClose(ON);
JDI_Mbed_Team 0:33fe30a2b785 156 swPWMorOFF.IfCntState(ON);
JDI_Mbed_Team 0:33fe30a2b785 157
JDI_Mbed_Team 0:33fe30a2b785 158 COM60HZ.period_ms(8); //add 20161108
JDI_Mbed_Team 5:069467469900 159 COM60HZ.write(0.5); //add 20161108
JDI_Mbed_Team 0:33fe30a2b785 160
JDI_Mbed_Team 0:33fe30a2b785 161 BK.period_ms(1); //1ms cycle 20161012
JDI_Mbed_Team 7:c7a676157b4d 162 BK.write(1); //low output 20160725 <- high output
JDI_Mbed_Team 7:c7a676157b4d 163
JDI_Mbed_Team 7:c7a676157b4d 164 //DIR *d;
JDI_Mbed_Team 0:33fe30a2b785 165
JDI_Mbed_Team 5:069467469900 166 while(1)
JDI_Mbed_Team 1:e5796aa9f1aa 167 { //BITMAPS
JDI_Mbed_Team 0:33fe30a2b785 168 filenum = CntFile(filepath); //file number read
JDI_Mbed_Team 7:c7a676157b4d 169 for(uint32_t i=0; i<filenum; i++)
JDI_Mbed_Team 5:069467469900 170 {
JDI_Mbed_Team 7:c7a676157b4d 171 for( int j = 0; j < 2; j++)
JDI_Mbed_Team 6:2646a55a0233 172 {
JDI_Mbed_Team 10:167df76b02d0 173 #if LINEBUFF_MODE
JDI_Mbed_Team 10:167df76b02d0 174 if( j%2 == 0 ) //&& bmp_bitcount != 8)
JDI_Mbed_Team 10:167df76b02d0 175 ReadBmp2LineBuffer(filepath,i,TrBIT4);
JDI_Mbed_Team 10:167df76b02d0 176 else
JDI_Mbed_Team 10:167df76b02d0 177 ReadBmp2LineBuffer(filepath,i,TrBIT1);
JDI_Mbed_Team 10:167df76b02d0 178 #endif
JDI_Mbed_Team 10:167df76b02d0 179 while(HaltSW.State());
JDI_Mbed_Team 5:069467469900 180 HaltSW.Clear();
JDI_Mbed_Team 7:c7a676157b4d 181
JDI_Mbed_Team 5:069467469900 182 }
JDI_Mbed_Team 0:33fe30a2b785 183 }
JDI_Mbed_Team 0:33fe30a2b785 184 }
JDI_Mbed_Team 0:33fe30a2b785 185 }
JDI_Mbed_Team 0:33fe30a2b785 186
JDI_Mbed_Team 0:33fe30a2b785 187 uint32_t CntFile(const char *fsrc)
JDI_Mbed_Team 0:33fe30a2b785 188 {
JDI_Mbed_Team 0:33fe30a2b785 189 DIR *d = opendir(fsrc);
JDI_Mbed_Team 0:33fe30a2b785 190 uint32_t counter = 0;
JDI_Mbed_Team 0:33fe30a2b785 191 while (readdir(d)!= NULL) counter++;
JDI_Mbed_Team 0:33fe30a2b785 192 closedir(d);
JDI_Mbed_Team 0:33fe30a2b785 193 return counter;
JDI_Mbed_Team 0:33fe30a2b785 194 }
JDI_Mbed_Team 0:33fe30a2b785 195
JDI_Mbed_Team 0:33fe30a2b785 196 void OffSequence(void){
JDI_Mbed_Team 0:33fe30a2b785 197 BK.write(0); //add 20160712 17:00
JDI_Mbed_Team 0:33fe30a2b785 198 WD.background(Black);
JDI_Mbed_Team 10:167df76b02d0 199 #if LINEBUFF_MODE
JDI_Mbed_Team 10:167df76b02d0 200 WD.clsLINEBUF();
JDI_Mbed_Team 10:167df76b02d0 201 WD.SwDisp(0);
JDI_Mbed_Team 10:167df76b02d0 202 WD.writeDISPLinebuffer();
JDI_Mbed_Team 10:167df76b02d0 203 #endif
JDI_Mbed_Team 10:167df76b02d0 204 #if FRAMEBUFF_MODE
JDI_Mbed_Team 0:33fe30a2b785 205 WD.clsBUF();
JDI_Mbed_Team 0:33fe30a2b785 206 WD.SwDisp(0);
JDI_Mbed_Team 0:33fe30a2b785 207 WD.writeDISP();
JDI_Mbed_Team 10:167df76b02d0 208 #endif
JDI_Mbed_Team 10:167df76b02d0 209 WD.SwDisp(0);
JDI_Mbed_Team 0:33fe30a2b785 210 bloff = 1;
JDI_Mbed_Team 0:33fe30a2b785 211 }
JDI_Mbed_Team 0:33fe30a2b785 212
JDI_Mbed_Team 0:33fe30a2b785 213 void ifswPWM(void){
JDI_Mbed_Team 0:33fe30a2b785 214 if(bloff == 0){
JDI_Mbed_Team 0:33fe30a2b785 215 if(blduty >= 10){ //0
JDI_Mbed_Team 0:33fe30a2b785 216 blduty = 0; //10
JDI_Mbed_Team 0:33fe30a2b785 217 COMSEL.write(1); //
JDI_Mbed_Team 0:33fe30a2b785 218 }else{
JDI_Mbed_Team 0:33fe30a2b785 219 blduty += 1; //-=
JDI_Mbed_Team 0:33fe30a2b785 220 COMSEL.write(1); //
JDI_Mbed_Team 0:33fe30a2b785 221 }
JDI_Mbed_Team 0:33fe30a2b785 222 }else{
JDI_Mbed_Team 0:33fe30a2b785 223 blduty = 0;
JDI_Mbed_Team 0:33fe30a2b785 224 COMSEL.write(1); //
JDI_Mbed_Team 0:33fe30a2b785 225 }
JDI_Mbed_Team 0:33fe30a2b785 226 // BKduty = BKduty - 0.125;
JDI_Mbed_Team 0:33fe30a2b785 227 // BKduty -= 0.125;
JDI_Mbed_Team 0:33fe30a2b785 228 // if(BKduty <= 0) BKduty = 1;
JDI_Mbed_Team 0:33fe30a2b785 229 // BK.write(BKduty);
JDI_Mbed_Team 0:33fe30a2b785 230 BK.write(blduty*0.1); //
JDI_Mbed_Team 0:33fe30a2b785 231 if(blduty == 0){
JDI_Mbed_Team 0:33fe30a2b785 232 bk_timer = 1.0;
JDI_Mbed_Team 0:33fe30a2b785 233 }else{
JDI_Mbed_Team 0:33fe30a2b785 234 bk_timer = 0.008; //0.016 20160712
JDI_Mbed_Team 0:33fe30a2b785 235 }
JDI_Mbed_Team 0:33fe30a2b785 236 }
JDI_Mbed_Team 0:33fe30a2b785 237
JDI_Mbed_Team 0:33fe30a2b785 238 void ifOFFseq(void){
JDI_Mbed_Team 0:33fe30a2b785 239 if(swPWMorOFF.IfAtTime()){
JDI_Mbed_Team 0:33fe30a2b785 240 swPWMorOFF.IfCntClose(OFF);
JDI_Mbed_Team 0:33fe30a2b785 241 swPWMorOFF.IfCntState(OFF);
JDI_Mbed_Team 0:33fe30a2b785 242 OffSequence();
JDI_Mbed_Team 0:33fe30a2b785 243 }
JDI_Mbed_Team 0:33fe30a2b785 244 }
JDI_Mbed_Team 10:167df76b02d0 245 #if FRAMEBUFF_MODE
JDI_Mbed_Team 10:167df76b02d0 246 /**
JDI_Mbed_Team 10:167df76b02d0 247 * @brief read a bitmap file in SD. 8color mode
JDI_Mbed_Team 10:167df76b02d0 248 */
JDI_Mbed_Team 10:167df76b02d0 249 void SD2BUF(char *filepath){
JDI_Mbed_Team 10:167df76b02d0 250 char R8[1],G8[1],B8[1] ,DUMMY[1],bc[2];
JDI_Mbed_Team 10:167df76b02d0 251 int RGB;
JDI_Mbed_Team 10:167df76b02d0 252 FILE *fp ;
JDI_Mbed_Team 0:33fe30a2b785 253
JDI_Mbed_Team 10:167df76b02d0 254 //pc.printf("file=%s\n",filepath);
JDI_Mbed_Team 10:167df76b02d0 255 fp = fopen(filepath, "rb");
JDI_Mbed_Team 10:167df76b02d0 256 if(fp != NULL) {
JDI_Mbed_Team 10:167df76b02d0 257 //for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes
JDI_Mbed_Team 10:167df76b02d0 258 for(int i=0; i< 28 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 26bytes
JDI_Mbed_Team 10:167df76b02d0 259 fscanf(fp,"%c",&(bc[0]));fscanf(fp,"%c",&(bc[1]));// color bit size 2bytes
JDI_Mbed_Team 10:167df76b02d0 260 for(int i=0; i< 24 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 26bytes
JDI_Mbed_Team 10:167df76b02d0 261 bmp_bitcount = bc[0]+bc[1]*256;
JDI_Mbed_Team 10:167df76b02d0 262
JDI_Mbed_Team 10:167df76b02d0 263 for(int y=height-1; y>=0; y--) {
JDI_Mbed_Team 10:167df76b02d0 264 for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit
JDI_Mbed_Team 10:167df76b02d0 265 fscanf(fp, "%c",B8);
JDI_Mbed_Team 10:167df76b02d0 266 fscanf(fp, "%c",G8);
JDI_Mbed_Team 10:167df76b02d0 267 fscanf(fp, "%c",R8);
JDI_Mbed_Team 10:167df76b02d0 268
JDI_Mbed_Team 10:167df76b02d0 269 RGB = RGB8(*R8,*G8,*B8); //6bit(8bit) MIP MASK 0000 1110
JDI_Mbed_Team 10:167df76b02d0 270 WD.pixel(x,y,RGB);
JDI_Mbed_Team 10:167df76b02d0 271 }
JDI_Mbed_Team 10:167df76b02d0 272 if( y!=0) // The last data column doesn't need padding
JDI_Mbed_Team 10:167df76b02d0 273 for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column(only windows bitmap format)
JDI_Mbed_Team 10:167df76b02d0 274 }
JDI_Mbed_Team 10:167df76b02d0 275 }
JDI_Mbed_Team 10:167df76b02d0 276 fclose(fp);
JDI_Mbed_Team 10:167df76b02d0 277 }
JDI_Mbed_Team 10:167df76b02d0 278 /**
JDI_Mbed_Team 10:167df76b02d0 279 * @brief read a text file in SD.
JDI_Mbed_Team 10:167df76b02d0 280 */
JDI_Mbed_Team 10:167df76b02d0 281 void SDtex2BUF(char *filepath){
JDI_Mbed_Team 10:167df76b02d0 282 int x,y,font,color;
JDI_Mbed_Team 10:167df76b02d0 283 char text[40];
JDI_Mbed_Team 10:167df76b02d0 284 int ifEOF;
JDI_Mbed_Team 10:167df76b02d0 285 FILE *fp ;
JDI_Mbed_Team 10:167df76b02d0 286
JDI_Mbed_Team 10:167df76b02d0 287 fp = fopen(filepath, "r");
JDI_Mbed_Team 10:167df76b02d0 288 if(fp != NULL) {
JDI_Mbed_Team 10:167df76b02d0 289 while(ifEOF != -1){
JDI_Mbed_Team 10:167df76b02d0 290 ifEOF = fscanf(fp,"%d,%d,%d,%d,%[^,],",&x,&y,&font,&color,text);
JDI_Mbed_Team 10:167df76b02d0 291 WD.locate(x,y);
JDI_Mbed_Team 10:167df76b02d0 292 WD.foreground(color);
JDI_Mbed_Team 10:167df76b02d0 293 if (font ==1) WD.set_font((unsigned char*) Arial12x12);
JDI_Mbed_Team 10:167df76b02d0 294 else if (font ==2) WD.set_font((unsigned char*) Arial24x23);
JDI_Mbed_Team 10:167df76b02d0 295 else if (font ==3) WD.set_font((unsigned char*) Arial28x28);
JDI_Mbed_Team 10:167df76b02d0 296 else WD.set_font((unsigned char*) Neu42x35);
JDI_Mbed_Team 10:167df76b02d0 297
JDI_Mbed_Team 10:167df76b02d0 298 WD.printf("%s",text);
JDI_Mbed_Team 10:167df76b02d0 299 }
JDI_Mbed_Team 10:167df76b02d0 300 }
JDI_Mbed_Team 10:167df76b02d0 301 fclose(fp);
JDI_Mbed_Team 10:167df76b02d0 302 }
JDI_Mbed_Team 10:167df76b02d0 303 //**
JDI_Mbed_Team 10:167df76b02d0 304 /* @brief read a bitmap file in SD by file number.
JDI_Mbed_Team 10:167df76b02d0 305 */
JDI_Mbed_Team 10:167df76b02d0 306 void ReadBmp(const char *fsrc, uint32_t FileNum)
JDI_Mbed_Team 10:167df76b02d0 307 {
JDI_Mbed_Team 10:167df76b02d0 308 DIR *d = opendir(fsrc);
JDI_Mbed_Team 10:167df76b02d0 309 struct dirent *p;
JDI_Mbed_Team 10:167df76b02d0 310 char filepath[40];
JDI_Mbed_Team 10:167df76b02d0 311
JDI_Mbed_Team 10:167df76b02d0 312 for(uint32_t i=0; i< FileNum; i++) readdir(d);
JDI_Mbed_Team 10:167df76b02d0 313 if ((p = readdir(d)) != NULL) {
JDI_Mbed_Team 10:167df76b02d0 314 sprintf(filepath, "%s/%s",fsrc,p->d_name);
JDI_Mbed_Team 10:167df76b02d0 315 pc.printf( "%s/%s[%u]\n",fsrc,p->d_name,p->d_type);
JDI_Mbed_Team 10:167df76b02d0 316 SD2BUF(filepath);
JDI_Mbed_Team 10:167df76b02d0 317 if(ifMargeTXT){
JDI_Mbed_Team 10:167df76b02d0 318 sprintf(filepath, "%s_txt/%s.txt",fsrc,p->d_name);
JDI_Mbed_Team 10:167df76b02d0 319 //SDtex2BUF(filepath);
JDI_Mbed_Team 10:167df76b02d0 320 }
JDI_Mbed_Team 10:167df76b02d0 321 }
JDI_Mbed_Team 10:167df76b02d0 322 closedir(d);
JDI_Mbed_Team 10:167df76b02d0 323 }
JDI_Mbed_Team 10:167df76b02d0 324 #endif
JDI_Mbed_Team 10:167df76b02d0 325
JDI_Mbed_Team 10:167df76b02d0 326 #if LINEBUFF_MODE
JDI_Mbed_Team 10:167df76b02d0 327 /**
JDI_Mbed_Team 10:167df76b02d0 328 * @brief read a bitmap file in SD. 8color mode
JDI_Mbed_Team 10:167df76b02d0 329 */
JDI_Mbed_Team 10:167df76b02d0 330 void SD2LINEBUF(char *filepath,int transfermode){
JDI_Mbed_Team 10:167df76b02d0 331 char R8[1],G8[1],B8[1] ,DUMMY[1],bc[2];
JDI_Mbed_Team 10:167df76b02d0 332 int RGB;
JDI_Mbed_Team 10:167df76b02d0 333 FILE *fp ;
JDI_Mbed_Team 10:167df76b02d0 334
JDI_Mbed_Team 10:167df76b02d0 335 //pc.printf("file=%s\n",filepath);
JDI_Mbed_Team 10:167df76b02d0 336 fp = fopen(filepath, "rb");
JDI_Mbed_Team 10:167df76b02d0 337 if(fp != NULL) {
JDI_Mbed_Team 10:167df76b02d0 338 //for(int i=0; i< 54 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 54bytes
JDI_Mbed_Team 10:167df76b02d0 339 for(int i=0; i< 28 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 26bytes
JDI_Mbed_Team 10:167df76b02d0 340 fscanf(fp,"%c",&(bc[0]));fscanf(fp,"%c",&(bc[1]));// color bit size 2bytes
JDI_Mbed_Team 10:167df76b02d0 341 for(int i=0; i< 24 ; i++) fscanf(fp,"%c",DUMMY); // Discard Header 26bytes
JDI_Mbed_Team 10:167df76b02d0 342 bmp_bitcount = bc[0]+bc[1]*256;
JDI_Mbed_Team 10:167df76b02d0 343 for(int y=height-1; y>=0; y--) {
JDI_Mbed_Team 10:167df76b02d0 344 for(int x=0; x< width; x++) { //24bit color B 8bit -> G 8bit -> R 8bit
JDI_Mbed_Team 10:167df76b02d0 345 fscanf(fp, "%c",B8);
JDI_Mbed_Team 10:167df76b02d0 346 fscanf(fp, "%c",G8);
JDI_Mbed_Team 10:167df76b02d0 347 fscanf(fp, "%c",R8);
JDI_Mbed_Team 10:167df76b02d0 348
JDI_Mbed_Team 10:167df76b02d0 349 RGB = RGB8(*R8,*G8,*B8); //6bit(8bit) MIP MASK 0000 1110
JDI_Mbed_Team 10:167df76b02d0 350 WD.pixel(x,RGB);
JDI_Mbed_Team 10:167df76b02d0 351 }
JDI_Mbed_Team 10:167df76b02d0 352 if( y!=0) // The last data column doesn't need padding
JDI_Mbed_Team 10:167df76b02d0 353 for(int x=(width*3)%4; (x%4 !=0); x++) fscanf(fp, "%c",DUMMY); // 4byte boundery for every column(only windows bitmap format)
JDI_Mbed_Team 10:167df76b02d0 354
JDI_Mbed_Team 10:167df76b02d0 355 //Pixel Data Transfer by SPI
JDI_Mbed_Team 10:167df76b02d0 356 WD.writeDISP(y,transfermode);
JDI_Mbed_Team 10:167df76b02d0 357 }
JDI_Mbed_Team 10:167df76b02d0 358
JDI_Mbed_Team 10:167df76b02d0 359 }
JDI_Mbed_Team 10:167df76b02d0 360 fclose(fp);
JDI_Mbed_Team 10:167df76b02d0 361 }
JDI_Mbed_Team 10:167df76b02d0 362
JDI_Mbed_Team 10:167df76b02d0 363 //**
JDI_Mbed_Team 10:167df76b02d0 364 /* @brief read a bitmap file in SD by file number.
JDI_Mbed_Team 10:167df76b02d0 365 */
JDI_Mbed_Team 10:167df76b02d0 366 void ReadBmp2LineBuffer(const char *fsrc,uint32_t FileNum,int transfermode)
JDI_Mbed_Team 10:167df76b02d0 367 {
JDI_Mbed_Team 10:167df76b02d0 368 DIR *d = opendir(fsrc);
JDI_Mbed_Team 10:167df76b02d0 369 struct dirent *p;
JDI_Mbed_Team 10:167df76b02d0 370 char filepath[40];
JDI_Mbed_Team 10:167df76b02d0 371
JDI_Mbed_Team 10:167df76b02d0 372 for(uint32_t i=0; i< FileNum; i++) readdir(d);
JDI_Mbed_Team 10:167df76b02d0 373 if ((p = readdir(d)) != NULL) {
JDI_Mbed_Team 10:167df76b02d0 374 sprintf(filepath, "%s/%s",fsrc,p->d_name);
JDI_Mbed_Team 10:167df76b02d0 375 //pc.printf( "%s/%s[%u]\n",fsrc,p->d_name,p->d_type);
JDI_Mbed_Team 10:167df76b02d0 376 SD2LINEBUF(filepath,transfermode);
JDI_Mbed_Team 10:167df76b02d0 377 }
JDI_Mbed_Team 10:167df76b02d0 378 closedir(d);
JDI_Mbed_Team 10:167df76b02d0 379 }
JDI_Mbed_Team 10:167df76b02d0 380 #endif