SEPS114A Driver

SEPS114A SPI Driver

class SPIPreInit : public SPI { public: SPIPreInit(PinName mosi, PinName miso, PinName clk) : SPI(mosi,miso,clk) { format(8,3); frequency(12000000); }; };

SPIPreInit gSpi(PB_15,NC,PB_13); PinName mosi(sda), PinName miso, PinName clk(scl) Adafruit_SEPS114A_Spi oled(gSpi,PB_14,PB_1,PB_2); PinName DC, PinName RST, PinName CS

You can print russian cyrilic

Adafruit_SEPS114A.h

Committer:
Dzhafarkhanov
Date:
2016-05-10
Revision:
1:a37035f55af3
Parent:
0:f7b7f71865d1

File content as of revision 1:a37035f55af3:




//#ifndef _Adafruit_SEPS114A_H_
//#define _Adafruit_SEPS114A_H_

#include "mbed.h"
#include "Adafruit_GFX.h"

#include <vector>
#include <algorithm>







/* some 16bit RGB color definitions  */
enum Color{                                             
 Black           = 0x0000,      /*   0,   0,   0 */
 Navy            = 0x000F,      /*   0,   0, 128 */
 DarkGreen       = 0x03E0,      /*   0, 128,   0 */
 DarkCyan        = 0x03EF,      /*   0, 128, 128 */
 Maroon          = 0x7800,      /* 128,   0,   0 */
 Purple          = 0x780F,      /* 128,   0, 128 */
 Olive           = 0x7BE0,      /* 128, 128,   0 */
 LightGrey       = 0xC618,      /* 192, 192, 192 */
 DarkGrey        = 0x7BEF,      /* 128, 128, 128 */
 Blue            = 0x001F,      /*   0,   0, 255 */
 Green           = 0x07E0,      /*   0, 255,   0 */
 Cyan            = 0x07FF,      /*   0, 255, 255 */
 Red             = 0xF800,      /* 255,   0,   0 */
 Magenta         = 0xF81F,      /* 255,   0, 255 */
 Yellow          = 0xFFE0,      /* 255, 255,   0 */
 White           = 0xFFFF,      /* 255, 255, 255 */
 Orange          = 0xFD20,      /* 255, 165,   0 */
 GreenYellow     = 0xAFE5,      /* 173, 255,  47 */
 Pink            = 0xF81F
};


// A DigitalOut sub-class that provides a constructed default state
class DigitalOut2 : public DigitalOut
{
public:
	DigitalOut2(PinName pin, bool active = false) : DigitalOut(pin) { write(active); };
	DigitalOut2& operator= (int value) { write(value); return *this; };
	DigitalOut2& operator= (DigitalOut2& rhs) { write(rhs.read()); return *this; };
	operator int() { return read(); };
};




/** The pure base class for the SSD1351 display driver.
 *
 
 */
class Adafruit_SEPS114A : public Adafruit_GFX
{
public:
	Adafruit_SEPS114A(PinName RST, uint8_t rawHeight = 96, uint8_t rawWidth = 96)
		: Adafruit_GFX(rawWidth,rawHeight)
		, rst(RST,false)
	{
		
		
		
	};

	void begin();
	
	void clearDisplay();
	void MemorySize(uint8_t X1, uint8_t X2, uint8_t Y1, uint8_t Y2);
	void set_region(int x, int y, int xs, int ys);
	uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
   
	
	// These must be implemented in the derived transport driver
	virtual void writeCommand(uint8_t reg_index,uint8_t reg_value) = 0;
	virtual void writeData(uint32_t data_value) = 0;
	virtual void DDRAM_access() = 0;
	virtual void drawPixel(int16_t x, int16_t y, uint16_t color);
     void setContrastControl(int brightness);
    
protected:
	
	DigitalOut2 rst;



};


/** This is the SPI SSD1351 display driver transport class
 *
 */
class Adafruit_SEPS114A_Spi : public Adafruit_SEPS114A
{
public:
	/** Create a SSD1351 SPI transport display driver instance with the specified DC, RST, and CS pins, as well as the display dimentions
	 *
	 * Required parameters
	 * @param spi - a reference to an initialized SPI object
	 * @param DC (Data/Command) pin name
	 * @param RST (Reset) pin name
	 * @param CS (Chip Select) pin name
	 *
	 * Optional parameters
	 * @param rawHeight - the vertical number of pixels for the display, defaults to 96
	 * @param rawWidth - the horizonal number of pixels for the display, defaults to 96
	 */
	Adafruit_SEPS114A_Spi(SPI &spi, PinName DC, PinName RST, PinName CS, uint8_t rawHieght = 96, uint8_t rawWidth = 96)
	    : Adafruit_SEPS114A(RST, rawHieght, rawWidth)
	    , cs(CS,true)
	    , dc(DC,false)	  
	    , mspi(spi)
	    {
		    begin();
		  	clearDisplay();
	    };

	virtual void writeCommand(uint8_t reg_index,uint8_t reg_value)
	{
	   
    //Select index addr
	    cs = 0;
	    dc = 0;	  	    
	    mspi.write(reg_index);
	    cs = 1;
	    //Write data to reg
	    cs = 0;
	    dc = 1;	
	 	mspi.write(reg_value);
	    cs = 1;
	};

	virtual void writeData(uint32_t data_value)
	{
	    cs = 0;	
	    dc = 1;	  	    
       	mspi.write(data_value);	 
	    cs = 1;
	};
	virtual void DDRAM_access()
	{
	    	cs = 0;
		    dc = 0;	  	    
		    mspi.write(0x08);
		    cs = 1;
	};

protected:
	
	DigitalOut2 cs, dc;
	SPI &mspi;
};