simple Graphics LCD library. This Lib is used with GDM12864B 128x64 display.
Diff: glcd.h
- Revision:
- 0:e3bff63312e5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/glcd.h Sun Sep 18 08:54:04 2011 +0000 @@ -0,0 +1,232 @@ +#ifndef GLCD_H +#define GLCD_H +//------------includes----------------- +#include "mbed.h" +//------------ +/** +* Graphic LCD 128x64 Library +* +* Example: +* @code +* +* @endcode +*/ +//------------defines------------------ +#define BLACK 1 +#define WHITE 0 +#define OPAC 0 +#define TRANS 1 +#define FILL 1 +#define NOFILL 0 +#define LEFT 0 +#define RIGHT 1 +#define DASH 0xFF // All pixel set on line +#define DASHOFF 0x00 +#define BIT_SET(x,n) (x=x | (0x01<<n)) +#define BIT_TEST(x,n) (x & (0x01<<n)) +#define BIT_CLEAR(x,n) (x=x & ~(0x01<<n)) +#define PI 3.14159265 +// -----------font--------------------- +// Font 3x5 +static char FONT_3x5[] = { +// @Font start 3x5 + 3, // witdh + 5, // height + ' ', // First char + '>', // Last char + 0x00, 0x00, 0x00, // Space + 0x00, 0x17, 0x00, // ! + 0x07, 0x00, 0x03, // " + 0x0A, 0x1F, 0x0A, // # + 0x12, 0x17, 0x12, // +/- old $ + 0x03, 0x1B, 0x18, // % + 0xFF, 0x05, 0x07, // _||_ Pulse + 0x00, 0x03, 0x00, // ' + 0x1F, 0x15, 0x11, // ( // E ete + 0x1F, 0x04, 0x1F, // ) // H hivers + 0x0A, 0x04, 0x0A, // * + 0x04, 0x0E, 0x04, // + + 0x00, 0x10, 0x00, // , + 0x04, 0x04, 0x04, // - + 0x00, 0x08, 0x00, // . + 0x08, 0x04, 0x02, // / + 0x0F, 0x11, 0x1E, // 0 + 0x12, 0x1F, 0x10, // 1 + 0x0D, 0x15, 0x16, // 2 + 0x11, 0x15, 0x0E, // 3 + 0x07, 0x04, 0x1E, // 4 + 0x17, 0x15, 0x09, // 5 + 0x0F, 0x15, 0x18, // 6 + 0x01, 0x1D, 0x03, // 7 + 0x0F, 0x15, 0x1E, // 8 + 0x07, 0x15, 0x1E, // 9 + 0x00, 0x0A, 0x00, // : + 0x10, 0x08, 0x00, // ; + 0x04, 0x0A, 0x11, // < + 0x0A, 0x0A, 0x0A, // = + 0x11, 0x0A, 0x04, // > + // @Font end 3x5 +}; + +// Font 5x7 +static char FONT_5x7[] = { +// @Font start 5x7 + 5, // witdh + 7, // height + ' ', // First char + '~', // Last char + 0x00, 0x00, 0x00, 0x00, 0x00, // SPACE + 0x00, 0x00, 0x5F, 0x00, 0x00, // ! + 0x00, 0x03, 0x00, 0x03, 0x00, // " + 0x14, 0x3E, 0x14, 0x3E, 0x14, // # + 0x00, 0x22, 0x27, 0x22, 0x00, // now +/- before 0x24, 0x2A, 0x7F, 0x2A, 0x12, // $ + 0x43, 0x33, 0x08, 0x66, 0x61, // % + 0x40, 0x7F, 0x02, 0x7F, 0x40, // Now _||_ before 0x36, 0x49, 0x55, 0x22, 0x50, // & + 0x00, 0x05, 0x03, 0x00, 0x00, // ' + 0x00, 0x1C, 0x22, 0x41, 0x00, // ( + 0x00, 0x41, 0x22, 0x1C, 0x00, // ) + 0x14, 0x08, 0x3E, 0x08, 0x14, // * + 0x08, 0x08, 0x3E, 0x08, 0x08, // + + 0x00, 0x50, 0x30, 0x00, 0x00, // , + 0x08, 0x08, 0x08, 0x08, 0x08, // - + 0x00, 0x60, 0x60, 0x00, 0x00, // . + 0x20, 0x10, 0x08, 0x04, 0x02, // / + 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0 + 0x04, 0x02, 0x7F, 0x00, 0x00, // 1 + 0x42, 0x61, 0x51, 0x49, 0x46, // 2 + 0x22, 0x41, 0x49, 0x49, 0x36, // 3 + 0x18, 0x14, 0x12, 0x7F, 0x10, // 4 + 0x27, 0x45, 0x45, 0x45, 0x39, // 5 + 0x3E, 0x49, 0x49, 0x49, 0x32, // 6 + 0x01, 0x01, 0x71, 0x09, 0x07, // 7 + 0x36, 0x49, 0x49, 0x49, 0x36, // 8 + 0x26, 0x49, 0x49, 0x49, 0x3E, // 9 + 0x00, 0x36, 0x36, 0x00, 0x00, // : + 0x00, 0x56, 0x36, 0x00, 0x00, // ; + 0x08, 0x14, 0x22, 0x41, 0x00, // < + 0x14, 0x14, 0x14, 0x14, 0x14, // = + 0x00, 0x41, 0x22, 0x14, 0x08, // > + 0x02, 0x01, 0x51, 0x09, 0x06, // ? + 0x3E, 0x41, 0x59, 0x55, 0x5E, // @ + 0x7E, 0x09, 0x09, 0x09, 0x7E, // A + 0x7F, 0x49, 0x49, 0x49, 0x36, // B + 0x3E, 0x41, 0x41, 0x41, 0x22, // C + 0x7F, 0x41, 0x41, 0x41, 0x3E, // D + 0x7F, 0x49, 0x49, 0x49, 0x41, // E + 0x7F, 0x09, 0x09, 0x09, 0x01, // F + 0x3E, 0x41, 0x41, 0x49, 0x3A, // G + 0x7F, 0x08, 0x08, 0x08, 0x7F, // H + 0x00, 0x41, 0x7F, 0x41, 0x00, // I + 0x30, 0x40, 0x40, 0x40, 0x3F, // J + 0x7F, 0x08, 0x14, 0x22, 0x41, // K + 0x7F, 0x40, 0x40, 0x40, 0x40, // L + 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M + 0x7F, 0x02, 0x04, 0x08, 0x7F, // N + 0x3E, 0x41, 0x41, 0x41, 0x3E, // O + 0x7F, 0x09, 0x09, 0x09, 0x06, // P + 0x1E, 0x21, 0x21, 0x21, 0x5E, // Q + 0x7F, 0x09, 0x09, 0x09, 0x76, // R + 0x26, 0x49, 0x49, 0x49, 0x32, // S + 0x01, 0x01, 0x7F, 0x01, 0x01, // T + 0x3F, 0x40, 0x40, 0x40, 0x3F, // U + 0x1F, 0x20, 0x40, 0x20, 0x1F, // V + 0x7F, 0x20, 0x10, 0x20, 0x7F, // W + 0x41, 0x22, 0x1C, 0x22, 0x41, // X + 0x07, 0x08, 0x70, 0x08, 0x07, // Y + 0x61, 0x51, 0x49, 0x45, 0x43, // Z + 0x00, 0x7F, 0x41, 0x00, 0x00, // [ + 0x02, 0x04, 0x08, 0x10, 0x20, // "\" + 0x00, 0x00, 0x41, 0x7F, 0x00, // ] + 0x04, 0x02, 0x01, 0x02, 0x04, // ^ + 0x40, 0x40, 0x40, 0x40, 0x40, // _ + 0x01, 0x3E, 0x41, 0x41, 0x22, // ` now �C Before 0x00, 0x01, 0x02, 0x04, 0x00, + 0x20, 0x54, 0x54, 0x54, 0x78, // a + 0x7F, 0x44, 0x44, 0x44, 0x38, // b + 0x38, 0x44, 0x44, 0x44, 0x44, // c + 0x38, 0x44, 0x44, 0x44, 0x7F, // d + 0x38, 0x54, 0x54, 0x54, 0x18, // e + 0x04, 0x04, 0x7E, 0x05, 0x05, // f + 0x08, 0x54, 0x54, 0x54, 0x3C, // g + 0x7F, 0x08, 0x04, 0x04, 0x78, // h + 0x00, 0x44, 0x7D, 0x40, 0x00, // i + 0x20, 0x40, 0x44, 0x3D, 0x00, // j + 0x7F, 0x10, 0x28, 0x44, 0x00, // k + 0x00, 0x41, 0x7F, 0x40, 0x00, // l + 0x7C, 0x04, 0x78, 0x04, 0x78, // m + 0x7C, 0x08, 0x04, 0x04, 0x78, // n + 0x38, 0x44, 0x44, 0x44, 0x38, // o + 0x7C, 0x14, 0x14, 0x14, 0x08, // p + 0x08, 0x14, 0x14, 0x14, 0x7C, // q + 0x00, 0x7C, 0x08, 0x04, 0x04, // r + 0x48, 0x54, 0x54, 0x54, 0x20, // s + 0x04, 0x04, 0x3F, 0x44, 0x44, // t + 0x3C, 0x40, 0x40, 0x20, 0x7C, // u + 0x1C, 0x20, 0x40, 0x20, 0x1C, // v + 0x3C, 0x40, 0x30, 0x40, 0x3C, // w + 0x44, 0x28, 0x10, 0x28, 0x44, // x + 0x0C, 0x50, 0x50, 0x50, 0x3C, // y + 0x44, 0x64, 0x54, 0x4C, 0x44, // z + 0x00, 0x08, 0x36, 0x41, 0x41, // { + 0x00, 0x00, 0x7F, 0x00, 0x00, // | + 0x41, 0x41, 0x36, 0x08, 0x00, // } + 0x02, 0x01, 0x02, 0x04, 0x02, // ~ + // @Font end 5x7 suite +}; + +static char ICON_Question[] = { + 5, + 8, + 0x0e,0x11,0x11,0x08,0x04,0x04,0x00,0x04 +}; +//------------class-------------------- +class GLCD { +//-----------methodes ----------------- +public: + /** + *@brief Constructor, initializes the lcd on the respective pins. + *@param control pins DI,RW,E,CS2,CS1 + *@param databus DB0-DB7 data pins + *@return none + */ + GLCD (PinName _DI, PinName _RW, PinName _E, PinName _CS1, PinName _CS2, BusInOut *BUSLCD); + void setTest(int mode); + void drawText(int mode); + void repaint(); + bool isUsed(); + bool getXor(); + void setXor( bool s); + void init(bool mode); + void fillScreen( bool color); + // void clean( bool h, bool b); +// void repaint (bool h, bool b); + void setPixel( unsigned short x, unsigned short y, bool color); + bool getPixel( unsigned short x, unsigned short y); + void lineh( unsigned short x0, unsigned short y0, unsigned short x1, bool color); + void linev( unsigned short x0, unsigned short y0, unsigned short y1, bool color); + void line( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, char dash, bool color); + void rectangle( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, char dash, bool fill, bool color); + void bar( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, int width, bool color); + void circle( unsigned short x, unsigned short y, unsigned short radius, bool fill, bool color); + unsigned short ellipse(unsigned short x, unsigned short y,unsigned short a, unsigned short b, float angle, unsigned short step, bool color); + unsigned short icon( unsigned short x, unsigned short y, const char* iconptr, bool color, bool transparency); + unsigned short text( unsigned short x, unsigned short y, const char* textptr, const char* fontptr, unsigned char size, bool color, bool transparency); +private: + void reset_pins(int mode); + void writeByte(unsigned char side, unsigned char data); + unsigned char readByte(unsigned char side); + //---------- local variables ---------- +private: + BusInOut* LCD_PORT; + DigitalOut GLCD_DI; + DigitalOut GLCD_RW; + DigitalOut GLCD_E; + DigitalOut GLCD_CS2; + DigitalOut GLCD_CS1; + char left[512]; + char right[512]; + volatile bool isused; + bool _xor; + bool ready; + //------------------------------------- +}; +#endif \ No newline at end of file