Add support JIS X 0201.

Fork of GT20L16J1Y_font by Toyomasa Watarai

Committer:
MACRUM
Date:
Thu Sep 04 06:54:40 2014 +0000
Revision:
2:aed20a7685b9
Parent:
0:61b32e34bcbf
Child:
3:48c4a173bdab
Added read_kuten() function to support kuten code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:61b32e34bcbf 1 #include "mbed.h"
MACRUM 0:61b32e34bcbf 2 #include "GT20L16J1Y_font.h"
MACRUM 0:61b32e34bcbf 3
MACRUM 2:aed20a7685b9 4 #if defined(TARGET_LPC1768)
MACRUM 0:61b32e34bcbf 5 GT20L16J1Y_FONT::GT20L16J1Y_FONT() : _spi(p11, p12, p13), _CS(p10) {
MACRUM 0:61b32e34bcbf 6 }
MACRUM 2:aed20a7685b9 7 #endif
MACRUM 0:61b32e34bcbf 8
MACRUM 2:aed20a7685b9 9 GT20L16J1Y_FONT::GT20L16J1Y_FONT(PinName mosi, PinName miso, PinName sclk, PinName cs) : _spi(mosi, miso, sclk, NC), _CS(cs)
MACRUM 2:aed20a7685b9 10 {
MACRUM 2:aed20a7685b9 11 // Setup the spi for 8 bit data, high steady state clock
MACRUM 2:aed20a7685b9 12 _spi.format(8,3);
MACRUM 2:aed20a7685b9 13 _spi.frequency(10000000);
MACRUM 2:aed20a7685b9 14 }
MACRUM 2:aed20a7685b9 15
MACRUM 2:aed20a7685b9 16 int GT20L16J1Y_FONT::read_kuten(unsigned short code) {
MACRUM 2:aed20a7685b9 17 unsigned char MSB, LSB;
MACRUM 2:aed20a7685b9 18 uint32_t address;
MACRUM 2:aed20a7685b9 19 int ret;
MACRUM 0:61b32e34bcbf 20
MACRUM 2:aed20a7685b9 21 MSB = (code & 0xFF00) >> 8;
MACRUM 2:aed20a7685b9 22 LSB = code & 0x00FF;
MACRUM 0:61b32e34bcbf 23 address = 0;
MACRUM 0:61b32e34bcbf 24
MACRUM 0:61b32e34bcbf 25 if( MSB >= 1 && MSB <= 15 && LSB >= 1 && LSB <= 94)
MACRUM 0:61b32e34bcbf 26 address =( (MSB - 1) * 94 + (LSB - 1))*32;
MACRUM 0:61b32e34bcbf 27 else if(MSB >= 16 && MSB <= 47 && LSB >= 1 && LSB <= 94)
MACRUM 0:61b32e34bcbf 28 address =( (MSB - 16) * 94 + (LSB - 1))*32 + 0x0AA40L;
MACRUM 0:61b32e34bcbf 29 else if(MSB >= 48 && MSB <= 84 && LSB >= 1 && LSB <= 94)
MACRUM 0:61b32e34bcbf 30 address = ((MSB - 48) * 94 + (LSB - 1))*32 + 0x21CDFL;
MACRUM 0:61b32e34bcbf 31 else if(MSB == 85 && LSB >= 1 && LSB <= 94)
MACRUM 0:61b32e34bcbf 32 address = ((MSB - 85) * 94 + (LSB - 1))*32 + 0x3C4A0L;
MACRUM 0:61b32e34bcbf 33 else if(MSB >= 88 && MSB <= 89 && LSB >= 1 && LSB <= 94)
MACRUM 0:61b32e34bcbf 34 address = ((MSB - 88) * 94 + (LSB - 1))*32 + 0x3D060L;
MACRUM 2:aed20a7685b9 35 else if(MSB == 0 && LSB >= 0x20 && LSB <= 0x7F)
MACRUM 2:aed20a7685b9 36 address = (LSB - 0x20)*16 + 255968;
MACRUM 0:61b32e34bcbf 37
MACRUM 0:61b32e34bcbf 38 // Deselect the device
MACRUM 0:61b32e34bcbf 39 _CS = 1;
MACRUM 0:61b32e34bcbf 40
MACRUM 0:61b32e34bcbf 41 // Select the device by seting chip select low
MACRUM 0:61b32e34bcbf 42 _CS = 0;
MACRUM 0:61b32e34bcbf 43 _spi.write(0x03); // Read data byte
MACRUM 0:61b32e34bcbf 44 _spi.write(address>>16 & 0xff);
MACRUM 0:61b32e34bcbf 45 _spi.write(address>>8 & 0xff);
MACRUM 0:61b32e34bcbf 46 _spi.write(address & 0xff);
MACRUM 0:61b32e34bcbf 47
MACRUM 2:aed20a7685b9 48 if(MSB == 0 && LSB >= 0x20 && LSB <= 0x7F) {
MACRUM 2:aed20a7685b9 49 for(int i=0; i<16; i++)
MACRUM 2:aed20a7685b9 50 {
MACRUM 2:aed20a7685b9 51 bitmap[i] = _spi.write(0x00);
MACRUM 2:aed20a7685b9 52 }
MACRUM 2:aed20a7685b9 53 ret = 8;
MACRUM 2:aed20a7685b9 54 }
MACRUM 2:aed20a7685b9 55 else {
MACRUM 2:aed20a7685b9 56 for(int i=0; i<32; i++)
MACRUM 2:aed20a7685b9 57 {
MACRUM 2:aed20a7685b9 58 bitmap[i] = _spi.write(0x00);
MACRUM 2:aed20a7685b9 59 }
MACRUM 2:aed20a7685b9 60 ret = 16;
MACRUM 0:61b32e34bcbf 61 }
MACRUM 0:61b32e34bcbf 62
MACRUM 0:61b32e34bcbf 63 // Deselect the device
MACRUM 0:61b32e34bcbf 64 _CS = 1;
MACRUM 2:aed20a7685b9 65
MACRUM 2:aed20a7685b9 66 return ret;
MACRUM 0:61b32e34bcbf 67 }
MACRUM 2:aed20a7685b9 68
MACRUM 2:aed20a7685b9 69 void GT20L16J1Y_FONT::read(unsigned short code) {
MACRUM 2:aed20a7685b9 70 unsigned char c1, c2, MSB, LSB;
MACRUM 2:aed20a7685b9 71 uint32_t seq;
MACRUM 2:aed20a7685b9 72 uint16_t address;
MACRUM 2:aed20a7685b9 73
MACRUM 2:aed20a7685b9 74 // SJIS to kuten code conversion
MACRUM 2:aed20a7685b9 75 c1 = (code>>8);
MACRUM 2:aed20a7685b9 76 c2 = (code & 0xFF);
MACRUM 2:aed20a7685b9 77 seq = (c1<=159 ? c1-129 : c1-193)*188 + (c2<=126 ? c2-64 : c2-65);
MACRUM 2:aed20a7685b9 78 MSB = seq / 94 + 1;
MACRUM 2:aed20a7685b9 79 LSB = seq % 94 + 1;
MACRUM 2:aed20a7685b9 80
MACRUM 2:aed20a7685b9 81 address = ((MSB << 8) | LSB);
MACRUM 2:aed20a7685b9 82 read_kuten(address);
MACRUM 2:aed20a7685b9 83 }