Graphic OLED 100x16 pixels interface

Dependents:   mbed_nicovideo_search_api mbed_recent_nicovideo_display_pub

/media/uploads/va009039/graphicoled_1.jpg

Committer:
va009039
Date:
Mon Aug 04 06:17:36 2014 +0000
Revision:
2:337a2655f815
Parent:
1:a104653979bf
Child:
3:a6650dd2dbc8
remove Text LCD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 0:67d983a1ed3e 1 // GraphicOLED.h
va009039 2:337a2655f815 2 #pragma once
va009039 2:337a2655f815 3
va009039 2:337a2655f815 4 #include "mbed.h"
va009039 0:67d983a1ed3e 5
va009039 0:67d983a1ed3e 6 #define iskanji(c) ((c)>=0x81 && (c)<=0x9F || (c)>=0xE0 && (c)<=0xFC)
va009039 0:67d983a1ed3e 7 #define iskanji2(c) ((c)>=0x40 && (c)<=0xFC && (c)!=0x7F)
va009039 0:67d983a1ed3e 8
va009039 1:a104653979bf 9 /** GraphicOLED interface for WS0010
va009039 1:a104653979bf 10 *
va009039 2:337a2655f815 11 * Currently support UTF-8 KANJI(misaki font)
va009039 1:a104653979bf 12 *
va009039 1:a104653979bf 13 * @code
va009039 1:a104653979bf 14 * #include "mbed.h"
va009039 1:a104653979bf 15 * #include "GraphicOLED.h"
va009039 1:a104653979bf 16 *
va009039 1:a104653979bf 17 * GraphicOLED oled(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7
va009039 1:a104653979bf 18 *
va009039 1:a104653979bf 19 * int main() {
va009039 1:a104653979bf 20 * oled.printf("Hello World!\n");
va009039 1:a104653979bf 21 * }
va009039 1:a104653979bf 22 * @endcode
va009039 1:a104653979bf 23 */
va009039 2:337a2655f815 24 class GraphicOLED : public Stream {
va009039 0:67d983a1ed3e 25 public:
va009039 1:a104653979bf 26 /** Create a GraphicOLED interface
va009039 1:a104653979bf 27 *
va009039 1:a104653979bf 28 * @param rs Instruction/data control line
va009039 1:a104653979bf 29 * @param e Enable line (clock)
va009039 1:a104653979bf 30 * @param d4-d7 Data lines for using as a 4-bit interface
va009039 1:a104653979bf 31 */
va009039 1:a104653979bf 32 GraphicOLED(PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7);
va009039 2:337a2655f815 33
va009039 2:337a2655f815 34 #if DOXYGEN_ONLY
va009039 2:337a2655f815 35 /** Write a character to the LCD
va009039 2:337a2655f815 36 *
va009039 2:337a2655f815 37 * @param c The character to write to the display
va009039 2:337a2655f815 38 */
va009039 2:337a2655f815 39 int putc(int c);
va009039 2:337a2655f815 40
va009039 2:337a2655f815 41 /** Write a formated string to the LCD
va009039 2:337a2655f815 42 *
va009039 2:337a2655f815 43 * @param format A printf-style format string, followed by the
va009039 2:337a2655f815 44 * variables to use in formating the string.
va009039 2:337a2655f815 45 */
va009039 2:337a2655f815 46 int printf(const char* format, ...);
va009039 2:337a2655f815 47 #endif
va009039 2:337a2655f815 48
va009039 2:337a2655f815 49 /** Locate to a screen column and row
va009039 2:337a2655f815 50 *
va009039 2:337a2655f815 51 * @param column The horizontal position from the left, indexed from 0
va009039 2:337a2655f815 52 * @param row The vertical position from the top, indexed from 0
va009039 2:337a2655f815 53 */
va009039 2:337a2655f815 54 void locate(int column, int row);
va009039 2:337a2655f815 55
va009039 2:337a2655f815 56 /** Clear the screen and locate to 0,0 */
va009039 0:67d983a1ed3e 57 void cls();
va009039 2:337a2655f815 58
va009039 2:337a2655f815 59 int rows();
va009039 0:67d983a1ed3e 60 int columns();
va009039 2:337a2655f815 61
va009039 2:337a2655f815 62 void g_write(uint8_t pat, int x, int y);
va009039 2:337a2655f815 63 void g_write(uint8_t *buf, int len, int x, int y);
va009039 2:337a2655f815 64
va009039 2:337a2655f815 65 private:
va009039 0:67d983a1ed3e 66 void character2(int column, int row, int c);
va009039 0:67d983a1ed3e 67 bool _kanji_flag;
va009039 0:67d983a1ed3e 68 int _kanji_1st;
va009039 2:337a2655f815 69
va009039 2:337a2655f815 70 // Stream implementation functions
va009039 2:337a2655f815 71 virtual int _putc(int value);
va009039 2:337a2655f815 72 virtual int _getc();
va009039 2:337a2655f815 73
va009039 2:337a2655f815 74 int address(int column, int row);
va009039 2:337a2655f815 75 void character(int column, int row, int c);
va009039 2:337a2655f815 76 void writeByte(uint8_t value);
va009039 2:337a2655f815 77 void writeCommand(uint8_t command);
va009039 2:337a2655f815 78 void writeData(uint8_t data);
va009039 2:337a2655f815 79
va009039 2:337a2655f815 80 DigitalOut _rs, _e;
va009039 2:337a2655f815 81 BusOut _d;
va009039 2:337a2655f815 82
va009039 2:337a2655f815 83 int _column;
va009039 2:337a2655f815 84 int _row;
va009039 0:67d983a1ed3e 85 };
va009039 2:337a2655f815 86