this is kazushi's branch of AD128160

Fork of AD128160 by Gingax x

Committer:
kazushi2008
Date:
Mon Feb 25 03:24:09 2013 +0000
Revision:
8:5b2cbd7120d3
Parent:
7:227b64bf8fb1
fork by Kazushi Mukaiyama

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akira 2:5d8d5291b4cd 1 #include "mbed.h"
akira 2:5d8d5291b4cd 2
akira 6:96576c9c7828 3 #define kanji_file "/local/SHMZN16X.FNT"
akira 6:96576c9c7828 4 //#defin kanji_file "/local/k12x10.fnt"
akira 6:96576c9c7828 5
akira 6:96576c9c7828 6 Serial device(p9, p10); // tx, rx LCD
akira 2:5d8d5291b4cd 7 DigitalOut rst(p20); //P20 --> LCD RST (Reset)
akira 2:5d8d5291b4cd 8
akira 4:1f72df1a88e0 9 LocalFileSystem local("local");
akira 4:1f72df1a88e0 10
akira 6:96576c9c7828 11 int cx = 0;
akira 6:96576c9c7828 12 int cy = 0;
akira 6:96576c9c7828 13 int offsety = 0;
akira 6:96576c9c7828 14 bool kstate = false;
akira 6:96576c9c7828 15 unsigned char kbuf;
akira 6:96576c9c7828 16
akira 6:96576c9c7828 17 FILE *fp; //File open buffer
akira 4:1f72df1a88e0 18
akira 4:1f72df1a88e0 19 unsigned short start[92], end[92];
akira 4:1f72df1a88e0 20 unsigned char font[64];
akira 4:1f72df1a88e0 21
akira 4:1f72df1a88e0 22 char Identifier[6+1];
akira 4:1f72df1a88e0 23 char FontName[8+1];
akira 4:1f72df1a88e0 24 unsigned char XSize;
akira 4:1f72df1a88e0 25 unsigned char YSize;
akira 4:1f72df1a88e0 26 unsigned char Size;
akira 4:1f72df1a88e0 27 unsigned char CodeType;
akira 4:1f72df1a88e0 28 unsigned char Tnum;
akira 4:1f72df1a88e0 29
akira 4:1f72df1a88e0 30 #define FONT_XBYTE ((XSize + 7) >> 3)
akira 4:1f72df1a88e0 31 #define FONT_YBYTE ((YSize + 7) >> 3)
akira 4:1f72df1a88e0 32
akira 2:5d8d5291b4cd 33 void lcdspeed()
akira 2:5d8d5291b4cd 34 {
akira 2:5d8d5291b4cd 35 device.putc(0x55);// UART Speed 115200bps
akira 2:5d8d5291b4cd 36 device.putc(0x05);
akira 2:5d8d5291b4cd 37 device.putc(0x8B);
akira 2:5d8d5291b4cd 38 device.putc(0x00);
akira 2:5d8d5291b4cd 39 device.putc(0x01);
akira 2:5d8d5291b4cd 40 device.putc(0xC2);
akira 2:5d8d5291b4cd 41 device.putc(0x00);
akira 2:5d8d5291b4cd 42 device.putc(0x4E);
akira 2:5d8d5291b4cd 43 device.putc(0xAA);
akira 2:5d8d5291b4cd 44 }
akira 6:96576c9c7828 45 void bmp(int x0,int y0,int bmp_no)
akira 6:96576c9c7828 46 {
akira 6:96576c9c7828 47 unsigned char x0H;
akira 6:96576c9c7828 48 unsigned char x0L;
akira 6:96576c9c7828 49 unsigned char y0H;
akira 6:96576c9c7828 50 unsigned char y0L;
akira 6:96576c9c7828 51 unsigned char rH;
akira 6:96576c9c7828 52 unsigned char rL;
akira 6:96576c9c7828 53 unsigned char sum;
akira 6:96576c9c7828 54
akira 6:96576c9c7828 55 x0H = x0 >> 8;
akira 6:96576c9c7828 56 x0L = x0 & 0xFF;
akira 6:96576c9c7828 57 y0H = y0 >> 8;
akira 6:96576c9c7828 58 y0L = y0 & 0xff;
akira 6:96576c9c7828 59 rH = bmp_no >> 8;
akira 6:96576c9c7828 60 rL = bmp_no & 0xFF;
akira 6:96576c9c7828 61 sum = x0H+x0L+y0H+y0L+rH+rL+0x09;
akira 6:96576c9c7828 62 device.putc(0x55);
akira 6:96576c9c7828 63 device.putc(0x07);
akira 6:96576c9c7828 64 device.putc(0x09);//command
akira 6:96576c9c7828 65 device.putc(x0H);
akira 6:96576c9c7828 66 device.putc(x0L);
akira 6:96576c9c7828 67 device.putc(y0H);
akira 6:96576c9c7828 68 device.putc(y0L);
akira 6:96576c9c7828 69 device.putc(rH);
akira 6:96576c9c7828 70 device.putc(rL);
akira 6:96576c9c7828 71 device.putc(sum);
akira 6:96576c9c7828 72 device.putc(0xAA);
akira 6:96576c9c7828 73 }
akira 2:5d8d5291b4cd 74
akira 2:5d8d5291b4cd 75 void cls()
akira 2:5d8d5291b4cd 76 {
kazushi2008 7:227b64bf8fb1 77 cx = cy = offsety = 0;
akira 2:5d8d5291b4cd 78 device.putc(0x55);// Clear
akira 2:5d8d5291b4cd 79 device.putc(0x02);
akira 2:5d8d5291b4cd 80 device.putc(0x80);
akira 2:5d8d5291b4cd 81 device.putc(0x55);
akira 2:5d8d5291b4cd 82 device.putc(0xD5);
akira 2:5d8d5291b4cd 83 device.putc(0xAA);
akira 2:5d8d5291b4cd 84 }
akira 6:96576c9c7828 85 void scroll(void){
akira 6:96576c9c7828 86
akira 6:96576c9c7828 87 }
akira 6:96576c9c7828 88
akira 6:96576c9c7828 89
akira 6:96576c9c7828 90
akira 4:1f72df1a88e0 91
akira 4:1f72df1a88e0 92 void lcdputs( char data[98],int x,int y)
akira 2:5d8d5291b4cd 93 {
akira 6:96576c9c7828 94 unsigned char s=0;
akira 4:1f72df1a88e0 95 unsigned char x0H;
akira 4:1f72df1a88e0 96 unsigned char x0L;
akira 4:1f72df1a88e0 97 unsigned char y0H;
akira 4:1f72df1a88e0 98 unsigned char y0L;
akira 4:1f72df1a88e0 99 unsigned char datalen;
akira 4:1f72df1a88e0 100 x0H = x >> 8;
akira 4:1f72df1a88e0 101 x0L = x & 0xFF;
akira 4:1f72df1a88e0 102 y0H = y >> 8;
akira 4:1f72df1a88e0 103 y0L = y & 0xFF;
akira 4:1f72df1a88e0 104 datalen = strlen(data)+5;
akira 4:1f72df1a88e0 105 device.putc(0x55);
akira 4:1f72df1a88e0 106 device.putc(datalen);
akira 4:1f72df1a88e0 107 device.putc(0x0B); // command ASCII Print
akira 4:1f72df1a88e0 108 device.putc(x0H); //x upper 8bit
akira 4:1f72df1a88e0 109 device.putc(x0L); //x low 8bit
akira 4:1f72df1a88e0 110 device.putc(y0H); //y upper 8bit
akira 4:1f72df1a88e0 111 device.putc(y0L); //y low 8bit
akira 4:1f72df1a88e0 112 for(int a=0;a<strlen(data);a++)
akira 4:1f72df1a88e0 113 {
akira 4:1f72df1a88e0 114 device.putc(data[a]);
akira 4:1f72df1a88e0 115 s = s+data[a];
akira 4:1f72df1a88e0 116 }
akira 4:1f72df1a88e0 117 s = s+x0H+x0L+y0H+y0L+0x0B;
akira 4:1f72df1a88e0 118 device.putc(s);//sumcheck
akira 3:f5576943e216 119 device.putc(0xAA);
akira 2:5d8d5291b4cd 120 }
akira 2:5d8d5291b4cd 121
akira 2:5d8d5291b4cd 122 void color(int rgb)
akira 2:5d8d5291b4cd 123 {
akira 2:5d8d5291b4cd 124 int c1;
akira 2:5d8d5291b4cd 125 int c2;
akira 2:5d8d5291b4cd 126 int sum;
akira 2:5d8d5291b4cd 127
akira 2:5d8d5291b4cd 128 c1=(rgb >> 8) & 0xff;
akira 2:5d8d5291b4cd 129 c2=(rgb & 0xff);
akira 2:5d8d5291b4cd 130 sum=c1+c2+0x84;
akira 2:5d8d5291b4cd 131 device.putc(0x55);
akira 2:5d8d5291b4cd 132 device.putc(0x03);
akira 2:5d8d5291b4cd 133 device.putc(0x84);
akira 2:5d8d5291b4cd 134 device.putc(c1);
akira 2:5d8d5291b4cd 135 device.putc(c2);
akira 2:5d8d5291b4cd 136 device.putc(sum);
akira 2:5d8d5291b4cd 137 device.putc(0xAA);
akira 2:5d8d5291b4cd 138 }
akira 2:5d8d5291b4cd 139
kazushi2008 8:5b2cbd7120d3 140 void newline(int rgb){
akira 6:96576c9c7828 141 cx = 0;
akira 6:96576c9c7828 142 cy += 16;
akira 6:96576c9c7828 143 if(cy > 160){
akira 6:96576c9c7828 144 scroll();
akira 6:96576c9c7828 145 cy = 0;
kazushi2008 8:5b2cbd7120d3 146 color(rgb);
akira 6:96576c9c7828 147 cls();
akira 6:96576c9c7828 148 color(0xffff);
akira 6:96576c9c7828 149 }
akira 6:96576c9c7828 150 }
akira 6:96576c9c7828 151
kazushi2008 8:5b2cbd7120d3 152 void newline(void){
kazushi2008 8:5b2cbd7120d3 153 newline(0x001f);
kazushi2008 8:5b2cbd7120d3 154 }
kazushi2008 8:5b2cbd7120d3 155
akira 6:96576c9c7828 156 void movecorsor(int a)
akira 6:96576c9c7828 157 {
akira 6:96576c9c7828 158 cx+=8*a;
akira 6:96576c9c7828 159 if(cx>=128) newline();
akira 6:96576c9c7828 160 }
akira 6:96576c9c7828 161
akira 6:96576c9c7828 162
akira 2:5d8d5291b4cd 163 void pixel(int x0,int y0)
akira 2:5d8d5291b4cd 164 {
akira 2:5d8d5291b4cd 165 unsigned char x0H;
akira 2:5d8d5291b4cd 166 unsigned char x0L;
akira 2:5d8d5291b4cd 167 unsigned char y0H;
akira 2:5d8d5291b4cd 168 unsigned char y0L;
akira 2:5d8d5291b4cd 169 unsigned char sum;
akira 2:5d8d5291b4cd 170
akira 2:5d8d5291b4cd 171 x0H = x0 >> 8;
akira 2:5d8d5291b4cd 172 x0L = x0 & 0xFF;
akira 2:5d8d5291b4cd 173 y0H = y0 >> 8;
akira 2:5d8d5291b4cd 174 y0L = y0 & 0xff;
akira 2:5d8d5291b4cd 175
akira 2:5d8d5291b4cd 176 sum = x0H+x0L+y0H+y0L+0x01;
akira 2:5d8d5291b4cd 177 device.putc(0x55);
akira 2:5d8d5291b4cd 178 device.putc(0x05);
akira 2:5d8d5291b4cd 179 device.putc(0x01);//command
akira 2:5d8d5291b4cd 180 device.putc(x0H);
akira 2:5d8d5291b4cd 181 device.putc(x0L);
akira 2:5d8d5291b4cd 182 device.putc(y0H);
akira 2:5d8d5291b4cd 183 device.putc(y0L);
akira 2:5d8d5291b4cd 184 device.putc(sum);
akira 2:5d8d5291b4cd 185 device.putc(0xAA);
akira 2:5d8d5291b4cd 186 }
akira 2:5d8d5291b4cd 187
akira 2:5d8d5291b4cd 188 void box(int x0,int y0,int x1,int y1,int paint)
akira 2:5d8d5291b4cd 189 {
akira 2:5d8d5291b4cd 190 unsigned char x0H;
akira 2:5d8d5291b4cd 191 unsigned char x0L;
akira 2:5d8d5291b4cd 192 unsigned char x1H;
akira 2:5d8d5291b4cd 193 unsigned char x1L;
akira 2:5d8d5291b4cd 194 unsigned char y0H;
akira 2:5d8d5291b4cd 195 unsigned char y0L;
akira 2:5d8d5291b4cd 196 unsigned char y1H;
akira 2:5d8d5291b4cd 197 unsigned char y1L;
akira 2:5d8d5291b4cd 198 unsigned char sum;
akira 2:5d8d5291b4cd 199 unsigned char cmd;
akira 2:5d8d5291b4cd 200 switch (paint)
akira 2:5d8d5291b4cd 201 {
akira 2:5d8d5291b4cd 202 case 1:
akira 2:5d8d5291b4cd 203 cmd = 0x04;
akira 2:5d8d5291b4cd 204 break;
akira 2:5d8d5291b4cd 205 default:
akira 2:5d8d5291b4cd 206 cmd =0x03;
akira 2:5d8d5291b4cd 207 break;
akira 2:5d8d5291b4cd 208 }
akira 2:5d8d5291b4cd 209 x0H = x0 >> 8;
akira 2:5d8d5291b4cd 210 x0L = x0 & 0xFF;
akira 2:5d8d5291b4cd 211 y0H = y0 >> 8;
akira 2:5d8d5291b4cd 212 y0L = y0 & 0xff;
akira 2:5d8d5291b4cd 213 x1H = x1 >> 8;
akira 2:5d8d5291b4cd 214 x1L = x1 & 0xFF;
akira 2:5d8d5291b4cd 215 y1H = y1 >> 8;
akira 2:5d8d5291b4cd 216 y1L = y1 & 0xff;
akira 2:5d8d5291b4cd 217 sum = x0H+x0L+y0H+y0L+x1H+x1L+y1H+y1L+cmd;
akira 2:5d8d5291b4cd 218 device.putc(0x55);//Box
akira 2:5d8d5291b4cd 219 device.putc(0x09);
akira 2:5d8d5291b4cd 220 device.putc(cmd);//command
akira 2:5d8d5291b4cd 221 device.putc(x0H);
akira 2:5d8d5291b4cd 222 device.putc(x0L);
akira 2:5d8d5291b4cd 223 device.putc(y0H);
akira 2:5d8d5291b4cd 224 device.putc(y0L);
akira 2:5d8d5291b4cd 225 device.putc(x1H);
akira 2:5d8d5291b4cd 226 device.putc(x1L);
akira 2:5d8d5291b4cd 227 device.putc(y1H);
akira 2:5d8d5291b4cd 228 device.putc(y1L);
akira 2:5d8d5291b4cd 229 device.putc(sum);
akira 2:5d8d5291b4cd 230 device.putc(0xAA);
akira 2:5d8d5291b4cd 231 }
akira 2:5d8d5291b4cd 232
akira 2:5d8d5291b4cd 233 void circle(int x0,int y0,int r,int paint)
akira 2:5d8d5291b4cd 234 {
akira 2:5d8d5291b4cd 235 unsigned char x0H;
akira 2:5d8d5291b4cd 236 unsigned char x0L;
akira 2:5d8d5291b4cd 237 unsigned char y0H;
akira 2:5d8d5291b4cd 238 unsigned char y0L;
akira 2:5d8d5291b4cd 239 unsigned char rH;
akira 2:5d8d5291b4cd 240 unsigned char rL;
akira 2:5d8d5291b4cd 241 unsigned char sum;
akira 2:5d8d5291b4cd 242 unsigned char cmd;
akira 2:5d8d5291b4cd 243 switch (paint)
akira 2:5d8d5291b4cd 244 {
akira 2:5d8d5291b4cd 245 case 0:
akira 2:5d8d5291b4cd 246 cmd = 0x05;
akira 2:5d8d5291b4cd 247 break;
akira 2:5d8d5291b4cd 248 case 1:
akira 2:5d8d5291b4cd 249 cmd = 0x06;
akira 2:5d8d5291b4cd 250 break;
akira 2:5d8d5291b4cd 251 default:
akira 2:5d8d5291b4cd 252 cmd =0x05;
akira 2:5d8d5291b4cd 253 break;
akira 2:5d8d5291b4cd 254 }
akira 2:5d8d5291b4cd 255 x0H = x0 >> 8;
akira 2:5d8d5291b4cd 256 x0L = x0 & 0xFF;
akira 2:5d8d5291b4cd 257 y0H = y0 >> 8;
akira 2:5d8d5291b4cd 258 y0L = y0 & 0xff;
akira 2:5d8d5291b4cd 259 rH = r >> 8;
akira 2:5d8d5291b4cd 260 rL = r & 0xFF;
akira 2:5d8d5291b4cd 261 sum = x0H+x0L+y0H+y0L+rH+rL+cmd;
akira 2:5d8d5291b4cd 262 device.putc(0x55);
akira 2:5d8d5291b4cd 263 device.putc(0x07);
akira 2:5d8d5291b4cd 264 device.putc(cmd);//command
akira 2:5d8d5291b4cd 265 device.putc(x0H);
akira 2:5d8d5291b4cd 266 device.putc(x0L);
akira 2:5d8d5291b4cd 267 device.putc(y0H);
akira 2:5d8d5291b4cd 268 device.putc(y0L);
akira 2:5d8d5291b4cd 269 device.putc(rH);
akira 2:5d8d5291b4cd 270 device.putc(rL);
akira 2:5d8d5291b4cd 271 device.putc(sum);
akira 2:5d8d5291b4cd 272 device.putc(0xAA);
akira 2:5d8d5291b4cd 273 }
akira 2:5d8d5291b4cd 274
akira 2:5d8d5291b4cd 275 void line(int x0,int y0,int x1,int y1)
akira 2:5d8d5291b4cd 276 {
akira 2:5d8d5291b4cd 277 unsigned char x0H;
akira 2:5d8d5291b4cd 278 unsigned char x0L;
akira 2:5d8d5291b4cd 279 unsigned char x1H;
akira 2:5d8d5291b4cd 280 unsigned char x1L;
akira 2:5d8d5291b4cd 281 unsigned char y0H;
akira 2:5d8d5291b4cd 282 unsigned char y0L;
akira 2:5d8d5291b4cd 283 unsigned char y1H;
akira 2:5d8d5291b4cd 284 unsigned char y1L;
akira 2:5d8d5291b4cd 285 unsigned char sum;
akira 2:5d8d5291b4cd 286
akira 2:5d8d5291b4cd 287 x0H = x0 >> 8;
akira 2:5d8d5291b4cd 288 x0L = x0 & 0xFF;
akira 2:5d8d5291b4cd 289 y0H = y0 >> 8;
akira 2:5d8d5291b4cd 290 y0L = y0 & 0xff;
akira 2:5d8d5291b4cd 291 x1H = x1 >> 8;
akira 2:5d8d5291b4cd 292 x1L = x1 & 0xFF;
akira 2:5d8d5291b4cd 293 y1H = y1 >> 8;
akira 2:5d8d5291b4cd 294 y1L = y1 & 0xff;
akira 2:5d8d5291b4cd 295 sum = x0H+x0L+y0H+y0L+x1H+x1L+y1H+y1L+02;
akira 2:5d8d5291b4cd 296 device.putc(0x55);
akira 2:5d8d5291b4cd 297 device.putc(0x09);
akira 2:5d8d5291b4cd 298 device.putc(0x02);//command
akira 2:5d8d5291b4cd 299 device.putc(x0H);
akira 2:5d8d5291b4cd 300 device.putc(x0L);
akira 2:5d8d5291b4cd 301 device.putc(y0H);
akira 2:5d8d5291b4cd 302 device.putc(y0L);
akira 2:5d8d5291b4cd 303 device.putc(x1H);
akira 2:5d8d5291b4cd 304 device.putc(x1L);
akira 2:5d8d5291b4cd 305 device.putc(y1H);
akira 2:5d8d5291b4cd 306 device.putc(y1L);
akira 2:5d8d5291b4cd 307 device.putc(sum);
akira 2:5d8d5291b4cd 308 device.putc(0xAA);
akira 2:5d8d5291b4cd 309 }
akira 4:1f72df1a88e0 310 void lcdput(unsigned char data,int x,int y)
akira 2:5d8d5291b4cd 311 {
akira 2:5d8d5291b4cd 312 unsigned char s;
akira 2:5d8d5291b4cd 313 unsigned char x0H;
akira 2:5d8d5291b4cd 314 unsigned char x0L;
akira 2:5d8d5291b4cd 315 unsigned char y0H;
akira 2:5d8d5291b4cd 316 unsigned char y0L;
akira 2:5d8d5291b4cd 317 unsigned char datalen;
akira 2:5d8d5291b4cd 318 x0H = x >> 8;
akira 2:5d8d5291b4cd 319 x0L = x & 0xFF;
akira 2:5d8d5291b4cd 320 y0H = y >> 8;
akira 2:5d8d5291b4cd 321 y0L = y & 0xFF;
akira 4:1f72df1a88e0 322 datalen = 6;
akira 2:5d8d5291b4cd 323 device.putc(0x55);
akira 2:5d8d5291b4cd 324 device.putc(datalen);
akira 2:5d8d5291b4cd 325 device.putc(0x0B); // command ASCII Print
akira 2:5d8d5291b4cd 326 device.putc(x0H); //x upper 8bit
akira 2:5d8d5291b4cd 327 device.putc(x0L); //x low 8bit
akira 2:5d8d5291b4cd 328 device.putc(y0H); //y upper 8bit
akira 2:5d8d5291b4cd 329 device.putc(y0L); //y low 8bit
akira 4:1f72df1a88e0 330 device.putc(data);
akira 4:1f72df1a88e0 331 s = data+x0H+x0L+y0H+y0L+0x0B;
akira 2:5d8d5291b4cd 332 device.putc(s);//sumcheck
akira 2:5d8d5291b4cd 333 device.putc(0xAA);
akira 4:1f72df1a88e0 334 }
akira 4:1f72df1a88e0 335
akira 4:1f72df1a88e0 336
akira 6:96576c9c7828 337
akira 6:96576c9c7828 338 void kanji_init(){
akira 6:96576c9c7828 339 //move cursor
akira 6:96576c9c7828 340 fp = fopen(kanji_file , "r");
akira 6:96576c9c7828 341
akira 6:96576c9c7828 342
akira 6:96576c9c7828 343 if(!fp) {
akira 6:96576c9c7828 344 printf("File could not be opened!\n");
akira 6:96576c9c7828 345 exit(1);
akira 6:96576c9c7828 346 }
akira 6:96576c9c7828 347
akira 6:96576c9c7828 348 fgets(Identifier, 6+1, fp); // FONTX2
akira 6:96576c9c7828 349 fgets(FontName, 8+1, fp);
akira 6:96576c9c7828 350 fread(&XSize, 1, 1, fp);
akira 6:96576c9c7828 351 fread(&YSize, 1, 1, fp);
akira 6:96576c9c7828 352 fread(&CodeType, 1, 1, fp);
akira 6:96576c9c7828 353 fread(&Tnum, 1, 1, fp);
akira 6:96576c9c7828 354
akira 6:96576c9c7828 355 // Table read
akira 6:96576c9c7828 356 for(int a=0;a< Tnum ;a++){
akira 6:96576c9c7828 357 fread(&start[a],1,2,fp);
akira 6:96576c9c7828 358 fread(&end[a] ,1,2,fp);
akira 6:96576c9c7828 359 }
akira 6:96576c9c7828 360 }
akira 6:96576c9c7828 361
akira 6:96576c9c7828 362 //Kanji puts cr = kanji cord
akira 6:96576c9c7828 363 void k_puts(int cr){
akira 6:96576c9c7828 364 //kanji address
akira 6:96576c9c7828 365 int c;
akira 6:96576c9c7828 366 int adrs;
akira 6:96576c9c7828 367 c=0;
akira 6:96576c9c7828 368 adrs=0;
akira 6:96576c9c7828 369 while(cr>start[c]){
akira 6:96576c9c7828 370 if(cr > end[c]){
akira 6:96576c9c7828 371 adrs += end[c]-start[c]+1;
akira 6:96576c9c7828 372 }
akira 6:96576c9c7828 373 else{
akira 6:96576c9c7828 374 adrs += cr - start[c];
akira 6:96576c9c7828 375 }
akira 6:96576c9c7828 376 c++;
akira 6:96576c9c7828 377 }
akira 6:96576c9c7828 378 c--;
akira 6:96576c9c7828 379 //printf("C=%d,adrs=%d cr=%X ",c,adrs,cr);
akira 6:96576c9c7828 380 // Kanji image Read
akira 6:96576c9c7828 381 fseek( fp, Tnum*4+18+32*adrs, SEEK_SET );
akira 6:96576c9c7828 382 fread(&font,1,32,fp);
akira 6:96576c9c7828 383 // kanji put
akira 6:96576c9c7828 384 c=0;
akira 6:96576c9c7828 385 for (int y=0;y<16;y++){
akira 6:96576c9c7828 386 for (int x=0;x<8;x++){
akira 6:96576c9c7828 387 if((font[c] & 0x80)==0x80){
akira 6:96576c9c7828 388 pixel(cx+x,cy+y);
akira 6:96576c9c7828 389 }
akira 6:96576c9c7828 390 font[c] = font[c] << 1;
akira 6:96576c9c7828 391 if((font[c+1] & 0x80)==0x80){
akira 6:96576c9c7828 392 pixel(cx+x+8,cy+y);
akira 6:96576c9c7828 393 }
akira 6:96576c9c7828 394 font[c+1] = font[c+1] << 1;
akira 6:96576c9c7828 395 }
akira 6:96576c9c7828 396 c+=2;
akira 6:96576c9c7828 397 }
akira 6:96576c9c7828 398 //move cursor
akira 6:96576c9c7828 399 cx+=16;
akira 6:96576c9c7828 400 if(cx>=128){ //LF control
akira 6:96576c9c7828 401 cx=0;
akira 6:96576c9c7828 402 cy+=16;
akira 6:96576c9c7828 403 }
akira 6:96576c9c7828 404 }
akira 6:96576c9c7828 405
akira 6:96576c9c7828 406 void kanji_end(){
akira 6:96576c9c7828 407 fclose(fp);
akira 6:96576c9c7828 408 }
akira 6:96576c9c7828 409
akira 6:96576c9c7828 410 void drawc(unsigned char c){
akira 6:96576c9c7828 411 if(kstate){ // 2nd byte of shift-jis
akira 6:96576c9c7828 412 kstate = false;
akira 6:96576c9c7828 413
akira 6:96576c9c7828 414 k_puts(kbuf << 8 | c);
akira 6:96576c9c7828 415 } else if((0x81 <= c && c <= 0x9f) || (0xe0 <= c && c <= 0xfc)){ // 1st byte of shift-jis
akira 6:96576c9c7828 416 kstate = true;
akira 6:96576c9c7828 417 kbuf = c;
akira 6:96576c9c7828 418 } else { // Ascii Out
akira 6:96576c9c7828 419 lcdput(c,cx,cy);
akira 6:96576c9c7828 420 movecorsor(1); // 1byte Move
akira 6:96576c9c7828 421 }
akira 6:96576c9c7828 422 }
akira 6:96576c9c7828 423
akira 6:96576c9c7828 424
akira 4:1f72df1a88e0 425 void s_Lcdinit()
akira 4:1f72df1a88e0 426 {
akira 4:1f72df1a88e0 427 // device.baud(9600);
akira 4:1f72df1a88e0 428 rst = 0; //Reset
akira 4:1f72df1a88e0 429 wait(0.1);
akira 4:1f72df1a88e0 430 rst = 1;
akira 4:1f72df1a88e0 431 wait(0.1);
akira 4:1f72df1a88e0 432 lcdspeed();//speed 115200
akira 4:1f72df1a88e0 433 wait(0.1);
akira 4:1f72df1a88e0 434 device.baud(115200);
akira 4:1f72df1a88e0 435 device.putc(0x55);//Back light On
akira 4:1f72df1a88e0 436 device.putc(0x03);
akira 4:1f72df1a88e0 437 device.putc(0x89);
akira 4:1f72df1a88e0 438 device.putc(0x01);
akira 4:1f72df1a88e0 439 device.putc(0x2C);
akira 4:1f72df1a88e0 440 device.putc(0xB6);
akira 4:1f72df1a88e0 441 device.putc(0xAA);
akira 6:96576c9c7828 442 bmp(0,0,1);
akira 6:96576c9c7828 443 lcdputs(" GingaX ",20,140);
akira 6:96576c9c7828 444 wait(3);
akira 6:96576c9c7828 445 bmp(0,0,0);
akira 6:96576c9c7828 446 wait(3);
akira 4:1f72df1a88e0 447 cls();
akira 6:96576c9c7828 448 color(0xffff);
akira 6:96576c9c7828 449 kanji_init();
akira 4:1f72df1a88e0 450 }
akira 4:1f72df1a88e0 451