ハイパー・マイコン mbedでインターネット 電子工作 5章 リスト5-5 NokiaLCDのプログラム

Dependencies:   NokiaLCD_With_JapaneseFont SDFileSystem mbed

Committer:
sunifu
Date:
Sun Jul 13 11:46:59 2014 +0000
Revision:
0:ae9a1aa1123f
2014.07.13

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:ae9a1aa1123f 1 #include "mbed.h"
sunifu 0:ae9a1aa1123f 2 #include "NokiaLCD.h"
sunifu 0:ae9a1aa1123f 3 #include "SDFileSystem.h"
sunifu 0:ae9a1aa1123f 4
sunifu 0:ae9a1aa1123f 5 NokiaLCD lcd1(p11, p13, p14, p15, NokiaLCD::LCD3300); // mosi, sclk, cs, rst, type
sunifu 0:ae9a1aa1123f 6 //NokiaLCD lcd1(p11, p13, p14, p15, NokiaLCD::PCF8833); // mosi, sclk, cs, rst, type
sunifu 0:ae9a1aa1123f 7 SDFileSystem sd(p5, p6, p7, p8, "sd");
sunifu 0:ae9a1aa1123f 8 char filename[20] = "/sd/icons/01d.bmp";
sunifu 0:ae9a1aa1123f 9
sunifu 0:ae9a1aa1123f 10 int PrintIcon(int px, int py)
sunifu 0:ae9a1aa1123f 11 {
sunifu 0:ae9a1aa1123f 12 FILE *fs;
sunifu 0:ae9a1aa1123f 13 int i;
sunifu 0:ae9a1aa1123f 14 char header[54];
sunifu 0:ae9a1aa1123f 15 int rgb;
sunifu 0:ae9a1aa1123f 16 unsigned char datr,datg,datb;
sunifu 0:ae9a1aa1123f 17
sunifu 0:ae9a1aa1123f 18 printf( "Weather icons access [%s]\r\n",filename);
sunifu 0:ae9a1aa1123f 19 if ( NULL == (fs = fopen(filename, "rb" )) ) {
sunifu 0:ae9a1aa1123f 20 printf( "file open error when oening file ");
sunifu 0:ae9a1aa1123f 21 return -1;
sunifu 0:ae9a1aa1123f 22 }
sunifu 0:ae9a1aa1123f 23 printf( "file Open OK.\r\n");
sunifu 0:ae9a1aa1123f 24
sunifu 0:ae9a1aa1123f 25 //bitmap headder throw
sunifu 0:ae9a1aa1123f 26 for (i=0;i<0x36;i++)
sunifu 0:ae9a1aa1123f 27 fread(&header, sizeof(unsigned char), 1, fs);
sunifu 0:ae9a1aa1123f 28
sunifu 0:ae9a1aa1123f 29
sunifu 0:ae9a1aa1123f 30 for(int y=50;y>0;y--){
sunifu 0:ae9a1aa1123f 31 for(int x=0;x<60;x++){
sunifu 0:ae9a1aa1123f 32 fread(&datb, sizeof(unsigned char), 1, fs);
sunifu 0:ae9a1aa1123f 33 fread(&datg, sizeof(unsigned char), 1, fs);
sunifu 0:ae9a1aa1123f 34 fread(&datr, sizeof(unsigned char), 1, fs);
sunifu 0:ae9a1aa1123f 35
sunifu 0:ae9a1aa1123f 36 datb = (0xF0&datb)>>4;
sunifu 0:ae9a1aa1123f 37 datg = (0xF0&datg)>>4;
sunifu 0:ae9a1aa1123f 38 datr = (0xF0&datr)>>4;
sunifu 0:ae9a1aa1123f 39
sunifu 0:ae9a1aa1123f 40 rgb = (datr <<20) | (datg<<12) | (datb<<4);
sunifu 0:ae9a1aa1123f 41 lcd1.pixel(px+x,py+y,rgb);
sunifu 0:ae9a1aa1123f 42
sunifu 0:ae9a1aa1123f 43 }
sunifu 0:ae9a1aa1123f 44 }
sunifu 0:ae9a1aa1123f 45
sunifu 0:ae9a1aa1123f 46 fclose(fs);
sunifu 0:ae9a1aa1123f 47 return 0;
sunifu 0:ae9a1aa1123f 48 }
sunifu 0:ae9a1aa1123f 49
sunifu 0:ae9a1aa1123f 50 int main() {
sunifu 0:ae9a1aa1123f 51 int r,g,b;
sunifu 0:ae9a1aa1123f 52
sunifu 0:ae9a1aa1123f 53 lcd1.background(0x00000000);
sunifu 0:ae9a1aa1123f 54 lcd1.cls();
sunifu 0:ae9a1aa1123f 55 b = 0x000000F0 ;
sunifu 0:ae9a1aa1123f 56 g = 0x0000F000 ;
sunifu 0:ae9a1aa1123f 57 r = 0x00F00000 ;
sunifu 0:ae9a1aa1123f 58
sunifu 0:ae9a1aa1123f 59 lcd1.fill( 0, 0,130,10 , r ) ;
sunifu 0:ae9a1aa1123f 60 lcd1.fill( 0,10,130,10 , g );
sunifu 0:ae9a1aa1123f 61 lcd1.fill( 0,20,130,10 , b );
sunifu 0:ae9a1aa1123f 62 // lcd1.fill( 0,10,130,10 , b|r ); // purple
sunifu 0:ae9a1aa1123f 63 // lcd1.fill( 0,20,130,10 , b|g ); // cyan
sunifu 0:ae9a1aa1123f 64
sunifu 0:ae9a1aa1123f 65 lcd1.locate(0,4);
sunifu 0:ae9a1aa1123f 66 lcd1.printf("Hello NokiaLCD");
sunifu 0:ae9a1aa1123f 67
sunifu 0:ae9a1aa1123f 68 PrintIcon(0,70);
sunifu 0:ae9a1aa1123f 69
sunifu 0:ae9a1aa1123f 70 }