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:
Wed Jun 11 09:14:00 2014 +0000
Revision:
4:5032c106eea1
Parent:
3:1fa000d4da94
Tested on hardware.

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 /*
allankliu 2:bb9f154ea2f4 8 The width/height parameters depend on different vendor. The max is 180x128
allankliu 2:bb9f154ea2f4 9 http://www.solomon-systech.com.cn/cn/product/advanced-display/bistable-display-driver-controller/
allankliu 2:bb9f154ea2f4 10 */
allankliu 3:1fa000d4da94 11 #define SSD1606_WIDTH 172
allankliu 3:1fa000d4da94 12 #define SSD1606_HEIGHT 72
allankliu 3:1fa000d4da94 13
allankliu 3:1fa000d4da94 14 #define GREY_BPP 2 // [1:2], 1bpp or 2bpp
allankliu 2:bb9f154ea2f4 15
allankliu 3:1fa000d4da94 16 #define COLBUF_SIZE (SSD1606_HEIGHT / 8 * GREY_BPP) // 72/8*2=18 Byte for 2bpp
allankliu 3:1fa000d4da94 17 #define FRAMEBUF_SIZE (SSD1606_WIDTH * COLBUF_SIZE) // 172 * 18 = 3096B
allankliu 3:1fa000d4da94 18
allankliu 3:1fa000d4da94 19 #define IRAM_8KB
allankliu 2:bb9f154ea2f4 20
allankliu 3:1fa000d4da94 21 #define ROM2BPP_SIZE 3096
allankliu 3:1fa000d4da94 22 #define ROM1BPP_SIZE 1548
allankliu 2:bb9f154ea2f4 23
allankliu 3:1fa000d4da94 24 //ROM IMAGE INDEX
allankliu 2:bb9f154ea2f4 25 #define PIC_ONE 1
allankliu 2:bb9f154ea2f4 26 #define PIC_NOKIA 2
allankliu 2:bb9f154ea2f4 27 #define PIC_SUNING 3
allankliu 3:1fa000d4da94 28 #define PIC_SUSHI 4
allankliu 3:1fa000d4da94 29 #define PIC_20OFF 5
allankliu 2:bb9f154ea2f4 30 #define PIC_CHESSBOARD 6
allankliu 3:1fa000d4da94 31 #define PIC_ROYALTY 7
allankliu 2:bb9f154ea2f4 32 #define PIC_FU 8
allankliu 2:bb9f154ea2f4 33 #define PIC_GC4 9
allankliu 2:bb9f154ea2f4 34 #define PIC_SAVE 10
allankliu 3:1fa000d4da94 35 #define PIC_RUSSIAN 11
allankliu 3:1fa000d4da94 36 #define PIC_COMPANY 12
allankliu 3:1fa000d4da94 37 #define PIC_KOREAN 13
allankliu 3:1fa000d4da94 38 #define PIC_OED 14
allankliu 3:1fa000d4da94 39 #define PIC_OEDBOOK 15
allankliu 3:1fa000d4da94 40 #define PIC_JAPANESE 16
allankliu 3:1fa000d4da94 41 #define PIC_RECT 17
allankliu 2:bb9f154ea2f4 42
allankliu 3:1fa000d4da94 43 //FUNCTION IMAGE INDEX
allankliu 2:bb9f154ea2f4 44 #define TEST_GREY1 1
allankliu 2:bb9f154ea2f4 45 #define TEST_GREY2 2
allankliu 2:bb9f154ea2f4 46 #define TEST_BLK 3
allankliu 2:bb9f154ea2f4 47 #define TEST_WHT 4
allankliu 2:bb9f154ea2f4 48 #define TEST_HALF 5
allankliu 2:bb9f154ea2f4 49 #define TEST_STRIP1 6
allankliu 2:bb9f154ea2f4 50 #define TEST_STRIP2 7
allankliu 2:bb9f154ea2f4 51
allankliu 3:1fa000d4da94 52 #define SPI_BUS_DELAY 5
allankliu 2:bb9f154ea2f4 53
allankliu 0:33994cfad0c2 54 class SSD1606
allankliu 0:33994cfad0c2 55 {
allankliu 0:33994cfad0c2 56 public:
allankliu 2:bb9f154ea2f4 57 SSD1606(PinName cs, PinName rst, PinName dc, PinName busy, PinName data, PinName clk);
allankliu 0:33994cfad0c2 58 void reset();
allankliu 0:33994cfad0c2 59 void initialize();
allankliu 0:33994cfad0c2 60 void update();
allankliu 0:33994cfad0c2 61 void off();
allankliu 0:33994cfad0c2 62 void on();
allankliu 2:bb9f154ea2f4 63 void deepsleep();
allankliu 0:33994cfad0c2 64 void sleep();
allankliu 0:33994cfad0c2 65 void wake();
allankliu 0:33994cfad0c2 66 void set_inverse();
allankliu 0:33994cfad0c2 67 void set_lut();
allankliu 0:33994cfad0c2 68 void set_command_between_images();
allankliu 0:33994cfad0c2 69 void set_display_start_line(unsigned char val);
allankliu 0:33994cfad0c2 70 void nop();
allankliu 0:33994cfad0c2 71 void set_charge_pump_enable(unsigned char enable);
allankliu 0:33994cfad0c2 72 void clear();
allankliu 0:33994cfad0c2 73 void set_pixel(int x, int y);
allankliu 0:33994cfad0c2 74 void clear_pixel(int x, int y);
allankliu 0:33994cfad0c2 75 void set_font(unsigned char *font, unsigned char width);
allankliu 0:33994cfad0c2 76 void set_double_height_text(unsigned int double_height);
allankliu 0:33994cfad0c2 77 void putc(unsigned char c);
allankliu 0:33994cfad0c2 78 void printf(const char *format,...);
allankliu 2:bb9f154ea2f4 79 void read_busy(void);
allankliu 0:33994cfad0c2 80 void rom_image(const unsigned char *bitmap);
allankliu 2:bb9f154ea2f4 81 void test_image(unsigned char idx);
allankliu 0:33994cfad0c2 82
allankliu 0:33994cfad0c2 83 private:
allankliu 2:bb9f154ea2f4 84 //SPI &_mspi; //Software SPI used
allankliu 2:bb9f154ea2f4 85 DigitalOut _cs, _reset, _dc;
allankliu 0:33994cfad0c2 86 DigitalIn _busy;
allankliu 2:bb9f154ea2f4 87 DigitalOut _data, _clk;
allankliu 2:bb9f154ea2f4 88 //unsigned char _screen[3096];
allankliu 2:bb9f154ea2f4 89 unsigned char _screen[1548];
allankliu 2:bb9f154ea2f4 90 //unsigned char _buf[128];
allankliu 0:33994cfad0c2 91 int _cursor_x, _cursor_y;
allankliu 0:33994cfad0c2 92
allankliu 0:33994cfad0c2 93 void _send_command(unsigned char code);
allankliu 0:33994cfad0c2 94 void _send_data(unsigned char value);
allankliu 3:1fa000d4da94 95 void _send_data_1bpp(unsigned char value);
allankliu 2:bb9f154ea2f4 96 void _vspi_write(unsigned char value);
allankliu 2:bb9f154ea2f4 97 void _draw_pattern(unsigned char value, unsigned int pix);
allankliu 0:33994cfad0c2 98
allankliu 0:33994cfad0c2 99 unsigned char *_console_font_data;
allankliu 0:33994cfad0c2 100 unsigned int _console_font_width;
allankliu 0:33994cfad0c2 101 unsigned int _double_height_text;
allankliu 0:33994cfad0c2 102 };
allankliu 0:33994cfad0c2 103
allankliu 0:33994cfad0c2 104
allankliu 0:33994cfad0c2 105 #endif