Prototipe
Dependents: LPC1768_Noritake_SC16IS752 LPC1768_Noritake_v5-2 08_SCT_menu
query.cpp@1:1a088a2b53ec, 2016-08-12 (annotated)
- Committer:
- irsanjul
- Date:
- Fri Aug 12 04:36:36 2016 +0000
- Revision:
- 1:1a088a2b53ec
- Parent:
- 0:cbd2824917b1
My Prototipe
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
irsanjul | 0:cbd2824917b1 | 1 | #include "mbed.h" |
irsanjul | 0:cbd2824917b1 | 2 | #include "query.h" |
irsanjul | 0:cbd2824917b1 | 3 | #include <string.h> |
irsanjul | 0:cbd2824917b1 | 4 | |
irsanjul | 0:cbd2824917b1 | 5 | extern Serial dbg; |
irsanjul | 0:cbd2824917b1 | 6 | |
irsanjul | 0:cbd2824917b1 | 7 | Noritake_VFD_GU7000::Noritake_VFD_GU7000(PinName sda, PinName scl) : uart(sda, scl, SC16IS752_SA5, NC, SC16IS752::Channel_A) |
irsanjul | 0:cbd2824917b1 | 8 | { |
irsanjul | 0:cbd2824917b1 | 9 | if(!uart.init(38400)) |
irsanjul | 1:1a088a2b53ec | 10 | dbg.printf("IC is not init\r\n"); |
irsanjul | 0:cbd2824917b1 | 11 | else dbg.printf("IC is ready\r\n"); |
irsanjul | 0:cbd2824917b1 | 12 | } |
irsanjul | 0:cbd2824917b1 | 13 | |
irsanjul | 0:cbd2824917b1 | 14 | void Noritake_VFD_GU7000::hardReset() |
irsanjul | 0:cbd2824917b1 | 15 | { |
irsanjul | 0:cbd2824917b1 | 16 | uart.put(0x0c); |
irsanjul | 0:cbd2824917b1 | 17 | wait_ms(200); |
irsanjul | 0:cbd2824917b1 | 18 | uart.put(0x1f); |
irsanjul | 0:cbd2824917b1 | 19 | uart.put(0x24); |
irsanjul | 0:cbd2824917b1 | 20 | uart.put(0x00); |
irsanjul | 0:cbd2824917b1 | 21 | uart.put(0x00); |
irsanjul | 0:cbd2824917b1 | 22 | uart.put(0x00); |
irsanjul | 0:cbd2824917b1 | 23 | uart.put(0x00); |
irsanjul | 0:cbd2824917b1 | 24 | } |
irsanjul | 0:cbd2824917b1 | 25 | |
irsanjul | 0:cbd2824917b1 | 26 | |
irsanjul | 0:cbd2824917b1 | 27 | void Noritake_VFD_GU7000::GU7000_back() { |
irsanjul | 0:cbd2824917b1 | 28 | command(0x08); |
irsanjul | 0:cbd2824917b1 | 29 | } |
irsanjul | 0:cbd2824917b1 | 30 | |
irsanjul | 0:cbd2824917b1 | 31 | void Noritake_VFD_GU7000::GU7000_forward() { |
irsanjul | 0:cbd2824917b1 | 32 | command(0x09); |
irsanjul | 0:cbd2824917b1 | 33 | } |
irsanjul | 0:cbd2824917b1 | 34 | |
irsanjul | 0:cbd2824917b1 | 35 | void Noritake_VFD_GU7000::GU7000_lineFeed() { |
irsanjul | 0:cbd2824917b1 | 36 | command(0x0a); |
irsanjul | 0:cbd2824917b1 | 37 | } |
irsanjul | 0:cbd2824917b1 | 38 | |
irsanjul | 0:cbd2824917b1 | 39 | void Noritake_VFD_GU7000::GU7000_home() { |
irsanjul | 0:cbd2824917b1 | 40 | command(0x0b); |
irsanjul | 0:cbd2824917b1 | 41 | } |
irsanjul | 0:cbd2824917b1 | 42 | |
irsanjul | 0:cbd2824917b1 | 43 | void Noritake_VFD_GU7000::GU7000_carriageReturn() { |
irsanjul | 0:cbd2824917b1 | 44 | command(0x0d); |
irsanjul | 0:cbd2824917b1 | 45 | } |
irsanjul | 0:cbd2824917b1 | 46 | |
irsanjul | 0:cbd2824917b1 | 47 | void Noritake_VFD_GU7000::GU7000_setCursor(unsigned x, unsigned y) { |
irsanjul | 0:cbd2824917b1 | 48 | command(0x1f); |
irsanjul | 0:cbd2824917b1 | 49 | command('$'); |
irsanjul | 0:cbd2824917b1 | 50 | command_xy(x, y); |
irsanjul | 0:cbd2824917b1 | 51 | } |
irsanjul | 0:cbd2824917b1 | 52 | |
irsanjul | 0:cbd2824917b1 | 53 | void Noritake_VFD_GU7000::GU7000_clearScreen() { |
irsanjul | 0:cbd2824917b1 | 54 | command(0x0c); |
irsanjul | 0:cbd2824917b1 | 55 | } |
irsanjul | 0:cbd2824917b1 | 56 | |
irsanjul | 0:cbd2824917b1 | 57 | void Noritake_VFD_GU7000::GU7000_cursorOn() { |
irsanjul | 0:cbd2824917b1 | 58 | command(0x1f, 'C', 1); |
irsanjul | 0:cbd2824917b1 | 59 | } |
irsanjul | 0:cbd2824917b1 | 60 | |
irsanjul | 0:cbd2824917b1 | 61 | void Noritake_VFD_GU7000::GU7000_cursorOff() { |
irsanjul | 0:cbd2824917b1 | 62 | command(0x1f, 'C', 0); |
irsanjul | 0:cbd2824917b1 | 63 | } |
irsanjul | 0:cbd2824917b1 | 64 | |
irsanjul | 0:cbd2824917b1 | 65 | void Noritake_VFD_GU7000::GU7000_init() { |
irsanjul | 0:cbd2824917b1 | 66 | wait_us(NORITAKE_VFD_RESET_DELAY); |
irsanjul | 0:cbd2824917b1 | 67 | command(0x1b); |
irsanjul | 0:cbd2824917b1 | 68 | command('@'); |
irsanjul | 0:cbd2824917b1 | 69 | } |
irsanjul | 0:cbd2824917b1 | 70 | |
irsanjul | 0:cbd2824917b1 | 71 | void Noritake_VFD_GU7000::GU7000_reset() { |
irsanjul | 0:cbd2824917b1 | 72 | this->hardReset(); |
irsanjul | 0:cbd2824917b1 | 73 | } |
irsanjul | 0:cbd2824917b1 | 74 | |
irsanjul | 0:cbd2824917b1 | 75 | void Noritake_VFD_GU7000::GU7000_useMultibyteChars(bool enable) { |
irsanjul | 0:cbd2824917b1 | 76 | #if (NORITAKE_VFD_MODEL_CLASS-7000)/100==9 || (NORITAKE_VFD_MODEL_CLASS-7000)/100==1 |
irsanjul | 0:cbd2824917b1 | 77 | us_command('g', 0x02); |
irsanjul | 0:cbd2824917b1 | 78 | command(enable); |
irsanjul | 0:cbd2824917b1 | 79 | #endif |
irsanjul | 0:cbd2824917b1 | 80 | } |
irsanjul | 0:cbd2824917b1 | 81 | |
irsanjul | 0:cbd2824917b1 | 82 | void Noritake_VFD_GU7000::GU7000_setMultibyteCharset(uint8_t code) { |
irsanjul | 0:cbd2824917b1 | 83 | #if (NORITAKE_VFD_MODEL_CLASS-7000)/100==9 || (NORITAKE_VFD_MODEL_CLASS-7000)/100==1 |
irsanjul | 0:cbd2824917b1 | 84 | us_command('g', 0x0f); |
irsanjul | 0:cbd2824917b1 | 85 | command(code); |
irsanjul | 0:cbd2824917b1 | 86 | #endif |
irsanjul | 0:cbd2824917b1 | 87 | } |
irsanjul | 0:cbd2824917b1 | 88 | |
irsanjul | 0:cbd2824917b1 | 89 | void Noritake_VFD_GU7000::GU7000_useCustomChars(bool enable) { |
irsanjul | 0:cbd2824917b1 | 90 | command(0x1b, '%', enable); |
irsanjul | 0:cbd2824917b1 | 91 | } |
irsanjul | 0:cbd2824917b1 | 92 | |
irsanjul | 0:cbd2824917b1 | 93 | static inline uint8_t getColumn(const uint8_t *src, int col) { |
irsanjul | 0:cbd2824917b1 | 94 | uint8_t out = 0; |
irsanjul | 0:cbd2824917b1 | 95 | for (int i=0; i<8; i++) |
irsanjul | 0:cbd2824917b1 | 96 | if (src[i] & (1<<(4-col))) out += 1<<(7-i); |
irsanjul | 0:cbd2824917b1 | 97 | return out; |
irsanjul | 0:cbd2824917b1 | 98 | } |
irsanjul | 0:cbd2824917b1 | 99 | |
irsanjul | 0:cbd2824917b1 | 100 | void Noritake_VFD_GU7000::GU7000_defineCustomChar(uint8_t code, FontFormat format, const uint8_t *data) { |
irsanjul | 0:cbd2824917b1 | 101 | command(0x1b, '&', 0x01); |
irsanjul | 0:cbd2824917b1 | 102 | command(code); |
irsanjul | 0:cbd2824917b1 | 103 | command(code); |
irsanjul | 0:cbd2824917b1 | 104 | |
irsanjul | 0:cbd2824917b1 | 105 | switch (format) { |
irsanjul | 0:cbd2824917b1 | 106 | case CUUFormat: |
irsanjul | 0:cbd2824917b1 | 107 | command(5); |
irsanjul | 0:cbd2824917b1 | 108 | for (uint8_t i=0; i<5; i++) |
irsanjul | 0:cbd2824917b1 | 109 | command(getColumn(data, i)); |
irsanjul | 0:cbd2824917b1 | 110 | break; |
irsanjul | 0:cbd2824917b1 | 111 | |
irsanjul | 0:cbd2824917b1 | 112 | case GU70005x7Format: |
irsanjul | 0:cbd2824917b1 | 113 | command(5); |
irsanjul | 0:cbd2824917b1 | 114 | print((const char*)data, 5); |
irsanjul | 0:cbd2824917b1 | 115 | break; |
irsanjul | 0:cbd2824917b1 | 116 | case GU70007x8Format: |
irsanjul | 0:cbd2824917b1 | 117 | command(7); |
irsanjul | 0:cbd2824917b1 | 118 | print((const char*)data, 7); |
irsanjul | 0:cbd2824917b1 | 119 | break; |
irsanjul | 0:cbd2824917b1 | 120 | } |
irsanjul | 0:cbd2824917b1 | 121 | } |
irsanjul | 0:cbd2824917b1 | 122 | |
irsanjul | 0:cbd2824917b1 | 123 | void Noritake_VFD_GU7000::GU7000_deleteCustomChar(uint8_t code) { |
irsanjul | 0:cbd2824917b1 | 124 | command(0x01b, '?', 0x01); |
irsanjul | 0:cbd2824917b1 | 125 | command(code); |
irsanjul | 0:cbd2824917b1 | 126 | } |
irsanjul | 0:cbd2824917b1 | 127 | |
irsanjul | 0:cbd2824917b1 | 128 | void Noritake_VFD_GU7000::GU7000_setAsciiVariant(AsciiVariant code) { |
irsanjul | 0:cbd2824917b1 | 129 | command(0x1b, 'R', code); |
irsanjul | 0:cbd2824917b1 | 130 | } |
irsanjul | 0:cbd2824917b1 | 131 | |
irsanjul | 0:cbd2824917b1 | 132 | void Noritake_VFD_GU7000::GU7000_setCharset(Charset code) { |
irsanjul | 0:cbd2824917b1 | 133 | command(0x1b, 't', code); |
irsanjul | 0:cbd2824917b1 | 134 | } |
irsanjul | 0:cbd2824917b1 | 135 | |
irsanjul | 0:cbd2824917b1 | 136 | void Noritake_VFD_GU7000::GU7000_setScrollMode(ScrollMode mode) { |
irsanjul | 0:cbd2824917b1 | 137 | command(0x1f); |
irsanjul | 0:cbd2824917b1 | 138 | command(mode); |
irsanjul | 0:cbd2824917b1 | 139 | } |
irsanjul | 0:cbd2824917b1 | 140 | |
irsanjul | 0:cbd2824917b1 | 141 | void Noritake_VFD_GU7000::GU7000_setHorizScrollSpeed(uint8_t speed) { |
irsanjul | 0:cbd2824917b1 | 142 | command(0x1f, 's', speed); |
irsanjul | 0:cbd2824917b1 | 143 | } |
irsanjul | 0:cbd2824917b1 | 144 | |
irsanjul | 0:cbd2824917b1 | 145 | void Noritake_VFD_GU7000::GU7000_invertOff() { |
irsanjul | 0:cbd2824917b1 | 146 | command(0x1f, 'r', 0); |
irsanjul | 0:cbd2824917b1 | 147 | } |
irsanjul | 0:cbd2824917b1 | 148 | |
irsanjul | 0:cbd2824917b1 | 149 | void Noritake_VFD_GU7000::GU7000_invertOn() { |
irsanjul | 0:cbd2824917b1 | 150 | command(0x1f, 'r', 1); |
irsanjul | 0:cbd2824917b1 | 151 | } |
irsanjul | 0:cbd2824917b1 | 152 | |
irsanjul | 0:cbd2824917b1 | 153 | void Noritake_VFD_GU7000::GU7000_setCompositionMode(CompositionMode mode) { |
irsanjul | 0:cbd2824917b1 | 154 | command(0x1f, 'w', mode); |
irsanjul | 0:cbd2824917b1 | 155 | } |
irsanjul | 0:cbd2824917b1 | 156 | |
irsanjul | 0:cbd2824917b1 | 157 | void Noritake_VFD_GU7000::GU7000_setScreenBrightness(unsigned level) { |
irsanjul | 0:cbd2824917b1 | 158 | if (level == 0) |
irsanjul | 0:cbd2824917b1 | 159 | GU7000_displayOff(); |
irsanjul | 0:cbd2824917b1 | 160 | else if (level <= 100) { |
irsanjul | 0:cbd2824917b1 | 161 | GU7000_displayOn(); |
irsanjul | 0:cbd2824917b1 | 162 | command(0x1f, 'X', (level*10 + 120)/125); |
irsanjul | 0:cbd2824917b1 | 163 | } |
irsanjul | 0:cbd2824917b1 | 164 | } |
irsanjul | 0:cbd2824917b1 | 165 | |
irsanjul | 0:cbd2824917b1 | 166 | void Noritake_VFD_GU7000::GU7000_wait(uint8_t time) { |
irsanjul | 0:cbd2824917b1 | 167 | us_command('a', 0x01); |
irsanjul | 0:cbd2824917b1 | 168 | command(time); |
irsanjul | 0:cbd2824917b1 | 169 | } |
irsanjul | 0:cbd2824917b1 | 170 | |
irsanjul | 0:cbd2824917b1 | 171 | void Noritake_VFD_GU7000::GU7000_scrollScreen(unsigned x, unsigned y, unsigned times, uint8_t speed) { |
irsanjul | 0:cbd2824917b1 | 172 | unsigned pos = (x*NORITAKE_VFD_LINES)+(y/8); |
irsanjul | 0:cbd2824917b1 | 173 | us_command('a', 0x10); |
irsanjul | 0:cbd2824917b1 | 174 | command(pos); |
irsanjul | 0:cbd2824917b1 | 175 | command(pos>>8); |
irsanjul | 0:cbd2824917b1 | 176 | command(times); |
irsanjul | 0:cbd2824917b1 | 177 | command(times>>8); |
irsanjul | 0:cbd2824917b1 | 178 | command(speed); |
irsanjul | 0:cbd2824917b1 | 179 | } |
irsanjul | 0:cbd2824917b1 | 180 | |
irsanjul | 0:cbd2824917b1 | 181 | void Noritake_VFD_GU7000::GU7000_blinkScreen() { |
irsanjul | 0:cbd2824917b1 | 182 | us_command('a', 0x11); |
irsanjul | 0:cbd2824917b1 | 183 | command(0); |
irsanjul | 0:cbd2824917b1 | 184 | command(0); |
irsanjul | 0:cbd2824917b1 | 185 | command(0); |
irsanjul | 0:cbd2824917b1 | 186 | command(0); |
irsanjul | 0:cbd2824917b1 | 187 | } |
irsanjul | 0:cbd2824917b1 | 188 | |
irsanjul | 0:cbd2824917b1 | 189 | void Noritake_VFD_GU7000::GU7000_blinkScreen(bool enable, bool reverse, uint8_t onTime, uint8_t offTime, uint8_t times) { |
irsanjul | 0:cbd2824917b1 | 190 | us_command('a', 0x11); |
irsanjul | 0:cbd2824917b1 | 191 | command(enable? (reverse? 2: 1): 0); |
irsanjul | 0:cbd2824917b1 | 192 | command(onTime); |
irsanjul | 0:cbd2824917b1 | 193 | command(offTime); |
irsanjul | 0:cbd2824917b1 | 194 | command(times); |
irsanjul | 0:cbd2824917b1 | 195 | } |
irsanjul | 0:cbd2824917b1 | 196 | |
irsanjul | 0:cbd2824917b1 | 197 | void Noritake_VFD_GU7000::GU7000_displayOff() { |
irsanjul | 0:cbd2824917b1 | 198 | us_command('a', 0x40); |
irsanjul | 0:cbd2824917b1 | 199 | command(0); |
irsanjul | 0:cbd2824917b1 | 200 | } |
irsanjul | 0:cbd2824917b1 | 201 | |
irsanjul | 0:cbd2824917b1 | 202 | void Noritake_VFD_GU7000::GU7000_displayOn() { |
irsanjul | 0:cbd2824917b1 | 203 | us_command('a', 0x40); |
irsanjul | 0:cbd2824917b1 | 204 | command(0x01); |
irsanjul | 0:cbd2824917b1 | 205 | } |
irsanjul | 0:cbd2824917b1 | 206 | |
irsanjul | 0:cbd2824917b1 | 207 | void Noritake_VFD_GU7000::GU7000_screenSaver(ScreenSaver mode) { |
irsanjul | 0:cbd2824917b1 | 208 | us_command('a', 0x40); |
irsanjul | 0:cbd2824917b1 | 209 | command(mode); |
irsanjul | 0:cbd2824917b1 | 210 | } |
irsanjul | 0:cbd2824917b1 | 211 | |
irsanjul | 0:cbd2824917b1 | 212 | void Noritake_VFD_GU7000::GU7000_setFontStyle(bool proportional, bool evenSpacing) { |
irsanjul | 0:cbd2824917b1 | 213 | us_command('g', 0x03); |
irsanjul | 0:cbd2824917b1 | 214 | command(proportional*2 + evenSpacing); |
irsanjul | 0:cbd2824917b1 | 215 | } |
irsanjul | 0:cbd2824917b1 | 216 | |
irsanjul | 0:cbd2824917b1 | 217 | void Noritake_VFD_GU7000::GU7000_setFontSize(uint8_t x, uint8_t y, bool tall) { |
irsanjul | 0:cbd2824917b1 | 218 | if (x<=4 && y<=2) { |
irsanjul | 0:cbd2824917b1 | 219 | us_command('g', 0x40); |
irsanjul | 0:cbd2824917b1 | 220 | command(x); |
irsanjul | 0:cbd2824917b1 | 221 | command(y); |
irsanjul | 0:cbd2824917b1 | 222 | #if (NORITAKE_VFD_MODEL_CLASS-7000)/100==9 || (NORITAKE_VFD_MODEL_CLASS-7000)/100==1 |
irsanjul | 0:cbd2824917b1 | 223 | us_command('g', 0x01); |
irsanjul | 0:cbd2824917b1 | 224 | command(tall+1); |
irsanjul | 0:cbd2824917b1 | 225 | #endif |
irsanjul | 0:cbd2824917b1 | 226 | } |
irsanjul | 0:cbd2824917b1 | 227 | } |
irsanjul | 0:cbd2824917b1 | 228 | |
irsanjul | 0:cbd2824917b1 | 229 | void Noritake_VFD_GU7000::GU7000_selectWindow(uint8_t window) { |
irsanjul | 0:cbd2824917b1 | 230 | if (window <= 4) |
irsanjul | 0:cbd2824917b1 | 231 | command(0x10 + window); |
irsanjul | 0:cbd2824917b1 | 232 | } |
irsanjul | 0:cbd2824917b1 | 233 | |
irsanjul | 0:cbd2824917b1 | 234 | void Noritake_VFD_GU7000::GU7000_defineWindow(uint8_t window, unsigned x, unsigned y, unsigned width, unsigned height) { |
irsanjul | 0:cbd2824917b1 | 235 | us_command('w', 0x02); |
irsanjul | 0:cbd2824917b1 | 236 | command(window); |
irsanjul | 0:cbd2824917b1 | 237 | command(0x01); |
irsanjul | 0:cbd2824917b1 | 238 | command_xy(x, y); |
irsanjul | 0:cbd2824917b1 | 239 | command_xy(width, height); |
irsanjul | 0:cbd2824917b1 | 240 | } |
irsanjul | 0:cbd2824917b1 | 241 | |
irsanjul | 0:cbd2824917b1 | 242 | void Noritake_VFD_GU7000::GU7000_deleteWindow(uint8_t window) { |
irsanjul | 0:cbd2824917b1 | 243 | us_command('w', 0x02); |
irsanjul | 0:cbd2824917b1 | 244 | command(window); |
irsanjul | 0:cbd2824917b1 | 245 | command(0); |
irsanjul | 0:cbd2824917b1 | 246 | command_xy(0, 0); |
irsanjul | 0:cbd2824917b1 | 247 | command_xy(0, 0); |
irsanjul | 0:cbd2824917b1 | 248 | } |
irsanjul | 0:cbd2824917b1 | 249 | |
irsanjul | 0:cbd2824917b1 | 250 | void Noritake_VFD_GU7000::GU7000_joinScreens() { |
irsanjul | 0:cbd2824917b1 | 251 | us_command('w', 0x10); |
irsanjul | 0:cbd2824917b1 | 252 | command(0x01); |
irsanjul | 0:cbd2824917b1 | 253 | } |
irsanjul | 0:cbd2824917b1 | 254 | |
irsanjul | 0:cbd2824917b1 | 255 | void Noritake_VFD_GU7000::GU7000_separateScreens() { |
irsanjul | 0:cbd2824917b1 | 256 | us_command('w', 0x10); |
irsanjul | 0:cbd2824917b1 | 257 | command(0); |
irsanjul | 0:cbd2824917b1 | 258 | } |
irsanjul | 0:cbd2824917b1 | 259 | |
irsanjul | 0:cbd2824917b1 | 260 | void Noritake_VFD_GU7000::print(char c) { |
irsanjul | 0:cbd2824917b1 | 261 | command(c); |
irsanjul | 0:cbd2824917b1 | 262 | } |
irsanjul | 0:cbd2824917b1 | 263 | |
irsanjul | 1:1a088a2b53ec | 264 | void Noritake_VFD_GU7000::print(uint8_t c) { |
irsanjul | 1:1a088a2b53ec | 265 | command(c); |
irsanjul | 1:1a088a2b53ec | 266 | } |
irsanjul | 1:1a088a2b53ec | 267 | |
irsanjul | 0:cbd2824917b1 | 268 | void Noritake_VFD_GU7000::print(const char *str, ...) { |
irsanjul | 0:cbd2824917b1 | 269 | while (*str) |
irsanjul | 1:1a088a2b53ec | 270 | command(*str++); |
irsanjul | 1:1a088a2b53ec | 271 | } |
irsanjul | 1:1a088a2b53ec | 272 | |
irsanjul | 1:1a088a2b53ec | 273 | void Noritake_VFD_GU7000::print(const uint8_t *buffer, size_t size) { |
irsanjul | 1:1a088a2b53ec | 274 | commandBlock(buffer, size); |
irsanjul | 0:cbd2824917b1 | 275 | } |
irsanjul | 0:cbd2824917b1 | 276 | |
irsanjul | 0:cbd2824917b1 | 277 | void Noritake_VFD_GU7000::print(const char *buffer, size_t size) { |
irsanjul | 1:1a088a2b53ec | 278 | //while (size--) |
irsanjul | 1:1a088a2b53ec | 279 | //print(*buffer++); |
irsanjul | 1:1a088a2b53ec | 280 | commandBlock(buffer, size); |
irsanjul | 0:cbd2824917b1 | 281 | } |
irsanjul | 0:cbd2824917b1 | 282 | |
irsanjul | 0:cbd2824917b1 | 283 | void Noritake_VFD_GU7000::print(long number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 284 | if (number < 0) { |
irsanjul | 0:cbd2824917b1 | 285 | print('-'); |
irsanjul | 0:cbd2824917b1 | 286 | number = -number; |
irsanjul | 0:cbd2824917b1 | 287 | } |
irsanjul | 0:cbd2824917b1 | 288 | printNumber(number, base); |
irsanjul | 0:cbd2824917b1 | 289 | } |
irsanjul | 0:cbd2824917b1 | 290 | |
irsanjul | 0:cbd2824917b1 | 291 | void Noritake_VFD_GU7000::print(int number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 292 | print((long)number, base); |
irsanjul | 0:cbd2824917b1 | 293 | } |
irsanjul | 0:cbd2824917b1 | 294 | |
irsanjul | 0:cbd2824917b1 | 295 | void Noritake_VFD_GU7000::print(unsigned long number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 296 | printNumber(number, base); |
irsanjul | 0:cbd2824917b1 | 297 | } |
irsanjul | 0:cbd2824917b1 | 298 | |
irsanjul | 0:cbd2824917b1 | 299 | void Noritake_VFD_GU7000::print(unsigned number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 300 | print((unsigned long)number, base); |
irsanjul | 0:cbd2824917b1 | 301 | } |
irsanjul | 0:cbd2824917b1 | 302 | |
irsanjul | 1:1a088a2b53ec | 303 | void Noritake_VFD_GU7000::printAt(unsigned baris, unsigned kolom, const char* str) { |
irsanjul | 1:1a088a2b53ec | 304 | unsigned x,y; |
irsanjul | 1:1a088a2b53ec | 305 | |
irsanjul | 1:1a088a2b53ec | 306 | x = (baris * 8) - 8; |
irsanjul | 1:1a088a2b53ec | 307 | y = (kolom * 8) - 8; |
irsanjul | 1:1a088a2b53ec | 308 | |
irsanjul | 1:1a088a2b53ec | 309 | GU7000_setCursor(x,y); |
irsanjul | 1:1a088a2b53ec | 310 | commandBlock(str, strlen(str)); |
irsanjul | 1:1a088a2b53ec | 311 | } |
irsanjul | 1:1a088a2b53ec | 312 | |
irsanjul | 0:cbd2824917b1 | 313 | void Noritake_VFD_GU7000::crlf() { |
irsanjul | 0:cbd2824917b1 | 314 | GU7000_carriageReturn(); |
irsanjul | 0:cbd2824917b1 | 315 | GU7000_lineFeed(); |
irsanjul | 0:cbd2824917b1 | 316 | } |
irsanjul | 0:cbd2824917b1 | 317 | |
irsanjul | 0:cbd2824917b1 | 318 | void Noritake_VFD_GU7000::println(char c) { |
irsanjul | 0:cbd2824917b1 | 319 | print(c); |
irsanjul | 0:cbd2824917b1 | 320 | crlf(); |
irsanjul | 0:cbd2824917b1 | 321 | } |
irsanjul | 0:cbd2824917b1 | 322 | |
irsanjul | 0:cbd2824917b1 | 323 | void Noritake_VFD_GU7000::println(const char *str) { |
irsanjul | 0:cbd2824917b1 | 324 | print(str); |
irsanjul | 0:cbd2824917b1 | 325 | crlf(); |
irsanjul | 0:cbd2824917b1 | 326 | } |
irsanjul | 0:cbd2824917b1 | 327 | |
irsanjul | 0:cbd2824917b1 | 328 | void Noritake_VFD_GU7000::println(const char *buffer, size_t size) { |
irsanjul | 0:cbd2824917b1 | 329 | print(buffer, size); |
irsanjul | 0:cbd2824917b1 | 330 | crlf(); |
irsanjul | 0:cbd2824917b1 | 331 | } |
irsanjul | 0:cbd2824917b1 | 332 | |
irsanjul | 0:cbd2824917b1 | 333 | void Noritake_VFD_GU7000::println(long number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 334 | print(number, base); |
irsanjul | 0:cbd2824917b1 | 335 | crlf(); |
irsanjul | 0:cbd2824917b1 | 336 | } |
irsanjul | 0:cbd2824917b1 | 337 | |
irsanjul | 0:cbd2824917b1 | 338 | void Noritake_VFD_GU7000::println(int number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 339 | println((long) number, base); |
irsanjul | 0:cbd2824917b1 | 340 | } |
irsanjul | 0:cbd2824917b1 | 341 | |
irsanjul | 0:cbd2824917b1 | 342 | void Noritake_VFD_GU7000::println(unsigned long number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 343 | print(number, base); |
irsanjul | 0:cbd2824917b1 | 344 | crlf(); |
irsanjul | 0:cbd2824917b1 | 345 | } |
irsanjul | 0:cbd2824917b1 | 346 | |
irsanjul | 0:cbd2824917b1 | 347 | void Noritake_VFD_GU7000::println(unsigned number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 348 | println((unsigned long) number, base); |
irsanjul | 0:cbd2824917b1 | 349 | } |
irsanjul | 0:cbd2824917b1 | 350 | |
irsanjul | 0:cbd2824917b1 | 351 | void Noritake_VFD_GU7000::printNumber(unsigned long number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 352 | if (number/base) |
irsanjul | 0:cbd2824917b1 | 353 | printNumber(number/base, base); |
irsanjul | 0:cbd2824917b1 | 354 | number %= base; |
irsanjul | 1:1a088a2b53ec | 355 | //print(number + (number < 10? '0': 'A' - 10)); |
irsanjul | 0:cbd2824917b1 | 356 | } |
irsanjul | 0:cbd2824917b1 | 357 | |
irsanjul | 0:cbd2824917b1 | 358 | void Noritake_VFD_GU7000::GU7000_setBacklightColor(uint8_t r, uint8_t g, uint8_t b) { |
irsanjul | 0:cbd2824917b1 | 359 | #if NORITAKE_VFD_MODEL_CLASS==7040 |
irsanjul | 0:cbd2824917b1 | 360 | command(0x1f, 'L', 0x10); |
irsanjul | 0:cbd2824917b1 | 361 | command(b & 0xf0); |
irsanjul | 0:cbd2824917b1 | 362 | command(g & 0xf0); |
irsanjul | 0:cbd2824917b1 | 363 | command(r & 0xf0); |
irsanjul | 0:cbd2824917b1 | 364 | #endif |
irsanjul | 0:cbd2824917b1 | 365 | } |
irsanjul | 0:cbd2824917b1 | 366 | |
irsanjul | 0:cbd2824917b1 | 367 | void Noritake_VFD_GU7000::GU7000_setBacklightColor(unsigned rgb) { |
irsanjul | 0:cbd2824917b1 | 368 | GU7000_setBacklightColor((rgb>>8 & 0x0f)*16, (rgb>>4 & 0x0f)*16, (rgb & 0x0f)*16); |
irsanjul | 0:cbd2824917b1 | 369 | } |
irsanjul | 0:cbd2824917b1 | 370 | |
irsanjul | 0:cbd2824917b1 | 371 | void Noritake_VFD_GU7000::GU7000_drawImage(unsigned width, uint8_t height, const uint8_t *data) { |
irsanjul | 0:cbd2824917b1 | 372 | if (height > NORITAKE_VFD_HEIGHT) return; |
irsanjul | 1:1a088a2b53ec | 373 | us_command('f', 0x11); |
irsanjul | 0:cbd2824917b1 | 374 | command_xy(width, height); |
irsanjul | 0:cbd2824917b1 | 375 | command((uint8_t) 1); |
irsanjul | 1:1a088a2b53ec | 376 | |
irsanjul | 0:cbd2824917b1 | 377 | for (unsigned i = 0; i<(height/8)*width; i++) |
irsanjul | 0:cbd2824917b1 | 378 | command(data[i]); |
irsanjul | 1:1a088a2b53ec | 379 | |
irsanjul | 1:1a088a2b53ec | 380 | //commandBlock((const char *)data, width*8); |
irsanjul | 0:cbd2824917b1 | 381 | } |
irsanjul | 0:cbd2824917b1 | 382 | |
irsanjul | 0:cbd2824917b1 | 383 | void Noritake_VFD_GU7000::GU7000_drawFROMImage(unsigned long address, uint8_t srcHeight, unsigned width, uint8_t height) { |
irsanjul | 0:cbd2824917b1 | 384 | #if (NORITAKE_VFD_MODEL_CLASS-7000)/100==9 || (NORITAKE_VFD_MODEL_CLASS-7000)/100==1 |
irsanjul | 0:cbd2824917b1 | 385 | if (height > NORITAKE_VFD_HEIGHT) return; |
irsanjul | 0:cbd2824917b1 | 386 | us_command('f', 0x10); |
irsanjul | 0:cbd2824917b1 | 387 | command(0x01); |
irsanjul | 0:cbd2824917b1 | 388 | command(address); |
irsanjul | 0:cbd2824917b1 | 389 | command(address>>8); |
irsanjul | 0:cbd2824917b1 | 390 | command(address>>16); |
irsanjul | 0:cbd2824917b1 | 391 | command(srcHeight/8); |
irsanjul | 0:cbd2824917b1 | 392 | command((srcHeight/8)>>8); |
irsanjul | 0:cbd2824917b1 | 393 | command_xy(width, height); |
irsanjul | 0:cbd2824917b1 | 394 | command((uint8_t) 1); |
irsanjul | 0:cbd2824917b1 | 395 | #endif |
irsanjul | 0:cbd2824917b1 | 396 | } |
irsanjul | 0:cbd2824917b1 | 397 | |
irsanjul | 1:1a088a2b53ec | 398 | void Noritake_VFD_GU7000::GU7000_drawImageAt(unsigned x, unsigned y, unsigned width, uint8_t height, const uint8_t *data) { |
irsanjul | 1:1a088a2b53ec | 399 | GU7000_setCursor(x, y); |
irsanjul | 1:1a088a2b53ec | 400 | GU7000_drawImage(width, height, data); |
irsanjul | 1:1a088a2b53ec | 401 | } |
irsanjul | 1:1a088a2b53ec | 402 | |
irsanjul | 0:cbd2824917b1 | 403 | static unsigned min(unsigned x, unsigned y) { return x<y? x: y; } |
irsanjul | 0:cbd2824917b1 | 404 | |
irsanjul | 0:cbd2824917b1 | 405 | void Noritake_VFD_GU7000::GU7000_fillRect(unsigned x0, unsigned y0, unsigned x1, unsigned y1, bool on) { |
irsanjul | 0:cbd2824917b1 | 406 | x0 = min(NORITAKE_VFD_WIDTH, x0); |
irsanjul | 0:cbd2824917b1 | 407 | x1 = min(NORITAKE_VFD_WIDTH, x1); |
irsanjul | 0:cbd2824917b1 | 408 | y0 = min(NORITAKE_VFD_HEIGHT, y0); |
irsanjul | 0:cbd2824917b1 | 409 | y1 = min(NORITAKE_VFD_HEIGHT, y1); |
irsanjul | 0:cbd2824917b1 | 410 | if (y1<=y0 || x1<=x0) return; |
irsanjul | 0:cbd2824917b1 | 411 | uint8_t bufw = 8, bufh = (y1-y0+7)/8*8; |
irsanjul | 0:cbd2824917b1 | 412 | uint8_t *buf = (uint8_t*)alloca(bufh/8 * bufw); |
irsanjul | 0:cbd2824917b1 | 413 | for (unsigned x = 0; x < x1-x0; x += bufw) { |
irsanjul | 0:cbd2824917b1 | 414 | uint8_t part = (x + bufw < x1-x0)? bufw: (x1-x0) - x; |
irsanjul | 0:cbd2824917b1 | 415 | memset(buf, 0, bufh/8 * bufw); |
irsanjul | 0:cbd2824917b1 | 416 | if (on) |
irsanjul | 0:cbd2824917b1 | 417 | for (uint8_t col = 0; col < part; col++) { |
irsanjul | 0:cbd2824917b1 | 418 | for (uint8_t py = y0 % 8; py < y0 % 8 + min(y1-y0, 8); py++) |
irsanjul | 0:cbd2824917b1 | 419 | buf[col*bufh/8] |= 1 << (7-py); |
irsanjul | 0:cbd2824917b1 | 420 | for (uint8_t row = (y0+7)/8; row < y1/8; row++) |
irsanjul | 0:cbd2824917b1 | 421 | buf[row - y0/8 + col*bufh/8] = 0xff; |
irsanjul | 0:cbd2824917b1 | 422 | if (y0/8 != y1/8) |
irsanjul | 0:cbd2824917b1 | 423 | for (uint8_t py = 0; py < y1 % 8; py++) |
irsanjul | 0:cbd2824917b1 | 424 | buf[(y1-y0)/8 + col*bufh/8] |= 1 << (7-py); |
irsanjul | 0:cbd2824917b1 | 425 | } |
irsanjul | 0:cbd2824917b1 | 426 | GU7000_setCursor(x + x0, y0); |
irsanjul | 0:cbd2824917b1 | 427 | GU7000_drawImage(bufw, bufh, buf); |
irsanjul | 0:cbd2824917b1 | 428 | } |
irsanjul | 0:cbd2824917b1 | 429 | } |
irsanjul | 0:cbd2824917b1 | 430 | |
irsanjul | 0:cbd2824917b1 | 431 | void Noritake_VFD_GU7000::command(uint8_t data) { |
irsanjul | 1:1a088a2b53ec | 432 | uart.put(data); |
irsanjul | 1:1a088a2b53ec | 433 | } |
irsanjul | 1:1a088a2b53ec | 434 | void Noritake_VFD_GU7000::commandBlock(const char * data, int len){ |
irsanjul | 1:1a088a2b53ec | 435 | uart.wrblock(data, len); |
irsanjul | 1:1a088a2b53ec | 436 | } |
irsanjul | 1:1a088a2b53ec | 437 | void Noritake_VFD_GU7000::commandBlock(const uint8_t * data, int len){ |
irsanjul | 1:1a088a2b53ec | 438 | uart.wrblock(data, len); |
irsanjul | 0:cbd2824917b1 | 439 | } |
irsanjul | 0:cbd2824917b1 | 440 | void Noritake_VFD_GU7000::command_xy(unsigned x, unsigned y) { |
irsanjul | 0:cbd2824917b1 | 441 | command(x); |
irsanjul | 0:cbd2824917b1 | 442 | command(x>>8); |
irsanjul | 0:cbd2824917b1 | 443 | y /= 8; |
irsanjul | 0:cbd2824917b1 | 444 | command(y); |
irsanjul | 0:cbd2824917b1 | 445 | command(y>>8); |
irsanjul | 0:cbd2824917b1 | 446 | } |
irsanjul | 0:cbd2824917b1 | 447 | void Noritake_VFD_GU7000::command_xy1(unsigned x, unsigned y) { |
irsanjul | 0:cbd2824917b1 | 448 | command(x); |
irsanjul | 0:cbd2824917b1 | 449 | command(x>>8); |
irsanjul | 0:cbd2824917b1 | 450 | command(y); |
irsanjul | 0:cbd2824917b1 | 451 | command(y>>8); |
irsanjul | 0:cbd2824917b1 | 452 | } |
irsanjul | 0:cbd2824917b1 | 453 | |
irsanjul | 0:cbd2824917b1 | 454 | void Noritake_VFD_GU7000::us_command(uint8_t group, uint8_t cmd) { |
irsanjul | 0:cbd2824917b1 | 455 | command(0x1f); |
irsanjul | 0:cbd2824917b1 | 456 | command(0x28); |
irsanjul | 0:cbd2824917b1 | 457 | command(group); |
irsanjul | 0:cbd2824917b1 | 458 | command(cmd); |
irsanjul | 0:cbd2824917b1 | 459 | } |
irsanjul | 0:cbd2824917b1 | 460 | |
irsanjul | 0:cbd2824917b1 | 461 | void Noritake_VFD_GU7000::command(uint8_t prefix, uint8_t group, uint8_t cmd) { |
irsanjul | 0:cbd2824917b1 | 462 | command(prefix); |
irsanjul | 0:cbd2824917b1 | 463 | command(group); |
irsanjul | 0:cbd2824917b1 | 464 | command(cmd); |
irsanjul | 0:cbd2824917b1 | 465 | } |
irsanjul | 0:cbd2824917b1 | 466 | |
irsanjul | 0:cbd2824917b1 | 467 | void Noritake_VFD_GU7000::print(unsigned x, uint8_t y, const char *buffer, uint8_t len) { |
irsanjul | 0:cbd2824917b1 | 468 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 469 | us_command('d', 0x30); |
irsanjul | 0:cbd2824917b1 | 470 | command_xy1(x, y); |
irsanjul | 0:cbd2824917b1 | 471 | command(0); |
irsanjul | 0:cbd2824917b1 | 472 | command(len); |
irsanjul | 0:cbd2824917b1 | 473 | while (len--) |
irsanjul | 0:cbd2824917b1 | 474 | command(*buffer++); |
irsanjul | 0:cbd2824917b1 | 475 | #endif |
irsanjul | 0:cbd2824917b1 | 476 | } |
irsanjul | 0:cbd2824917b1 | 477 | |
irsanjul | 0:cbd2824917b1 | 478 | void Noritake_VFD_GU7000::print(unsigned x, uint8_t y, const char *str) { |
irsanjul | 0:cbd2824917b1 | 479 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 480 | print(x, y, str, strlen(str)); |
irsanjul | 0:cbd2824917b1 | 481 | #endif |
irsanjul | 0:cbd2824917b1 | 482 | } |
irsanjul | 0:cbd2824917b1 | 483 | void Noritake_VFD_GU7000::print(unsigned x, uint8_t y, char c) { |
irsanjul | 0:cbd2824917b1 | 484 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 485 | print(x, y, &c, 1); |
irsanjul | 0:cbd2824917b1 | 486 | #endif |
irsanjul | 0:cbd2824917b1 | 487 | } |
irsanjul | 0:cbd2824917b1 | 488 | void Noritake_VFD_GU7000::print(unsigned x, uint8_t y, int number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 489 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 490 | if (number < 0) { |
irsanjul | 0:cbd2824917b1 | 491 | print(x, y, '-'); |
irsanjul | 0:cbd2824917b1 | 492 | print(-1, y, (unsigned)-number, base); |
irsanjul | 0:cbd2824917b1 | 493 | } else |
irsanjul | 0:cbd2824917b1 | 494 | print(x, y, (unsigned)number, base); |
irsanjul | 0:cbd2824917b1 | 495 | #endif |
irsanjul | 0:cbd2824917b1 | 496 | } |
irsanjul | 0:cbd2824917b1 | 497 | void Noritake_VFD_GU7000::print(unsigned x, uint8_t y, unsigned number, uint8_t base) { |
irsanjul | 0:cbd2824917b1 | 498 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 499 | char buf[16], *p = buf + sizeof buf; |
irsanjul | 0:cbd2824917b1 | 500 | do |
irsanjul | 0:cbd2824917b1 | 501 | *--p = number % base + (number % base < 10? '0': 'A' - 10); |
irsanjul | 0:cbd2824917b1 | 502 | while (number /= base); |
irsanjul | 0:cbd2824917b1 | 503 | print(x, y, p, buf + sizeof buf - p); |
irsanjul | 0:cbd2824917b1 | 504 | #endif |
irsanjul | 0:cbd2824917b1 | 505 | } |
irsanjul | 0:cbd2824917b1 | 506 | void Noritake_VFD_GU7000::GU7000_drawImage(unsigned x, uint8_t y, unsigned width, uint8_t height, const uint8_t *data) { |
irsanjul | 0:cbd2824917b1 | 507 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 508 | us_command('d', 0x21); |
irsanjul | 0:cbd2824917b1 | 509 | command_xy1(x, y); |
irsanjul | 0:cbd2824917b1 | 510 | command_xy1(width, height); |
irsanjul | 0:cbd2824917b1 | 511 | command(0x01); |
irsanjul | 1:1a088a2b53ec | 512 | |
irsanjul | 0:cbd2824917b1 | 513 | for (unsigned i = 0; i<(height/8)*width; i++) |
irsanjul | 0:cbd2824917b1 | 514 | command(data[i]); |
irsanjul | 1:1a088a2b53ec | 515 | |
irsanjul | 0:cbd2824917b1 | 516 | #endif |
irsanjul | 0:cbd2824917b1 | 517 | } |
irsanjul | 0:cbd2824917b1 | 518 | void Noritake_VFD_GU7000::GU7000_drawImage(unsigned x, uint8_t y, ImageMemoryArea area, unsigned long address, uint8_t srcHeight, unsigned width, uint8_t height, unsigned offsetx, unsigned offsety) { |
irsanjul | 0:cbd2824917b1 | 519 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 520 | if (height > NORITAKE_VFD_HEIGHT) return; |
irsanjul | 0:cbd2824917b1 | 521 | us_command('d', 0x20); |
irsanjul | 0:cbd2824917b1 | 522 | command_xy1(x, y); |
irsanjul | 0:cbd2824917b1 | 523 | command(area); |
irsanjul | 0:cbd2824917b1 | 524 | command(address); |
irsanjul | 0:cbd2824917b1 | 525 | command(address>>8); |
irsanjul | 0:cbd2824917b1 | 526 | command(address>>16); |
irsanjul | 0:cbd2824917b1 | 527 | command(srcHeight/8); |
irsanjul | 0:cbd2824917b1 | 528 | command(srcHeight/8>>8); |
irsanjul | 0:cbd2824917b1 | 529 | command_xy1(offsetx, offsety); |
irsanjul | 0:cbd2824917b1 | 530 | command_xy1(width, height); |
irsanjul | 0:cbd2824917b1 | 531 | command(0x01); |
irsanjul | 0:cbd2824917b1 | 532 | #endif |
irsanjul | 0:cbd2824917b1 | 533 | } |
irsanjul | 0:cbd2824917b1 | 534 | |
irsanjul | 0:cbd2824917b1 | 535 | void Noritake_VFD_GU7000::GU7000_drawImage(unsigned x, uint8_t y, ImageMemoryArea area, unsigned long address, unsigned width, uint8_t height) { |
irsanjul | 0:cbd2824917b1 | 536 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 537 | GU7000_drawImage(x, y, area, address, (height + 7) & ~7, width, height, 0, 0); |
irsanjul | 0:cbd2824917b1 | 538 | #endif |
irsanjul | 0:cbd2824917b1 | 539 | } |
irsanjul | 0:cbd2824917b1 | 540 | |
irsanjul | 0:cbd2824917b1 | 541 | void Noritake_VFD_GU7000::print_p(const char *str) { |
irsanjul | 0:cbd2824917b1 | 542 | while (pgm_read_byte(str)) |
irsanjul | 1:1a088a2b53ec | 543 | command(pgm_read_byte(str++)); |
irsanjul | 0:cbd2824917b1 | 544 | } |
irsanjul | 0:cbd2824917b1 | 545 | void Noritake_VFD_GU7000::print_p(unsigned x, uint8_t y, const char *buffer, uint8_t len) { |
irsanjul | 0:cbd2824917b1 | 546 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 547 | us_command('d', 0x30); |
irsanjul | 0:cbd2824917b1 | 548 | command_xy1(x, y); |
irsanjul | 0:cbd2824917b1 | 549 | command(0); |
irsanjul | 0:cbd2824917b1 | 550 | command(len); |
irsanjul | 0:cbd2824917b1 | 551 | while (len--) |
irsanjul | 0:cbd2824917b1 | 552 | command(pgm_read_byte(buffer++)); |
irsanjul | 0:cbd2824917b1 | 553 | #endif |
irsanjul | 0:cbd2824917b1 | 554 | } |
irsanjul | 0:cbd2824917b1 | 555 | |
irsanjul | 0:cbd2824917b1 | 556 | void Noritake_VFD_GU7000::print_p(unsigned x, uint8_t y, const char *str) { |
irsanjul | 0:cbd2824917b1 | 557 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 558 | const char *end = str; |
irsanjul | 0:cbd2824917b1 | 559 | while (pgm_read_byte(end)) end++; |
irsanjul | 0:cbd2824917b1 | 560 | print_p(x, y, str, end - str); |
irsanjul | 0:cbd2824917b1 | 561 | #endif |
irsanjul | 0:cbd2824917b1 | 562 | } |
irsanjul | 0:cbd2824917b1 | 563 | |
irsanjul | 0:cbd2824917b1 | 564 | void Noritake_VFD_GU7000::GU7000_drawImage_p(unsigned width, uint8_t height, const uint8_t *data) { |
irsanjul | 0:cbd2824917b1 | 565 | if (height > NORITAKE_VFD_HEIGHT) return; |
irsanjul | 0:cbd2824917b1 | 566 | us_command('f', 0x11); |
irsanjul | 0:cbd2824917b1 | 567 | command_xy(width, height); |
irsanjul | 0:cbd2824917b1 | 568 | command((uint8_t) 1); |
irsanjul | 1:1a088a2b53ec | 569 | /* |
irsanjul | 0:cbd2824917b1 | 570 | for (unsigned i = 0; i<(height/8)*width; i++) |
irsanjul | 0:cbd2824917b1 | 571 | command(pgm_read_byte(data+i)); |
irsanjul | 1:1a088a2b53ec | 572 | */ |
irsanjul | 1:1a088a2b53ec | 573 | commandBlock((const char *)data, width*8); |
irsanjul | 0:cbd2824917b1 | 574 | } |
irsanjul | 0:cbd2824917b1 | 575 | |
irsanjul | 0:cbd2824917b1 | 576 | void Noritake_VFD_GU7000::GU7000_drawImage_p(unsigned x, uint8_t y, unsigned width, uint8_t height, const uint8_t *data) { |
irsanjul | 0:cbd2824917b1 | 577 | #if NORITAKE_VFD_GENERATION == 'B' |
irsanjul | 0:cbd2824917b1 | 578 | us_command('d', 0x21); |
irsanjul | 0:cbd2824917b1 | 579 | command_xy1(x, y); |
irsanjul | 0:cbd2824917b1 | 580 | command_xy1(width, height); |
irsanjul | 0:cbd2824917b1 | 581 | command(0x01); |
irsanjul | 0:cbd2824917b1 | 582 | for (unsigned i = 0; i<(height/8)*width; i++) |
irsanjul | 0:cbd2824917b1 | 583 | command(pgm_read_byte(data+i)); |
irsanjul | 0:cbd2824917b1 | 584 | #endif |
irsanjul | 0:cbd2824917b1 | 585 | } |
irsanjul | 0:cbd2824917b1 | 586 | |
irsanjul | 0:cbd2824917b1 | 587 | |
irsanjul | 0:cbd2824917b1 | 588 | /** |
irsanjul | 0:cbd2824917b1 | 589 | Begin I2C Implementation for 16SCIS752 dual UART |
irsanjul | 0:cbd2824917b1 | 590 | **/ |
irsanjul | 0:cbd2824917b1 | 591 | /* |
irsanjul | 0:cbd2824917b1 | 592 | noritake_i2c::noritake_i2c(PinName sda, PinName scl): i2c(sda, scl, SC16IS752_SA5, NC, SC16IS752::Channel_A) |
irsanjul | 0:cbd2824917b1 | 593 | { |
irsanjul | 0:cbd2824917b1 | 594 | i2c.init(38400); |
irsanjul | 0:cbd2824917b1 | 595 | } |
irsanjul | 0:cbd2824917b1 | 596 | |
irsanjul | 0:cbd2824917b1 | 597 | noritake_i2c::~noritake_i2c() |
irsanjul | 0:cbd2824917b1 | 598 | { |
irsanjul | 0:cbd2824917b1 | 599 | |
irsanjul | 0:cbd2824917b1 | 600 | } |
irsanjul | 0:cbd2824917b1 | 601 | |
irsanjul | 0:cbd2824917b1 | 602 | void noritake_i2c::writePort(uint8_t data) |
irsanjul | 0:cbd2824917b1 | 603 | { |
irsanjul | 0:cbd2824917b1 | 604 | |
irsanjul | 0:cbd2824917b1 | 605 | } |
irsanjul | 0:cbd2824917b1 | 606 | |
irsanjul | 0:cbd2824917b1 | 607 | void noritake_i2c::hardReset() |
irsanjul | 0:cbd2824917b1 | 608 | { |
irsanjul | 0:cbd2824917b1 | 609 | |
irsanjul | 0:cbd2824917b1 | 610 | }*/ |