Hotboards_SpiLcd.cpp - Library for write and control and lcd with spi interfaces and the ST7032 controller. Base on Arduino's Liquid Cristal library

Dependents:   Hotboards_SpiLcd-Hello_World Hotboards_SpiLcd-Writing_In_Diferent_Rows Hotboards_SpiLcd_Scrolling_Text Hotboards_SpiLcd_AutoScroll ... more

Hotboards_SpiLcd.h

Committer:
Hotboards
Date:
2016-01-29
Revision:
1:b777b6147d99
Parent:
0:1d03652e9f7a
Child:
2:9673849ef2e9

File content as of revision 1:b777b6147d99:

/*
  Hotboards_SpiLcd.cpp - Library to control and write an lcd with spi interface and ST7032 controller.
  base on Arduino's Liquid Cristal library
  Library ported by diego from Hotboards January 16, 2016. 
  and originally cretaed by
  by David A. Mellis
  library modified 5 Jul 2009
  by Limor Fried (http://www.ladyada.net)
  example added 9 Jul 2009
  by Tom Igoe
  modified 22 Nov 2010
  by Tom Igoe
  Released into the public domain.
*/

#ifndef Hotboards_SpiLcd_h
#define Hotboards_SpiLcd_h

#include "mbed.h"

// commands
#define HT_SPILCD_CLEARDISPLAY          0x01
#define HT_SPILCD_RETURNHOME            0x02
#define HT_SPILCD_ENTRYMODESET          0x04
#define HT_SPILCD_DISPLAYCONTROL        0x08
#define HT_SPILCD_CURSORSHIFT           0x10
#define HT_SPILCD_FUNCTIONSET           0x20
#define HT_SPILCD_SETCGRAMADDR          0x40
#define HT_SPILCD_SETDDRAMADDR          0x80

// flags for display entry mode
#define HT_SPILCD_ENTRYRIGHT            0x00
#define HT_SPILCD_ENTRYLEFT             0x02
#define HT_SPILCD_ENTRYSHIFTINCREMENT   0x01
#define HT_SPILCD_ENTRYSHIFTDECREMENT   0x00

// flags for display on/off control
#define HT_SPILCD_DISPLAYON             0x04
#define HT_SPILCD_DISPLAYOFF            0x00
#define HT_SPILCD_CURSORON              0x02
#define HT_SPILCD_CURSOROFF             0x00
#define HT_SPILCD_BLINKON               0x01
#define HT_SPILCD_BLINKOFF              0x00

// flags for display/cursor shift
#define HT_SPILCD_DISPLAYMOVE           0x08
#define HT_SPILCD_CURSORMOVE            0x00
#define HT_SPILCD_MOVERIGHT             0x04
#define HT_SPILCD_MOVELEFT              0x00

// flags for function set
#define HT_SPILCD_8BITMODE              0x10
#define HT_SPILCD_4BITMODE              0x00
#define HT_SPILCD_2LINE                 0x08
#define HT_SPILCD_1LINE                 0x00
#define HT_SPILCD_5x16DOTS              0x04
#define HT_SPILCD_5x8DOTS               0x00
#define HT_SPILCD_EXTINST               0x01
#define HT_SPILCD_NORMINST              0x00


class Hotboards_SpiLcd : public Stream
{
  public:
  
    Hotboards_SpiLcd( SPI &spi, PinName cs, PinName rs, PinName rst );
    void init( void );
    void clear( void );
    void home( void );

    void noDisplay( void );
    void display( void );
    void noBlink( void );
    void blink( void );
    void noCursor( void );
    void cursor( void );
    void scrollDisplayLeft( void );
    void scrollDisplayRight( void );
    void leftToRight( void );
    void rightToLeft( void );
    void autoscroll( void );
    void noAutoscroll( void );

    //void setRowOffsets( int row1, int row2 );
    //void createChar( uint8_t, uint8_t[] );
    void setCursor( uint8_t, uint8_t ); 
    void command( uint8_t );
    #if DOXYGEN_ONLY
        int putc(int c);     
        int printf(const char* format, ...);
    #endif
    
  
  protected:

    void send( uint8_t, uint8_t );
    
    // redirection for the printf and putc functions
    virtual int _putc( int value );
    virtual int _getc( void );
            
    // internal objects
    SPI _spi;
            
    DigitalOut _cs_pin;
    DigitalOut _rs_pin;
    DigitalOut _rst_pin;

    uint8_t _displayfunction;
    uint8_t _displaycontrol;
    uint8_t _displaymode;
};

#endif /* Hotboards_SpiLcd_h */