Oliver Broad / Adafruit-GP9002-Grayscale-VFD-Library

Dependencies:   bitreversetable256

Dependents:   GP9002af_gray

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

Committer:
oliverb
Date:
Sun May 08 15:30:51 2016 +0000
Revision:
2:ecf13e85f0fa
Parent:
1:09dc95ba8711
Caching of address and location of last byte written makes it crazy-fast for vertical-aligned drawing operations; After a pixel write any further pixel writes that land in the same display byte need only one SPI write operation to complete.

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