E-Paper Device (EPD) based MiniNote module, powered by mbed on LPC1114FBD48. Shared in public domain with enclosure in 3D step format, hardware interface compatible with microBUS interface. Anyone can contribute on this project.

Dependencies:   mbed _24LCXXX

E-Badge MiniNote Project on mbed/NXP LPC1114 platform

Committer:
allankliu
Date:
Mon Jun 09 11:01:38 2014 +0000
Revision:
2:bb9f154ea2f4
Parent:
0:33994cfad0c2
Child:
3:1fa000d4da94
Fixed software SPI, reduce memory usage with 1K5 framebuffer and lightweight I2C NVMEM _24LCXXX lib.The code can be fited into LPC1114/2xx devices.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
allankliu 0:33994cfad0c2 1 #ifndef __SSD1606_H__
allankliu 0:33994cfad0c2 2 #define __SSD1606_H__
allankliu 0:33994cfad0c2 3
allankliu 2:bb9f154ea2f4 4 #include "mbed.h"
allankliu 2:bb9f154ea2f4 5 #define MODE1
allankliu 2:bb9f154ea2f4 6
allankliu 2:bb9f154ea2f4 7 #define IRAM_8KB 0
allankliu 2:bb9f154ea2f4 8 #define BPP_2bit 1
allankliu 2:bb9f154ea2f4 9
allankliu 2:bb9f154ea2f4 10 #define INT_FB_3K 0
allankliu 2:bb9f154ea2f4 11 #define INT_FB_1K 0
allankliu 2:bb9f154ea2f4 12 #define EXT_FB_3K 1
allankliu 2:bb9f154ea2f4 13
allankliu 2:bb9f154ea2f4 14 /*
allankliu 2:bb9f154ea2f4 15 The width/height parameters depend on different vendor. The max is 180x128
allankliu 2:bb9f154ea2f4 16 http://www.solomon-systech.com.cn/cn/product/advanced-display/bistable-display-driver-controller/
allankliu 2:bb9f154ea2f4 17 */
allankliu 2:bb9f154ea2f4 18 #define SSD1606_LCDWIDTH 172
allankliu 2:bb9f154ea2f4 19 #define SSD1606_LCDHEIGHT 72
allankliu 2:bb9f154ea2f4 20 #define SSD1606_GREYLEVEL 2
allankliu 2:bb9f154ea2f4 21
allankliu 2:bb9f154ea2f4 22 #define FRAMEBUF_SIZE_1bpp (SSD1606_LCDWIDTH * SSD1606_LCDHEIGHT / 8)
allankliu 2:bb9f154ea2f4 23 #define FRAMEBUF_SIZE_2bpp (SSD1606_LCDWIDTH * SSD1606_LCDHEIGHT * SSD1606_GREYLEVEL / 8)
allankliu 2:bb9f154ea2f4 24
allankliu 2:bb9f154ea2f4 25 #define FRAMEBUF_SIZE FRAMEBUF_SIZE_1bpp
allankliu 2:bb9f154ea2f4 26
allankliu 2:bb9f154ea2f4 27 #define PIC_ONE 1
allankliu 2:bb9f154ea2f4 28 #define PIC_NOKIA 2
allankliu 2:bb9f154ea2f4 29 #define PIC_SUNING 3
allankliu 2:bb9f154ea2f4 30 #define PIC_SHOUSI 4
allankliu 2:bb9f154ea2f4 31 #define PIC_BAZHE 5
allankliu 2:bb9f154ea2f4 32 #define PIC_CHESSBOARD 6
allankliu 2:bb9f154ea2f4 33 #define PIC_JIFEN 7
allankliu 2:bb9f154ea2f4 34 #define PIC_FU 8
allankliu 2:bb9f154ea2f4 35 #define PIC_GC4 9
allankliu 2:bb9f154ea2f4 36 #define PIC_SAVE 10
allankliu 2:bb9f154ea2f4 37 #define PIC_GL1 20
allankliu 2:bb9f154ea2f4 38 #define PIC_GL2 21
allankliu 2:bb9f154ea2f4 39 #define PIC_BLACK 22
allankliu 2:bb9f154ea2f4 40 #define PIC_WHITE 23
allankliu 2:bb9f154ea2f4 41
allankliu 2:bb9f154ea2f4 42 #define TEST_GREY1 1
allankliu 2:bb9f154ea2f4 43 #define TEST_GREY2 2
allankliu 2:bb9f154ea2f4 44 #define TEST_BLK 3
allankliu 2:bb9f154ea2f4 45 #define TEST_WHT 4
allankliu 2:bb9f154ea2f4 46 #define TEST_HALF 5
allankliu 2:bb9f154ea2f4 47 #define TEST_STRIP1 6
allankliu 2:bb9f154ea2f4 48 #define TEST_STRIP2 7
allankliu 2:bb9f154ea2f4 49
allankliu 2:bb9f154ea2f4 50 #define SPI_BUS_DELAY 10
allankliu 2:bb9f154ea2f4 51
allankliu 0:33994cfad0c2 52 class SSD1606
allankliu 0:33994cfad0c2 53 {
allankliu 0:33994cfad0c2 54 public:
allankliu 2:bb9f154ea2f4 55 SSD1606(PinName cs, PinName rst, PinName dc, PinName busy, PinName data, PinName clk);
allankliu 0:33994cfad0c2 56 void reset();
allankliu 0:33994cfad0c2 57 void initialize();
allankliu 0:33994cfad0c2 58 void update();
allankliu 0:33994cfad0c2 59 void off();
allankliu 0:33994cfad0c2 60 void on();
allankliu 2:bb9f154ea2f4 61 void deepsleep();
allankliu 0:33994cfad0c2 62 void sleep();
allankliu 0:33994cfad0c2 63 void wake();
allankliu 0:33994cfad0c2 64 void set_inverse();
allankliu 0:33994cfad0c2 65 void set_lut();
allankliu 0:33994cfad0c2 66 void set_command_between_images();
allankliu 0:33994cfad0c2 67 void set_display_start_line(unsigned char val);
allankliu 0:33994cfad0c2 68 void nop();
allankliu 0:33994cfad0c2 69 void set_charge_pump_enable(unsigned char enable);
allankliu 0:33994cfad0c2 70 void clear();
allankliu 0:33994cfad0c2 71 void set_pixel(int x, int y);
allankliu 0:33994cfad0c2 72 void clear_pixel(int x, int y);
allankliu 0:33994cfad0c2 73 void set_font(unsigned char *font, unsigned char width);
allankliu 0:33994cfad0c2 74 void set_double_height_text(unsigned int double_height);
allankliu 0:33994cfad0c2 75 void putc(unsigned char c);
allankliu 0:33994cfad0c2 76 void printf(const char *format,...);
allankliu 2:bb9f154ea2f4 77 void read_busy(void);
allankliu 0:33994cfad0c2 78 void rom_image(const unsigned char *bitmap);
allankliu 2:bb9f154ea2f4 79 void test_image(unsigned char idx);
allankliu 0:33994cfad0c2 80
allankliu 0:33994cfad0c2 81 private:
allankliu 2:bb9f154ea2f4 82 //SPI &_mspi; //Software SPI used
allankliu 2:bb9f154ea2f4 83 DigitalOut _cs, _reset, _dc;
allankliu 0:33994cfad0c2 84 DigitalIn _busy;
allankliu 2:bb9f154ea2f4 85 DigitalOut _data, _clk;
allankliu 2:bb9f154ea2f4 86 //unsigned char _screen[3096];
allankliu 2:bb9f154ea2f4 87 unsigned char _screen[1548];
allankliu 2:bb9f154ea2f4 88 //unsigned char _buf[128];
allankliu 0:33994cfad0c2 89 int _cursor_x, _cursor_y;
allankliu 0:33994cfad0c2 90
allankliu 0:33994cfad0c2 91 void _send_command(unsigned char code);
allankliu 0:33994cfad0c2 92 void _send_data(unsigned char value);
allankliu 2:bb9f154ea2f4 93 void _vspi_write(unsigned char value);
allankliu 2:bb9f154ea2f4 94 void _draw_pattern(unsigned char value, unsigned int pix);
allankliu 0:33994cfad0c2 95
allankliu 0:33994cfad0c2 96 unsigned char *_console_font_data;
allankliu 0:33994cfad0c2 97 unsigned int _console_font_width;
allankliu 0:33994cfad0c2 98 unsigned int _double_height_text;
allankliu 0:33994cfad0c2 99 };
allankliu 0:33994cfad0c2 100
allankliu 0:33994cfad0c2 101
allankliu 0:33994cfad0c2 102 #endif