Version 6.0. Animaiton demo.

Dependents:   MIP8f_FRDM_Animation_sample

MIP8F_SPI_Ver6.0

Ver6.0 Addtional function is animation code sample.

Committer:
JDI_Mbed_Team
Date:
Wed Nov 21 07:28:10 2018 +0000
Revision:
6:4bfbc7e50577
Parent:
4:c41da26fe04a
MIP8F_SPI_Ver60

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JDI_Mbed_Team 0:b2d46804658c 1 /**
JDI_Mbed_Team 0:b2d46804658c 2 * @file MIP8F_SPI.h
JDI_Mbed_Team 3:c67b96404016 3 * @brief ver4.0 Library header file: Class for JDI MIP8 display
JDI_Mbed_Team 0:b2d46804658c 4 * @details
JDI_Mbed_Team 3:c67b96404016 5 * Ver4.0 Addtional function is Line buffer version
JDI_Mbed_Team 3:c67b96404016 6 * Ver3.0 Addtional function is font display
JDI_Mbed_Team 3:c67b96404016 7 * ver2.0 Addtional function is Monochome display by 1bit mode of SPI transfer.
JDI_Mbed_Team 3:c67b96404016 8 *
JDI_Mbed_Team 0:b2d46804658c 9 * <license>
JDI_Mbed_Team 0:b2d46804658c 10 * Copyright 2018 Japan Display Inc.
JDI_Mbed_Team 0:b2d46804658c 11 * Licensed under the Apache License, Version 2.0 (the "License");
JDI_Mbed_Team 0:b2d46804658c 12 * you may not use this file except in compliance with the License.
JDI_Mbed_Team 0:b2d46804658c 13 * You may obtain a copy of the License at
JDI_Mbed_Team 0:b2d46804658c 14 * http://www.apache.org/licenses/LICENSE-2.0
JDI_Mbed_Team 0:b2d46804658c 15 * Unless required by applicable law or agreed to in writing, software
JDI_Mbed_Team 0:b2d46804658c 16 * distributed under the License is distributed on an "AS IS" BASIS,
JDI_Mbed_Team 0:b2d46804658c 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
JDI_Mbed_Team 0:b2d46804658c 18 * See the License for the specific language governing permissions and
JDI_Mbed_Team 0:b2d46804658c 19 * limitations under the License.
JDI_Mbed_Team 0:b2d46804658c 20 */
JDI_Mbed_Team 0:b2d46804658c 21
JDI_Mbed_Team 0:b2d46804658c 22 #include "mbed.h"
JDI_Mbed_Team 0:b2d46804658c 23 /*****************************************
JDI_Mbed_Team 0:b2d46804658c 24 * Select compile option
JDI_Mbed_Team 0:b2d46804658c 25 ******************************************/
JDI_Mbed_Team 0:b2d46804658c 26 /**
JDI_Mbed_Team 3:c67b96404016 27 * @def LINEBUFF_MODE 0
JDI_Mbed_Team 3:c67b96404016 28 * @brief If you will use a Line Buffer mode,you must define LINEBUFF_MODE 1
JDI_Mbed_Team 0:b2d46804658c 29 */
JDI_Mbed_Team 4:c41da26fe04a 30 #define LINEBUFF_MODE 0
JDI_Mbed_Team 3:c67b96404016 31 /**
JDI_Mbed_Team 3:c67b96404016 32 * @def FRAMEBUFF_MODE 1
JDI_Mbed_Team 3:c67b96404016 33 * @brief If you will use a Frame Buffer mode,you must define LINEBUFF_MODE 1
JDI_Mbed_Team 3:c67b96404016 34 */
JDI_Mbed_Team 4:c41da26fe04a 35 #define FRAMEBUFF_MODE 1
JDI_Mbed_Team 6:4bfbc7e50577 36
JDI_Mbed_Team 6:4bfbc7e50577 37 #define MOVIEBUFF_MODE 1
JDI_Mbed_Team 0:b2d46804658c 38 /*****************************************
JDI_Mbed_Team 0:b2d46804658c 39 ******************************************/
JDI_Mbed_Team 3:c67b96404016 40 #if LINEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 41 // 1dot = 4bit
JDI_Mbed_Team 0:b2d46804658c 42 #define LINE_SIZE 320 // 640 / 2
JDI_Mbed_Team 3:c67b96404016 43 #endif
JDI_Mbed_Team 3:c67b96404016 44 #if FRAMEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 45 //#define FRAME_SIZE 9328 //1flame = 212dot X 88dot 1dot = 4bit
JDI_Mbed_Team 0:b2d46804658c 46 #define FRAME_SIZE 153600 // 153600 640 x 480 103600 400dot x 200dot 1dot = 4bit
JDI_Mbed_Team 0:b2d46804658c 47 #endif
JDI_Mbed_Team 6:4bfbc7e50577 48 #if MOVIEBUFF_MODE
JDI_Mbed_Team 6:4bfbc7e50577 49 #define MOVIE_SIZE 3200 // 80x80/2
JDI_Mbed_Team 6:4bfbc7e50577 50 #define MOVIE_NUM 10
JDI_Mbed_Team 6:4bfbc7e50577 51 #define MOVIE_VERT_SIZE 80
JDI_Mbed_Team 6:4bfbc7e50577 52 #define MOVIE_HORI_SIZE 80
JDI_Mbed_Team 6:4bfbc7e50577 53 #endif
JDI_Mbed_Team 0:b2d46804658c 54
JDI_Mbed_Team 0:b2d46804658c 55 // RGB color definitions /* R, G, B */
JDI_Mbed_Team 0:b2d46804658c 56 #define Black 0x00 /* 0 0 0 */
JDI_Mbed_Team 0:b2d46804658c 57 #define Blue 0x02 /* 0 0 1 */
JDI_Mbed_Team 0:b2d46804658c 58 #define Green 0x04 /* 0 1 0 */
JDI_Mbed_Team 0:b2d46804658c 59 #define Cyan 0x06 /* 0 1 1 */
JDI_Mbed_Team 0:b2d46804658c 60 #define Red 0x08 /* 1 0 0 */
JDI_Mbed_Team 0:b2d46804658c 61 #define Magenta 0x0a /* 1 0 1 */
JDI_Mbed_Team 0:b2d46804658c 62 #define Yellow 0x0c /* 1 1 0 */
JDI_Mbed_Team 0:b2d46804658c 63 #define White 0x0e /* 1 1 1 */
JDI_Mbed_Team 0:b2d46804658c 64
JDI_Mbed_Team 0:b2d46804658c 65 //transfer mode
JDI_Mbed_Team 0:b2d46804658c 66 #define TrBIT4 0x00
JDI_Mbed_Team 0:b2d46804658c 67 #define TrBIT3 0x01
JDI_Mbed_Team 0:b2d46804658c 68 #define TrBIT1 0x02
JDI_Mbed_Team 0:b2d46804658c 69
JDI_Mbed_Team 0:b2d46804658c 70 #define RGB8(r,g,b) (((r & 0x80) >>4) | ((g & 0x80)>>5) | ((b & 0x80)>>6) ) & 0x0E //24bit->4bit ??6bit(8bit)?? MIP MASK 0000 1110??
JDI_Mbed_Team 0:b2d46804658c 71
JDI_Mbed_Team 0:b2d46804658c 72 /**
JDI_Mbed_Team 0:b2d46804658c 73 * @brief display class for JDI MIP8(memory in pixel 8 color display)
JDI_Mbed_Team 0:b2d46804658c 74 * @details spi-transfer has 3 mode.
JDI_Mbed_Team 0:b2d46804658c 75 * 4bit mode is color display, this bit arrange is R,G,B,x. R,G,B = R,G,B subpixel bit. a x bit is Dummy.
JDI_Mbed_Team 0:b2d46804658c 76 * No ues(3bit mode is color display, this bit arrange is R,G,B. R,G,B = R,G,B subpixel bit. No bit is Dummy.)
JDI_Mbed_Team 0:b2d46804658c 77 * 1bit mode is monocrome display,high speed refresh mode. a only Green subpixel of bitmap data is transfered.
JDI_Mbed_Team 0:b2d46804658c 78 */
JDI_Mbed_Team 0:b2d46804658c 79 class memLCD8 : public Stream {
JDI_Mbed_Team 0:b2d46804658c 80 public:
JDI_Mbed_Team 0:b2d46804658c 81
JDI_Mbed_Team 3:c67b96404016 82 unsigned char* font;
JDI_Mbed_Team 3:c67b96404016 83
JDI_Mbed_Team 3:c67b96404016 84 /**
JDI_Mbed_Team 3:c67b96404016 85 * @brief Constructor : Set MPU pin names
JDI_Mbed_Team 3:c67b96404016 86 */
JDI_Mbed_Team 0:b2d46804658c 87 memLCD8(PinName mosi,PinName miso,PinName sclk,PinName cs,PinName disp,PinName power);
JDI_Mbed_Team 0:b2d46804658c 88 void locate(int x, int y);
JDI_Mbed_Team 3:c67b96404016 89 void set_font(unsigned char* f);
JDI_Mbed_Team 3:c67b96404016 90 void setWH(int width, int height);
JDI_Mbed_Team 3:c67b96404016 91 void SwDisp(bool ONorOFF);
JDI_Mbed_Team 0:b2d46804658c 92 void foreground(uint8_t colour);
JDI_Mbed_Team 0:b2d46804658c 93 void background(uint8_t colour);
JDI_Mbed_Team 0:b2d46804658c 94 void command(char command);
JDI_Mbed_Team 3:c67b96404016 95 //ver2.0
JDI_Mbed_Team 3:c67b96404016 96 void SetTransfermode(int transfermode);
JDI_Mbed_Team 3:c67b96404016 97
JDI_Mbed_Team 3:c67b96404016 98 //ver3.0
JDI_Mbed_Team 3:c67b96404016 99 void set_FixedFontWidth( unsigned char width );
JDI_Mbed_Team 3:c67b96404016 100 void set_ActualFontWidth(void);
JDI_Mbed_Team 3:c67b96404016 101 unsigned char get_Background(void);
JDI_Mbed_Team 3:c67b96404016 102
JDI_Mbed_Team 3:c67b96404016 103 #if LINEBUFF_MODE
JDI_Mbed_Team 3:c67b96404016 104 //ver3.0
JDI_Mbed_Team 3:c67b96404016 105 void pixel(int x, uint8_t color);
JDI_Mbed_Team 3:c67b96404016 106 void clsLINEBUF(void);
JDI_Mbed_Team 3:c67b96404016 107 int* GetPixelValueFromLineBuffer(int _x,uint8_t* buff);
JDI_Mbed_Team 3:c67b96404016 108 void writeDISPLinebuffer(void);
JDI_Mbed_Team 3:c67b96404016 109 void writeDISP(int line,int transfermode);
JDI_Mbed_Team 3:c67b96404016 110 #endif
JDI_Mbed_Team 3:c67b96404016 111
JDI_Mbed_Team 3:c67b96404016 112 #if FRAMEBUFF_MODE
JDI_Mbed_Team 3:c67b96404016 113 void pixel(int x, int y, uint8_t color);
JDI_Mbed_Team 3:c67b96404016 114 void writeDISP(void);
JDI_Mbed_Team 3:c67b96404016 115 void writeDISP(int transfermode);// transfermode : 4bit,3bit,1bit
JDI_Mbed_Team 3:c67b96404016 116 void writeDISP(int startline , int endline , int transfermode);// refresh display selected line
JDI_Mbed_Team 3:c67b96404016 117 void clsBUF(void);
JDI_Mbed_Team 0:b2d46804658c 118 void setmarge(bool ifMarge);
JDI_Mbed_Team 2:944f2968c19f 119 void character(int x, int y, int c);
JDI_Mbed_Team 0:b2d46804658c 120 void circle(int x0, int y0, int r, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 121 void fillcircle(int x0, int y0, int r, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 122 void hline(int x0, int x1, int y, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 123 void vline(int x, int y0, int y1, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 124 void line(int x0, int y0, int x1, int y1, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 125 void rect(int x0, int y0, int x1, int y1, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 126 void fillrect(int x0, int y0, int x1, int y1, uint8_t color);
JDI_Mbed_Team 0:b2d46804658c 127 void Symbol(unsigned int x, unsigned int y, unsigned char *symbol);
JDI_Mbed_Team 0:b2d46804658c 128 //ver2.0
JDI_Mbed_Team 0:b2d46804658c 129 int* GetPixelValue(int x , int y , uint8_t* buff);
JDI_Mbed_Team 2:944f2968c19f 130 //ver3.0
JDI_Mbed_Team 2:944f2968c19f 131 int textout(int x,int y,char* text);
JDI_Mbed_Team 2:944f2968c19f 132 void oblique(int x, int y, int c);
JDI_Mbed_Team 2:944f2968c19f 133 int obliqueout(int x,int y,char* text);
JDI_Mbed_Team 3:c67b96404016 134 #endif
JDI_Mbed_Team 6:4bfbc7e50577 135 #if MOVIEBUFF_MODE
JDI_Mbed_Team 6:4bfbc7e50577 136 void movie_pixel(int x, int y, uint8_t color,int memnum);
JDI_Mbed_Team 6:4bfbc7e50577 137 void makeMovieFrame(int sx , int sy, int memnum);
JDI_Mbed_Team 6:4bfbc7e50577 138 void makeMovieFrame_Reverse(int sx , int sy, int memnum);
JDI_Mbed_Team 6:4bfbc7e50577 139 void makeMovieFrame_Updown(int sx , int sy, int memnum);
JDI_Mbed_Team 6:4bfbc7e50577 140 void RestoreMovieFrame(int sx , int sy, int memnum);
JDI_Mbed_Team 6:4bfbc7e50577 141 #endif
JDI_Mbed_Team 0:b2d46804658c 142 protected:
JDI_Mbed_Team 0:b2d46804658c 143 virtual int _putc(int value);
JDI_Mbed_Team 0:b2d46804658c 144 virtual int _getc();
JDI_Mbed_Team 0:b2d46804658c 145
JDI_Mbed_Team 0:b2d46804658c 146 //! SPI class
JDI_Mbed_Team 0:b2d46804658c 147 SPI _spi;
JDI_Mbed_Team 0:b2d46804658c 148 //! pin class , SPI line
JDI_Mbed_Team 0:b2d46804658c 149 DigitalOut _cs;
JDI_Mbed_Team 0:b2d46804658c 150 //! display on/off
JDI_Mbed_Team 0:b2d46804658c 151 DigitalOut _disp;
JDI_Mbed_Team 0:b2d46804658c 152 //! diplay power on/off
JDI_Mbed_Team 0:b2d46804658c 153 DigitalOut _power;
JDI_Mbed_Team 0:b2d46804658c 154
JDI_Mbed_Team 0:b2d46804658c 155 //! foreground color of display
JDI_Mbed_Team 0:b2d46804658c 156 char _foreground;
JDI_Mbed_Team 0:b2d46804658c 157 //! background color of display
JDI_Mbed_Team 0:b2d46804658c 158 char _background;
JDI_Mbed_Team 0:b2d46804658c 159 bool _ifMarge;
JDI_Mbed_Team 0:b2d46804658c 160 char _if16;
JDI_Mbed_Team 2:944f2968c19f 161
JDI_Mbed_Team 2:944f2968c19f 162 //ver3.0
JDI_Mbed_Team 2:944f2968c19f 163 //! Fixed Font width size if _FixedFontWidth==0, use actual Font width size.
JDI_Mbed_Team 2:944f2968c19f 164 unsigned char _FixedFontWidth;
JDI_Mbed_Team 2:944f2968c19f 165
JDI_Mbed_Team 3:c67b96404016 166 #if FRAMEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 167 //! frame buffer for display
JDI_Mbed_Team 0:b2d46804658c 168 uint8_t _dispBUF[FRAME_SIZE];
JDI_Mbed_Team 0:b2d46804658c 169 //uint8_t _LayerBUF[FRAME_SIZE];
JDI_Mbed_Team 3:c67b96404016 170 #endif
JDI_Mbed_Team 3:c67b96404016 171 #if LINEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 172 //uint8_t *_pLineBuf;
JDI_Mbed_Team 0:b2d46804658c 173 //! line buffer for display
JDI_Mbed_Team 3:c67b96404016 174 uint8_t _dispLINEBUF[LINE_SIZE];
JDI_Mbed_Team 0:b2d46804658c 175 #endif
JDI_Mbed_Team 0:b2d46804658c 176 //! height,diplay pixel size
JDI_Mbed_Team 0:b2d46804658c 177 int _height;
JDI_Mbed_Team 0:b2d46804658c 178 //! width,diplay pixel size
JDI_Mbed_Team 0:b2d46804658c 179 int _width;
JDI_Mbed_Team 0:b2d46804658c 180 unsigned int char_x;
JDI_Mbed_Team 0:b2d46804658c 181 unsigned int char_y;
JDI_Mbed_Team 6:4bfbc7e50577 182
JDI_Mbed_Team 6:4bfbc7e50577 183 #if MOVIEBUFF_MODE
JDI_Mbed_Team 6:4bfbc7e50577 184 uint8_t _dispMOVIEBUF[MOVIE_NUM][MOVIE_SIZE];
JDI_Mbed_Team 6:4bfbc7e50577 185 //int movie_height;
JDI_Mbed_Team 6:4bfbc7e50577 186 //int movie_width;
JDI_Mbed_Team 6:4bfbc7e50577 187 uint8_t _dispBACKUPBUF[MOVIE_SIZE];
JDI_Mbed_Team 6:4bfbc7e50577 188 #endif
JDI_Mbed_Team 0:b2d46804658c 189
JDI_Mbed_Team 0:b2d46804658c 190 //ver2.0
JDI_Mbed_Team 0:b2d46804658c 191 //! SPI transfer mode command to MIP8 diplay
JDI_Mbed_Team 0:b2d46804658c 192 char TrModeCommand;
JDI_Mbed_Team 0:b2d46804658c 193 int TrAdd;
JDI_Mbed_Team 0:b2d46804658c 194 int TrValue[3];
JDI_Mbed_Team 0:b2d46804658c 195 int TrValNum;
JDI_Mbed_Team 0:b2d46804658c 196 };