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.
E-Badge MiniNote Project on mbed/NXP LPC1114 platform
- About E-Badge MiniNote Project
- E-Badge Firmware Design
- Enclosure ID in 3D step format
- Python utilities
- Demo applications
- New applications with cloud server
- make mbed looks Arduino compatible
- debug in Keil, shared with mbed
- make it bigger with more memory
- make it smaller with mini connector
- make it stronger with mikroBUS
- Make it pretty with line art
- Developement Status Update
SSD1606/ssd1606.cpp
- Committer:
- allankliu
- Date:
- 2014-06-01
- Revision:
- 0:33994cfad0c2
- Child:
- 2:bb9f154ea2f4
File content as of revision 0:33994cfad0c2:
#include "mbed.h" #include "ssd1606.h" #include "image.h" #include <stdarg.h> const unsigned char init_data[]={ 0x82,0x00,0x00,0x00,0xAA,0x00,0x00,0x00, 0xAA,0xAA,0x00,0x00,0xAA,0xAA,0xAA,0x00, 0x55,0xAA,0xAA,0x00,0x55,0x55,0x55,0x55, 0xAA,0xAA,0xAA,0xAA,0x55,0x55,0x55,0x55, 0xAA,0xAA,0xAA,0xAA,0x15,0x15,0x15,0x15, 0x05,0x05,0x05,0x05,0x01,0x01,0x01,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x41,0x45,0xF1,0xFF,0x5F,0x55,0x01,0x00, 0x00,0x00,}; SSD1606::SSD1606(PinName cs, PinName rst, PinName dc, PinName clk, PinName busy, PinName data) : _spi(data, NC, clk), _cs(cs), _reset(rst), _dc(dc), _busy(busy), _cursor_x(0), _cursor_y(0) { } void SSD1606::reset() { _reset = 1; wait(0.01); _reset = 0; wait(0.01); _reset = 1; wait(0.01); } void SSD1606::initialize() { reset(); _send_command(0x10); _send_data(0x00); #ifdef MODE3 _send_command(0x11); _send_data(0x03); _send_command(0x44); _send_data(0x00); _send_data(0x11); _send_command(0x45); _send_data(0x00); _send_data(0xAB); _send_command(0x4E); _send_data(0x00); _send_command(0x4F); _send_data(0x00); #endif #ifdef MODE2 _send_command(0x11); _send_data(0x02); _send_command(0x44); _send_data(0x11); _send_data(0x00); _send_command(0x45); _send_data(0x00); _send_data(0xAB); _send_command(0x4E); _send_data(0x11); _send_command(0x4F); _send_data(0x00); #endif #ifdef MODE1 _send_command(0x11); _send_data(0x01); _send_command(0x44); _send_data(0x00); _send_data(0x11); _send_command(0x45); _send_data(0xAB); _send_data(0x00); _send_command(0x4E); _send_data(0x00); _send_command(0x4F); _send_data(0xAB); #endif #ifdef MODE0 _send_command(0x11); _send_data(0x00); _send_command(0x44); _send_data(0x11); _send_data(0x00); _send_command(0x45); _send_data(0xAB); _send_data(0x00); _send_command(0x4E); _send_data(0x11); _send_command(0x4F); _send_data(0xAB); #endif _send_command(0xF0); _send_data(0x1F); _send_command(0x21); _send_data(0x03); _send_command(0x2C); _send_data(0xA0); _send_command(0x3C); _send_data(0x63); _send_command(0x22); _send_data(0xC4); set_lut(); } unsigned char SSD1606::is_busy() { return(0); } void SSD1606::rom_image(const unsigned char *bitmap) { int i; _send_command(0x24); for (i=0; i <3096; i++) _send_data(bitmap[i]); _send_command(0x20); wait(0.01); } void SSD1606::update() { for (int i=0; i<3096; i++) _send_data(_screen[i]); } void SSD1606::off() { } void SSD1606::sleep() { _send_command(0x10); _send_data(0x01); } void SSD1606::set_command_between_images() { _send_command(0x22); _send_data(0xC7); _send_command(0x21); _send_data(0x03); } void SSD1606::clear() { for (int i=0; i<3096; i++) _send_data(0); _cursor_x = 0; _cursor_y = 0; } void SSD1606::_send_command(unsigned char code) { _cs = 1; _dc = 0; _cs = 0; _spi.write(code); _cs = 1; } void SSD1606::_send_data(unsigned char value) { _cs = 1; _dc = 1; _cs = 0; _spi.write(value); _cs = 1; } void SSD1606::set_lut(void) { unsigned char i; _send_command(0x32); for(i=0; i<90; i++) { _send_data(init_data[i]); } }