Text console library for ST7565 graphics LCD controller over SPI interface.
Dependents: TextLCD_ST7565SPI_Test OpPanel_Offline OpPanel_Offline_cmake_gcc_arm_NUCLEO_F303RENew
Diff: TextLCD_ST7565SPI.h
- Revision:
- 0:1ea133b6a4de
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD_ST7565SPI.h Mon Mar 02 23:10:13 2015 +0000 @@ -0,0 +1,196 @@ +// ==================================================== Mar 03 2015, kayeks == +// TextLCD_ST7565SPI.h +// =========================================================================== +// Text console library for ST7565 graphics LCD controller over SPI interface. + +#ifndef TEXTLCD_ST7565SPI_H_ +#define TEXTLCD_ST7565SPI_H_ + +#include "mbed.h" + +/** Text console library for ST7565 graphics LCD controller over SPI interface. */ +class TextLCD_ST7565SPI : public Stream { +public: + /** Bias select: 1/7 or 1/9. */ + enum Bias { + Bias1_7 /** 1/7 bias */ + , Bias1_9 /** 1/9 bias */ + }; + + const static uint8_t V0_INTERNAL_R_0 = 0x20; + const static uint8_t V0_INTERNAL_R_1 = 0x21; + const static uint8_t V0_INTERNAL_R_2 = 0x22; + const static uint8_t V0_INTERNAL_R_3 = 0x23; + const static uint8_t V0_INTERNAL_R_4 = 0x24; + const static uint8_t V0_INTERNAL_R_5 = 0x25; + const static uint8_t V0_INTERNAL_R_6 = 0x26; + const static uint8_t V0_INTERNAL_R_7 = 0x27; + const static uint8_t PCTRL_VFOLLOWER_ON = 0x29; + const static uint8_t PCTRL_VFOLLOWER_OFF = 0x28; + const static uint8_t PCTRL_REGULATOR_ON = 0x2a; + const static uint8_t PCTRL_REGULATOR_OFF = 0x28; + const static uint8_t PCTRL_BOOSTER_ON = 0x2c; + const static uint8_t PCTRL_BOOSTER_OFF = 0x28; + const static uint8_t COMMON_OFFSET = 0x40; + const static uint8_t ELECTRONIC_VOL_MODE = 0x81; + const static uint8_t ELECTRONIC_VOL_1 = 0x01; + const static uint8_t ELECTRONIC_VOL_2 = 0x02; + const static uint8_t ELECTRONIC_VOL_3 = 0x03; + const static uint8_t ELECTRONIC_VOL_4 = 0x04; + const static uint8_t ELECTRONIC_VOL_5 = 0x05; + const static uint8_t ELECTRONIC_VOL_6 = 0x06; + const static uint8_t ELECTRONIC_VOL_7 = 0x07; + const static uint8_t ELECTRONIC_VOL_8 = 0x08; + const static uint8_t ELECTRONIC_VOL_9 = 0x09; + const static uint8_t ELECTRONIC_VOL_10 = 0x0a; + const static uint8_t ELECTRONIC_VOL_11 = 0x0b; + const static uint8_t ELECTRONIC_VOL_12 = 0x0c; + const static uint8_t ELECTRONIC_VOL_13 = 0x0d; + const static uint8_t ELECTRONIC_VOL_14 = 0x0e; + const static uint8_t ELECTRONIC_VOL_15 = 0x0f; + const static uint8_t ELECTRONIC_VOL_16 = 0x10; + const static uint8_t ELECTRONIC_VOL_17 = 0x11; + const static uint8_t ELECTRONIC_VOL_18 = 0x12; + const static uint8_t ELECTRONIC_VOL_19 = 0x13; + const static uint8_t ELECTRONIC_VOL_20 = 0x14; + const static uint8_t ELECTRONIC_VOL_21 = 0x15; + const static uint8_t ELECTRONIC_VOL_22 = 0x16; + const static uint8_t ELECTRONIC_VOL_23 = 0x17; + const static uint8_t ELECTRONIC_VOL_24 = 0x18; + const static uint8_t ELECTRONIC_VOL_25 = 0x19; + const static uint8_t ELECTRONIC_VOL_26 = 0x1a; + const static uint8_t ELECTRONIC_VOL_27 = 0x1b; + const static uint8_t ELECTRONIC_VOL_28 = 0x1c; + const static uint8_t ELECTRONIC_VOL_29 = 0x1d; + const static uint8_t ELECTRONIC_VOL_30 = 0x1e; + const static uint8_t ELECTRONIC_VOL_31 = 0x1f; + const static uint8_t ELECTRONIC_VOL_32 = 0x20; + const static uint8_t ELECTRONIC_VOL_33 = 0x21; + const static uint8_t ELECTRONIC_VOL_34 = 0x22; + const static uint8_t ELECTRONIC_VOL_35 = 0x23; + const static uint8_t ELECTRONIC_VOL_36 = 0x24; + const static uint8_t ELECTRONIC_VOL_37 = 0x25; + const static uint8_t ELECTRONIC_VOL_38 = 0x26; + const static uint8_t ELECTRONIC_VOL_39 = 0x27; + const static uint8_t ELECTRONIC_VOL_40 = 0x28; + const static uint8_t ELECTRONIC_VOL_41 = 0x29; + const static uint8_t ELECTRONIC_VOL_42 = 0x2a; + const static uint8_t ELECTRONIC_VOL_43 = 0x2b; + const static uint8_t ELECTRONIC_VOL_44 = 0x2c; + const static uint8_t ELECTRONIC_VOL_45 = 0x2d; + const static uint8_t ELECTRONIC_VOL_46 = 0x2e; + const static uint8_t ELECTRONIC_VOL_47 = 0x2f; + const static uint8_t ELECTRONIC_VOL_48 = 0x30; + const static uint8_t ELECTRONIC_VOL_49 = 0x31; + const static uint8_t ELECTRONIC_VOL_50 = 0x32; + const static uint8_t ELECTRONIC_VOL_51 = 0x33; + const static uint8_t ELECTRONIC_VOL_52 = 0x34; + const static uint8_t ELECTRONIC_VOL_53 = 0x35; + const static uint8_t ELECTRONIC_VOL_54 = 0x36; + const static uint8_t ELECTRONIC_VOL_55 = 0x37; + const static uint8_t ELECTRONIC_VOL_56 = 0x38; + const static uint8_t ELECTRONIC_VOL_57 = 0x39; + const static uint8_t ELECTRONIC_VOL_58 = 0x3a; + const static uint8_t ELECTRONIC_VOL_59 = 0x3b; + const static uint8_t ELECTRONIC_VOL_60 = 0x3c; + const static uint8_t ELECTRONIC_VOL_61 = 0x3d; + const static uint8_t ELECTRONIC_VOL_62 = 0x3e; + const static uint8_t ELECTRONIC_VOL_63 = 0x3f; + const static uint8_t SEGMENT_ASCENDING = 0xa0; + const static uint8_t SEGMENT_DESCENDING = 0xa1; + const static uint8_t BIAS_1_9 = 0xa2; + const static uint8_t BIAS_1_7 = 0xa3; + const static uint8_t ENTIRE_DISPLAY_OFF = 0xa4; + const static uint8_t ENTIRE_DISPLAY_ON = 0xa5; + const static uint8_t INVERT_DISPLAY_OFF = 0xa6; + const static uint8_t INVERT_DISPLAY_ON = 0xa7; + const static uint8_t DISPLAY_OFF = 0xae; + const static uint8_t DISPLAY_ON = 0xaf; + const static uint8_t COMMON_ASCENDING = 0xc0; + const static uint8_t COMMON_DESCENDING = 0xc8; + const static uint8_t MODIFY_WRITE_ON = 0xe0; + const static uint8_t INTERNAL_RESET = 0xe2; + const static uint8_t MODIFY_WRITE_OFF = 0xee; + + const static uint8_t FONT_5X7[128][5]; + +private: + uint8_t** _lineBuffer; + uint8_t _column, _row; + uint8_t _columns, _rows; + DigitalOut _rs; + DigitalOut _rst; + SPI _spi; + DigitalOut _cs; + +public: + /** Constructor of class TextLCD_ST7565SPI. + * @param mosi SPI data output (MOSI) pin. + * @param sck SPI clock output (SCK) pin. + * @param cs SPI Chip select (CS) pin. + * @param rs Register select (RS or A0) pin. + * @param rst Hardware reset (RST) pin. + * @param columns Number of characters in a row. + * @param rows Number of rows. + */ + TextLCD_ST7565SPI(PinName mosi, PinName sck, PinName cs, + PinName rs, PinName rst, + uint8_t columns, uint8_t rows); + + /** Destructor of class TextLCD_ST7565SPI. */ + virtual ~TextLCD_ST7565SPI(); + + /** Hit hardware reset pin. */ + void reset(); + + /** Initialize controller. + * @param v0 Internal V0 setting (0..7). + * @param contrast Contrast setting (0..63). + * @param bias Bias configuration for your LCD. + */ + void init(uint8_t v0, uint8_t contrast, Bias bias); + + /** Clear display and set cursor to home. */ + void cls(); + + /** Set cursor position for next character. + * @param column Column position indexed from 0. + * @param row Row position indexed from 0. + */ + void locate(uint8_t column, uint8_t row); + +private: + /** Implementation of putc from Stream class. */ + virtual int _putc(int c); + + /** Implementation of getc from Stream class. */ + virtual int _getc(); + + /** Shift up the lower line for scrolling. */ + void shiftUp(); + + /** Clear entire display. */ + void clear(); + + /** Set page position for next data. + * @param page Page position indexed from 0 to 7. + */ + void setPage(uint8_t page); + + /** Set column position for next data. + * @param column Column position indexed from 0. + */ + void setColumn(uint8_t column); + + /** Write a command byte for LCD controller. + * @param c The command byte. + */ + void command(uint8_t c); + + /** Write a data byte for LCD controller. + * @param d The data byte. + */ + void data(uint8_t d); +}; + +#endif