Packed 12bit Raw image file load to display to Nokia LCD. Add function "blit12" to Nokia LCD for native 12bit color buffer.

Dependencies:   mbed

Committer:
sakai
Date:
Thu Feb 10 13:44:58 2011 +0000
Revision:
2:7cf441bf092d
Parent:
1:ea521c134e8a
Child:
3:8739f7e5148a

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakai 0:b9050fc6f305 1 #include "mbed.h"
sakai 0:b9050fc6f305 2 #include "NokiaLCD.h"
sakai 0:b9050fc6f305 3 #include "SDFileSystem.h"
sakai 0:b9050fc6f305 4
sakai 1:ea521c134e8a 5 typedef struct {
sakai 1:ea521c134e8a 6 unsigned char r, g, b;
sakai 1:ea521c134e8a 7 } RGB24;
sakai 1:ea521c134e8a 8
sakai 0:b9050fc6f305 9 NokiaLCD lcd(p11, p13, p14, p15, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type
sakai 0:b9050fc6f305 10 SDFileSystem sd(p5, p6, p7, p8, "sd");
sakai 0:b9050fc6f305 11
sakai 0:b9050fc6f305 12 int main() {
sakai 0:b9050fc6f305 13 lcd.background(0x000000);
sakai 0:b9050fc6f305 14 lcd.cls();
sakai 0:b9050fc6f305 15 FILE *fp = NULL;
sakai 2:7cf441bf092d 16 #if 1
sakai 2:7cf441bf092d 17 fp = fopen("/sd/128x128.r12", "r");
sakai 2:7cf441bf092d 18 if (fp != NULL) {
sakai 2:7cf441bf092d 19 printf("Start!\r\n");
sakai 2:7cf441bf092d 20 unsigned char bufLine[64 * 3];
sakai 2:7cf441bf092d 21 for (int y = 0; y < 128; y++) {
sakai 2:7cf441bf092d 22 fread(bufLine, sizeof(unsigned char), (64 * 3), fp);
sakai 2:7cf441bf092d 23 lcd.blit12(0, y, 128, 1, bufLine);
sakai 2:7cf441bf092d 24 }
sakai 2:7cf441bf092d 25 fclose(fp);
sakai 2:7cf441bf092d 26 printf("Finish!\r\n");
sakai 2:7cf441bf092d 27 } else {
sakai 2:7cf441bf092d 28 printf("Can't open file.\r\n");
sakai 2:7cf441bf092d 29 }
sakai 2:7cf441bf092d 30 #else
sakai 0:b9050fc6f305 31 fp = fopen("/sd/128x128.raw", "r");
sakai 0:b9050fc6f305 32 if (fp != NULL) {
sakai 0:b9050fc6f305 33 printf("Start!\r\n");
sakai 1:ea521c134e8a 34 RGB24 bufLine[128];
sakai 0:b9050fc6f305 35 for (int y = 0; y < 128; y++) {
sakai 1:ea521c134e8a 36 fread(bufLine, sizeof(RGB24), 128, fp);
sakai 1:ea521c134e8a 37 int bufColor[128];
sakai 0:b9050fc6f305 38 for (int x = 0; x < 128; x++) {
sakai 1:ea521c134e8a 39 #if 1
sakai 1:ea521c134e8a 40 int pix = (bufLine[x].r << 16) | (bufLine[x].g << 8) | bufLine[x].b;
sakai 1:ea521c134e8a 41 #else
sakai 1:ea521c134e8a 42 int pix = bufLine[x].r;
sakai 0:b9050fc6f305 43 pix <<= 8;
sakai 1:ea521c134e8a 44 pix |= bufLine[x].g;
sakai 0:b9050fc6f305 45 pix <<= 8;
sakai 1:ea521c134e8a 46 pix |= bufLine[x].b;
sakai 1:ea521c134e8a 47 #endif
sakai 1:ea521c134e8a 48 bufColor[x] = pix;
sakai 0:b9050fc6f305 49 }
sakai 1:ea521c134e8a 50 lcd.blit(0, y, 128, 1, bufColor);
sakai 0:b9050fc6f305 51 }
sakai 0:b9050fc6f305 52 fclose(fp);
sakai 0:b9050fc6f305 53 printf("Finish!\r\n");
sakai 0:b9050fc6f305 54 } else {
sakai 0:b9050fc6f305 55 printf("Can't open file.\r\n");
sakai 0:b9050fc6f305 56 }
sakai 2:7cf441bf092d 57 #endif
sakai 0:b9050fc6f305 58 }