This Library for DOGS-102 Graphic LCD module. Based on Igor Skochinsky's "DOGLCDDemo" program.

Dependents:   DOGS102_Example1 DOGS102_Example2

Fork of DOGLCDDemo by Igor Skochinsky

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?

UserRevisionLine numberNew 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