Display driver for Sharp's range of SPI-driven memory LCD's, leveraging the power of asynchronous transfers. Currently supports LS013B7DH03, but easily extendable to other models as well.
Dependents: memLCD-Demo memLCD-Demo memLCD-Demo MemLCD-Temperature-Humidity-Demo ... more
You are viewing an older revision! See the latest version
Homepage
Caution¶
This library builds upon the asynchronous SPI interface provided by mbed, but not all platforms currently support this. So, make sure your platform is capable of asynchronous SPI (all Silicon Labs platforms are), otherwise you will get compiler errors!
Usage¶
example program
#include "LS013B7DH03.h" #include "mbed_logo.h" /******************** Define I/O *****************************/ DigitalOut myled(LED1); #define SCK PD2 #define MOSI PD0 DigitalOut CS(PD3); DigitalOut EXTCOM(PC4); DigitalOut EXTMODE(PD4); DigitalOut DISP(PD5); SPI displaySPI(MOSI, NC, SCK); silabs::LS013B7DH03 display(&displaySPI, &CS, &EXTCOM); /******************** Define Timers *****************************/ LowPowerTicker timeKeeping; /***************** Define global variables **********************/ #define INIT_SECONDS 17600 volatile uint32_t prevSeconds = INIT_SECONDS, seconds = INIT_SECONDS; volatile bool refreshed = false; /***************** Define callback handlers *********************/ void secondsCallback(void); void refreshCallback(void); void secondsCallback(void) { seconds++; } /** * Callback for refresh completion */ void refreshCallback(void) { refreshed = true; } /*************************** MAIN *******************************/ int main() { // Enable the LCD EXTMODE = 1; DISP = 1; // Start generating the 1Hz call for keeping time timeKeeping.attach(&secondsCallback, 1.0f); // Reset the LCD to a blank state. (All white) refreshed = false; display.clearImmediate(refreshCallback); while(refreshed == false) sleep(); printf("Initialization done! \n"); // Apply mbed logo bitmap to the pixel buffer display.showBMP((uint8_t*)mbed_enabled_logo, 128, 128, 0, 0); display.printf("I like MBED!"); // Push update to the display refreshed = false; display.update(refreshCallback); // Sleep while doing the transmit while(refreshed == false) sleep(); // Go into clock mode while(1) { sleep(); // In clock mode, only update once per second if(prevSeconds != seconds) { display.locate(4,15); display.printf("%02d:%02d:%02d", (seconds / 1200) % 24, (seconds / 60) % 60, seconds % 60); if(refreshed == true) { prevSeconds = seconds; refreshed = false; display.update(refreshCallback); } } } }