Version 6.0. Animaiton demo.
Dependents: MIP8f_FRDM_Animation_sample
MIP8F_SPI_Ver6.0
Ver6.0 Addtional function is animation code sample.
MIP8F_SPI.h@6:4bfbc7e50577, 2018-11-21 (annotated)
- 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?
User | Revision | Line number | New 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 | }; |