GT20L16J1Y 16x16 Japanese font ROM access library
Dependents: UTF-8_test hello_GT20L16J1Y_FONT GSDPlayer Nucleo_AQM1248A ... more
GT20L16Y1J_font.cpp@2:aed20a7685b9, 2014-09-04 (annotated)
- Committer:
- MACRUM
- Date:
- Thu Sep 04 06:54:40 2014 +0000
- Revision:
- 2:aed20a7685b9
- Parent:
- 0:61b32e34bcbf
Added read_kuten() function to support kuten code
Who changed what in which revision?
User | Revision | Line number | New 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 | } |