ハイパー・マイコン mbedでインターネット 電子工作 5章 リスト5-5 NokiaLCDのプログラム
Dependencies: NokiaLCD_With_JapaneseFont SDFileSystem mbed
main.cpp@0:ae9a1aa1123f, 2014-07-13 (annotated)
- Committer:
- sunifu
- Date:
- Sun Jul 13 11:46:59 2014 +0000
- Revision:
- 0:ae9a1aa1123f
2014.07.13
Who changed what in which revision?
User | Revision | Line number | New 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 | } |