LEDMatrixDisplay Program 文字ごとに色を変更できるように修正

Dependencies:   mbed

Fork of LEDMatrix_Master by en 129

Committer:
nameless129
Date:
Sat Nov 02 23:49:55 2013 +0000
Revision:
1:d4d1951a4202
Parent:
0:64f46cf1b2b4
Child:
2:402191724e28
15*16 LED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nameless129 0:64f46cf1b2b4 1 #pragma import __use_all_ctype
nameless129 0:64f46cf1b2b4 2
nameless129 0:64f46cf1b2b4 3 #include "mbed.h"
nameless129 0:64f46cf1b2b4 4 #include <string.h>
nameless129 0:64f46cf1b2b4 5 #include "kfont8.h"
nameless129 0:64f46cf1b2b4 6 #include "process_fonts.h"
nameless129 0:64f46cf1b2b4 7
nameless129 1:d4d1951a4202 8 unsigned char matrixdata[32];
nameless129 1:d4d1951a4202 9 SPI spi(p5, p6, p7); // mosi, miso, sclk
nameless129 1:d4d1951a4202 10
nameless129 0:64f46cf1b2b4 11 BusOut bords(p15,p16,p17,p18,p19,p20);
nameless129 0:64f46cf1b2b4 12 Serial pc(USBTX, USBRX); // tx, rx
nameless129 0:64f46cf1b2b4 13
nameless129 1:d4d1951a4202 14 SPI spi2(p11, p12, p13); // mosi, miso, sclk
nameless129 1:d4d1951a4202 15 DigitalOut cs(p14);
nameless129 1:d4d1951a4202 16
nameless129 1:d4d1951a4202 17 #define DISPLAY_XSIZE (96)
nameless129 1:d4d1951a4202 18 unsigned int ImageBuf[3][DISPLAY_XSIZE];//16*6
nameless129 1:d4d1951a4202 19 unsigned int ColerMap[3][DISPLAY_XSIZE];
nameless129 1:d4d1951a4202 20
nameless129 1:d4d1951a4202 21 void read_font(unsigned short code) {
nameless129 1:d4d1951a4202 22 unsigned char c1, c2, MSB,LSB;
nameless129 1:d4d1951a4202 23 uint32_t Address, seq;
nameless129 1:d4d1951a4202 24
nameless129 1:d4d1951a4202 25 // SJIS to kuten code conversion
nameless129 1:d4d1951a4202 26 c1 = (code>>8);
nameless129 1:d4d1951a4202 27 c2 = (code & 0xFF);
nameless129 1:d4d1951a4202 28 seq = (c1<=159 ? c1-129 : c1-193)*188 + (c2<=126 ? c2-64 : c2-65);
nameless129 1:d4d1951a4202 29 MSB = seq / 94 + 1;
nameless129 1:d4d1951a4202 30 LSB = seq % 94 + 1;
nameless129 1:d4d1951a4202 31 Address = 0;
nameless129 1:d4d1951a4202 32
nameless129 1:d4d1951a4202 33 if( MSB >= 1 && MSB <= 15 && LSB >= 1 && LSB <= 94)
nameless129 1:d4d1951a4202 34 Address =( (MSB - 1) * 94 + (LSB - 1))*32;
nameless129 1:d4d1951a4202 35 else if(MSB >= 16 && MSB <= 47 && LSB >= 1 && LSB <= 94)
nameless129 1:d4d1951a4202 36 Address =( (MSB - 16) * 94 + (LSB - 1))*32 + 0x0AA40L;
nameless129 1:d4d1951a4202 37 else if(MSB >= 48 && MSB <= 84 && LSB >= 1 && LSB <= 94)
nameless129 1:d4d1951a4202 38 Address = ((MSB - 48) * 94 + (LSB - 1))*32 + 0x21CDFL;
nameless129 1:d4d1951a4202 39 else if(MSB == 85 && LSB >= 1 && LSB <= 94)
nameless129 1:d4d1951a4202 40 Address = ((MSB - 85) * 94 + (LSB - 1))*32 + 0x3C4A0L;
nameless129 1:d4d1951a4202 41 else if(MSB >= 88 && MSB <= 89 && LSB >= 1 && LSB <= 94)
nameless129 1:d4d1951a4202 42 Address = ((MSB - 88) * 94 + (LSB - 1))*32 + 0x3D060L;
nameless129 1:d4d1951a4202 43
nameless129 1:d4d1951a4202 44 // Deselect the device
nameless129 1:d4d1951a4202 45 cs = 1;
nameless129 1:d4d1951a4202 46
nameless129 1:d4d1951a4202 47 // Setup the spi for 8 bit data, high steady state clock
nameless129 1:d4d1951a4202 48 spi2.format(8,3);
nameless129 1:d4d1951a4202 49 spi2.frequency(1000000);
nameless129 1:d4d1951a4202 50
nameless129 1:d4d1951a4202 51 // Select the device by seting chip select low
nameless129 1:d4d1951a4202 52 cs = 0;
nameless129 1:d4d1951a4202 53 spi2.write(0x03); // Read data byte
nameless129 1:d4d1951a4202 54 spi2.write(Address>>16 & 0xff);
nameless129 1:d4d1951a4202 55 spi2.write(Address>>8 & 0xff);
nameless129 1:d4d1951a4202 56 spi2.write(Address & 0xff);
nameless129 1:d4d1951a4202 57
nameless129 1:d4d1951a4202 58 // Send a dummy byte to receive the contents of the WHOAMI register
nameless129 1:d4d1951a4202 59 for(int i=0; i<32; i++)
nameless129 1:d4d1951a4202 60 {
nameless129 1:d4d1951a4202 61 matrixdata[i]=spi2.write(0x00);
nameless129 1:d4d1951a4202 62 }
nameless129 1:d4d1951a4202 63
nameless129 1:d4d1951a4202 64 // Deselect the device
nameless129 1:d4d1951a4202 65 cs = 1;
nameless129 1:d4d1951a4202 66 }
nameless129 1:d4d1951a4202 67
nameless129 1:d4d1951a4202 68 void draw_kanji_15x16(int pos_x,unsigned char color)
nameless129 1:d4d1951a4202 69 {
nameless129 1:d4d1951a4202 70 int i = 0;
nameless129 1:d4d1951a4202 71 for(i=0;i<16;i++)
nameless129 1:d4d1951a4202 72 {
nameless129 1:d4d1951a4202 73 if( ((signed int)(15-i+pos_x) >= 0) && ((15-i+pos_x) <= (DISPLAY_XSIZE-1)) )
nameless129 1:d4d1951a4202 74 {
nameless129 1:d4d1951a4202 75 if(color == COLOR_G || color == COLOR_C || color == COLOR_Y || color == COLOR_W)
nameless129 1:d4d1951a4202 76 {
nameless129 1:d4d1951a4202 77 ImageBuf[0][15-i+pos_x] = matrixdata[i];
nameless129 1:d4d1951a4202 78 ImageBuf[0][15-i+pos_x] |= matrixdata[i+16]<<8;
nameless129 1:d4d1951a4202 79 }
nameless129 1:d4d1951a4202 80 if(color == COLOR_R || color == COLOR_Y || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 81 {
nameless129 1:d4d1951a4202 82 ImageBuf[1][15-i+pos_x] = matrixdata[i];
nameless129 1:d4d1951a4202 83 ImageBuf[1][15-i+pos_x] |= matrixdata[i+16]<<8;
nameless129 1:d4d1951a4202 84 }
nameless129 1:d4d1951a4202 85 if(color == COLOR_B || color == COLOR_C || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 86 {
nameless129 1:d4d1951a4202 87 ImageBuf[2][15-i+pos_x] = matrixdata[i];
nameless129 1:d4d1951a4202 88 ImageBuf[2][15-i+pos_x] |= matrixdata[i+16]<<8;
nameless129 1:d4d1951a4202 89 }
nameless129 1:d4d1951a4202 90 }
nameless129 1:d4d1951a4202 91 }
nameless129 1:d4d1951a4202 92 }
nameless129 1:d4d1951a4202 93
nameless129 1:d4d1951a4202 94 unsigned int CountChar(char *str)
nameless129 1:d4d1951a4202 95 {
nameless129 1:d4d1951a4202 96 unsigned char f_SJISChar = 0;
nameless129 1:d4d1951a4202 97 unsigned char c = 0;
nameless129 1:d4d1951a4202 98 unsigned int CountChar = 0;
nameless129 1:d4d1951a4202 99
nameless129 1:d4d1951a4202 100 c = *str;
nameless129 1:d4d1951a4202 101 while(c != '\0')
nameless129 1:d4d1951a4202 102 {
nameless129 1:d4d1951a4202 103 //2バイト文字の判定
nameless129 1:d4d1951a4202 104 if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_SJISChar != 1 )
nameless129 1:d4d1951a4202 105 {
nameless129 1:d4d1951a4202 106 f_SJISChar = 1;
nameless129 1:d4d1951a4202 107 }
nameless129 1:d4d1951a4202 108 else
nameless129 1:d4d1951a4202 109 {
nameless129 1:d4d1951a4202 110 f_SJISChar = 0;
nameless129 1:d4d1951a4202 111 CountChar++;
nameless129 1:d4d1951a4202 112 }
nameless129 1:d4d1951a4202 113 str++;
nameless129 1:d4d1951a4202 114 c = *str;
nameless129 1:d4d1951a4202 115 }
nameless129 1:d4d1951a4202 116 return CountChar;
nameless129 1:d4d1951a4202 117 }
nameless129 1:d4d1951a4202 118
nameless129 1:d4d1951a4202 119 void drawStr15x16(char *str ,int pos_x,unsigned char color)
nameless129 1:d4d1951a4202 120 {
nameless129 1:d4d1951a4202 121 unsigned char f_SJISChar = 0;
nameless129 1:d4d1951a4202 122 unsigned char c = 0;
nameless129 1:d4d1951a4202 123 unsigned int SJISChar = 0;
nameless129 1:d4d1951a4202 124 unsigned int CountChar = 0;
nameless129 1:d4d1951a4202 125
nameless129 1:d4d1951a4202 126 c = *str;
nameless129 1:d4d1951a4202 127 while(c != '\0')
nameless129 1:d4d1951a4202 128 {
nameless129 1:d4d1951a4202 129 //2バイト文字の判定
nameless129 1:d4d1951a4202 130 if( ((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)) && f_SJISChar != 1 )
nameless129 1:d4d1951a4202 131 {
nameless129 1:d4d1951a4202 132 SJISChar = c;
nameless129 1:d4d1951a4202 133 f_SJISChar = 1;
nameless129 1:d4d1951a4202 134 }
nameless129 1:d4d1951a4202 135 else if(f_SJISChar == 1)
nameless129 1:d4d1951a4202 136 {
nameless129 1:d4d1951a4202 137 SJISChar = (SJISChar<<8) | c;
nameless129 1:d4d1951a4202 138 f_SJISChar = 0;
nameless129 1:d4d1951a4202 139 read_font(SJISChar);
nameless129 1:d4d1951a4202 140 draw_kanji_15x16(pos_x-CountChar*16,color);
nameless129 1:d4d1951a4202 141 CountChar++;
nameless129 1:d4d1951a4202 142 }
nameless129 1:d4d1951a4202 143 else //ASCII文字
nameless129 1:d4d1951a4202 144 {
nameless129 1:d4d1951a4202 145 SJISChar = c;
nameless129 1:d4d1951a4202 146 f_SJISChar = 0;
nameless129 1:d4d1951a4202 147 read_font(SJISChar);
nameless129 1:d4d1951a4202 148 draw_kanji_15x16(pos_x-CountChar*16,color);
nameless129 1:d4d1951a4202 149 CountChar++;
nameless129 1:d4d1951a4202 150 }
nameless129 1:d4d1951a4202 151 str++;
nameless129 1:d4d1951a4202 152 c = *str;
nameless129 1:d4d1951a4202 153 }
nameless129 1:d4d1951a4202 154 }
nameless129 1:d4d1951a4202 155
nameless129 1:d4d1951a4202 156
nameless129 0:64f46cf1b2b4 157
nameless129 0:64f46cf1b2b4 158 void SPILineOut(unsigned char setLine)
nameless129 0:64f46cf1b2b4 159 {
nameless129 0:64f46cf1b2b4 160 unsigned int data[3]={0};
nameless129 0:64f46cf1b2b4 161 unsigned int i = 0;
nameless129 0:64f46cf1b2b4 162 for(i=0;i<=5;i++)
nameless129 0:64f46cf1b2b4 163 {
nameless129 0:64f46cf1b2b4 164 data[0] |= ((ImageBuf[2][setLine]>>(15-i))&0x01) << (15-(3*i));
nameless129 0:64f46cf1b2b4 165 }
nameless129 0:64f46cf1b2b4 166 for(i=0;i<=4;i++)
nameless129 0:64f46cf1b2b4 167 {
nameless129 0:64f46cf1b2b4 168 data[0] |= ((ImageBuf[1][setLine]>>(15-i))&0x01) << (14-(3*i));
nameless129 0:64f46cf1b2b4 169 data[0] |= ((ImageBuf[0][setLine]>>(15-i))&0x01) << (13-(3*i));
nameless129 0:64f46cf1b2b4 170 }
nameless129 0:64f46cf1b2b4 171
nameless129 0:64f46cf1b2b4 172 for(i=0;i<=5;i++)
nameless129 0:64f46cf1b2b4 173 {
nameless129 0:64f46cf1b2b4 174 data[1] |= ((ImageBuf[1][setLine]>>(10-i))&0x01) << (15-(3*i));
nameless129 0:64f46cf1b2b4 175 }
nameless129 0:64f46cf1b2b4 176 for(i=0;i<=4;i++)
nameless129 0:64f46cf1b2b4 177 {
nameless129 0:64f46cf1b2b4 178 data[1] |= ((ImageBuf[0][setLine]>>(10-i))&0x01) << (14-(3*i));
nameless129 0:64f46cf1b2b4 179 data[1] |= ((ImageBuf[2][setLine]>>(9-i))&0x01) << (13-(3*i));
nameless129 0:64f46cf1b2b4 180 }
nameless129 0:64f46cf1b2b4 181
nameless129 0:64f46cf1b2b4 182 for(i=0;i<=5;i++)
nameless129 0:64f46cf1b2b4 183 {
nameless129 0:64f46cf1b2b4 184 data[2] |= ((ImageBuf[0][setLine]>>(5-i))&0x01) << (15-(3*i));
nameless129 0:64f46cf1b2b4 185 }
nameless129 0:64f46cf1b2b4 186 for(i=0;i<=4;i++)
nameless129 0:64f46cf1b2b4 187 {
nameless129 0:64f46cf1b2b4 188 data[2] |= ((ImageBuf[2][setLine]>>(4-i))&0x01) << (14-(3*i));
nameless129 0:64f46cf1b2b4 189 data[2] |= ((ImageBuf[1][setLine]>>(4-i))&0x01) << (13-(3*i));
nameless129 0:64f46cf1b2b4 190 }
nameless129 0:64f46cf1b2b4 191 spi.write(data[0]);
nameless129 0:64f46cf1b2b4 192 spi.write(data[1]);
nameless129 0:64f46cf1b2b4 193 spi.write(data[2]);
nameless129 0:64f46cf1b2b4 194 }
nameless129 0:64f46cf1b2b4 195
nameless129 1:d4d1951a4202 196 void outBordData()
nameless129 0:64f46cf1b2b4 197 {
nameless129 1:d4d1951a4202 198 unsigned char ch = 0,Max_ch=0;
nameless129 0:64f46cf1b2b4 199 unsigned int i = 0;
nameless129 1:d4d1951a4202 200 Max_ch = (DISPLAY_XSIZE-16)/16;
nameless129 1:d4d1951a4202 201 for(ch=0;ch<=Max_ch;ch++)
nameless129 0:64f46cf1b2b4 202 {
nameless129 1:d4d1951a4202 203 wait_us(10);
nameless129 1:d4d1951a4202 204 bords = 0x01 << ch;
nameless129 1:d4d1951a4202 205 for(i=(ch*16);i<(ch*16+16);i++)
nameless129 1:d4d1951a4202 206 {
nameless129 1:d4d1951a4202 207 SPILineOut(i);
nameless129 1:d4d1951a4202 208 }
nameless129 0:64f46cf1b2b4 209 }
nameless129 0:64f46cf1b2b4 210 }
nameless129 0:64f46cf1b2b4 211
nameless129 1:d4d1951a4202 212 void bufLeftShift_Loop(void)
nameless129 1:d4d1951a4202 213 {
nameless129 1:d4d1951a4202 214 signed int i = 0;
nameless129 1:d4d1951a4202 215
nameless129 1:d4d1951a4202 216 for(i=(DISPLAY_XSIZE-1);i>=1;i--)
nameless129 1:d4d1951a4202 217 {
nameless129 1:d4d1951a4202 218 ImageBuf[0][i] = ImageBuf[0][i-1];
nameless129 1:d4d1951a4202 219 ImageBuf[1][i] = ImageBuf[1][i-1];
nameless129 1:d4d1951a4202 220 ImageBuf[2][i] = ImageBuf[2][i-1];
nameless129 1:d4d1951a4202 221 }
nameless129 1:d4d1951a4202 222 ImageBuf[0][0] = ImageBuf[0][(DISPLAY_XSIZE-1)];
nameless129 1:d4d1951a4202 223 ImageBuf[1][0] = ImageBuf[1][(DISPLAY_XSIZE-1)];
nameless129 1:d4d1951a4202 224 ImageBuf[2][0] = ImageBuf[2][(DISPLAY_XSIZE-1)];
nameless129 1:d4d1951a4202 225
nameless129 1:d4d1951a4202 226 }
nameless129 1:d4d1951a4202 227
nameless129 0:64f46cf1b2b4 228 void bufLeftShift(void)
nameless129 1:d4d1951a4202 229 {
nameless129 0:64f46cf1b2b4 230 signed int i = 0;
nameless129 0:64f46cf1b2b4 231
nameless129 1:d4d1951a4202 232 for(i=(DISPLAY_XSIZE-1);i>=1;i--)
nameless129 1:d4d1951a4202 233 {
nameless129 1:d4d1951a4202 234 ImageBuf[0][i] = ImageBuf[0][i-1];
nameless129 1:d4d1951a4202 235 ImageBuf[1][i] = ImageBuf[1][i-1];
nameless129 1:d4d1951a4202 236 ImageBuf[2][i] = ImageBuf[2][i-1];
nameless129 1:d4d1951a4202 237 }
nameless129 1:d4d1951a4202 238 ImageBuf[0][0] = 0;
nameless129 1:d4d1951a4202 239 ImageBuf[1][0] = 0;
nameless129 1:d4d1951a4202 240 ImageBuf[2][0] = 0;
nameless129 1:d4d1951a4202 241 }
nameless129 1:d4d1951a4202 242
nameless129 1:d4d1951a4202 243 void TestMode(void)
nameless129 1:d4d1951a4202 244 {
nameless129 1:d4d1951a4202 245 unsigned char i = 0;
nameless129 1:d4d1951a4202 246
nameless129 1:d4d1951a4202 247 for(i=0;i<16;i++)
nameless129 1:d4d1951a4202 248 {
nameless129 1:d4d1951a4202 249 ImageBuf[0][i] = 0xffff;
nameless129 1:d4d1951a4202 250 }
nameless129 1:d4d1951a4202 251 for(i=16;i<16+16;i++)
nameless129 1:d4d1951a4202 252 {
nameless129 1:d4d1951a4202 253 ImageBuf[1][i] = 0xffff;
nameless129 1:d4d1951a4202 254 }
nameless129 1:d4d1951a4202 255 for(i=32;i<32+16;i++)
nameless129 1:d4d1951a4202 256 {
nameless129 1:d4d1951a4202 257 ImageBuf[2][i] = 0xffff;
nameless129 1:d4d1951a4202 258 }
nameless129 1:d4d1951a4202 259
nameless129 1:d4d1951a4202 260 outBordData();
nameless129 1:d4d1951a4202 261
nameless129 1:d4d1951a4202 262 while(1)
nameless129 1:d4d1951a4202 263 {
nameless129 1:d4d1951a4202 264 wait(0.1);
nameless129 1:d4d1951a4202 265 bufLeftShift_Loop();
nameless129 1:d4d1951a4202 266 outBordData();
nameless129 1:d4d1951a4202 267 }
nameless129 1:d4d1951a4202 268 }
nameless129 1:d4d1951a4202 269
nameless129 1:d4d1951a4202 270 void SetRandamColer(void)
nameless129 1:d4d1951a4202 271 {
nameless129 1:d4d1951a4202 272 unsigned char color = 0;
nameless129 1:d4d1951a4202 273 unsigned int i=0,j=0;
nameless129 1:d4d1951a4202 274
nameless129 1:d4d1951a4202 275 memset(ColerMap,0,sizeof(ColerMap));
nameless129 1:d4d1951a4202 276 for(j=0;j<DISPLAY_XSIZE;j++)
nameless129 0:64f46cf1b2b4 277 {
nameless129 1:d4d1951a4202 278 for(i=0;i<16;i++)
nameless129 1:d4d1951a4202 279 {
nameless129 1:d4d1951a4202 280 color = rand()%7;
nameless129 1:d4d1951a4202 281 if(color == COLOR_G || color == COLOR_C || color == COLOR_Y || color == COLOR_W)
nameless129 1:d4d1951a4202 282 {
nameless129 1:d4d1951a4202 283 ColerMap[0][j] |= 1<<i;
nameless129 1:d4d1951a4202 284 }
nameless129 1:d4d1951a4202 285 if(color == COLOR_R || color == COLOR_Y || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 286 {
nameless129 1:d4d1951a4202 287 ColerMap[1][j] |= 1<<i;
nameless129 1:d4d1951a4202 288 }
nameless129 1:d4d1951a4202 289 if(color == COLOR_B || color == COLOR_C || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 290 {
nameless129 1:d4d1951a4202 291 ColerMap[2][j] |= 1<<i;
nameless129 1:d4d1951a4202 292 }
nameless129 1:d4d1951a4202 293 }
nameless129 0:64f46cf1b2b4 294 }
nameless129 1:d4d1951a4202 295 }
nameless129 1:d4d1951a4202 296
nameless129 1:d4d1951a4202 297 unsigned char ConvHue(unsigned char num)
nameless129 1:d4d1951a4202 298 {
nameless129 1:d4d1951a4202 299 unsigned char Hue[7] = {COLOR_G,COLOR_C,COLOR_B,COLOR_M,COLOR_R,COLOR_Y,COLOR_W};
nameless129 1:d4d1951a4202 300 return Hue[num];
nameless129 1:d4d1951a4202 301
nameless129 0:64f46cf1b2b4 302 }
nameless129 0:64f46cf1b2b4 303
nameless129 1:d4d1951a4202 304 void SetRainbowColer(void)
nameless129 1:d4d1951a4202 305 {
nameless129 1:d4d1951a4202 306 unsigned char color = 0;
nameless129 1:d4d1951a4202 307 unsigned int j=0;
nameless129 1:d4d1951a4202 308
nameless129 1:d4d1951a4202 309 memset(ColerMap,0,sizeof(ColerMap));
nameless129 1:d4d1951a4202 310 for(j=0;j<DISPLAY_XSIZE;j++)
nameless129 1:d4d1951a4202 311 {
nameless129 1:d4d1951a4202 312 color = ConvHue((++color)%7);
nameless129 1:d4d1951a4202 313
nameless129 1:d4d1951a4202 314 if(color == COLOR_G || color == COLOR_C || color == COLOR_Y || color == COLOR_W)
nameless129 1:d4d1951a4202 315 {
nameless129 1:d4d1951a4202 316 ColerMap[0][j] |= 0xffff;
nameless129 1:d4d1951a4202 317 }
nameless129 1:d4d1951a4202 318 if(color == COLOR_R || color == COLOR_Y || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 319 {
nameless129 1:d4d1951a4202 320 ColerMap[1][j] |= 0xffff;
nameless129 1:d4d1951a4202 321 }
nameless129 1:d4d1951a4202 322 if(color == COLOR_B || color == COLOR_C || color == COLOR_M || color == COLOR_W)
nameless129 1:d4d1951a4202 323 {
nameless129 1:d4d1951a4202 324 ColerMap[2][j] |= 0xffff;
nameless129 1:d4d1951a4202 325 }
nameless129 1:d4d1951a4202 326 }
nameless129 1:d4d1951a4202 327 }
nameless129 1:d4d1951a4202 328
nameless129 1:d4d1951a4202 329
nameless129 1:d4d1951a4202 330 void ApplyColerMap(void)
nameless129 1:d4d1951a4202 331 {
nameless129 1:d4d1951a4202 332 unsigned i = 0;
nameless129 1:d4d1951a4202 333 for(i=0;i<DISPLAY_XSIZE;i++)
nameless129 1:d4d1951a4202 334 {
nameless129 1:d4d1951a4202 335 ImageBuf[0][i] = ImageBuf[0][i]&ColerMap[0][i];
nameless129 1:d4d1951a4202 336 ImageBuf[1][i] = ImageBuf[1][i]&ColerMap[1][i];
nameless129 1:d4d1951a4202 337 ImageBuf[2][i] = ImageBuf[2][i]&ColerMap[2][i];
nameless129 1:d4d1951a4202 338 }
nameless129 1:d4d1951a4202 339 }
nameless129 1:d4d1951a4202 340
nameless129 1:d4d1951a4202 341
nameless129 0:64f46cf1b2b4 342 int main()
nameless129 0:64f46cf1b2b4 343 {
nameless129 0:64f46cf1b2b4 344 unsigned char f_mode = 0;
nameless129 0:64f46cf1b2b4 345 unsigned int i = 0;
nameless129 0:64f46cf1b2b4 346 unsigned char coler = 0;
nameless129 1:d4d1951a4202 347 char strs[100]={0x82,0x6C,0x82,0x81,0x82,0x8B,0x82,0x85,0x82,0x65,0x82,0x81,0x82,0x89,0x82,0x92,
nameless129 1:d4d1951a4202 348 0x82,0x73,0x82,0x8F,0x82,0x8B,0x82,0x99,0x82,0x8F,0x82,0x51,0x82,0x4F,0x82,0x50,0x82,0x52,0x00};
nameless129 0:64f46cf1b2b4 349 spi.format(16,1);
nameless129 0:64f46cf1b2b4 350 spi.frequency(1000000);
nameless129 0:64f46cf1b2b4 351
nameless129 0:64f46cf1b2b4 352 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:64f46cf1b2b4 353 i=0;
nameless129 0:64f46cf1b2b4 354 wait(3);
nameless129 1:d4d1951a4202 355 //TestMode();
nameless129 1:d4d1951a4202 356 SetRandamColer();
nameless129 1:d4d1951a4202 357 SetRainbowColer();
nameless129 1:d4d1951a4202 358 while(1)
nameless129 1:d4d1951a4202 359 {
nameless129 1:d4d1951a4202 360 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 1:d4d1951a4202 361 // read_font(0x826d);
nameless129 1:d4d1951a4202 362 // draw_kanji_15x16(0,0);
nameless129 0:64f46cf1b2b4 363
nameless129 1:d4d1951a4202 364 for(i=0;i<DISPLAY_XSIZE+(15*CountChar(strs)-1);i++)
nameless129 1:d4d1951a4202 365 {
nameless129 1:d4d1951a4202 366 drawStr15x16(strs ,i,COLOR_W);
nameless129 1:d4d1951a4202 367 ApplyColerMap();
nameless129 1:d4d1951a4202 368 outBordData();
nameless129 1:d4d1951a4202 369 wait(0.2);
nameless129 1:d4d1951a4202 370 }
nameless129 1:d4d1951a4202 371 }
nameless129 0:64f46cf1b2b4 372 while(1)
nameless129 0:64f46cf1b2b4 373 {
nameless129 0:64f46cf1b2b4 374 if(f_mode == 0)
nameless129 0:64f46cf1b2b4 375 {
nameless129 0:64f46cf1b2b4 376 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:64f46cf1b2b4 377 pc.scanf("%s",&strs);
nameless129 0:64f46cf1b2b4 378 pc.printf("cmdOK\r\n");
nameless129 0:64f46cf1b2b4 379 if(strstr(strs,"barusu") != NULL)
nameless129 0:64f46cf1b2b4 380 {
nameless129 0:64f46cf1b2b4 381 memset(ImageBuf,0xffff,sizeof(ImageBuf));
nameless129 0:64f46cf1b2b4 382 f_mode = 2;
nameless129 0:64f46cf1b2b4 383 }
nameless129 0:64f46cf1b2b4 384 else
nameless129 0:64f46cf1b2b4 385 {
nameless129 0:64f46cf1b2b4 386 f_mode = 1;
nameless129 0:64f46cf1b2b4 387 }
nameless129 0:64f46cf1b2b4 388 }
nameless129 0:64f46cf1b2b4 389 if(f_mode == 1)
nameless129 0:64f46cf1b2b4 390 {
nameless129 0:64f46cf1b2b4 391 drawStr(strs,coler,i,4);
nameless129 0:64f46cf1b2b4 392 i++;
nameless129 0:64f46cf1b2b4 393 if(i > (16*6 - 8 ))
nameless129 0:64f46cf1b2b4 394 {
nameless129 0:64f46cf1b2b4 395 f_mode = 2;
nameless129 0:64f46cf1b2b4 396 coler = (coler+1)%7;
nameless129 0:64f46cf1b2b4 397 i = 0;
nameless129 0:64f46cf1b2b4 398 }
nameless129 0:64f46cf1b2b4 399 }
nameless129 0:64f46cf1b2b4 400 if(f_mode == 2)
nameless129 0:64f46cf1b2b4 401 {
nameless129 0:64f46cf1b2b4 402 bufLeftShift();
nameless129 0:64f46cf1b2b4 403 i++;
nameless129 0:64f46cf1b2b4 404 if(i>=((16*6 - 8)*3))
nameless129 0:64f46cf1b2b4 405 {
nameless129 0:64f46cf1b2b4 406 memset(ImageBuf,0,sizeof(ImageBuf));
nameless129 0:64f46cf1b2b4 407 i = 0;
nameless129 0:64f46cf1b2b4 408 f_mode = 1;
nameless129 0:64f46cf1b2b4 409 }
nameless129 0:64f46cf1b2b4 410 }
nameless129 0:64f46cf1b2b4 411
nameless129 0:64f46cf1b2b4 412 if(pc.readable()) {
nameless129 0:64f46cf1b2b4 413 f_mode = 0;
nameless129 0:64f46cf1b2b4 414 }
nameless129 1:d4d1951a4202 415 outBordData();
nameless129 0:64f46cf1b2b4 416 wait(0.1);
nameless129 0:64f46cf1b2b4 417 }
nameless129 0:64f46cf1b2b4 418
nameless129 0:64f46cf1b2b4 419 //////////////////////////////////////////////
nameless129 0:64f46cf1b2b4 420 // test mode
nameless129 0:64f46cf1b2b4 421 //////////////////////////////////////////////
nameless129 0:64f46cf1b2b4 422 /*
nameless129 0:64f46cf1b2b4 423 while(0)//test mode
nameless129 0:64f46cf1b2b4 424 {
nameless129 0:64f46cf1b2b4 425 for(i=0;i<32;i++)
nameless129 0:64f46cf1b2b4 426 {
nameless129 0:64f46cf1b2b4 427 ImageBuf[0][i] = 0x0000;
nameless129 0:64f46cf1b2b4 428 ImageBuf[1][i] = 0;
nameless129 0:64f46cf1b2b4 429 ImageBuf[2][i] = 0;
nameless129 0:64f46cf1b2b4 430 }
nameless129 0:64f46cf1b2b4 431 cs0 = 1;
nameless129 0:64f46cf1b2b4 432 cs1 = 0;
nameless129 0:64f46cf1b2b4 433 for(i=0;i<16;i++)
nameless129 0:64f46cf1b2b4 434 {
nameless129 0:64f46cf1b2b4 435 SPILineOut(i);
nameless129 0:64f46cf1b2b4 436 }
nameless129 0:64f46cf1b2b4 437 cs0 = 0;
nameless129 0:64f46cf1b2b4 438 cs1 = 1;
nameless129 0:64f46cf1b2b4 439 for(i=16;i<32;i++)
nameless129 0:64f46cf1b2b4 440 {
nameless129 0:64f46cf1b2b4 441 SPILineOut(i);
nameless129 0:64f46cf1b2b4 442 }
nameless129 0:64f46cf1b2b4 443
nameless129 0:64f46cf1b2b4 444 cs0 = 1;
nameless129 0:64f46cf1b2b4 445 cs1 = 0;
nameless129 0:64f46cf1b2b4 446 for(i=0;i<16;i++)
nameless129 0:64f46cf1b2b4 447 {
nameless129 0:64f46cf1b2b4 448 SPILineOut(i);
nameless129 0:64f46cf1b2b4 449 }
nameless129 0:64f46cf1b2b4 450 cs0 = 0;
nameless129 0:64f46cf1b2b4 451 cs1 = 1;
nameless129 0:64f46cf1b2b4 452 for(i=16;i<32;i++)
nameless129 0:64f46cf1b2b4 453 {
nameless129 0:64f46cf1b2b4 454 SPILineOut(i);
nameless129 0:64f46cf1b2b4 455 }
nameless129 0:64f46cf1b2b4 456 }
nameless129 0:64f46cf1b2b4 457 */
nameless129 0:64f46cf1b2b4 458 }