This Library for DOGS-102 Graphic LCD module. Based on Igor Skochinsky's "DOGLCDDemo" program.
Dependents: DOGS102_Example1 DOGS102_Example2
Fork of DOGLCDDemo by
LCD/DogLCD.h@1:2145a74df666, 2014-05-03 (annotated)
- Committer:
- ban4jp
- Date:
- Sat May 03 16:04:16 2014 +0000
- Revision:
- 1:2145a74df666
- Parent:
- 0:2a5dccfd318f
Change to library, and Support DOGS-102 Graphic LCD module.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
igorsk | 0:2a5dccfd318f | 1 | #ifndef MBED_DOGLCD_H |
igorsk | 0:2a5dccfd318f | 2 | #define MBED_DOGLCD_H |
igorsk | 0:2a5dccfd318f | 3 | |
igorsk | 0:2a5dccfd318f | 4 | #include "AbstractLCD.h" |
igorsk | 0:2a5dccfd318f | 5 | |
igorsk | 0:2a5dccfd318f | 6 | /*********** |
igorsk | 0:2a5dccfd318f | 7 | * Module for Electronic Assembly's DOGL128-6 display module |
igorsk | 0:2a5dccfd318f | 8 | * Should be compatible with other modules using ST7565 controller |
igorsk | 0:2a5dccfd318f | 9 | ***********/ |
igorsk | 0:2a5dccfd318f | 10 | |
ban4jp | 1:2145a74df666 | 11 | #define LCDWIDTH 102 |
igorsk | 0:2a5dccfd318f | 12 | #define LCDHEIGHT 64 |
igorsk | 0:2a5dccfd318f | 13 | #define LCDPAGES (LCDHEIGHT+7)/8 |
igorsk | 0:2a5dccfd318f | 14 | |
ban4jp | 1:2145a74df666 | 15 | //#define ENABLE_DOGLCD_POWERCTL |
ban4jp | 1:2145a74df666 | 16 | //#define READJUST_SPI_FREQUENCY |
ban4jp | 1:2145a74df666 | 17 | |
igorsk | 0:2a5dccfd318f | 18 | /* |
igorsk | 0:2a5dccfd318f | 19 | |
igorsk | 0:2a5dccfd318f | 20 | Each page is 8 lines, one byte per column |
igorsk | 0:2a5dccfd318f | 21 | |
igorsk | 0:2a5dccfd318f | 22 | Col0 |
igorsk | 0:2a5dccfd318f | 23 | +---+-- |
igorsk | 0:2a5dccfd318f | 24 | | 0 | |
igorsk | 0:2a5dccfd318f | 25 | Page 0 | 1 | |
igorsk | 0:2a5dccfd318f | 26 | | 2 | |
igorsk | 0:2a5dccfd318f | 27 | | 3 | |
igorsk | 0:2a5dccfd318f | 28 | | 4 | |
igorsk | 0:2a5dccfd318f | 29 | | 5 | |
igorsk | 0:2a5dccfd318f | 30 | | 6 | |
igorsk | 0:2a5dccfd318f | 31 | | 7 | |
igorsk | 0:2a5dccfd318f | 32 | +---+-- |
igorsk | 0:2a5dccfd318f | 33 | */ |
igorsk | 0:2a5dccfd318f | 34 | |
igorsk | 0:2a5dccfd318f | 35 | /* |
igorsk | 0:2a5dccfd318f | 36 | LCD interface class. |
igorsk | 0:2a5dccfd318f | 37 | Usage: |
igorsk | 0:2a5dccfd318f | 38 | DogLCD dog(spi, pin_power, pin_cs, pin_a0, pin_reset); |
igorsk | 0:2a5dccfd318f | 39 | where spi is an instance of SPI class |
igorsk | 0:2a5dccfd318f | 40 | */ |
igorsk | 0:2a5dccfd318f | 41 | |
igorsk | 0:2a5dccfd318f | 42 | class DogLCD: public AbstractLCD |
igorsk | 0:2a5dccfd318f | 43 | { |
igorsk | 0:2a5dccfd318f | 44 | SPI& _spi; |
ban4jp | 1:2145a74df666 | 45 | #ifdef ENABLE_DOGLCD_POWERCTL |
igorsk | 0:2a5dccfd318f | 46 | DigitalOut _cs, _a0, _reset, _power; |
ban4jp | 1:2145a74df666 | 47 | #else |
ban4jp | 1:2145a74df666 | 48 | DigitalOut _cs, _a0, _reset; |
ban4jp | 1:2145a74df666 | 49 | #endif |
igorsk | 0:2a5dccfd318f | 50 | int _updating; |
igorsk | 0:2a5dccfd318f | 51 | void _send_commands(const unsigned char* buf, size_t size); |
igorsk | 0:2a5dccfd318f | 52 | void _send_data(const unsigned char* buf, size_t size); |
igorsk | 0:2a5dccfd318f | 53 | void _set_xy(int x, int y); |
igorsk | 0:2a5dccfd318f | 54 | unsigned char _framebuffer[LCDWIDTH*LCDPAGES]; |
igorsk | 0:2a5dccfd318f | 55 | public: |
ban4jp | 1:2145a74df666 | 56 | #ifdef ENABLE_DOGLCD_POWERCTL |
ban4jp | 1:2145a74df666 | 57 | DogLCD(SPI& spi, PinName cs, PinName a0, PinName reset, PinName power): |
igorsk | 0:2a5dccfd318f | 58 | _spi(spi), _cs(cs), _a0(a0), _reset(reset), _power(power), _updating(0) |
igorsk | 0:2a5dccfd318f | 59 | { |
igorsk | 0:2a5dccfd318f | 60 | } |
ban4jp | 1:2145a74df666 | 61 | #else |
ban4jp | 1:2145a74df666 | 62 | DogLCD(SPI& spi, PinName cs, PinName a0, PinName reset): |
ban4jp | 1:2145a74df666 | 63 | _spi(spi), _cs(cs), _a0(a0), _reset(reset), _updating(0) |
ban4jp | 1:2145a74df666 | 64 | { |
ban4jp | 1:2145a74df666 | 65 | } |
ban4jp | 1:2145a74df666 | 66 | #endif |
igorsk | 0:2a5dccfd318f | 67 | // initialize and turn on the display |
igorsk | 0:2a5dccfd318f | 68 | void init(); |
igorsk | 0:2a5dccfd318f | 69 | // send a 128x64 picture for the whole screen |
igorsk | 0:2a5dccfd318f | 70 | void send_pic(const unsigned char* data); |
igorsk | 0:2a5dccfd318f | 71 | // clear screen |
igorsk | 0:2a5dccfd318f | 72 | void clear_screen(); |
igorsk | 0:2a5dccfd318f | 73 | // turn all pixels on |
igorsk | 0:2a5dccfd318f | 74 | void all_on(bool on = true); |
igorsk | 0:2a5dccfd318f | 75 | |
igorsk | 0:2a5dccfd318f | 76 | // AbstractLCD methods |
igorsk | 0:2a5dccfd318f | 77 | virtual int width() {return LCDWIDTH;}; |
igorsk | 0:2a5dccfd318f | 78 | virtual int height() {return LCDHEIGHT;}; |
igorsk | 0:2a5dccfd318f | 79 | virtual void pixel(int x, int y, int colour); |
igorsk | 0:2a5dccfd318f | 80 | virtual void fill(int x, int y, int width, int height, int colour); |
igorsk | 0:2a5dccfd318f | 81 | virtual void beginupdate(); |
igorsk | 0:2a5dccfd318f | 82 | virtual void endupdate(); |
igorsk | 0:2a5dccfd318f | 83 | }; |
igorsk | 0:2a5dccfd318f | 84 | |
igorsk | 0:2a5dccfd318f | 85 | #endif |