ADAFRUIT GP9002 VFD Driver supporting grayscale display, requires GFX-Library Note no "invert" function, also fixed timing issue in "begin"

Dependencies:   bitreversetable256

Dependents:   GP9002af_gray

Fork of Adafruit-GP9002-Graphic-VFD-Library by Oliver Broad

Committer:
oliverb
Date:
Sun May 15 07:13:29 2016 +0000
Revision:
4:dc3e19dfd45d
Parent:
2:ecf13e85f0fa
Improved byte cache, now needs only one SPI data write for a hit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
oliverb 0:e760d4cfabe4 1 #ifndef _ADAFRUIT_GP9002_H
oliverb 0:e760d4cfabe4 2 #define _ADAFRUIT_GP9002_H
oliverb 0:e760d4cfabe4 3
oliverb 0:e760d4cfabe4 4 #include "mbed.h"
oliverb 0:e760d4cfabe4 5
oliverb 0:e760d4cfabe4 6 #include "Adafruit_GFX.h"
oliverb 0:e760d4cfabe4 7
oliverb 1:09dc95ba8711 8 #define BLACK 0
oliverb 1:09dc95ba8711 9 #define GRAY 1
oliverb 1:09dc95ba8711 10 #define LTGRAY 2
oliverb 1:09dc95ba8711 11 #define WHITE 3
oliverb 0:e760d4cfabe4 12
oliverb 0:e760d4cfabe4 13 #define GP9002_DISPLAYSOFF 0x00
oliverb 0:e760d4cfabe4 14 #define GP9002_DISPLAY1ON 0x01
oliverb 0:e760d4cfabe4 15 #define GP9002_DISPLAY2ON 0x02
oliverb 0:e760d4cfabe4 16 #define GP9002_ADDRINCR 0x04
oliverb 0:e760d4cfabe4 17 #define GP9002_ADDRHELD 0x05
oliverb 0:e760d4cfabe4 18 #define GP9002_CLEARSCREEN 0x06
oliverb 0:e760d4cfabe4 19 #define GP9002_CONTROLPOWER 0x07
oliverb 0:e760d4cfabe4 20 #define GP9002_DATAWRITE 0x08
oliverb 0:e760d4cfabe4 21 #define GP9002_DATAREAD 0x09
oliverb 0:e760d4cfabe4 22 #define GP9002_LOWERADDR1 0x0A
oliverb 0:e760d4cfabe4 23 #define GP9002_HIGHERADDR1 0x0B
oliverb 0:e760d4cfabe4 24 #define GP9002_LOWERADDR2 0x0C
oliverb 0:e760d4cfabe4 25 #define GP9002_HIGHERADDR2 0x0D
oliverb 0:e760d4cfabe4 26 #define GP9002_ADDRL 0x0E
oliverb 0:e760d4cfabe4 27 #define GP9002_ADDRH 0x0F
oliverb 0:e760d4cfabe4 28 #define GP9002_OR 0x10
oliverb 0:e760d4cfabe4 29 #define GP9002_XOR 0x11
oliverb 0:e760d4cfabe4 30 #define GP9002_AND 0x12
oliverb 0:e760d4cfabe4 31 #define GP9002_BRIGHT 0x13
oliverb 0:e760d4cfabe4 32 #define GP9002_DISPLAY 0x14
oliverb 0:e760d4cfabe4 33 #define GP9002_DISPLAY_MONOCHROME 0x10
oliverb 0:e760d4cfabe4 34 #define GP9002_DISPLAY_GRAYSCALE 0x14
oliverb 0:e760d4cfabe4 35 #define GP9002_INTMODE 0x15
oliverb 0:e760d4cfabe4 36 #define GP9002_DRAWCHAR 0x20
oliverb 0:e760d4cfabe4 37 #define GP9002_CHARRAM 0x21
oliverb 0:e760d4cfabe4 38 #define GP9002_CHARSIZE 0x22
oliverb 0:e760d4cfabe4 39 #define GP9002_CHARBRIGHT 0x24
oliverb 0:e760d4cfabe4 40
oliverb 0:e760d4cfabe4 41
oliverb 0:e760d4cfabe4 42 class Adafruit_GP9002 : public Adafruit_GFX {
oliverb 0:e760d4cfabe4 43 public:
oliverb 0:e760d4cfabe4 44 /* Adafruit_GP9002(int8_t SCLK, int8_t MISO, int8_t MOSI,
oliverb 0:e760d4cfabe4 45 int8_t CS, int8_t DC);
oliverb 0:e760d4cfabe4 46 */
oliverb 0:e760d4cfabe4 47 Adafruit_GP9002(SPI &SPIport, PinName CS, PinName DC);
oliverb 0:e760d4cfabe4 48
oliverb 0:e760d4cfabe4 49 // particular to this display
oliverb 0:e760d4cfabe4 50 void begin(void);
oliverb 0:e760d4cfabe4 51 // uint8_t slowSPIread();
oliverb 0:e760d4cfabe4 52 // uint8_t fastSPIread();
oliverb 0:e760d4cfabe4 53 // void slowSPIwrite(uint8_t);
oliverb 0:e760d4cfabe4 54 // void fastSPIwrite(uint8_t);
oliverb 0:e760d4cfabe4 55
oliverb 0:e760d4cfabe4 56 void command(uint8_t c);
oliverb 0:e760d4cfabe4 57 void dataWrite(uint8_t c);
oliverb 0:e760d4cfabe4 58 uint8_t dataRead(void);
oliverb 0:e760d4cfabe4 59 void setBrightness(uint8_t val);
oliverb 0:e760d4cfabe4 60 void invert(bool i);
oliverb 0:e760d4cfabe4 61
oliverb 0:e760d4cfabe4 62 void displayOn();
oliverb 0:e760d4cfabe4 63 void displayOff();
oliverb 0:e760d4cfabe4 64 void clearDisplay(void);
oliverb 0:e760d4cfabe4 65
oliverb 0:e760d4cfabe4 66 virtual void drawPixel(int16_t x, int16_t y, uint16_t color);
oliverb 0:e760d4cfabe4 67 virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color);
oliverb 0:e760d4cfabe4 68
oliverb 0:e760d4cfabe4 69 private:
oliverb 0:e760d4cfabe4 70 // int8_t _miso, _mosi, _sclk, _dc, _cs;
oliverb 0:e760d4cfabe4 71 SPI _spi;
oliverb 0:e760d4cfabe4 72 DigitalOut _dc, _cs;
oliverb 2:ecf13e85f0fa 73 int addrcache,bytecache;
oliverb 0:e760d4cfabe4 74
oliverb 0:e760d4cfabe4 75 // volatile uint8_t *mosiport, *misopin, *clkport, *csport, *dcport;
oliverb 0:e760d4cfabe4 76 // uint8_t mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask;
oliverb 0:e760d4cfabe4 77
oliverb 0:e760d4cfabe4 78 // bool hwSPI;
oliverb 0:e760d4cfabe4 79
oliverb 0:e760d4cfabe4 80 void spiwrite(uint8_t c);
oliverb 0:e760d4cfabe4 81 };
oliverb 0:e760d4cfabe4 82
oliverb 0:e760d4cfabe4 83 #endif