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 Oct 24 02:23:30 2018 +0000
Revision:
1:2b85e7edcc4e
Parent:
0:b2d46804658c
Child:
2:944f2968c19f
for Video;

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 1:2b85e7edcc4e 87 * @brief dispay character by font. int mode:: =0 :common font(defualt), =1 : big font
JDI_Mbed_Team 1:2b85e7edcc4e 88 * big font is that "char data" byte size is over 0xff.
JDI_Mbed_Team 1:2b85e7edcc4e 89 *
JDI_Mbed_Team 0:b2d46804658c 90 */
JDI_Mbed_Team 1:2b85e7edcc4e 91 void memLCD8::character(int x, int y, int c,int mode)
JDI_Mbed_Team 0:b2d46804658c 92 {
JDI_Mbed_Team 0:b2d46804658c 93 unsigned int hor,vert,offset0,offset1,bpl,j,i,b; // T.Okamoto modified, for big font
JDI_Mbed_Team 0:b2d46804658c 94 unsigned char* zeichen;
JDI_Mbed_Team 0:b2d46804658c 95 unsigned char z,w;
JDI_Mbed_Team 0:b2d46804658c 96 // int index;
JDI_Mbed_Team 1:2b85e7edcc4e 97
JDI_Mbed_Team 1:2b85e7edcc4e 98 if( mode == 0 ){
JDI_Mbed_Team 1:2b85e7edcc4e 99 //for common font
JDI_Mbed_Team 1:2b85e7edcc4e 100 if ((c < 31) || (c > 127)) return; // test char range
JDI_Mbed_Team 1:2b85e7edcc4e 101 offset0 = font[0]; // bytes / char
JDI_Mbed_Team 1:2b85e7edcc4e 102 hor = font[1]; // get hor size of font
JDI_Mbed_Team 1:2b85e7edcc4e 103 vert = font[2]; // get vert size of font
JDI_Mbed_Team 1:2b85e7edcc4e 104 bpl = font[3]; // bytes per line
JDI_Mbed_Team 0:b2d46804658c 105
JDI_Mbed_Team 1:2b85e7edcc4e 106 if (char_x + hor > _width) {
JDI_Mbed_Team 1:2b85e7edcc4e 107 char_x = 0;
JDI_Mbed_Team 1:2b85e7edcc4e 108 char_y = char_y + vert;
JDI_Mbed_Team 1:2b85e7edcc4e 109 if (char_y >= _height - font[2]) char_y = 0; // original = font[2] T.Okamoto modified, for big font
JDI_Mbed_Team 1:2b85e7edcc4e 110 }
JDI_Mbed_Team 1:2b85e7edcc4e 111 zeichen = &font[(c -32) * (offset0) + 4]; // start of char bitmap // original = +4 T.Okamoto modified, for big font
JDI_Mbed_Team 1:2b85e7edcc4e 112 }else{
JDI_Mbed_Team 1:2b85e7edcc4e 113 // for big font
JDI_Mbed_Team 1:2b85e7edcc4e 114 if ((c < 31) || (c > 127)) return; // test char range
JDI_Mbed_Team 1:2b85e7edcc4e 115 offset0 = font[0]; // bytes / char
JDI_Mbed_Team 1:2b85e7edcc4e 116 offset1 = font[1]; // bytes / char
JDI_Mbed_Team 1:2b85e7edcc4e 117 hor = font[2]; // get hor size of font
JDI_Mbed_Team 1:2b85e7edcc4e 118 vert = font[3]; // get vert size of font
JDI_Mbed_Team 1:2b85e7edcc4e 119 bpl = font[4]; // bytes per line
JDI_Mbed_Team 0:b2d46804658c 120
JDI_Mbed_Team 1:2b85e7edcc4e 121 if (char_x + hor > _width) {
JDI_Mbed_Team 1:2b85e7edcc4e 122 char_x = 0;
JDI_Mbed_Team 1:2b85e7edcc4e 123 char_y = char_y + vert;
JDI_Mbed_Team 1:2b85e7edcc4e 124 if (char_y >= _height - font[3]) char_y = 0; // original = font[2] T.Okamoto modified, for big font
JDI_Mbed_Team 1:2b85e7edcc4e 125 }
JDI_Mbed_Team 1:2b85e7edcc4e 126 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 127 }
JDI_Mbed_Team 1:2b85e7edcc4e 128
JDI_Mbed_Team 0:b2d46804658c 129 w = zeichen[0]; // width of actual char
JDI_Mbed_Team 0:b2d46804658c 130 for (j=0; j<vert; j++) { // vert line
JDI_Mbed_Team 0:b2d46804658c 131 for (i=0; i<hor; i++) { // horz line
JDI_Mbed_Team 0:b2d46804658c 132 z = zeichen[bpl * i + ((j & 0xF8) >> 3)+1];
JDI_Mbed_Team 0:b2d46804658c 133 b = 1 << (j & 0x07);
JDI_Mbed_Team 0:b2d46804658c 134 // index = (y+j)*_width+(x+i);
JDI_Mbed_Team 0:b2d46804658c 135 if (( z & b ) != 0x00) pixel(x+i,y+j,_foreground);
JDI_Mbed_Team 0:b2d46804658c 136 else if (_ifMarge == 0) pixel(x+i,y+j,_background);// _background -> _LayerBUF[index];
JDI_Mbed_Team 0:b2d46804658c 137
JDI_Mbed_Team 0:b2d46804658c 138 }
JDI_Mbed_Team 0:b2d46804658c 139 }
JDI_Mbed_Team 0:b2d46804658c 140 if ((w + 2) < hor) char_x += w + 2; // x offset to next char
JDI_Mbed_Team 0:b2d46804658c 141 else char_x += hor;
JDI_Mbed_Team 0:b2d46804658c 142 }
JDI_Mbed_Team 0:b2d46804658c 143
JDI_Mbed_Team 0:b2d46804658c 144 /**
JDI_Mbed_Team 0:b2d46804658c 145 * @brief dispay a image from symbol data
JDI_Mbed_Team 0:b2d46804658c 146 */
JDI_Mbed_Team 0:b2d46804658c 147 void memLCD8::Symbol(unsigned int x, unsigned int y, unsigned char *symbol)
JDI_Mbed_Team 0:b2d46804658c 148 {
JDI_Mbed_Team 0:b2d46804658c 149 unsigned int hor,vert,bpl,j,i,b;
JDI_Mbed_Team 0:b2d46804658c 150 unsigned char* zeichen;
JDI_Mbed_Team 0:b2d46804658c 151 unsigned char z,w;
JDI_Mbed_Team 0:b2d46804658c 152
JDI_Mbed_Team 0:b2d46804658c 153 // int index;
JDI_Mbed_Team 0:b2d46804658c 154 hor = symbol[0]; // get hor size of font
JDI_Mbed_Team 0:b2d46804658c 155 vert = symbol[1]; // get vert size of font
JDI_Mbed_Team 0:b2d46804658c 156 bpl = symbol[2]; // bytes per line
JDI_Mbed_Team 0:b2d46804658c 157
JDI_Mbed_Team 0:b2d46804658c 158 if (char_x + hor > _width) {
JDI_Mbed_Team 0:b2d46804658c 159 char_x = 0;
JDI_Mbed_Team 0:b2d46804658c 160 char_y = char_y + vert;
JDI_Mbed_Team 0:b2d46804658c 161 if (char_y >= _height - symbol[1]) char_y = 0;
JDI_Mbed_Team 0:b2d46804658c 162 }
JDI_Mbed_Team 0:b2d46804658c 163 zeichen = &symbol[3];
JDI_Mbed_Team 0:b2d46804658c 164 w = zeichen[0]; // width of actual char
JDI_Mbed_Team 0:b2d46804658c 165 for (j=0; j<vert; j++) { // vert line
JDI_Mbed_Team 0:b2d46804658c 166 for (i=0; i<hor; i++) { // horz line
JDI_Mbed_Team 0:b2d46804658c 167 z = zeichen[bpl * i + ((j & 0xF8) >> 3)+1];
JDI_Mbed_Team 0:b2d46804658c 168 b = 1 << (j & 0x07);
JDI_Mbed_Team 0:b2d46804658c 169 // index = (y+j)*_width+(x+i);
JDI_Mbed_Team 0:b2d46804658c 170 if (( z & b ) != 0x00) pixel(x+i,y+j,_foreground);
JDI_Mbed_Team 0:b2d46804658c 171 else if (_ifMarge == 0) pixel(x+i,y+j,_background);// _background -> _LayerBUF[index];
JDI_Mbed_Team 0:b2d46804658c 172 }
JDI_Mbed_Team 0:b2d46804658c 173 }
JDI_Mbed_Team 0:b2d46804658c 174 if ((w + 2) < hor) char_x += w + 2; // x offset to next char
JDI_Mbed_Team 0:b2d46804658c 175 else char_x += hor;
JDI_Mbed_Team 0:b2d46804658c 176 }
JDI_Mbed_Team 0:b2d46804658c 177
JDI_Mbed_Team 0:b2d46804658c 178 /*
JDI_Mbed_Team 0:b2d46804658c 179 void memLCD8::LayerCopy(void)
JDI_Mbed_Team 0:b2d46804658c 180 {
JDI_Mbed_Team 0:b2d46804658c 181 for(int i=0; i<FRAME_SIZE; i++) _LayerBUF[i] = _dispBUF[i];
JDI_Mbed_Team 0:b2d46804658c 182
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 circle line by color data
JDI_Mbed_Team 0:b2d46804658c 187 */
JDI_Mbed_Team 0:b2d46804658c 188 void memLCD8::circle(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 pixel(x0-x, y0+y,color);
JDI_Mbed_Team 0:b2d46804658c 193 pixel(x0+x, y0+y,color);
JDI_Mbed_Team 0:b2d46804658c 194 pixel(x0+x, y0-y,color);
JDI_Mbed_Team 0:b2d46804658c 195 pixel(x0-x, y0-y,color);
JDI_Mbed_Team 0:b2d46804658c 196 e2 = err;
JDI_Mbed_Team 0:b2d46804658c 197 if (e2 <= y) {
JDI_Mbed_Team 0:b2d46804658c 198 err += ++y*2+1;
JDI_Mbed_Team 0:b2d46804658c 199 if (-x == y && e2 <= x) e2 = 0;
JDI_Mbed_Team 0:b2d46804658c 200 }
JDI_Mbed_Team 0:b2d46804658c 201 if (e2 > x) err += ++x*2+1;
JDI_Mbed_Team 0:b2d46804658c 202 } while (x <= 0);
JDI_Mbed_Team 0:b2d46804658c 203
JDI_Mbed_Team 0:b2d46804658c 204 }
JDI_Mbed_Team 0:b2d46804658c 205 /**
JDI_Mbed_Team 0:b2d46804658c 206 * @brief dispay a filled circle by color data
JDI_Mbed_Team 0:b2d46804658c 207 */
JDI_Mbed_Team 0:b2d46804658c 208 void memLCD8::fillcircle(int x0, int y0, int r, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 209 {
JDI_Mbed_Team 0:b2d46804658c 210 int x = -r, y = 0, err = 2-2*r, e2;
JDI_Mbed_Team 0:b2d46804658c 211 do {
JDI_Mbed_Team 0:b2d46804658c 212 vline(x0-x, y0-y, y0+y, color);
JDI_Mbed_Team 0:b2d46804658c 213 vline(x0+x, y0-y, y0+y, color);
JDI_Mbed_Team 0:b2d46804658c 214 e2 = err;
JDI_Mbed_Team 0:b2d46804658c 215 if (e2 <= y) {
JDI_Mbed_Team 0:b2d46804658c 216 err += ++y*2+1;
JDI_Mbed_Team 0:b2d46804658c 217 if (-x == y && e2 <= x) e2 = 0;
JDI_Mbed_Team 0:b2d46804658c 218 }
JDI_Mbed_Team 0:b2d46804658c 219 if (e2 > x) err += ++x*2+1;
JDI_Mbed_Team 0:b2d46804658c 220 } while (x <= 0);
JDI_Mbed_Team 0:b2d46804658c 221 }
JDI_Mbed_Team 0:b2d46804658c 222 /**
JDI_Mbed_Team 0:b2d46804658c 223 * @brief dispay a horizontal line by color data
JDI_Mbed_Team 0:b2d46804658c 224 */
JDI_Mbed_Team 0:b2d46804658c 225 void memLCD8::hline(int x0, int x1, int y, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 226 {
JDI_Mbed_Team 0:b2d46804658c 227 int w;
JDI_Mbed_Team 0:b2d46804658c 228 w = x1 - x0 + 1;
JDI_Mbed_Team 0:b2d46804658c 229 for (int j=0; j<w; j++) pixel(x0+j, y,color);
JDI_Mbed_Team 0:b2d46804658c 230 }
JDI_Mbed_Team 0:b2d46804658c 231
JDI_Mbed_Team 0:b2d46804658c 232 /**
JDI_Mbed_Team 0:b2d46804658c 233 * @brief dispay a vertical line by color data
JDI_Mbed_Team 0:b2d46804658c 234 */
JDI_Mbed_Team 0:b2d46804658c 235 void memLCD8::vline(int x, int y0, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 236 {
JDI_Mbed_Team 0:b2d46804658c 237 int h;
JDI_Mbed_Team 0:b2d46804658c 238 h = y1 - y0 + 1;
JDI_Mbed_Team 0:b2d46804658c 239 for (int j=0; j<h; j++) pixel(x, y0+j,color);
JDI_Mbed_Team 0:b2d46804658c 240 }
JDI_Mbed_Team 0:b2d46804658c 241 /**
JDI_Mbed_Team 0:b2d46804658c 242 * @brief dispay a line by color data
JDI_Mbed_Team 0:b2d46804658c 243 */
JDI_Mbed_Team 0:b2d46804658c 244 void memLCD8::line(int x0, int y0, int x1, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 245 {
JDI_Mbed_Team 0:b2d46804658c 246 int dx = 0, dy = 0;
JDI_Mbed_Team 0:b2d46804658c 247 int dx_sym = 0, dy_sym = 0;
JDI_Mbed_Team 0:b2d46804658c 248 int dx_x2 = 0, dy_x2 = 0;
JDI_Mbed_Team 0:b2d46804658c 249 int di = 0;
JDI_Mbed_Team 0:b2d46804658c 250
JDI_Mbed_Team 0:b2d46804658c 251 dx = x1-x0;
JDI_Mbed_Team 0:b2d46804658c 252 dy = y1-y0;
JDI_Mbed_Team 0:b2d46804658c 253
JDI_Mbed_Team 0:b2d46804658c 254 if (dx == 0) { /* vertical line */
JDI_Mbed_Team 0:b2d46804658c 255 if (y1 > y0) vline(x0,y0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 256 else vline(x0,y1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 257 return;
JDI_Mbed_Team 0:b2d46804658c 258 }
JDI_Mbed_Team 0:b2d46804658c 259
JDI_Mbed_Team 0:b2d46804658c 260 if (dx > 0) {
JDI_Mbed_Team 0:b2d46804658c 261 dx_sym = 1;
JDI_Mbed_Team 0:b2d46804658c 262 } else {
JDI_Mbed_Team 0:b2d46804658c 263 dx_sym = -1;
JDI_Mbed_Team 0:b2d46804658c 264 }
JDI_Mbed_Team 0:b2d46804658c 265 if (dy == 0) { /* horizontal line */
JDI_Mbed_Team 0:b2d46804658c 266 if (x1 > x0) hline(x0,x1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 267 else hline(x1,x0,y0,color);
JDI_Mbed_Team 0:b2d46804658c 268 return;
JDI_Mbed_Team 0:b2d46804658c 269 }
JDI_Mbed_Team 0:b2d46804658c 270
JDI_Mbed_Team 0:b2d46804658c 271 if (dy > 0) {
JDI_Mbed_Team 0:b2d46804658c 272 dy_sym = 1;
JDI_Mbed_Team 0:b2d46804658c 273 } else {
JDI_Mbed_Team 0:b2d46804658c 274 dy_sym = -1;
JDI_Mbed_Team 0:b2d46804658c 275 }
JDI_Mbed_Team 0:b2d46804658c 276
JDI_Mbed_Team 0:b2d46804658c 277 dx = dx_sym*dx;
JDI_Mbed_Team 0:b2d46804658c 278 dy = dy_sym*dy;
JDI_Mbed_Team 0:b2d46804658c 279
JDI_Mbed_Team 0:b2d46804658c 280 dx_x2 = dx*2;
JDI_Mbed_Team 0:b2d46804658c 281 dy_x2 = dy*2;
JDI_Mbed_Team 0:b2d46804658c 282
JDI_Mbed_Team 0:b2d46804658c 283 if (dx >= dy) {
JDI_Mbed_Team 0:b2d46804658c 284 di = dy_x2 - dx;
JDI_Mbed_Team 0:b2d46804658c 285 while (x0 != x1) {
JDI_Mbed_Team 0:b2d46804658c 286
JDI_Mbed_Team 0:b2d46804658c 287 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 288 x0 += dx_sym;
JDI_Mbed_Team 0:b2d46804658c 289 if (di<0) {
JDI_Mbed_Team 0:b2d46804658c 290 di += dy_x2;
JDI_Mbed_Team 0:b2d46804658c 291 } else {
JDI_Mbed_Team 0:b2d46804658c 292 di += dy_x2 - dx_x2;
JDI_Mbed_Team 0:b2d46804658c 293 y0 += dy_sym;
JDI_Mbed_Team 0:b2d46804658c 294 }
JDI_Mbed_Team 0:b2d46804658c 295 }
JDI_Mbed_Team 0:b2d46804658c 296 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 297 } else {
JDI_Mbed_Team 0:b2d46804658c 298 di = dx_x2 - dy;
JDI_Mbed_Team 0:b2d46804658c 299 while (y0 != y1) {
JDI_Mbed_Team 0:b2d46804658c 300 pixel(x0, y0, color);
JDI_Mbed_Team 0:b2d46804658c 301 y0 += dy_sym;
JDI_Mbed_Team 0:b2d46804658c 302 if (di < 0) {
JDI_Mbed_Team 0:b2d46804658c 303 di += dx_x2;
JDI_Mbed_Team 0:b2d46804658c 304 } else {
JDI_Mbed_Team 0:b2d46804658c 305 di += dx_x2 - dy_x2;
JDI_Mbed_Team 0:b2d46804658c 306 x0 += dx_sym;
JDI_Mbed_Team 0:b2d46804658c 307 }
JDI_Mbed_Team 0:b2d46804658c 308 }
JDI_Mbed_Team 0:b2d46804658c 309 pixel(x0, 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 * @brief dispay a rectangle line by color data
JDI_Mbed_Team 0:b2d46804658c 315 */
JDI_Mbed_Team 0:b2d46804658c 316 void memLCD8::rect(int x0, int y0, int x1, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 317 {
JDI_Mbed_Team 0:b2d46804658c 318
JDI_Mbed_Team 0:b2d46804658c 319 if (x1 > x0) hline(x0,x1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 320 else hline(x1,x0,y0,color);
JDI_Mbed_Team 0:b2d46804658c 321
JDI_Mbed_Team 0:b2d46804658c 322 if (y1 > y0) vline(x0,y0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 323 else vline(x0,y1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 324
JDI_Mbed_Team 0:b2d46804658c 325 if (x1 > x0) hline(x0,x1,y1,color);
JDI_Mbed_Team 0:b2d46804658c 326 else hline(x1,x0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 327
JDI_Mbed_Team 0:b2d46804658c 328 if (y1 > y0) vline(x1,y0,y1,color);
JDI_Mbed_Team 0:b2d46804658c 329 else vline(x1,y1,y0,color);
JDI_Mbed_Team 0:b2d46804658c 330
JDI_Mbed_Team 0:b2d46804658c 331 return;
JDI_Mbed_Team 0:b2d46804658c 332 }
JDI_Mbed_Team 0:b2d46804658c 333
JDI_Mbed_Team 0:b2d46804658c 334 /**
JDI_Mbed_Team 0:b2d46804658c 335 * @brief dispay a filled rectangle by color data
JDI_Mbed_Team 0:b2d46804658c 336 */
JDI_Mbed_Team 0:b2d46804658c 337 void memLCD8::fillrect(int x0, int y0, int x1, int y1, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 338 {
JDI_Mbed_Team 0:b2d46804658c 339 int h = y1 - y0 + 1;
JDI_Mbed_Team 0:b2d46804658c 340 for (int i=0; i<h; i++) hline(x0, x1, y0+i, color);
JDI_Mbed_Team 0:b2d46804658c 341 }
JDI_Mbed_Team 0:b2d46804658c 342
JDI_Mbed_Team 0:b2d46804658c 343 #ifdef LINEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 344 void memLCD8::pixel(int x, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 345 {
JDI_Mbed_Team 0:b2d46804658c 346 if(!(x % 2)) _dispBUF[x/2] = _dispBUF[x/2]&0x0F | (color << 4)&0xF0 ; //MASK 0000 1111
JDI_Mbed_Team 0:b2d46804658c 347 else _dispBUF[x/2] = _dispBUF[x/2]&0xF0 | (color )&0x0F ; //MASK 1111 0000
JDI_Mbed_Team 0:b2d46804658c 348 }
JDI_Mbed_Team 0:b2d46804658c 349
JDI_Mbed_Team 0:b2d46804658c 350 //void memLCD8::writeLine(int line) // refresh gate line display
JDI_Mbed_Team 0:b2d46804658c 351 void memLCD8::writeDISP(int line,int transfermode) // refresh gate line display
JDI_Mbed_Team 0:b2d46804658c 352 {
JDI_Mbed_Team 0:b2d46804658c 353
JDI_Mbed_Team 0:b2d46804658c 354 char pol = 0;
JDI_Mbed_Team 0:b2d46804658c 355 SetTransfermode(transfermode);
JDI_Mbed_Team 0:b2d46804658c 356
JDI_Mbed_Team 0:b2d46804658c 357
JDI_Mbed_Team 0:b2d46804658c 358 // line
JDI_Mbed_Team 0:b2d46804658c 359 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 360 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 361 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 362 _spi.write(TrModeCommand | (pol << 6) | (line+1)>>8 ); // COMMAND
JDI_Mbed_Team 0:b2d46804658c 363 _spi.write((line+1)& 0x00FF ); // V ADDR
JDI_Mbed_Team 0:b2d46804658c 364 for(int j=0; j<_width/2; j++) _spi.write(_dispBUF[j]);
JDI_Mbed_Team 0:b2d46804658c 365 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 366 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 367 // wait_ms(1); //1.8Hz simulation
JDI_Mbed_Team 0:b2d46804658c 368 // wait_ms(2); //1.35Hz simulation
JDI_Mbed_Team 0:b2d46804658c 369 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 370 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 371 if(pol) pol=0x00;
JDI_Mbed_Team 0:b2d46804658c 372 else pol=0x01;
JDI_Mbed_Team 0:b2d46804658c 373 }
JDI_Mbed_Team 0:b2d46804658c 374 #endif
JDI_Mbed_Team 0:b2d46804658c 375
JDI_Mbed_Team 0:b2d46804658c 376 #ifndef LINEBUFF_MODE
JDI_Mbed_Team 0:b2d46804658c 377 /**
JDI_Mbed_Team 0:b2d46804658c 378 * @brief Transfer One Pixel Data with x,y allocation
JDI_Mbed_Team 0:b2d46804658c 379 * @param[in] int x : horizontal allocation left to right
JDI_Mbed_Team 0:b2d46804658c 380 * @param[in] int y : vertival allocation top to bottom
JDI_Mbed_Team 0:b2d46804658c 381 * @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 382 */
JDI_Mbed_Team 0:b2d46804658c 383 void memLCD8::pixel(int x, int y, uint8_t color)
JDI_Mbed_Team 0:b2d46804658c 384 {
JDI_Mbed_Team 0:b2d46804658c 385 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 386 else _dispBUF[y*_width/2+x/2] = _dispBUF[y*_width/2+x/2]&0xF0 | (color )&0x0F ; //MASK 1111 0000
JDI_Mbed_Team 0:b2d46804658c 387 }
JDI_Mbed_Team 0:b2d46804658c 388 /**
JDI_Mbed_Team 0:b2d46804658c 389 * @brief Transfer Pixel Data from buffer to Display
JDI_Mbed_Team 0:b2d46804658c 390 * @param[in] int transfermode : instruction the transfer data size ,4bit,3bit,1bit
JDI_Mbed_Team 0:b2d46804658c 391 */
JDI_Mbed_Team 0:b2d46804658c 392 void memLCD8::writeDISP(int transfermode) // refresh whole display
JDI_Mbed_Team 0:b2d46804658c 393 {
JDI_Mbed_Team 0:b2d46804658c 394 char pol = 0;
JDI_Mbed_Team 0:b2d46804658c 395 //char command = 0x90; // 8b 1*0xNNNN *=POL x=AutoW A 1010
JDI_Mbed_Team 0:b2d46804658c 396 SetTransfermode(transfermode);
JDI_Mbed_Team 0:b2d46804658c 397
JDI_Mbed_Team 0:b2d46804658c 398 // frame
JDI_Mbed_Team 0:b2d46804658c 399 for (int i=0; i<_height; i++) {
JDI_Mbed_Team 0:b2d46804658c 400 // line
JDI_Mbed_Team 0:b2d46804658c 401 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 402 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 403 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 404 _spi.write(TrModeCommand | (pol << 6) | (i+1)>>8 ); // COMMAND
JDI_Mbed_Team 0:b2d46804658c 405 //pc2.printf("com 0x%x\n",TrModeCommand | (pol << 6) | (i+1)>>8);
JDI_Mbed_Team 0:b2d46804658c 406
JDI_Mbed_Team 0:b2d46804658c 407 _spi.write((i+1)& 0x00FF ); // V ADDR
JDI_Mbed_Team 0:b2d46804658c 408 //pc2.printf("v adr 0x%x\n",(i+1)& 0x00FF);
JDI_Mbed_Team 0:b2d46804658c 409
JDI_Mbed_Team 0:b2d46804658c 410 for(int j=0; j<_width; j+=TrAdd)
JDI_Mbed_Team 0:b2d46804658c 411 {
JDI_Mbed_Team 0:b2d46804658c 412 GetPixelValue(j,i,_dispBUF);
JDI_Mbed_Team 0:b2d46804658c 413 //pc2.printf("data=[%d]{%d][%d]/[%d]\n",j*TrAdd,i,TrValue[0],TrAdd);
JDI_Mbed_Team 0:b2d46804658c 414 for(int k=0;k<TrValNum;k++)
JDI_Mbed_Team 0:b2d46804658c 415 _spi.write(TrValue[k]);
JDI_Mbed_Team 0:b2d46804658c 416 }
JDI_Mbed_Team 0:b2d46804658c 417 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 418 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 419 // wait_ms(1); //1.8Hz simulation
JDI_Mbed_Team 0:b2d46804658c 420 // wait_ms(2); //1.35Hz simulation
JDI_Mbed_Team 0:b2d46804658c 421 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 422 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 423 if(pol) pol=0x00;
JDI_Mbed_Team 0:b2d46804658c 424 else pol=0x01;
JDI_Mbed_Team 0:b2d46804658c 425 }
JDI_Mbed_Team 0:b2d46804658c 426 }
JDI_Mbed_Team 0:b2d46804658c 427 //old function
JDI_Mbed_Team 0:b2d46804658c 428 void memLCD8::writeDISP(void) // refresh whole display
JDI_Mbed_Team 0:b2d46804658c 429 {
JDI_Mbed_Team 0:b2d46804658c 430
JDI_Mbed_Team 0:b2d46804658c 431 char pol = 0;
JDI_Mbed_Team 0:b2d46804658c 432 char command = 0x90; // 8b 1*0xNNNN *=POL x=AutoW A 1010
JDI_Mbed_Team 0:b2d46804658c 433
JDI_Mbed_Team 0:b2d46804658c 434 // frame
JDI_Mbed_Team 0:b2d46804658c 435 for (int i=0; i<_height; i++) {
JDI_Mbed_Team 0:b2d46804658c 436 // line
JDI_Mbed_Team 0:b2d46804658c 437 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 438 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 439 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 440 _spi.write(command | (pol << 6) | (i+1)>>8 ); // COMMAND
JDI_Mbed_Team 0:b2d46804658c 441 _spi.write((i+1)& 0x00FF ); // V ADDR
JDI_Mbed_Team 0:b2d46804658c 442 for(int j=0; j<_width/2; j++) _spi.write(_dispBUF[i*_width/2 + j]);
JDI_Mbed_Team 0:b2d46804658c 443 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 444 _spi.write(0x00); // DUMMY transfer
JDI_Mbed_Team 0:b2d46804658c 445 // wait_ms(1); //1.8Hz simulation
JDI_Mbed_Team 0:b2d46804658c 446 // wait_ms(2); //1.35Hz simulation
JDI_Mbed_Team 0:b2d46804658c 447 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 448 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 449 if(pol) pol=0x00;
JDI_Mbed_Team 0:b2d46804658c 450 else pol=0x01;
JDI_Mbed_Team 0:b2d46804658c 451 }
JDI_Mbed_Team 0:b2d46804658c 452 }
JDI_Mbed_Team 0:b2d46804658c 453 #endif
JDI_Mbed_Team 0:b2d46804658c 454 /**
JDI_Mbed_Team 0:b2d46804658c 455 * @brief Get Edited data for SPI transfer
JDI_Mbed_Team 0:b2d46804658c 456 * @param[in] int x:horizontal allocation left to right
JDI_Mbed_Team 0:b2d46804658c 457 * @param[in] int y:vertival allocation top to bottom
JDI_Mbed_Team 0:b2d46804658c 458 * @param[in] uint8_t* buff:buffer data for Display
JDI_Mbed_Team 0:b2d46804658c 459 */
JDI_Mbed_Team 0:b2d46804658c 460 int* memLCD8::GetPixelValue(int _x, int _y ,uint8_t* buff)
JDI_Mbed_Team 0:b2d46804658c 461 {
JDI_Mbed_Team 0:b2d46804658c 462 //bitmap data = 4bit data => modify transfer data bit size;
JDI_Mbed_Team 0:b2d46804658c 463 switch(TrModeCommand)
JDI_Mbed_Team 0:b2d46804658c 464 {
JDI_Mbed_Team 0:b2d46804658c 465 case 0x90: //TrBIT4:
JDI_Mbed_Team 0:b2d46804658c 466 // buffer 2pixel/1byte => 2pixel/1byte buffe 2byte毎進める。
JDI_Mbed_Team 0:b2d46804658c 467 // 176/4=44 400/4 = 100 640/4=160
JDI_Mbed_Team 0:b2d46804658c 468 TrValue[0] = _dispBUF[_y* _width/2 + _x];
JDI_Mbed_Team 0:b2d46804658c 469 break;
JDI_Mbed_Team 0:b2d46804658c 470 case 0x80://TrBIT3:
JDI_Mbed_Team 0:b2d46804658c 471 // buffer 2pixel/1byte => 3pixel-1subpixel/1bye (24 pixel/3byte) buffer 3byte毎進める。
JDI_Mbed_Team 0:b2d46804658c 472 // 176/3=58.666... 400/3 = 133.333... 640/3=213.333...
JDI_Mbed_Team 0:b2d46804658c 473 for(int j=0;j<3;j++) TrValue[j] = 0;
JDI_Mbed_Team 0:b2d46804658c 474 //for( int i = 0 ; i<12 ; i--)
JDI_Mbed_Team 0:b2d46804658c 475 {
JDI_Mbed_Team 0:b2d46804658c 476 //4 bit RGBN(Nは予備) => 3bit RGB
JDI_Mbed_Team 0:b2d46804658c 477 if( _width/2 > _x )
JDI_Mbed_Team 0:b2d46804658c 478 {
JDI_Mbed_Team 0:b2d46804658c 479 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x ]&0xE0) ) );
JDI_Mbed_Team 0:b2d46804658c 480 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x ]&0x0E) ) << 1);
JDI_Mbed_Team 0:b2d46804658c 481 }
JDI_Mbed_Team 0:b2d46804658c 482 if( _width/2 > _x + 1 )
JDI_Mbed_Team 0:b2d46804658c 483 {
JDI_Mbed_Team 0:b2d46804658c 484 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x + 1]&0xC0) ) >> 6);
JDI_Mbed_Team 0:b2d46804658c 485
JDI_Mbed_Team 0:b2d46804658c 486 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 1]&0x20) ) << 2);
JDI_Mbed_Team 0:b2d46804658c 487 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 1]&0x0E) ) << 3);
JDI_Mbed_Team 0:b2d46804658c 488 }
JDI_Mbed_Team 0:b2d46804658c 489 if( _width/2 > _x + 2 )
JDI_Mbed_Team 0:b2d46804658c 490 {
JDI_Mbed_Team 0:b2d46804658c 491 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 2]&0xE0) ) >> 4);
JDI_Mbed_Team 0:b2d46804658c 492 TrValue[1] = TrValue[1] | ( ( (_dispBUF[_y* _width/2 + _x + 2]&0x08) ) >> 3);
JDI_Mbed_Team 0:b2d46804658c 493
JDI_Mbed_Team 0:b2d46804658c 494 TrValue[2] = TrValue[2] | ( ( (_dispBUF[_y* _width/2 + _x + 2]&0x06) ) << 5);
JDI_Mbed_Team 0:b2d46804658c 495 }
JDI_Mbed_Team 0:b2d46804658c 496 if( _width/2 > _x + 3 )
JDI_Mbed_Team 0:b2d46804658c 497 {
JDI_Mbed_Team 0:b2d46804658c 498 TrValue[2] = TrValue[2] | ( ( (_dispBUF[_y* _width/2 + _x + 3]&0xE0) ) >> 2);
JDI_Mbed_Team 0:b2d46804658c 499 TrValue[2] = TrValue[2] | ( ( (_dispBUF[_y* _width/2 + _x + 3]&0x0E) ) >> 1);
JDI_Mbed_Team 0:b2d46804658c 500 }
JDI_Mbed_Team 0:b2d46804658c 501 }
JDI_Mbed_Team 0:b2d46804658c 502 break;
JDI_Mbed_Team 0:b2d46804658c 503 case 0x88://TrBIT1:
JDI_Mbed_Team 0:b2d46804658c 504 // buffer 2pixel/1byte => 8 pixel/1byte buffe 4byte毎進める。
JDI_Mbed_Team 0:b2d46804658c 505 // 176/4=44 400/4 = 100 640/4=160
JDI_Mbed_Team 0:b2d46804658c 506 for(int j=0;j<3;j++) TrValue[j] = 0;
JDI_Mbed_Team 0:b2d46804658c 507 for(int i = 0 ; i<4 ; i++)
JDI_Mbed_Team 0:b2d46804658c 508 {
JDI_Mbed_Team 0:b2d46804658c 509 //Green bit => monochrome bit
JDI_Mbed_Team 0:b2d46804658c 510 if( _width/2 > _x + i )
JDI_Mbed_Team 0:b2d46804658c 511 {
JDI_Mbed_Team 0:b2d46804658c 512 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x + i]&0x40) == 0 ? 0 : 1 ) << (7-i*2) );
JDI_Mbed_Team 0:b2d46804658c 513 TrValue[0] = TrValue[0] | ( ( (_dispBUF[_y* _width/2 + _x + i]&0x04) == 0 ? 0 : 1 ) << (7-i*2)-1 );
JDI_Mbed_Team 0:b2d46804658c 514 //pc2.printf("[%d+%d][%d]<0x%x>\n",_x,i,_y,_dispBUF[_y* _width/2 + _x + i]);
JDI_Mbed_Team 0:b2d46804658c 515 }
JDI_Mbed_Team 0:b2d46804658c 516 }
JDI_Mbed_Team 0:b2d46804658c 517 break;
JDI_Mbed_Team 0:b2d46804658c 518 }
JDI_Mbed_Team 0:b2d46804658c 519 return TrValue;
JDI_Mbed_Team 0:b2d46804658c 520 }
JDI_Mbed_Team 0:b2d46804658c 521 /**
JDI_Mbed_Team 0:b2d46804658c 522 * @brief set Configuration for transfer mode
JDI_Mbed_Team 0:b2d46804658c 523 * @param[in] int transfermode : instruction the transfer data size ,4bit,3bit,1bit and some parameter
JDI_Mbed_Team 0:b2d46804658c 524 */
JDI_Mbed_Team 0:b2d46804658c 525 void memLCD8::SetTransfermode(int transfermode)
JDI_Mbed_Team 0:b2d46804658c 526 {
JDI_Mbed_Team 0:b2d46804658c 527 switch(transfermode)
JDI_Mbed_Team 0:b2d46804658c 528 {
JDI_Mbed_Team 0:b2d46804658c 529 case TrBIT4:
JDI_Mbed_Team 0:b2d46804658c 530 TrModeCommand = 0x90;
JDI_Mbed_Team 0:b2d46804658c 531 TrAdd = 1;
JDI_Mbed_Team 0:b2d46804658c 532 TrValNum = 1;
JDI_Mbed_Team 0:b2d46804658c 533 break;
JDI_Mbed_Team 0:b2d46804658c 534 case TrBIT3:
JDI_Mbed_Team 0:b2d46804658c 535 TrModeCommand = 0x80;
JDI_Mbed_Team 0:b2d46804658c 536 // 176/3=58.666... 400/3 = 133.333... 640/3=213.333...
JDI_Mbed_Team 0:b2d46804658c 537 TrAdd = 4;
JDI_Mbed_Team 0:b2d46804658c 538 TrValNum = 3;
JDI_Mbed_Team 0:b2d46804658c 539 break;
JDI_Mbed_Team 0:b2d46804658c 540 case TrBIT1:
JDI_Mbed_Team 0:b2d46804658c 541 TrModeCommand = 0x88;
JDI_Mbed_Team 0:b2d46804658c 542 // 176/4=44 400/4 = 100 640/4=160
JDI_Mbed_Team 0:b2d46804658c 543 TrAdd = 4;
JDI_Mbed_Team 0:b2d46804658c 544 TrValNum = 1;
JDI_Mbed_Team 0:b2d46804658c 545 //pc2.printf("TrBIT1 TW%d Tvn%d \n",TrAdd,TrValNum);
JDI_Mbed_Team 0:b2d46804658c 546 break;
JDI_Mbed_Team 0:b2d46804658c 547 }
JDI_Mbed_Team 0:b2d46804658c 548 }
JDI_Mbed_Team 0:b2d46804658c 549 /**
JDI_Mbed_Team 0:b2d46804658c 550 * @brief clear buffer data by background color data
JDI_Mbed_Team 0:b2d46804658c 551 */
JDI_Mbed_Team 0:b2d46804658c 552 void memLCD8::clsBUF(void)
JDI_Mbed_Team 0:b2d46804658c 553 {
JDI_Mbed_Team 0:b2d46804658c 554
JDI_Mbed_Team 0:b2d46804658c 555 for (int i=0; i<_height; i++) {
JDI_Mbed_Team 0:b2d46804658c 556 for (int j=0; j<_width; j++) {
JDI_Mbed_Team 0:b2d46804658c 557 pixel(j,i,_background);
JDI_Mbed_Team 0:b2d46804658c 558 }
JDI_Mbed_Team 0:b2d46804658c 559 }
JDI_Mbed_Team 0:b2d46804658c 560 }
JDI_Mbed_Team 0:b2d46804658c 561
JDI_Mbed_Team 0:b2d46804658c 562 /**
JDI_Mbed_Team 0:b2d46804658c 563 * @brief set color data of foreground
JDI_Mbed_Team 0:b2d46804658c 564 */
JDI_Mbed_Team 0:b2d46804658c 565 void memLCD8::foreground(uint8_t colour)
JDI_Mbed_Team 0:b2d46804658c 566 {
JDI_Mbed_Team 0:b2d46804658c 567 _foreground = colour;
JDI_Mbed_Team 0:b2d46804658c 568 }
JDI_Mbed_Team 0:b2d46804658c 569
JDI_Mbed_Team 0:b2d46804658c 570 /**
JDI_Mbed_Team 0:b2d46804658c 571 * @brief set color data of background
JDI_Mbed_Team 0:b2d46804658c 572 */
JDI_Mbed_Team 0:b2d46804658c 573 void memLCD8::background(uint8_t colour)
JDI_Mbed_Team 0:b2d46804658c 574 {
JDI_Mbed_Team 0:b2d46804658c 575 _background = colour;
JDI_Mbed_Team 0:b2d46804658c 576 }
JDI_Mbed_Team 0:b2d46804658c 577 /*
JDI_Mbed_Team 0:b2d46804658c 578 void memLCD8::setmarge(bool ifMarge)
JDI_Mbed_Team 0:b2d46804658c 579 {
JDI_Mbed_Team 0:b2d46804658c 580 _ifMarge = ifMarge;
JDI_Mbed_Team 0:b2d46804658c 581 }
JDI_Mbed_Team 0:b2d46804658c 582 */
JDI_Mbed_Team 0:b2d46804658c 583
JDI_Mbed_Team 0:b2d46804658c 584 /**
JDI_Mbed_Team 0:b2d46804658c 585 * @brief set a display size ,width ,height
JDI_Mbed_Team 0:b2d46804658c 586 */
JDI_Mbed_Team 0:b2d46804658c 587 void memLCD8::setWH(int width, int height)
JDI_Mbed_Team 0:b2d46804658c 588 {
JDI_Mbed_Team 0:b2d46804658c 589 _width = width;
JDI_Mbed_Team 0:b2d46804658c 590 _height = height;
JDI_Mbed_Team 0:b2d46804658c 591 }
JDI_Mbed_Team 0:b2d46804658c 592
JDI_Mbed_Team 0:b2d46804658c 593 /**
JDI_Mbed_Team 0:b2d46804658c 594 * @brief transfer a command code to the display by SPI
JDI_Mbed_Team 0:b2d46804658c 595 */
JDI_Mbed_Team 0:b2d46804658c 596 void memLCD8::command(char command)
JDI_Mbed_Team 0:b2d46804658c 597 {
JDI_Mbed_Team 0:b2d46804658c 598 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 599 _cs = 1;
JDI_Mbed_Team 0:b2d46804658c 600 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 601 _spi.write(command);//
JDI_Mbed_Team 0:b2d46804658c 602 _spi.write(0x00);// dummy
JDI_Mbed_Team 0:b2d46804658c 603 wait_us(6);
JDI_Mbed_Team 0:b2d46804658c 604 _cs = 0;
JDI_Mbed_Team 0:b2d46804658c 605 }
JDI_Mbed_Team 0:b2d46804658c 606 /**
JDI_Mbed_Team 0:b2d46804658c 607 * @brief set the Diaplay On/Off data
JDI_Mbed_Team 0:b2d46804658c 608 */
JDI_Mbed_Team 0:b2d46804658c 609 void memLCD8::SwDisp(bool ONorOFF)
JDI_Mbed_Team 0:b2d46804658c 610 {
JDI_Mbed_Team 0:b2d46804658c 611 _disp= ONorOFF;
JDI_Mbed_Team 0:b2d46804658c 612 }
JDI_Mbed_Team 0:b2d46804658c 613