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:
Mon Oct 22 04:21:43 2018 +0000
Revision:
0:b2d46804658c
Child:
1:2b85e7edcc4e
Version 2.0. MIP8 Frame Buffer Libraly. Addtional function is monochrome display by 1bit transfer mode .;  it is high speed refresh rate.

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.cpp
JDI_Mbed_Team 0:b2d46804658c 3 * @brief Library source code file: Class for JDI MIP8 display
JDI_Mbed_Team 0:b2d46804658c 4 * @details
JDI_Mbed_Team 0:b2d46804658c 5 * Copyright 2018 Japan Display Inc.
JDI_Mbed_Team 0:b2d46804658c 6 * Licensed under the Apache License, Version 2.0 (the "License");
JDI_Mbed_Team 0:b2d46804658c 7 * you may not use this file except in compliance with the License.
JDI_Mbed_Team 0:b2d46804658c 8 * You may obtain a copy of the License at
JDI_Mbed_Team 0:b2d46804658c 9 * http://www.apache.org/licenses/LICENSE-2.0
JDI_Mbed_Team 0:b2d46804658c 10 * Unless required by applicable law or agreed to in writing, software
JDI_Mbed_Team 0:b2d46804658c 11 * distributed under the License is distributed on an "AS IS" BASIS,
JDI_Mbed_Team 0:b2d46804658c 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
JDI_Mbed_Team 0:b2d46804658c 13 * See the License for the specific language governing permissions and
JDI_Mbed_Team 0:b2d46804658c 14 * limitations under the License.
JDI_Mbed_Team 0:b2d46804658c 15 */
JDI_Mbed_Team 0:b2d46804658c 16
JDI_Mbed_Team 0:b2d46804658c 17 #include "mbed.h"
JDI_Mbed_Team 0:b2d46804658c 18 #include "MIP8F_SPI.h"
JDI_Mbed_Team 0:b2d46804658c 19
JDI_Mbed_Team 0:b2d46804658c 20 // for debug
JDI_Mbed_Team 0:b2d46804658c 21 //Serial pc2(USBTX, USBRX); // tx, rx
JDI_Mbed_Team 0:b2d46804658c 22
JDI_Mbed_Team 0:b2d46804658c 23 memLCD8::memLCD8(PinName mosi,PinName miso,PinName sclk,PinName cs,PinName disp,PinName power)
JDI_Mbed_Team 0:b2d46804658c 24 : _spi(mosi, miso, sclk),_cs(cs),_disp(disp),_power(power)
JDI_Mbed_Team 0:b2d46804658c 25 {
JDI_Mbed_Team 0:b2d46804658c 26
JDI_Mbed_Team 0:b2d46804658c 27 _power= 0;
JDI_Mbed_Team 0:b2d46804658c 28 _disp= 0;
JDI_Mbed_Team 0:b2d46804658c 29 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 30 wait_us(100);
JDI_Mbed_Team 0:b2d46804658c 31
JDI_Mbed_Team 0:b2d46804658c 32 _power= 1;
JDI_Mbed_Team 0:b2d46804658c 33 _spi.format(8,0); // 8bit mode3
JDI_Mbed_Team 0:b2d46804658c 34 _spi.frequency(2000000); // 2 Mhz SPI clock
JDI_Mbed_Team 0:b2d46804658c 35 _spi.write(0x00); // mbed dummy
JDI_Mbed_Team 0:b2d46804658c 36
JDI_Mbed_Team 0:b2d46804658c 37 /*
JDI_Mbed_Team 0:b2d46804658c 38 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 39 command(0x02); // All crear mode
JDI_Mbed_Team 0:b2d46804658c 40 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 41 */
JDI_Mbed_Team 0:b2d46804658c 42
JDI_Mbed_Team 0:b2d46804658c 43 }
JDI_Mbed_Team 0:b2d46804658c 44
JDI_Mbed_Team 0:b2d46804658c 45 /**
JDI_Mbed_Team 0:b2d46804658c 46 * @brief putc
JDI_Mbed_Team 0:b2d46804658c 47 */
JDI_Mbed_Team 0:b2d46804658c 48 int memLCD8::_putc(int value)
JDI_Mbed_Team 0:b2d46804658c 49 {
JDI_Mbed_Team 0:b2d46804658c 50 if (value == '\n') { // new line
JDI_Mbed_Team 0:b2d46804658c 51 char_x = 0;
JDI_Mbed_Team 0:b2d46804658c 52 char_y = char_y + font[3];
JDI_Mbed_Team 0:b2d46804658c 53 if (char_y >= _height - font[3]) {
JDI_Mbed_Team 0:b2d46804658c 54 char_y = 0;
JDI_Mbed_Team 0:b2d46804658c 55 }
JDI_Mbed_Team 0:b2d46804658c 56 } else {
JDI_Mbed_Team 0:b2d46804658c 57 character(char_x, char_y, value);
JDI_Mbed_Team 0:b2d46804658c 58 }
JDI_Mbed_Team 0:b2d46804658c 59 return value;
JDI_Mbed_Team 0:b2d46804658c 60 }
JDI_Mbed_Team 0:b2d46804658c 61
JDI_Mbed_Team 0:b2d46804658c 62 /**
JDI_Mbed_Team 0:b2d46804658c 63 * @brief getc
JDI_Mbed_Team 0:b2d46804658c 64 */
JDI_Mbed_Team 0:b2d46804658c 65 int memLCD8::_getc()
JDI_Mbed_Team 0:b2d46804658c 66 {
JDI_Mbed_Team 0:b2d46804658c 67 return -1;
JDI_Mbed_Team 0:b2d46804658c 68 }
JDI_Mbed_Team 0:b2d46804658c 69
JDI_Mbed_Team 0:b2d46804658c 70 /**
JDI_Mbed_Team 0:b2d46804658c 71 * @brief set font name
JDI_Mbed_Team 0:b2d46804658c 72 */
JDI_Mbed_Team 0:b2d46804658c 73 void memLCD8::set_font(unsigned char* f)
JDI_Mbed_Team 0:b2d46804658c 74 {
JDI_Mbed_Team 0:b2d46804658c 75 font = f;
JDI_Mbed_Team 0:b2d46804658c 76 }
JDI_Mbed_Team 0:b2d46804658c 77
JDI_Mbed_Team 0:b2d46804658c 78 /**
JDI_Mbed_Team 0:b2d46804658c 79 * @brief set allocation for font
JDI_Mbed_Team 0:b2d46804658c 80 */
JDI_Mbed_Team 0:b2d46804658c 81 void memLCD8::locate(int x, int y)
JDI_Mbed_Team 0:b2d46804658c 82 {
JDI_Mbed_Team 0:b2d46804658c 83 char_x = x;
JDI_Mbed_Team 0:b2d46804658c 84 char_y = y;
JDI_Mbed_Team 0:b2d46804658c 85 }
JDI_Mbed_Team 0:b2d46804658c 86 /**
JDI_Mbed_Team 0:b2d46804658c 87 * @brief dispay character by font
JDI_Mbed_Team 0:b2d46804658c 88 */
JDI_Mbed_Team 0:b2d46804658c 89 void memLCD8::character(int x, int y, int c)
JDI_Mbed_Team 0:b2d46804658c 90 {
JDI_Mbed_Team 0:b2d46804658c 91 unsigned int hor,vert,offset0,offset1,bpl,j,i,b; // T.Okamoto modified, for big font
JDI_Mbed_Team 0:b2d46804658c 92 unsigned char* zeichen;
JDI_Mbed_Team 0:b2d46804658c 93 unsigned char z,w;
JDI_Mbed_Team 0:b2d46804658c 94 // int index;
JDI_Mbed_Team 0:b2d46804658c 95 if ((c < 31) || (c > 127)) return; // test char range
JDI_Mbed_Team 0:b2d46804658c 96
JDI_Mbed_Team 0:b2d46804658c 97 offset0 = font[0]; // bytes / char
JDI_Mbed_Team 0:b2d46804658c 98 offset1 = font[1]; // bytes / char
JDI_Mbed_Team 0:b2d46804658c 99 hor = font[2]; // get hor size of font
JDI_Mbed_Team 0:b2d46804658c 100 vert = font[3]; // get vert size of font
JDI_Mbed_Team 0:b2d46804658c 101 bpl = font[4]; // bytes per line
JDI_Mbed_Team 0:b2d46804658c 102
JDI_Mbed_Team 0:b2d46804658c 103 if (char_x + hor > _width) {
JDI_Mbed_Team 0:b2d46804658c 104 char_x = 0;
JDI_Mbed_Team 0:b2d46804658c 105 char_y = char_y + vert;
JDI_Mbed_Team 0:b2d46804658c 106 if (char_y >= _height - font[3]) char_y = 0; // original = font[2] T.Okamoto modified, for big font
JDI_Mbed_Team 0:b2d46804658c 107 }
JDI_Mbed_Team 0:b2d46804658c 108 zeichen = &font[(c -32) * (offset0 *256 + offset1) + 5]; // start of char bitmap // original = +4 T.Okamoto modified, for big font
JDI_Mbed_Team 0:b2d46804658c 109 w = zeichen[0]; // width of actual char
JDI_Mbed_Team 0:b2d46804658c 110 for (j=0; j<vert; j++) { // vert line
JDI_Mbed_Team 0:b2d46804658c 111 for (i=0; i<hor; i++) { // horz line
JDI_Mbed_Team 0:b2d46804658c 112 z = zeichen[bpl * i + ((j & 0xF8) >> 3)+1];
JDI_Mbed_Team 0:b2d46804658c 113 b = 1 << (j & 0x07);
JDI_Mbed_Team 0:b2d46804658c 114 // index = (y+j)*_width+(x+i);
JDI_Mbed_Team 0:b2d46804658c 115 if (( z & b ) != 0x00) pixel(x+i,y+j,_foreground);
JDI_Mbed_Team 0:b2d46804658c 116 else if (_ifMarge == 0) pixel(x+i,y+j,_background);// _background -> _LayerBUF[index];
JDI_Mbed_Team 0:b2d46804658c 117
JDI_Mbed_Team 0:b2d46804658c 118 }
JDI_Mbed_Team 0:b2d46804658c 119 }
JDI_Mbed_Team 0:b2d46804658c 120 if ((w + 2) < hor) char_x += w + 2; // x offset to next char
JDI_Mbed_Team 0:b2d46804658c 121 else char_x += hor;
JDI_Mbed_Team 0:b2d46804658c 122 }
JDI_Mbed_Team 0:b2d46804658c 123
JDI_Mbed_Team 0:b2d46804658c 124 /**
JDI_Mbed_Team 0:b2d46804658c 125 * @brief dispay a image from symbol data
JDI_Mbed_Team 0:b2d46804658c 126 */
JDI_Mbed_Team 0:b2d46804658c 127 void memLCD8::Symbol(unsigned int x, unsigned int y, unsigned char *symbol)
JDI_Mbed_Team 0:b2d46804658c 128 {
JDI_Mbed_Team 0:b2d46804658c 129 unsigned int hor,vert,bpl,j,i,b;
JDI_Mbed_Team 0:b2d46804658c 130 unsigned char* zeichen;
JDI_Mbed_Team 0:b2d46804658c 131 unsigned char z,w;
JDI_Mbed_Team 0:b2d46804658c 132
JDI_Mbed_Team 0:b2d46804658c 133 // int index;
JDI_Mbed_Team 0:b2d46804658c 134 hor = symbol[0]; // get hor size of font
JDI_Mbed_Team 0:b2d46804658c 135 vert = symbol[1]; // get vert size of font
JDI_Mbed_Team 0:b2d46804658c 136 bpl = symbol[2]; // bytes per line
JDI_Mbed_Team 0:b2d46804658c 137
JDI_Mbed_Team 0:b2d46804658c 138 if (char_x + hor > _width) {
JDI_Mbed_Team 0:b2d46804658c 139 char_x = 0;
JDI_Mbed_Team 0:b2d46804658c 140 char_y = char_y + vert;
JDI_Mbed_Team 0:b2d46804658c 141 if (char_y >= _height - symbol[1]) char_y = 0;
JDI_Mbed_Team 0:b2d46804658c 142 }
JDI_Mbed_Team 0:b2d46804658c 143 zeichen = &symbol[3];
JDI_Mbed_Team 0:b2d46804658c 144 w = zeichen[0]; // width of actual char
JDI_Mbed_Team 0:b2d46804658c 145 for (j=0; j<vert; j++) { // vert line
JDI_Mbed_Team 0:b2d46804658c 146 for (i=0; i<hor; i++) { // horz line
JDI_Mbed_Team 0:b2d46804658c 147 z = zeichen[bpl * i + ((j & 0xF8) >> 3)+1];
JDI_Mbed_Team 0:b2d46804658c 148 b = 1 << (j & 0x07);
JDI_Mbed_Team 0:b2d46804658c 149 // index = (y+j)*_width+(x+i);
JDI_Mbed_Team 0:b2d46804658c 150 if (( z & b ) != 0x00) pixel(x+i,y+j,_foreground);
JDI_Mbed_Team 0:b2d46804658c 151 else if (_ifMarge == 0) pixel(x+i,y+j,_background);// _background -> _LayerBUF[index];
JDI_Mbed_Team 0:b2d46804658c 152 }
JDI_Mbed_Team 0:b2d46804658c 153 }
JDI_Mbed_Team 0:b2d46804658c 154 if ((w + 2) < hor) char_x += w + 2; // x offset to next char
JDI_Mbed_Team 0:b2d46804658c 155 else char_x += hor;
JDI_Mbed_Team 0:b2d46804658c 156 }
JDI_Mbed_Team 0:b2d46804658c 157
JDI_Mbed_Team 0:b2d46804658c 158 /*
JDI_Mbed_Team 0:b2d46804658c 159 void memLCD8::LayerCopy(void)
JDI_Mbed_Team 0:b2d46804658c 160 {
JDI_Mbed_Team 0:b2d46804658c 161 for(int i=0; i<FRAME_SIZE; i++) _LayerBUF[i] = _dispBUF[i];
JDI_Mbed_Team 0:b2d46804658c 162
JDI_Mbed_Team 0:b2d46804658c 163 }
JDI_Mbed_Team 0:b2d46804658c 164 */
JDI_Mbed_Team 0:b2d46804658c 165 /**
JDI_Mbed_Team 0:b2d46804658c 166 * @brief dispay a circle line by color data
JDI_Mbed_Team 0:b2d46804658c 167 */
JDI_Mbed_Team 0:b2d46804658c 168 void memLCD8::circle(int x0, int y0, int r, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 169 {
JDI_Mbed_Team 0:b2d46804658c 170 int x = -r, y = 0, err = 2-2*r, e2;
JDI_Mbed_Team 0:b2d46804658c 171 do {
JDI_Mbed_Team 0:b2d46804658c 172 pixel(x0-x, y0+y,color);
JDI_Mbed_Team 0:b2d46804658c 173 pixel(x0+x, y0+y,color);
JDI_Mbed_Team 0:b2d46804658c 174 pixel(x0+x, y0-y,color);
JDI_Mbed_Team 0:b2d46804658c 175 pixel(x0-x, y0-y,color);
JDI_Mbed_Team 0:b2d46804658c 176 e2 = err;
JDI_Mbed_Team 0:b2d46804658c 177 if (e2 <= y) {
JDI_Mbed_Team 0:b2d46804658c 178 err += ++y*2+1;
JDI_Mbed_Team 0:b2d46804658c 179 if (-x == y && e2 <= x) e2 = 0;
JDI_Mbed_Team 0:b2d46804658c 180 }
JDI_Mbed_Team 0:b2d46804658c 181 if (e2 > x) err += ++x*2+1;
JDI_Mbed_Team 0:b2d46804658c 182 } while (x <= 0);
JDI_Mbed_Team 0:b2d46804658c 183
JDI_Mbed_Team 0:b2d46804658c 184 }
JDI_Mbed_Team 0:b2d46804658c 185 /**
JDI_Mbed_Team 0:b2d46804658c 186 * @brief dispay a filled circle by color data
JDI_Mbed_Team 0:b2d46804658c 187 */
JDI_Mbed_Team 0:b2d46804658c 188 void memLCD8::fillcircle(int x0, int y0, int r, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 189 {
JDI_Mbed_Team 0:b2d46804658c 190 int x = -r, y = 0, err = 2-2*r, e2;
JDI_Mbed_Team 0:b2d46804658c 191 do {
JDI_Mbed_Team 0:b2d46804658c 192 vline(x0-x, y0-y, y0+y, color);
JDI_Mbed_Team 0:b2d46804658c 193 vline(x0+x, y0-y, y0+y, color);
JDI_Mbed_Team 0:b2d46804658c 194 e2 = err;
JDI_Mbed_Team 0:b2d46804658c 195 if (e2 <= y) {
JDI_Mbed_Team 0:b2d46804658c 196 err += ++y*2+1;
JDI_Mbed_Team 0:b2d46804658c 197 if (-x == y && e2 <= x) e2 = 0;
JDI_Mbed_Team 0:b2d46804658c 198 }
JDI_Mbed_Team 0:b2d46804658c 199 if (e2 > x) err += ++x*2+1;
JDI_Mbed_Team 0:b2d46804658c 200 } while (x <= 0);
JDI_Mbed_Team 0:b2d46804658c 201 }
JDI_Mbed_Team 0:b2d46804658c 202 /**
JDI_Mbed_Team 0:b2d46804658c 203 * @brief dispay a horizontal line by color data
JDI_Mbed_Team 0:b2d46804658c 204 */
JDI_Mbed_Team 0:b2d46804658c 205 void memLCD8::hline(int x0, int x1, int y, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 206 {
JDI_Mbed_Team 0:b2d46804658c 207 int w;
JDI_Mbed_Team 0:b2d46804658c 208 w = x1 - x0 + 1;
JDI_Mbed_Team 0:b2d46804658c 209 for (int j=0; j<w; j++) pixel(x0+j, y,color);
JDI_Mbed_Team 0:b2d46804658c 210 }
JDI_Mbed_Team 0:b2d46804658c 211
JDI_Mbed_Team 0:b2d46804658c 212 /**
JDI_Mbed_Team 0:b2d46804658c 213 * @brief dispay a vertical line by color data
JDI_Mbed_Team 0:b2d46804658c 214 */
JDI_Mbed_Team 0:b2d46804658c 215 void memLCD8::vline(int x, int y0, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 216 {
JDI_Mbed_Team 0:b2d46804658c 217 int h;
JDI_Mbed_Team 0:b2d46804658c 218 h = y1 - y0 + 1;
JDI_Mbed_Team 0:b2d46804658c 219 for (int j=0; j<h; j++) pixel(x, y0+j,color);
JDI_Mbed_Team 0:b2d46804658c 220 }
JDI_Mbed_Team 0:b2d46804658c 221 /**
JDI_Mbed_Team 0:b2d46804658c 222 * @brief dispay a line by color data
JDI_Mbed_Team 0:b2d46804658c 223 */
JDI_Mbed_Team 0:b2d46804658c 224 void memLCD8::line(int x0, int y0, int x1, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 225 {
JDI_Mbed_Team 0:b2d46804658c 226 int dx = 0, dy = 0;
JDI_Mbed_Team 0:b2d46804658c 227 int dx_sym = 0, dy_sym = 0;
JDI_Mbed_Team 0:b2d46804658c 228 int dx_x2 = 0, dy_x2 = 0;
JDI_Mbed_Team 0:b2d46804658c 229 int di = 0;
JDI_Mbed_Team 0:b2d46804658c 230
JDI_Mbed_Team 0:b2d46804658c 231 dx = x1-x0;
JDI_Mbed_Team 0:b2d46804658c 232 dy = y1-y0;
JDI_Mbed_Team 0:b2d46804658c 233
JDI_Mbed_Team 0:b2d46804658c 234 if (dx == 0) { /* vertical line */
JDI_Mbed_Team 0:b2d46804658c 235 if (y1 > y0) vline(x0,y0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 236 else vline(x0,y1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 237 return;
JDI_Mbed_Team 0:b2d46804658c 238 }
JDI_Mbed_Team 0:b2d46804658c 239
JDI_Mbed_Team 0:b2d46804658c 240 if (dx > 0) {
JDI_Mbed_Team 0:b2d46804658c 241 dx_sym = 1;
JDI_Mbed_Team 0:b2d46804658c 242 } else {
JDI_Mbed_Team 0:b2d46804658c 243 dx_sym = -1;
JDI_Mbed_Team 0:b2d46804658c 244 }
JDI_Mbed_Team 0:b2d46804658c 245 if (dy == 0) { /* horizontal line */
JDI_Mbed_Team 0:b2d46804658c 246 if (x1 > x0) hline(x0,x1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 247 else hline(x1,x0,y0,color);
JDI_Mbed_Team 0:b2d46804658c 248 return;
JDI_Mbed_Team 0:b2d46804658c 249 }
JDI_Mbed_Team 0:b2d46804658c 250
JDI_Mbed_Team 0:b2d46804658c 251 if (dy > 0) {
JDI_Mbed_Team 0:b2d46804658c 252 dy_sym = 1;
JDI_Mbed_Team 0:b2d46804658c 253 } else {
JDI_Mbed_Team 0:b2d46804658c 254 dy_sym = -1;
JDI_Mbed_Team 0:b2d46804658c 255 }
JDI_Mbed_Team 0:b2d46804658c 256
JDI_Mbed_Team 0:b2d46804658c 257 dx = dx_sym*dx;
JDI_Mbed_Team 0:b2d46804658c 258 dy = dy_sym*dy;
JDI_Mbed_Team 0:b2d46804658c 259
JDI_Mbed_Team 0:b2d46804658c 260 dx_x2 = dx*2;
JDI_Mbed_Team 0:b2d46804658c 261 dy_x2 = dy*2;
JDI_Mbed_Team 0:b2d46804658c 262
JDI_Mbed_Team 0:b2d46804658c 263 if (dx >= dy) {
JDI_Mbed_Team 0:b2d46804658c 264 di = dy_x2 - dx;
JDI_Mbed_Team 0:b2d46804658c 265 while (x0 != x1) {
JDI_Mbed_Team 0:b2d46804658c 266
JDI_Mbed_Team 0:b2d46804658c 267 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 268 x0 += dx_sym;
JDI_Mbed_Team 0:b2d46804658c 269 if (di<0) {
JDI_Mbed_Team 0:b2d46804658c 270 di += dy_x2;
JDI_Mbed_Team 0:b2d46804658c 271 } else {
JDI_Mbed_Team 0:b2d46804658c 272 di += dy_x2 - dx_x2;
JDI_Mbed_Team 0:b2d46804658c 273 y0 += dy_sym;
JDI_Mbed_Team 0:b2d46804658c 274 }
JDI_Mbed_Team 0:b2d46804658c 275 }
JDI_Mbed_Team 0:b2d46804658c 276 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 277 } else {
JDI_Mbed_Team 0:b2d46804658c 278 di = dx_x2 - dy;
JDI_Mbed_Team 0:b2d46804658c 279 while (y0 != y1) {
JDI_Mbed_Team 0:b2d46804658c 280 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 281 y0 += dy_sym;
JDI_Mbed_Team 0:b2d46804658c 282 if (di < 0) {
JDI_Mbed_Team 0:b2d46804658c 283 di += dx_x2;
JDI_Mbed_Team 0:b2d46804658c 284 } else {
JDI_Mbed_Team 0:b2d46804658c 285 di += dx_x2 - dy_x2;
JDI_Mbed_Team 0:b2d46804658c 286 x0 += dx_sym;
JDI_Mbed_Team 0:b2d46804658c 287 }
JDI_Mbed_Team 0:b2d46804658c 288 }
JDI_Mbed_Team 0:b2d46804658c 289 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 290 }
JDI_Mbed_Team 0:b2d46804658c 291 return;
JDI_Mbed_Team 0:b2d46804658c 292 }
JDI_Mbed_Team 0:b2d46804658c 293 /**
JDI_Mbed_Team 0:b2d46804658c 294 * @brief dispay a rectangle line by color data
JDI_Mbed_Team 0:b2d46804658c 295 */
JDI_Mbed_Team 0:b2d46804658c 296 void memLCD8::rect(int x0, int y0, int x1, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 297 {
JDI_Mbed_Team 0:b2d46804658c 298
JDI_Mbed_Team 0:b2d46804658c 299 if (x1 > x0) hline(x0,x1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 300 else hline(x1,x0,y0,color);
JDI_Mbed_Team 0:b2d46804658c 301
JDI_Mbed_Team 0:b2d46804658c 302 if (y1 > y0) vline(x0,y0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 303 else vline(x0,y1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 304
JDI_Mbed_Team 0:b2d46804658c 305 if (x1 > x0) hline(x0,x1,y1,color);
JDI_Mbed_Team 0:b2d46804658c 306 else hline(x1,x0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 307
JDI_Mbed_Team 0:b2d46804658c 308 if (y1 > y0) vline(x1,y0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 309 else vline(x1,y1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 310
JDI_Mbed_Team 0:b2d46804658c 311 return;
JDI_Mbed_Team 0:b2d46804658c 312 }
JDI_Mbed_Team 0:b2d46804658c 313
JDI_Mbed_Team 0:b2d46804658c 314 /**
JDI_Mbed_Team 0:b2d46804658c 315 * @brief dispay a filled rectangle by color data
JDI_Mbed_Team 0:b2d46804658c 316 */
JDI_Mbed_Team 0:b2d46804658c 317 void memLCD8::fillrect(int x0, int y0, int x1, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 318 {
JDI_Mbed_Team 0:b2d46804658c 319 int h = y1 - y0 + 1;
JDI_Mbed_Team 0:b2d46804658c 320 for (int i=0; i<h; i++) hline(x0, x1, y0+i, color);
JDI_Mbed_Team 0:b2d46804658c 321 }
JDI_Mbed_Team 0:b2d46804658c 322
JDI_Mbed_Team 0:b2d46804658c 323 #ifdef LINEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 324 void memLCD8::pixel(int x, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 325 {
JDI_Mbed_Team 0:b2d46804658c 326 if(!(x % 2)) _dispBUF[x/2] = _dispBUF[x/2]&0x0F | (color << 4)&0xF0 ; //MASK 0000 1111
JDI_Mbed_Team 0:b2d46804658c 327 else _dispBUF[x/2] = _dispBUF[x/2]&0xF0 | (color )&0x0F ; //MASK 1111 0000
JDI_Mbed_Team 0:b2d46804658c 328 }
JDI_Mbed_Team 0:b2d46804658c 329
JDI_Mbed_Team 0:b2d46804658c 330 //void memLCD8::writeLine(int line) // refresh gate line display
JDI_Mbed_Team 0:b2d46804658c 331 void memLCD8::writeDISP(int line,int transfermode) // refresh gate line display
JDI_Mbed_Team 0:b2d46804658c 332 {
JDI_Mbed_Team 0:b2d46804658c 333
JDI_Mbed_Team 0:b2d46804658c 334 char pol = 0;
JDI_Mbed_Team 0:b2d46804658c 335 SetTransfermode(transfermode);
JDI_Mbed_Team 0:b2d46804658c 336
JDI_Mbed_Team 0:b2d46804658c 337
JDI_Mbed_Team 0:b2d46804658c 338 // line
JDI_Mbed_Team 0:b2d46804658c 339 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 340 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 341 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 342 _spi.write(TrModeCommand | (pol << 6) | (line+1)>>8 ); // COMMAND
JDI_Mbed_Team 0:b2d46804658c 343 _spi.write((line+1)& 0x00FF ); // V ADDR
JDI_Mbed_Team 0:b2d46804658c 344 for(int j=0; j<_width/2; j++) _spi.write(_dispBUF[j]);
JDI_Mbed_Team 0:b2d46804658c 345 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 346 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 347 // wait_ms(1); //1.8Hz simulation
JDI_Mbed_Team 0:b2d46804658c 348 // wait_ms(2); //1.35Hz simulation
JDI_Mbed_Team 0:b2d46804658c 349 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 350 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 351 if(pol) pol=0x00;
JDI_Mbed_Team 0:b2d46804658c 352 else pol=0x01;
JDI_Mbed_Team 0:b2d46804658c 353 }
JDI_Mbed_Team 0:b2d46804658c 354 #endif
JDI_Mbed_Team 0:b2d46804658c 355
JDI_Mbed_Team 0:b2d46804658c 356 #ifndef LINEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 357 /**
JDI_Mbed_Team 0:b2d46804658c 358 * @brief Transfer One Pixel Data with x,y allocation
JDI_Mbed_Team 0:b2d46804658c 359 * @param[in] int x : horizontal allocation left to right
JDI_Mbed_Team 0:b2d46804658c 360 * @param[in] int y : vertival allocation top to bottom
JDI_Mbed_Team 0:b2d46804658c 361 * @param[in] uint8_t color : the color data for Drawing 0x0X x is color data(RGBC) C is not used
JDI_Mbed_Team 0:b2d46804658c 362 */
JDI_Mbed_Team 0:b2d46804658c 363 void memLCD8::pixel(int x, int y, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 364 {
JDI_Mbed_Team 0:b2d46804658c 365 if(!(x % 2)) _dispBUF[y*_width/2+x/2] = _dispBUF[y*_width/2+x/2]&0x0F | (color << 4)&0xF0 ; //MASK 0000 1111
JDI_Mbed_Team 0:b2d46804658c 366 else _dispBUF[y*_width/2+x/2] = _dispBUF[y*_width/2+x/2]&0xF0 | (color )&0x0F ; //MASK 1111 0000
JDI_Mbed_Team 0:b2d46804658c 367 }
JDI_Mbed_Team 0:b2d46804658c 368 /**
JDI_Mbed_Team 0:b2d46804658c 369 * @brief Transfer Pixel Data from buffer to Display
JDI_Mbed_Team 0:b2d46804658c 370 * @param[in] int transfermode : instruction the transfer data size ,4bit,3bit,1bit
JDI_Mbed_Team 0:b2d46804658c 371 */
JDI_Mbed_Team 0:b2d46804658c 372 void memLCD8::writeDISP(int transfermode) // refresh whole display
JDI_Mbed_Team 0:b2d46804658c 373 {
JDI_Mbed_Team 0:b2d46804658c 374 char pol = 0;
JDI_Mbed_Team 0:b2d46804658c 375 //char command = 0x90; // 8b 1*0xNNNN *=POL x=AutoW A 1010
JDI_Mbed_Team 0:b2d46804658c 376 SetTransfermode(transfermode);
JDI_Mbed_Team 0:b2d46804658c 377
JDI_Mbed_Team 0:b2d46804658c 378 // frame
JDI_Mbed_Team 0:b2d46804658c 379 for (int i=0; i<_height; i++) {
JDI_Mbed_Team 0:b2d46804658c 380 // line
JDI_Mbed_Team 0:b2d46804658c 381 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 382 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 383 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 384 _spi.write(TrModeCommand | (pol << 6) | (i+1)>>8 ); // COMMAND
JDI_Mbed_Team 0:b2d46804658c 385 //pc2.printf("com 0x%x\n",TrModeCommand | (pol << 6) | (i+1)>>8);
JDI_Mbed_Team 0:b2d46804658c 386
JDI_Mbed_Team 0:b2d46804658c 387 _spi.write((i+1)& 0x00FF ); // V ADDR
JDI_Mbed_Team 0:b2d46804658c 388 //pc2.printf("v adr 0x%x\n",(i+1)& 0x00FF);
JDI_Mbed_Team 0:b2d46804658c 389
JDI_Mbed_Team 0:b2d46804658c 390 for(int j=0; j<_width; j+=TrAdd)
JDI_Mbed_Team 0:b2d46804658c 391 {
JDI_Mbed_Team 0:b2d46804658c 392 GetPixelValue(j,i,_dispBUF);
JDI_Mbed_Team 0:b2d46804658c 393 //pc2.printf("data=[%d]{%d][%d]/[%d]\n",j*TrAdd,i,TrValue[0],TrAdd);
JDI_Mbed_Team 0:b2d46804658c 394 for(int k=0;k<TrValNum;k++)
JDI_Mbed_Team 0:b2d46804658c 395 _spi.write(TrValue[k]);
JDI_Mbed_Team 0:b2d46804658c 396 }
JDI_Mbed_Team 0:b2d46804658c 397 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 398 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 399 // wait_ms(1); //1.8Hz simulation
JDI_Mbed_Team 0:b2d46804658c 400 // wait_ms(2); //1.35Hz simulation
JDI_Mbed_Team 0:b2d46804658c 401 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 402 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 403 if(pol) pol=0x00;
JDI_Mbed_Team 0:b2d46804658c 404 else pol=0x01;
JDI_Mbed_Team 0:b2d46804658c 405 }
JDI_Mbed_Team 0:b2d46804658c 406 }
JDI_Mbed_Team 0:b2d46804658c 407 //old function
JDI_Mbed_Team 0:b2d46804658c 408 void memLCD8::writeDISP(void) // refresh whole display
JDI_Mbed_Team 0:b2d46804658c 409 {
JDI_Mbed_Team 0:b2d46804658c 410
JDI_Mbed_Team 0:b2d46804658c 411 char pol = 0;
JDI_Mbed_Team 0:b2d46804658c 412 char command = 0x90; // 8b 1*0xNNNN *=POL x=AutoW A 1010
JDI_Mbed_Team 0:b2d46804658c 413
JDI_Mbed_Team 0:b2d46804658c 414 // frame
JDI_Mbed_Team 0:b2d46804658c 415 for (int i=0; i<_height; i++) {
JDI_Mbed_Team 0:b2d46804658c 416 // line
JDI_Mbed_Team 0:b2d46804658c 417 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 418 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 419 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 420 _spi.write(command | (pol << 6) | (i+1)>>8 ); // COMMAND
JDI_Mbed_Team 0:b2d46804658c 421 _spi.write((i+1)& 0x00FF ); // V ADDR
JDI_Mbed_Team 0:b2d46804658c 422 for(int j=0; j<_width/2; j++) _spi.write(_dispBUF[i*_width/2 + j]);
JDI_Mbed_Team 0:b2d46804658c 423 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 424 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 425 // wait_ms(1); //1.8Hz simulation
JDI_Mbed_Team 0:b2d46804658c 426 // wait_ms(2); //1.35Hz simulation
JDI_Mbed_Team 0:b2d46804658c 427 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 428 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 429 if(pol) pol=0x00;
JDI_Mbed_Team 0:b2d46804658c 430 else pol=0x01;
JDI_Mbed_Team 0:b2d46804658c 431 }
JDI_Mbed_Team 0:b2d46804658c 432 }
JDI_Mbed_Team 0:b2d46804658c 433 #endif
JDI_Mbed_Team 0:b2d46804658c 434 /**
JDI_Mbed_Team 0:b2d46804658c 435 * @brief Get Edited data for SPI transfer
JDI_Mbed_Team 0:b2d46804658c 436 * @param[in] int x:horizontal allocation left to right
JDI_Mbed_Team 0:b2d46804658c 437 * @param[in] int y:vertival allocation top to bottom
JDI_Mbed_Team 0:b2d46804658c 438 * @param[in] uint8_t* buff:buffer data for Display
JDI_Mbed_Team 0:b2d46804658c 439 */
JDI_Mbed_Team 0:b2d46804658c 440 int* memLCD8::GetPixelValue(int _x, int _y ,uint8_t* buff)
JDI_Mbed_Team 0:b2d46804658c 441 {
JDI_Mbed_Team 0:b2d46804658c 442 //bitmap data = 4bit data => modify transfer data bit size;
JDI_Mbed_Team 0:b2d46804658c 443 switch(TrModeCommand)
JDI_Mbed_Team 0:b2d46804658c 444 {
JDI_Mbed_Team 0:b2d46804658c 445 case 0x90: //TrBIT4:
JDI_Mbed_Team 0:b2d46804658c 446 // buffer 2pixel/1byte => 2pixel/1byte buffe 2byte毎進める。
JDI_Mbed_Team 0:b2d46804658c 447 // 176/4=44 400/4 = 100 640/4=160
JDI_Mbed_Team 0:b2d46804658c 448 TrValue[0] = _dispBUF[_y* _width/2 + _x];
JDI_Mbed_Team 0:b2d46804658c 449 break;
JDI_Mbed_Team 0:b2d46804658c 450 case 0x80://TrBIT3:
JDI_Mbed_Team 0:b2d46804658c 451 // buffer 2pixel/1byte => 3pixel-1subpixel/1bye (24 pixel/3byte) buffer 3byte毎進める。
JDI_Mbed_Team 0:b2d46804658c 452 // 176/3=58.666... 400/3 = 133.333... 640/3=213.333...
JDI_Mbed_Team 0:b2d46804658c 453 for(int j=0;j<3;j++) TrValue[j] = 0;
JDI_Mbed_Team 0:b2d46804658c 454 //for( int i = 0 ; i<12 ; i--)
JDI_Mbed_Team 0:b2d46804658c 455 {
JDI_Mbed_Team 0:b2d46804658c 456 //4 bit RGBN(Nは予備) => 3bit RGB
JDI_Mbed_Team 0:b2d46804658c 457 if( _width/2 > _x )
JDI_Mbed_Team 0:b2d46804658c 458 {
JDI_Mbed_Team 0:b2d46804658c 459 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x ]&0xE0) ) );
JDI_Mbed_Team 0:b2d46804658c 460 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x ]&0x0E) ) << 1);
JDI_Mbed_Team 0:b2d46804658c 461 }
JDI_Mbed_Team 0:b2d46804658c 462 if( _width/2 > _x + 1 )
JDI_Mbed_Team 0:b2d46804658c 463 {
JDI_Mbed_Team 0:b2d46804658c 464 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x + 1]&0xC0) ) >> 6);
JDI_Mbed_Team 0:b2d46804658c 465
JDI_Mbed_Team 0:b2d46804658c 466 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 1]&0x20) ) << 2);
JDI_Mbed_Team 0:b2d46804658c 467 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 1]&0x0E) ) << 3);
JDI_Mbed_Team 0:b2d46804658c 468 }
JDI_Mbed_Team 0:b2d46804658c 469 if( _width/2 > _x + 2 )
JDI_Mbed_Team 0:b2d46804658c 470 {
JDI_Mbed_Team 0:b2d46804658c 471 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 2]&0xE0) ) >> 4);
JDI_Mbed_Team 0:b2d46804658c 472 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 2]&0x08) ) >> 3);
JDI_Mbed_Team 0:b2d46804658c 473
JDI_Mbed_Team 0:b2d46804658c 474 TrValue[2] = TrValue[2] | ( ( (_dispBUF[_y* _width/2 + _x + 2]&0x06) ) << 5);
JDI_Mbed_Team 0:b2d46804658c 475 }
JDI_Mbed_Team 0:b2d46804658c 476 if( _width/2 > _x + 3 )
JDI_Mbed_Team 0:b2d46804658c 477 {
JDI_Mbed_Team 0:b2d46804658c 478 TrValue[2] = TrValue[2] | ( ( (_dispBUF[_y* _width/2 + _x + 3]&0xE0) ) >> 2);
JDI_Mbed_Team 0:b2d46804658c 479 TrValue[2] = TrValue[2] | ( ( (_dispBUF[_y* _width/2 + _x + 3]&0x0E) ) >> 1);
JDI_Mbed_Team 0:b2d46804658c 480 }
JDI_Mbed_Team 0:b2d46804658c 481 }
JDI_Mbed_Team 0:b2d46804658c 482 break;
JDI_Mbed_Team 0:b2d46804658c 483 case 0x88://TrBIT1:
JDI_Mbed_Team 0:b2d46804658c 484 // buffer 2pixel/1byte => 8 pixel/1byte buffe 4byte毎進める。
JDI_Mbed_Team 0:b2d46804658c 485 // 176/4=44 400/4 = 100 640/4=160
JDI_Mbed_Team 0:b2d46804658c 486 for(int j=0;j<3;j++) TrValue[j] = 0;
JDI_Mbed_Team 0:b2d46804658c 487 for(int i = 0 ; i<4 ; i++)
JDI_Mbed_Team 0:b2d46804658c 488 {
JDI_Mbed_Team 0:b2d46804658c 489 //Green bit => monochrome bit
JDI_Mbed_Team 0:b2d46804658c 490 if( _width/2 > _x + i )
JDI_Mbed_Team 0:b2d46804658c 491 {
JDI_Mbed_Team 0:b2d46804658c 492 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x + i]&0x40) == 0 ? 0 : 1 ) << (7-i*2) );
JDI_Mbed_Team 0:b2d46804658c 493 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x + i]&0x04) == 0 ? 0 : 1 ) << (7-i*2)-1 );
JDI_Mbed_Team 0:b2d46804658c 494 //pc2.printf("[%d+%d][%d]<0x%x>\n",_x,i,_y,_dispBUF[_y* _width/2 + _x + i]);
JDI_Mbed_Team 0:b2d46804658c 495 }
JDI_Mbed_Team 0:b2d46804658c 496 }
JDI_Mbed_Team 0:b2d46804658c 497 break;
JDI_Mbed_Team 0:b2d46804658c 498 }
JDI_Mbed_Team 0:b2d46804658c 499 return TrValue;
JDI_Mbed_Team 0:b2d46804658c 500 }
JDI_Mbed_Team 0:b2d46804658c 501 /**
JDI_Mbed_Team 0:b2d46804658c 502 * @brief set Configuration for transfer mode
JDI_Mbed_Team 0:b2d46804658c 503 * @param[in] int transfermode : instruction the transfer data size ,4bit,3bit,1bit and some parameter
JDI_Mbed_Team 0:b2d46804658c 504 */
JDI_Mbed_Team 0:b2d46804658c 505 void memLCD8::SetTransfermode(int transfermode)
JDI_Mbed_Team 0:b2d46804658c 506 {
JDI_Mbed_Team 0:b2d46804658c 507 switch(transfermode)
JDI_Mbed_Team 0:b2d46804658c 508 {
JDI_Mbed_Team 0:b2d46804658c 509 case TrBIT4:
JDI_Mbed_Team 0:b2d46804658c 510 TrModeCommand = 0x90;
JDI_Mbed_Team 0:b2d46804658c 511 TrAdd = 1;
JDI_Mbed_Team 0:b2d46804658c 512 TrValNum = 1;
JDI_Mbed_Team 0:b2d46804658c 513 break;
JDI_Mbed_Team 0:b2d46804658c 514 case TrBIT3:
JDI_Mbed_Team 0:b2d46804658c 515 TrModeCommand = 0x80;
JDI_Mbed_Team 0:b2d46804658c 516 // 176/3=58.666... 400/3 = 133.333... 640/3=213.333...
JDI_Mbed_Team 0:b2d46804658c 517 TrAdd = 4;
JDI_Mbed_Team 0:b2d46804658c 518 TrValNum = 3;
JDI_Mbed_Team 0:b2d46804658c 519 break;
JDI_Mbed_Team 0:b2d46804658c 520 case TrBIT1:
JDI_Mbed_Team 0:b2d46804658c 521 TrModeCommand = 0x88;
JDI_Mbed_Team 0:b2d46804658c 522 // 176/4=44 400/4 = 100 640/4=160
JDI_Mbed_Team 0:b2d46804658c 523 TrAdd = 4;
JDI_Mbed_Team 0:b2d46804658c 524 TrValNum = 1;
JDI_Mbed_Team 0:b2d46804658c 525 //pc2.printf("TrBIT1 TW%d Tvn%d \n",TrAdd,TrValNum);
JDI_Mbed_Team 0:b2d46804658c 526 break;
JDI_Mbed_Team 0:b2d46804658c 527 }
JDI_Mbed_Team 0:b2d46804658c 528 }
JDI_Mbed_Team 0:b2d46804658c 529 /**
JDI_Mbed_Team 0:b2d46804658c 530 * @brief clear buffer data by background color data
JDI_Mbed_Team 0:b2d46804658c 531 */
JDI_Mbed_Team 0:b2d46804658c 532 void memLCD8::clsBUF(void)
JDI_Mbed_Team 0:b2d46804658c 533 {
JDI_Mbed_Team 0:b2d46804658c 534
JDI_Mbed_Team 0:b2d46804658c 535 for (int i=0; i<_height; i++) {
JDI_Mbed_Team 0:b2d46804658c 536 for (int j=0; j<_width; j++) {
JDI_Mbed_Team 0:b2d46804658c 537 pixel(j,i,_background);
JDI_Mbed_Team 0:b2d46804658c 538 }
JDI_Mbed_Team 0:b2d46804658c 539 }
JDI_Mbed_Team 0:b2d46804658c 540 }
JDI_Mbed_Team 0:b2d46804658c 541
JDI_Mbed_Team 0:b2d46804658c 542 /**
JDI_Mbed_Team 0:b2d46804658c 543 * @brief set color data of foreground
JDI_Mbed_Team 0:b2d46804658c 544 */
JDI_Mbed_Team 0:b2d46804658c 545 void memLCD8::foreground(uint8_t colour)
JDI_Mbed_Team 0:b2d46804658c 546 {
JDI_Mbed_Team 0:b2d46804658c 547 _foreground = colour;
JDI_Mbed_Team 0:b2d46804658c 548 }
JDI_Mbed_Team 0:b2d46804658c 549
JDI_Mbed_Team 0:b2d46804658c 550 /**
JDI_Mbed_Team 0:b2d46804658c 551 * @brief set color data of background
JDI_Mbed_Team 0:b2d46804658c 552 */
JDI_Mbed_Team 0:b2d46804658c 553 void memLCD8::background(uint8_t colour)
JDI_Mbed_Team 0:b2d46804658c 554 {
JDI_Mbed_Team 0:b2d46804658c 555 _background = colour;
JDI_Mbed_Team 0:b2d46804658c 556 }
JDI_Mbed_Team 0:b2d46804658c 557 /*
JDI_Mbed_Team 0:b2d46804658c 558 void memLCD8::setmarge(bool ifMarge)
JDI_Mbed_Team 0:b2d46804658c 559 {
JDI_Mbed_Team 0:b2d46804658c 560 _ifMarge = ifMarge;
JDI_Mbed_Team 0:b2d46804658c 561 }
JDI_Mbed_Team 0:b2d46804658c 562 */
JDI_Mbed_Team 0:b2d46804658c 563
JDI_Mbed_Team 0:b2d46804658c 564 /**
JDI_Mbed_Team 0:b2d46804658c 565 * @brief set a display size ,width ,height
JDI_Mbed_Team 0:b2d46804658c 566 */
JDI_Mbed_Team 0:b2d46804658c 567 void memLCD8::setWH(int width, int height)
JDI_Mbed_Team 0:b2d46804658c 568 {
JDI_Mbed_Team 0:b2d46804658c 569 _width = width;
JDI_Mbed_Team 0:b2d46804658c 570 _height = height;
JDI_Mbed_Team 0:b2d46804658c 571 }
JDI_Mbed_Team 0:b2d46804658c 572
JDI_Mbed_Team 0:b2d46804658c 573 /**
JDI_Mbed_Team 0:b2d46804658c 574 * @brief transfer a command code to the display by SPI
JDI_Mbed_Team 0:b2d46804658c 575 */
JDI_Mbed_Team 0:b2d46804658c 576 void memLCD8::command(char command)
JDI_Mbed_Team 0:b2d46804658c 577 {
JDI_Mbed_Team 0:b2d46804658c 578 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 579 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 580 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 581 _spi.write(command);//
JDI_Mbed_Team 0:b2d46804658c 582 _spi.write(0x00);// dummy
JDI_Mbed_Team 0:b2d46804658c 583 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 584 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 585 }
JDI_Mbed_Team 0:b2d46804658c 586 /**
JDI_Mbed_Team 0:b2d46804658c 587 * @brief set the Diaplay On/Off data
JDI_Mbed_Team 0:b2d46804658c 588 */
JDI_Mbed_Team 0:b2d46804658c 589 void memLCD8::SwDisp(bool ONorOFF)
JDI_Mbed_Team 0:b2d46804658c 590 {
JDI_Mbed_Team 0:b2d46804658c 591 _disp= ONorOFF;
JDI_Mbed_Team 0:b2d46804658c 592 }
JDI_Mbed_Team 0:b2d46804658c 593