Add support JIS X 0201.
Fork of GT20L16J1Y_font by
Revision 0:61b32e34bcbf, committed 2014-01-14
- Comitter:
- MACRUM
- Date:
- Tue Jan 14 07:36:32 2014 +0000
- Child:
- 1:cacab63ea210
- Commit message:
- Initial release of GT20L16J1Y_font library
Changed in this revision
| GT20L16J1Y_font.h | Show annotated file Show diff for this revision Revisions of this file |
| GT20L16Y1J_font.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GT20L16J1Y_font.h Tue Jan 14 07:36:32 2014 +0000
@@ -0,0 +1,28 @@
+#include "mbed.h"
+
+class GT20L16J1Y_FONT {
+ public:
+ GT20L16J1Y_FONT();
+ virtual ~GT20L16J1Y_FONT() {};
+
+ /** Create a GT20L16J1Y font ROM connected to the specified pins
+ *
+ * @param mosi Serial data output pin to connect to
+ * @param moso Serial data input pin to connect to
+ * @param sclk Serial clock input pin to connect to
+ * @param cs Chip enable input pin to connect to
+ */
+ GT20L16J1Y_FONT(PinName mosi, PinName miso, PinName sclk, PinName cs) : _spi(mosi, miso, sclk), _CS(cs) {};
+
+ /** Read font data from SJIS code
+ *
+ * @param code Japanese Kanji font code (Shift JIS code)
+ */
+ void read(unsigned short code);
+
+ unsigned char bitmap[32];
+
+ private:
+ SPI _spi;
+ DigitalOut _CS;
+};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GT20L16Y1J_font.cpp Tue Jan 14 07:36:32 2014 +0000
@@ -0,0 +1,52 @@
+#include "mbed.h"
+#include "GT20L16J1Y_font.h"
+
+GT20L16J1Y_FONT::GT20L16J1Y_FONT() : _spi(p11, p12, p13), _CS(p10) {
+}
+
+void GT20L16J1Y_FONT::read(unsigned short code) {
+ unsigned char c1, c2, MSB,LSB;
+ uint32_t address, seq;
+
+ // SJIS to kuten code conversion
+ c1 = (code>>8);
+ c2 = (code & 0xFF);
+ seq = (c1<=159 ? c1-129 : c1-193)*188 + (c2<=126 ? c2-64 : c2-65);
+ MSB = seq / 94 + 1;
+ LSB = seq % 94 + 1;
+ address = 0;
+
+ if( MSB >= 1 && MSB <= 15 && LSB >= 1 && LSB <= 94)
+ address =( (MSB - 1) * 94 + (LSB - 1))*32;
+ else if(MSB >= 16 && MSB <= 47 && LSB >= 1 && LSB <= 94)
+ address =( (MSB - 16) * 94 + (LSB - 1))*32 + 0x0AA40L;
+ else if(MSB >= 48 && MSB <= 84 && LSB >= 1 && LSB <= 94)
+ address = ((MSB - 48) * 94 + (LSB - 1))*32 + 0x21CDFL;
+ else if(MSB == 85 && LSB >= 1 && LSB <= 94)
+ address = ((MSB - 85) * 94 + (LSB - 1))*32 + 0x3C4A0L;
+ else if(MSB >= 88 && MSB <= 89 && LSB >= 1 && LSB <= 94)
+ address = ((MSB - 88) * 94 + (LSB - 1))*32 + 0x3D060L;
+
+ // Deselect the device
+ _CS = 1;
+
+ // Setup the spi for 8 bit data, high steady state clock
+ _spi.format(8,3);
+ _spi.frequency(1000000);
+
+ // Select the device by seting chip select low
+ _CS = 0;
+ _spi.write(0x03); // Read data byte
+ _spi.write(address>>16 & 0xff);
+ _spi.write(address>>8 & 0xff);
+ _spi.write(address & 0xff);
+
+ // Send a dummy byte to receive the contents of the WHOAMI register
+ for(int i=0; i<32; i++)
+ {
+ bitmap[i] = _spi.write(0x00);
+ }
+
+ // Deselect the device
+ _CS = 1;
+}
ban4jp -
