Library for the Princeton PT6312 Vacuum Fluorescent Display (VFD) driver.

Dependents:   mbed_PT6312

This library is documented here.

Committer:
wim
Date:
Sun Dec 20 14:41:58 2015 +0000
Revision:
5:be9ec73af639
Parent:
4:6ecb924fa0b5
Child:
6:d3dc313a6840
Added Tests and Fonts for 7Segment displays of DVD462 and C2233.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:e59142cded2b 1 /* mbed PT6312 Library, for Princeton PT6312 VFD controller
wim 0:e59142cded2b 2 * Copyright (c) 2015, v01: WH, Initial version
wim 5:be9ec73af639 3 * 2015, v02: WH, rename Digit/Grid, added DVD462 code, added C2233 code
wim 0:e59142cded2b 4 *
wim 0:e59142cded2b 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:e59142cded2b 6 * of this software and associated documentation files (the "Software"), to deal
wim 0:e59142cded2b 7 * in the Software without restriction, including without limitation the rights
wim 0:e59142cded2b 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:e59142cded2b 9 * copies of the Software, and to permit persons to whom the Software is
wim 0:e59142cded2b 10 * furnished to do so, subject to the following conditions:
wim 0:e59142cded2b 11 *
wim 0:e59142cded2b 12 * The above copyright notice and this permission notice shall be included in
wim 0:e59142cded2b 13 * all copies or substantial portions of the Software.
wim 0:e59142cded2b 14 *
wim 0:e59142cded2b 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:e59142cded2b 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:e59142cded2b 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:e59142cded2b 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:e59142cded2b 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:e59142cded2b 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:e59142cded2b 21 * THE SOFTWARE.
wim 0:e59142cded2b 22 */
wim 0:e59142cded2b 23
wim 0:e59142cded2b 24 #ifndef PT6312_H
wim 0:e59142cded2b 25 #define PT6312_H
wim 0:e59142cded2b 26
wim 5:be9ec73af639 27 // Select one of the testboards for Princeton PT6312 VFD controller
wim 5:be9ec73af639 28 #include "PT6312_Config.h"
wim 3:156c23d9652a 29
wim 0:e59142cded2b 30 /** An interface for driving Princeton PT6312 VFD controller
wim 0:e59142cded2b 31 *
wim 0:e59142cded2b 32 * @code
wim 3:156c23d9652a 33 *
wim 5:be9ec73af639 34 * #if (PT6312_TEST == 1)
wim 3:156c23d9652a 35 * // Direct driving of PT6312 Test
wim 3:156c23d9652a 36 *
wim 0:e59142cded2b 37 * #include "mbed.h"
wim 3:156c23d9652a 38 * #include "PT6312.h"
wim 0:e59142cded2b 39 *
wim 5:be9ec73af639 40 * DisplayData_t size is 8 bytes (4 Grids @ 16 Segments) ... 22 bytes (11 Grids @ 11 Segments)
wim 5:be9ec73af639 41 * DisplayData_t size default is 14 bytes (7 Grids @ 15 Segments)
wim 0:e59142cded2b 42 * PT6312::DisplayData_t mbed_str = {0xDA,0x00, 0x7C,0x00, 0x3C,0x01, 0xF6,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00};
wim 0:e59142cded2b 43 * PT6312::DisplayData_t all_str = {0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F, 0xFF,0x0F};
wim 0:e59142cded2b 44 *
wim 0:e59142cded2b 45 * // KeyData_t size is 3 bytes
wim 0:e59142cded2b 46 * PT6312::KeyData_t keydata;
wim 0:e59142cded2b 47 *
wim 5:be9ec73af639 48 * // PT6191 declaration, Default setting 7 Grids @ 15 Segments
wim 0:e59142cded2b 49 * PT6312 PT6312(p5,p6,p7, p8);
wim 0:e59142cded2b 50 *
wim 0:e59142cded2b 51 * int main() {
wim 0:e59142cded2b 52 * PT6312.cls();
wim 0:e59142cded2b 53 * PT6312.writeData(all_str);
wim 0:e59142cded2b 54 * wait(4);
wim 0:e59142cded2b 55 * PT6312.writeData(mbed_str);
wim 0:e59142cded2b 56 * wait(1);
wim 0:e59142cded2b 57 * PT6312.setBrightness(PT6312_BRT0);
wim 0:e59142cded2b 58 * wait(1);
wim 0:e59142cded2b 59 * PT6312.setBrightness(PT6312_BRT3);
wim 0:e59142cded2b 60 *
wim 0:e59142cded2b 61 * while (1) {
wim 0:e59142cded2b 62 * // Check and read keydata
wim 1:c5e247159aa6 63 * if (PT6312.getKeys(&keydata)) {
wim 0:e59142cded2b 64 * pc.printf("Keydata 0..2 = 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2]);
wim 0:e59142cded2b 65 *
wim 0:e59142cded2b 66 * if (keydata[0] == 0x10) { //sw2
wim 0:e59142cded2b 67 * PT6312.cls();
wim 0:e59142cded2b 68 * PT6312.writeData(all_str);
wim 0:e59142cded2b 69 * }
wim 0:e59142cded2b 70 * }
wim 0:e59142cded2b 71 * }
wim 0:e59142cded2b 72 * }
wim 5:be9ec73af639 73 * #endif
wim 3:156c23d9652a 74 *
wim 5:be9ec73af639 75 * #if (DVP630_TEST == 1)
wim 3:156c23d9652a 76 * //Philips DVP630 Display Test
wim 3:156c23d9652a 77 *
wim 3:156c23d9652a 78 * #include "mbed.h"
wim 3:156c23d9652a 79 * #include "PT6312.h"
wim 3:156c23d9652a 80 *
wim 3:156c23d9652a 81 * // KeyData_t size is 3 bytes
wim 3:156c23d9652a 82 * PT6312::KeyData_t keydata;
wim 3:156c23d9652a 83 *
wim 5:be9ec73af639 84 * // PT6312_DVD declaration (7 Grids @ 15 Segments)
wim 3:156c23d9652a 85 * PT6312_DVP630 DVP630(p5,p6,p7, p8);
wim 3:156c23d9652a 86 *
wim 3:156c23d9652a 87 * int main() {
wim 3:156c23d9652a 88 *
wim 3:156c23d9652a 89 * DVP630.cls();
wim 3:156c23d9652a 90 * DVP630.setBrightness(PT6312_BRT7);
wim 3:156c23d9652a 91 *
wim 3:156c23d9652a 92 * //test to show all chars
wim 3:156c23d9652a 93 *
wim 3:156c23d9652a 94 * for (int i=0x20; i<0x80; i++) {
wim 3:156c23d9652a 95 * DVP630.cls();
wim 3:156c23d9652a 96 * DVP630.printf("0x%2X=%c", i, (char) i);
wim 3:156c23d9652a 97 * wait(0.2);
wim 3:156c23d9652a 98 * // pc.getc();
wim 3:156c23d9652a 99 * }
wim 3:156c23d9652a 100 * }
wim 3:156c23d9652a 101 *
wim 3:156c23d9652a 102 * #endif
wim 3:156c23d9652a 103 *
wim 0:e59142cded2b 104 * @endcode
wim 0:e59142cded2b 105 */
wim 0:e59142cded2b 106
wim 0:e59142cded2b 107 //Memory size in bytes for Display and Keymatrix
wim 0:e59142cded2b 108 #define PT6312_DISPLAY_MEM 22
wim 0:e59142cded2b 109 #define PT6312_KEY_MEM 3
wim 0:e59142cded2b 110 //Significant bits Keymatrix data
wim 0:e59142cded2b 111 #define PT6312_KEY_BITS 8
wim 0:e59142cded2b 112
wim 0:e59142cded2b 113 //Reserved bits for commands
wim 0:e59142cded2b 114 #define PT6312_CMD_MSK 0xE0
wim 0:e59142cded2b 115
wim 0:e59142cded2b 116 //Mode setting command
wim 0:e59142cded2b 117 #define PT6312_MODE_SET_CMD 0x00
wim 5:be9ec73af639 118 #define PT6312_GR4_SEG16 0x00
wim 5:be9ec73af639 119 #define PT6312_GR5_SEG16 0x01
wim 5:be9ec73af639 120 #define PT6312_GR6_SEG16 0x02
wim 5:be9ec73af639 121 #define PT6312_GR7_SEG15 0x03 //default
wim 5:be9ec73af639 122 #define PT6312_GR8_SEG14 0x04
wim 5:be9ec73af639 123 #define PT6312_GR9_SEG13 0x05
wim 5:be9ec73af639 124 #define PT6312_GR10_SEG12 0x06
wim 5:be9ec73af639 125 #define PT6312_GR11_SEG11 0x07
wim 0:e59142cded2b 126
wim 0:e59142cded2b 127
wim 0:e59142cded2b 128 //Data setting commands
wim 0:e59142cded2b 129 #define PT6312_DATA_SET_CMD 0x40
wim 0:e59142cded2b 130 #define PT6312_DATA_WR 0x00
wim 0:e59142cded2b 131 #define PT6312_LED_WR 0x01
wim 0:e59142cded2b 132 #define PT6312_KEY_RD 0x02
wim 0:e59142cded2b 133 #define PT6312_SW_RD 0x03
wim 0:e59142cded2b 134 #define PT6312_ADDR_INC 0x00
wim 0:e59142cded2b 135 #define PT6312_ADDR_FIXED 0x04
wim 0:e59142cded2b 136 #define PT6312_MODE_NORM 0x00
wim 0:e59142cded2b 137 #define PT6312_MODE_TEST 0x08
wim 0:e59142cded2b 138
wim 0:e59142cded2b 139 //LED settings data
wim 0:e59142cded2b 140 #define PT6312_LED_MSK 0x0F
wim 0:e59142cded2b 141 #define PT6312_LED1 0x01
wim 0:e59142cded2b 142 #define PT6312_LED2 0x02
wim 0:e59142cded2b 143 #define PT6312_LED3 0x04
wim 0:e59142cded2b 144 #define PT6312_LED4 0x08
wim 0:e59142cded2b 145
wim 0:e59142cded2b 146 //Switch settings data
wim 0:e59142cded2b 147 #define PT6312_SW_MSK 0x0F
wim 0:e59142cded2b 148 #define PT6312_SW1 0x01
wim 0:e59142cded2b 149 #define PT6312_SW2 0x02
wim 0:e59142cded2b 150 #define PT6312_SW3 0x04
wim 0:e59142cded2b 151 #define PT6312_SW4 0x08
wim 0:e59142cded2b 152
wim 0:e59142cded2b 153 //Address setting commands
wim 0:e59142cded2b 154 #define PT6312_ADDR_SET_CMD 0xC0
wim 0:e59142cded2b 155 #define PT6312_ADDR_MSK 0x1F
wim 0:e59142cded2b 156
wim 0:e59142cded2b 157 //Display control commands
wim 0:e59142cded2b 158 #define PT6312_DSP_CTRL_CMD 0x80
wim 0:e59142cded2b 159 #define PT6312_BRT_MSK 0x07
wim 0:e59142cded2b 160 #define PT6312_BRT0 0x00 //Pulsewidth 1/16
wim 0:e59142cded2b 161 #define PT6312_BRT1 0x01
wim 0:e59142cded2b 162 #define PT6312_BRT2 0x02
wim 0:e59142cded2b 163 #define PT6312_BRT3 0x03
wim 0:e59142cded2b 164 #define PT6312_BRT4 0x04
wim 0:e59142cded2b 165 #define PT6312_BRT5 0x05
wim 0:e59142cded2b 166 #define PT6312_BRT6 0x06
wim 0:e59142cded2b 167 #define PT6312_BRT7 0x07 //Pulsewidth 14/16
wim 0:e59142cded2b 168
wim 0:e59142cded2b 169 #define PT6312_BRT_DEF PT6312_BRT3
wim 0:e59142cded2b 170
wim 0:e59142cded2b 171 #define PT6312_DSP_OFF 0x00
wim 0:e59142cded2b 172 #define PT6312_DSP_ON 0x08
wim 0:e59142cded2b 173
wim 0:e59142cded2b 174
wim 0:e59142cded2b 175 /** A class for driving Princeton PT6312 VFD controller
wim 0:e59142cded2b 176 *
wim 5:be9ec73af639 177 * @brief Supports 4 Grids of 16 Segments upto 11 Grids of 11 Segments. Also supports a scanned keyboard of upto 24 keys, 4 switches and 4 LEDs.
wim 0:e59142cded2b 178 * SPI bus interface device.
wim 0:e59142cded2b 179 */
wim 0:e59142cded2b 180 class PT6312 {
wim 0:e59142cded2b 181 public:
wim 0:e59142cded2b 182
wim 0:e59142cded2b 183 /** Enums for display mode */
wim 0:e59142cded2b 184 enum Mode {
wim 5:be9ec73af639 185 Grid4_Seg16 = PT6312_GR4_SEG16,
wim 5:be9ec73af639 186 Grid5_Seg16 = PT6312_GR5_SEG16,
wim 5:be9ec73af639 187 Grid6_Seg16 = PT6312_GR6_SEG16,
wim 5:be9ec73af639 188 Grid7_Seg15 = PT6312_GR7_SEG15,
wim 5:be9ec73af639 189 Grid8_Seg14 = PT6312_GR8_SEG14,
wim 5:be9ec73af639 190 Grid9_Seg13 = PT6312_GR9_SEG13,
wim 5:be9ec73af639 191 Grid10_Seg12 = PT6312_GR10_SEG12,
wim 5:be9ec73af639 192 Grid11_Seg11 = PT6312_GR11_SEG11
wim 0:e59142cded2b 193 };
wim 0:e59142cded2b 194
wim 0:e59142cded2b 195 /** Datatypes for display and keymatrix data */
wim 0:e59142cded2b 196 typedef char DisplayData_t[PT6312_DISPLAY_MEM];
wim 0:e59142cded2b 197 typedef char KeyData_t[PT6312_KEY_MEM];
wim 0:e59142cded2b 198
wim 1:c5e247159aa6 199 /** Constructor for class for driving Princeton PT6312 VFD controller
wim 0:e59142cded2b 200 *
wim 5:be9ec73af639 201 * @brief Supports 4 Grids of 16 Segments upto 11 Grids of 11 Segments. Also supports a scanned keyboard of upto 24 keys, 4 switches and 4 LEDs.
wim 0:e59142cded2b 202 * SPI bus interface device.
wim 0:e59142cded2b 203 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 5:be9ec73af639 204 * @param Mode selects either number of Grids and Segments (default 7 Grids, 15 Segments)
wim 0:e59142cded2b 205 */
wim 5:be9ec73af639 206 PT6312(PinName mosi, PinName miso, PinName sclk, PinName cs, Mode mode=Grid7_Seg15);
wim 0:e59142cded2b 207
wim 0:e59142cded2b 208 /** Clear the screen and locate to 0
wim 0:e59142cded2b 209 */
wim 0:e59142cded2b 210 void cls();
wim 0:e59142cded2b 211
wim 0:e59142cded2b 212 /** Write databyte to PT6312
wim 0:e59142cded2b 213 * @param int address display memory location to write byte
wim 0:e59142cded2b 214 * @param char data byte written at given address
wim 0:e59142cded2b 215 * @return none
wim 0:e59142cded2b 216 */
wim 0:e59142cded2b 217 void writeData(int address, char data);
wim 0:e59142cded2b 218
wim 0:e59142cded2b 219 /** Write Display datablock to PT6312
wim 3:156c23d9652a 220 * @param DisplayData_t data Array of PT6312_DISPLAY_MEM (=22) bytes for displaydata (starting at address 0)
wim 3:156c23d9652a 221 * @param length number bytes to write (valid range 0..PT6312_DISPLAY_MEM (=22), starting at address 0)
wim 0:e59142cded2b 222 * @return none
wim 0:e59142cded2b 223 */
wim 2:f010b7022803 224 void writeData(DisplayData_t data, int length = PT6312_DISPLAY_MEM);
wim 0:e59142cded2b 225
wim 0:e59142cded2b 226
wim 0:e59142cded2b 227 /** Read keydata block from PT6312
wim 0:e59142cded2b 228 * @param *keydata Ptr to Array of PT6312_KEY_MEM (=3) bytes for keydata
wim 0:e59142cded2b 229 * @return bool keypress True when at least one key was pressed
wim 0:e59142cded2b 230 *
wim 0:e59142cded2b 231 * Note: Due to the hardware configuration the PT6312 key matrix scanner will detect multiple keys pressed at same time,
wim 0:e59142cded2b 232 * but this may result in some spurious keys also being set in keypress data array.
wim 0:e59142cded2b 233 * It may be best to ignore all keys in those situations. That option is implemented in this method depending on #define setting.
wim 0:e59142cded2b 234 */
wim 1:c5e247159aa6 235 bool getKeys(KeyData_t *keydata);
wim 0:e59142cded2b 236
wim 0:e59142cded2b 237
wim 0:e59142cded2b 238 /** Read switches from PT6312
wim 0:e59142cded2b 239 *
wim 0:e59142cded2b 240 * @param none
wim 0:e59142cded2b 241 * @return char for switch data (4 least significant bits)
wim 0:e59142cded2b 242 *
wim 0:e59142cded2b 243 */
wim 1:c5e247159aa6 244 char getSwitches();
wim 0:e59142cded2b 245
wim 0:e59142cded2b 246 /** Set LEDs
wim 0:e59142cded2b 247 *
wim 0:e59142cded2b 248 * @param char leds (4 least significant bits)
wim 0:e59142cded2b 249 * @return none
wim 0:e59142cded2b 250 */
wim 0:e59142cded2b 251 void setLED (char leds = 0);
wim 0:e59142cded2b 252
wim 0:e59142cded2b 253 /** Set Brightness
wim 0:e59142cded2b 254 *
wim 0:e59142cded2b 255 * @param char brightness (3 significant bits, valid range 0..7 (1/16 .. 14/14 dutycycle)
wim 0:e59142cded2b 256 * @return none
wim 0:e59142cded2b 257 */
wim 0:e59142cded2b 258 void setBrightness(char brightness = PT6312_BRT_DEF);
wim 0:e59142cded2b 259
wim 0:e59142cded2b 260 /** Set the Display mode On/off
wim 0:e59142cded2b 261 *
wim 0:e59142cded2b 262 * @param bool display mode
wim 0:e59142cded2b 263 */
wim 0:e59142cded2b 264 void setDisplay(bool on);
wim 0:e59142cded2b 265
wim 0:e59142cded2b 266 private:
wim 0:e59142cded2b 267 SPI _spi;
wim 0:e59142cded2b 268 DigitalOut _cs;
wim 0:e59142cded2b 269 Mode _mode;
wim 0:e59142cded2b 270 char _display;
wim 0:e59142cded2b 271 char _bright;
wim 0:e59142cded2b 272
wim 0:e59142cded2b 273 /** Init the SPI interface and the controller
wim 0:e59142cded2b 274 * @param none
wim 0:e59142cded2b 275 * @return none
wim 0:e59142cded2b 276 */
wim 0:e59142cded2b 277 void _init();
wim 0:e59142cded2b 278
wim 0:e59142cded2b 279 /** Helper to reverse all command or databits. The PT6312 expects LSB first, whereas SPI is MSB first
wim 0:e59142cded2b 280 * @param char data
wim 0:e59142cded2b 281 * @return bitreversed data
wim 0:e59142cded2b 282 */
wim 0:e59142cded2b 283 char _flip(char data);
wim 0:e59142cded2b 284
wim 0:e59142cded2b 285 /** Write command and parameter to PT6312
wim 0:e59142cded2b 286 * @param int cmd Command byte
wim 0:e59142cded2b 287 * &Param int data Parameters for command
wim 0:e59142cded2b 288 * @return none
wim 0:e59142cded2b 289 */
wim 0:e59142cded2b 290 void _writeCmd(int cmd, int data);
wim 0:e59142cded2b 291 };
wim 0:e59142cded2b 292
wim 1:c5e247159aa6 293
wim 5:be9ec73af639 294
wim 5:be9ec73af639 295 #if (DVP630_TEST == 1)
wim 3:156c23d9652a 296 // Derived class for PT6312 used in Philips DVP630 front display unit
wim 3:156c23d9652a 297 //
wim 5:be9ec73af639 298 #include "Font_16Seg.h"
wim 1:c5e247159aa6 299
wim 5:be9ec73af639 300 #define DVP630_NR_GRIDS 7
wim 2:f010b7022803 301 #define DVP630_NR_DIGITS 7
wim 5:be9ec73af639 302 #define DVP630_DIG1_IDX 1
wim 3:156c23d9652a 303 #define DVP630_NR_UDC 8
wim 2:f010b7022803 304
wim 2:f010b7022803 305 /** Constructor for class for driving Princeton PT6312 VFD controller as used in Philips DVP630
wim 1:c5e247159aa6 306 *
wim 3:156c23d9652a 307 * @brief Supports 7 Digits of 15 Segments. Also supports a scanned keyboard of 3 keys, 3 switches and 1 LED.
wim 3:156c23d9652a 308 *
wim 1:c5e247159aa6 309 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 1:c5e247159aa6 310 */
wim 2:f010b7022803 311 class PT6312_DVP630 : public PT6312, public Stream {
wim 1:c5e247159aa6 312 public:
wim 1:c5e247159aa6 313
wim 3:156c23d9652a 314 /** Enums for Icons */
wim 5:be9ec73af639 315 // Grid encoded in 8 MSBs, Icon pattern encoded in 24 LSBs
wim 3:156c23d9652a 316 enum Icon {
wim 5:be9ec73af639 317 COL3 = (5<<24) | S_COL3,
wim 5:be9ec73af639 318 COL5 = (3<<24) | S_COL5
wim 3:156c23d9652a 319 };
wim 3:156c23d9652a 320
wim 3:156c23d9652a 321 typedef char UDCData_t[DVP630_NR_UDC][2];
wim 3:156c23d9652a 322
wim 2:f010b7022803 323 /** Constructor for class for driving Princeton PT6312 VFD controller as used in Philips DVP630
wim 1:c5e247159aa6 324 *
wim 1:c5e247159aa6 325 * @brief Supports 7 Digits of 15 Segments. Also supports a scanned keyboard of 3 keys, 3 switches and 1 LED.
wim 3:156c23d9652a 326 *
wim 1:c5e247159aa6 327 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 1:c5e247159aa6 328 */
wim 2:f010b7022803 329 PT6312_DVP630(PinName mosi, PinName miso, PinName sclk, PinName cs);
wim 1:c5e247159aa6 330
wim 1:c5e247159aa6 331 #if DOXYGEN_ONLY
wim 5:be9ec73af639 332 /** Write a character to the Display
wim 1:c5e247159aa6 333 *
wim 1:c5e247159aa6 334 * @param c The character to write to the display
wim 1:c5e247159aa6 335 */
wim 1:c5e247159aa6 336 int putc(int c);
wim 1:c5e247159aa6 337
wim 5:be9ec73af639 338 /** Write a formatted string to the Display
wim 1:c5e247159aa6 339 *
wim 1:c5e247159aa6 340 * @param format A printf-style format string, followed by the
wim 1:c5e247159aa6 341 * variables to use in formatting the string.
wim 1:c5e247159aa6 342 */
wim 1:c5e247159aa6 343 int printf(const char* format, ...);
wim 1:c5e247159aa6 344 #endif
wim 1:c5e247159aa6 345
wim 1:c5e247159aa6 346 /** Locate cursor to a screen column
wim 1:c5e247159aa6 347 *
wim 1:c5e247159aa6 348 * @param column The horizontal position from the left, indexed from 0
wim 1:c5e247159aa6 349 */
wim 1:c5e247159aa6 350 void locate(int column);
wim 1:c5e247159aa6 351
wim 1:c5e247159aa6 352 /** Clear the screen and locate to 0
wim 5:be9ec73af639 353 * @param bool clrAll Clear Icons also (default = false)
wim 1:c5e247159aa6 354 */
wim 5:be9ec73af639 355 void cls(bool clrAll = false);
wim 1:c5e247159aa6 356
wim 3:156c23d9652a 357 /** Set Icon
wim 3:156c23d9652a 358 *
wim 5:be9ec73af639 359 * @param Icon icon Enums Icon has Digit position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 3:156c23d9652a 360 * @return none
wim 3:156c23d9652a 361 */
wim 3:156c23d9652a 362 void setIcon(Icon icon);
wim 3:156c23d9652a 363
wim 3:156c23d9652a 364 /** Clr Icon
wim 3:156c23d9652a 365 *
wim 5:be9ec73af639 366 * @param Icon icon Enums Icon has Digit position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 5:be9ec73af639 367 * @return none
wim 5:be9ec73af639 368 */
wim 5:be9ec73af639 369 void clrIcon(Icon icon);
wim 5:be9ec73af639 370
wim 5:be9ec73af639 371 /** Set User Defined Characters (UDC)
wim 5:be9ec73af639 372 *
wim 5:be9ec73af639 373 * @param unsigned char udc_idx The Index of the UDC (0..7)
wim 5:be9ec73af639 374 * @param int udc_data The bitpattern for the UDC (16 bits)
wim 5:be9ec73af639 375 */
wim 5:be9ec73af639 376 void setUDC(unsigned char udc_idx, int udc_data);
wim 5:be9ec73af639 377
wim 5:be9ec73af639 378
wim 5:be9ec73af639 379 /** Number of screen columns
wim 5:be9ec73af639 380 *
wim 5:be9ec73af639 381 * @param none
wim 5:be9ec73af639 382 * @return columns
wim 5:be9ec73af639 383 */
wim 5:be9ec73af639 384 int columns();
wim 5:be9ec73af639 385
wim 5:be9ec73af639 386 /** Write databyte to PT6312
wim 5:be9ec73af639 387 * @param int address display memory location to write byte
wim 5:be9ec73af639 388 * @param char data byte written at given address
wim 5:be9ec73af639 389 * @return none
wim 5:be9ec73af639 390 */
wim 5:be9ec73af639 391 void writeData(int address, char data){
wim 5:be9ec73af639 392 PT6312::writeData(address, data);
wim 5:be9ec73af639 393 }
wim 5:be9ec73af639 394
wim 5:be9ec73af639 395 /** Write Display datablock to PT6312
wim 5:be9ec73af639 396 * @param DisplayData_t data Array of PT6312_DISPLAY_MEM (=22) bytes for displaydata (starting at address 0)
wim 5:be9ec73af639 397 * @param length number bytes to write (valid range 0..(DVP630_NR_GRIDS*2) (=14), starting at address 0)
wim 5:be9ec73af639 398 * @return none
wim 5:be9ec73af639 399 */
wim 5:be9ec73af639 400 void writeData(DisplayData_t data, int length = (DVP630_NR_GRIDS*2)) {
wim 5:be9ec73af639 401 PT6312::writeData(data, length);
wim 5:be9ec73af639 402 }
wim 5:be9ec73af639 403
wim 5:be9ec73af639 404 protected:
wim 5:be9ec73af639 405 // Stream implementation functions
wim 5:be9ec73af639 406 virtual int _putc(int value);
wim 5:be9ec73af639 407 virtual int _getc();
wim 5:be9ec73af639 408
wim 5:be9ec73af639 409 private:
wim 5:be9ec73af639 410 int _column; // Current cursor location
wim 5:be9ec73af639 411 int _columns; // Max number of columns
wim 5:be9ec73af639 412
wim 5:be9ec73af639 413 DisplayData_t _displaybuffer; // Local mirror for all chars and icons
wim 5:be9ec73af639 414 UDCData_t _UDC_16S; // User Defined Character pattterns (UDC)
wim 5:be9ec73af639 415 };
wim 5:be9ec73af639 416 #endif
wim 5:be9ec73af639 417
wim 5:be9ec73af639 418 #if (DVD462_TEST == 1)
wim 5:be9ec73af639 419 // Derived class for DVD462 in Cyberhome DVD462 front display unit
wim 5:be9ec73af639 420 // Grids 2-4 each display two 7-Segment digits, Grid 5 displays one 7-Segment digit.
wim 5:be9ec73af639 421 // Several Icons are also available.
wim 5:be9ec73af639 422 //
wim 5:be9ec73af639 423 #include "Font_7Seg.h"
wim 5:be9ec73af639 424
wim 5:be9ec73af639 425 #define DVD462_NR_GRIDS 6
wim 5:be9ec73af639 426 #define DVD462_NR_DIGITS 7
wim 5:be9ec73af639 427 //#define DVD462_DIG1_IDX 1
wim 5:be9ec73af639 428 #define DVD462_NR_UDC 8
wim 5:be9ec73af639 429
wim 5:be9ec73af639 430 /** Constructor for class for driving Princeton PT6312 VFD controller as used in DVD462
wim 5:be9ec73af639 431 *
wim 5:be9ec73af639 432 * @brief Supports 7 Digits of 7 Segments and icons. Also supports a scanned keyboard of 7 keys and 1 LED.
wim 5:be9ec73af639 433 *
wim 5:be9ec73af639 434 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 5:be9ec73af639 435 */
wim 5:be9ec73af639 436 class PT6312_DVD462 : public PT6312, public Stream {
wim 5:be9ec73af639 437 public:
wim 5:be9ec73af639 438
wim 5:be9ec73af639 439 /** Enums for Icons */
wim 5:be9ec73af639 440 // Grid encoded in 8 MSBs, Icon pattern encoded in 24 LSBs
wim 5:be9ec73af639 441 enum Icon {
wim 5:be9ec73af639 442 MP3 = (1<<24) | S7_MP3,
wim 5:be9ec73af639 443 CD = (1<<24) | S7_CD,
wim 5:be9ec73af639 444 V = (1<<24) | S7_V,
wim 5:be9ec73af639 445 S = (1<<24) | S7_S,
wim 5:be9ec73af639 446 DVD = (1<<24) | S7_DVD,
wim 5:be9ec73af639 447
wim 5:be9ec73af639 448 DDD = (2<<24) | S7_DDD,
wim 5:be9ec73af639 449 DTS = (2<<24) | S7_DTS,
wim 5:be9ec73af639 450
wim 5:be9ec73af639 451 COL5 = (3<<24) | S7_COL5,
wim 5:be9ec73af639 452
wim 5:be9ec73af639 453 COL3 = (4<<24) | S7_COL3,
wim 5:be9ec73af639 454
wim 5:be9ec73af639 455 ARW = (5<<24) | S7_ARW,
wim 5:be9ec73af639 456 ALL = (5<<24) | S7_ALL,
wim 5:be9ec73af639 457 PSE = (5<<24) | S7_PSE,
wim 5:be9ec73af639 458 PLY = (5<<24) | S7_PLY,
wim 5:be9ec73af639 459 PBC = (5<<24) | S7_PBC,
wim 5:be9ec73af639 460
wim 5:be9ec73af639 461 P1 = (6<<24) | S7_P1,
wim 5:be9ec73af639 462 P2 = (6<<24) | S7_P2,
wim 5:be9ec73af639 463 P3 = (6<<24) | S7_P3,
wim 5:be9ec73af639 464 P4 = (6<<24) | S7_P4,
wim 5:be9ec73af639 465 P5 = (6<<24) | S7_P5,
wim 5:be9ec73af639 466 P6 = (6<<24) | S7_P6,
wim 5:be9ec73af639 467 P7 = (6<<24) | S7_P7,
wim 5:be9ec73af639 468 P8 = (6<<24) | S7_P8,
wim 5:be9ec73af639 469 P9 = (6<<24) | S7_P9,
wim 5:be9ec73af639 470 P10 = (6<<24) | S7_P10,
wim 5:be9ec73af639 471 P11 = (6<<24) | S7_P11,
wim 5:be9ec73af639 472 P12 = (6<<24) | S7_P12,
wim 5:be9ec73af639 473 P13 = (6<<24) | S7_P13
wim 5:be9ec73af639 474
wim 5:be9ec73af639 475 };
wim 5:be9ec73af639 476
wim 5:be9ec73af639 477 typedef char UDCData_t[DVD462_NR_UDC];
wim 5:be9ec73af639 478
wim 5:be9ec73af639 479 /** Constructor for class for driving Princeton PT6312 VFD controller as used in DVD462
wim 5:be9ec73af639 480 *
wim 5:be9ec73af639 481 * @brief Supports 7 Digits of 7 Segments and Icons. Also supports a scanned keyboard of 7 keys and 1 LED.
wim 5:be9ec73af639 482 *
wim 5:be9ec73af639 483 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 5:be9ec73af639 484 */
wim 5:be9ec73af639 485 PT6312_DVD462(PinName mosi, PinName miso, PinName sclk, PinName cs);
wim 5:be9ec73af639 486
wim 5:be9ec73af639 487 #if DOXYGEN_ONLY
wim 5:be9ec73af639 488 /** Write a character to the Display
wim 5:be9ec73af639 489 *
wim 5:be9ec73af639 490 * @param c The character to write to the display
wim 5:be9ec73af639 491 */
wim 5:be9ec73af639 492 int putc(int c);
wim 5:be9ec73af639 493
wim 5:be9ec73af639 494 /** Write a formatted string to the Display
wim 5:be9ec73af639 495 *
wim 5:be9ec73af639 496 * @param format A printf-style format string, followed by the
wim 5:be9ec73af639 497 * variables to use in formatting the string.
wim 5:be9ec73af639 498 */
wim 5:be9ec73af639 499 int printf(const char* format, ...);
wim 5:be9ec73af639 500 #endif
wim 5:be9ec73af639 501
wim 5:be9ec73af639 502 /** Locate cursor to a screen column
wim 5:be9ec73af639 503 *
wim 5:be9ec73af639 504 * @param column The horizontal position from the left, indexed from 0
wim 5:be9ec73af639 505 */
wim 5:be9ec73af639 506 void locate(int column);
wim 5:be9ec73af639 507
wim 5:be9ec73af639 508 /** Clear the screen and locate to 0
wim 5:be9ec73af639 509 * @param bool clrAll Clear Icons also (default = false)
wim 5:be9ec73af639 510 */
wim 5:be9ec73af639 511 void cls(bool clrAll = false);
wim 5:be9ec73af639 512
wim 5:be9ec73af639 513 /** Set Icon
wim 5:be9ec73af639 514 *
wim 5:be9ec73af639 515 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 5:be9ec73af639 516 * @return none
wim 5:be9ec73af639 517 */
wim 5:be9ec73af639 518 void setIcon(Icon icon);
wim 5:be9ec73af639 519
wim 5:be9ec73af639 520 /** Clr Icon
wim 5:be9ec73af639 521 *
wim 5:be9ec73af639 522 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 3:156c23d9652a 523 * @return none
wim 3:156c23d9652a 524 */
wim 3:156c23d9652a 525 void clrIcon(Icon icon);
wim 3:156c23d9652a 526
wim 3:156c23d9652a 527 /** Set User Defined Characters (UDC)
wim 3:156c23d9652a 528 *
wim 3:156c23d9652a 529 * @param unsigned char udc_idx The Index of the UDC (0..7)
wim 3:156c23d9652a 530 * @param int udc_data The bitpattern for the UDC (16 bits)
wim 3:156c23d9652a 531 */
wim 3:156c23d9652a 532 void setUDC(unsigned char udc_idx, int udc_data);
wim 3:156c23d9652a 533
wim 3:156c23d9652a 534
wim 1:c5e247159aa6 535 /** Number of screen columns
wim 1:c5e247159aa6 536 *
wim 1:c5e247159aa6 537 * @param none
wim 1:c5e247159aa6 538 * @return columns
wim 1:c5e247159aa6 539 */
wim 1:c5e247159aa6 540 int columns();
wim 1:c5e247159aa6 541
wim 5:be9ec73af639 542 /** Write databyte to PT6312
wim 5:be9ec73af639 543 * @param int address display memory location to write byte
wim 5:be9ec73af639 544 * @param char data byte written at given address
wim 5:be9ec73af639 545 * @return none
wim 5:be9ec73af639 546 */
wim 5:be9ec73af639 547 void writeData(int address, char data){
wim 5:be9ec73af639 548 PT6312::writeData(address, data);
wim 5:be9ec73af639 549 }
wim 5:be9ec73af639 550
wim 3:156c23d9652a 551 /** Write Display datablock to PT6312
wim 3:156c23d9652a 552 * @param DisplayData_t data Array of PT6312_DISPLAY_MEM (=22) bytes for displaydata (starting at address 0)
wim 5:be9ec73af639 553 * @param length number bytes to write (valid range 0..(DVD462_NR_GRIDS*2) (=14), starting at address 0)
wim 3:156c23d9652a 554 * @return none
wim 3:156c23d9652a 555 */
wim 5:be9ec73af639 556 void writeData(DisplayData_t data, int length = (DVD462_NR_GRIDS*2)) {
wim 3:156c23d9652a 557 PT6312::writeData(data, length);
wim 3:156c23d9652a 558 }
wim 2:f010b7022803 559
wim 1:c5e247159aa6 560 protected:
wim 1:c5e247159aa6 561 // Stream implementation functions
wim 1:c5e247159aa6 562 virtual int _putc(int value);
wim 1:c5e247159aa6 563 virtual int _getc();
wim 1:c5e247159aa6 564
wim 1:c5e247159aa6 565 private:
wim 5:be9ec73af639 566 int _column; // Current cursor location
wim 5:be9ec73af639 567 int _columns; // Max number of columns
wim 5:be9ec73af639 568
wim 5:be9ec73af639 569 DisplayData_t _displaybuffer; // Local mirror for all chars and icons
wim 5:be9ec73af639 570 UDCData_t _UDC_7S; // User Defined Character pattterns (UDC)
wim 5:be9ec73af639 571 };
wim 5:be9ec73af639 572 #endif
wim 5:be9ec73af639 573
wim 5:be9ec73af639 574 #if (C2233_TEST == 1)
wim 5:be9ec73af639 575 // Derived class for C2233 front display unit
wim 5:be9ec73af639 576 // Grids 2-4 each display two 7-Segment digits, Grid 5 displays one 7-Segment digit.
wim 5:be9ec73af639 577 // Several Icons are also available.
wim 5:be9ec73af639 578 //
wim 5:be9ec73af639 579 #include "Font_7Seg.h"
wim 5:be9ec73af639 580
wim 5:be9ec73af639 581 #define C2233_NR_GRIDS 6
wim 5:be9ec73af639 582 #define C2233_NR_DIGITS 7
wim 5:be9ec73af639 583 //#define C2233_DIG1_IDX 1
wim 5:be9ec73af639 584 #define C2233_NR_UDC 8
wim 5:be9ec73af639 585
wim 5:be9ec73af639 586 /** Constructor for class for driving Princeton PT6312 VFD controller as used in C2233
wim 5:be9ec73af639 587 *
wim 5:be9ec73af639 588 * @brief Supports 7 Digits of 7 Segments and icons. Also supports a scanned keyboard of 7 keys.
wim 5:be9ec73af639 589 *
wim 5:be9ec73af639 590 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 5:be9ec73af639 591 */
wim 5:be9ec73af639 592 class PT6312_C2233 : public PT6312, public Stream {
wim 5:be9ec73af639 593 public:
wim 5:be9ec73af639 594
wim 5:be9ec73af639 595 /** Enums for Icons */
wim 5:be9ec73af639 596 // Grid encoded in 8 MSBs, Icon pattern encoded in 24 LSBs
wim 5:be9ec73af639 597 enum Icon {
wim 5:be9ec73af639 598 MP3 = (2<<24) | S7_MP3,
wim 5:be9ec73af639 599 PBC = (2<<24) | S7_PBC,
wim 5:be9ec73af639 600
wim 5:be9ec73af639 601 COL5 = (3<<24) | S7_COL5,
wim 5:be9ec73af639 602 CAM = (3<<24) | S7_CAM,
wim 5:be9ec73af639 603
wim 5:be9ec73af639 604 COL3 = (4<<24) | S7_COL3,
wim 5:be9ec73af639 605 DDD = (4<<24) | S7_DDD,
wim 2:f010b7022803 606
wim 5:be9ec73af639 607 ARW = (5<<24) | S7_ARW,
wim 5:be9ec73af639 608 ALL = (5<<24) | S7_ALL,
wim 5:be9ec73af639 609 PSE = (5<<24) | S7_PSE,
wim 5:be9ec73af639 610 PLY = (5<<24) | S7_PLY,
wim 5:be9ec73af639 611 CD = (5<<24) | S7_CD,
wim 5:be9ec73af639 612 V = (5<<24) | S7_V,
wim 5:be9ec73af639 613 S = (5<<24) | S7_S,
wim 5:be9ec73af639 614 DTS = (5<<24) | S7_DTS,
wim 5:be9ec73af639 615
wim 5:be9ec73af639 616 P1 = (6<<24) | S7_P1,
wim 5:be9ec73af639 617 P2 = (6<<24) | S7_P2,
wim 5:be9ec73af639 618 P3 = (6<<24) | S7_P3,
wim 5:be9ec73af639 619 P4 = (6<<24) | S7_P4,
wim 5:be9ec73af639 620 P5 = (6<<24) | S7_P5,
wim 5:be9ec73af639 621 P6 = (6<<24) | S7_P6,
wim 5:be9ec73af639 622 P7 = (6<<24) | S7_P7,
wim 5:be9ec73af639 623 P8 = (6<<24) | S7_P8,
wim 5:be9ec73af639 624 P9 = (6<<24) | S7_P9,
wim 5:be9ec73af639 625 P10 = (6<<24) | S7_P10,
wim 5:be9ec73af639 626 P11 = (6<<24) | S7_P11,
wim 5:be9ec73af639 627 P12 = (6<<24) | S7_P12,
wim 5:be9ec73af639 628 P13 = (6<<24) | S7_P13,
wim 5:be9ec73af639 629
wim 5:be9ec73af639 630 DVD = (6<<24) | S7_DVD
wim 5:be9ec73af639 631 };
wim 5:be9ec73af639 632
wim 5:be9ec73af639 633 typedef char UDCData_t[C2233_NR_UDC];
wim 5:be9ec73af639 634
wim 5:be9ec73af639 635 /** Constructor for class for driving Princeton PT6312 VFD controller as used in C2233
wim 5:be9ec73af639 636 *
wim 5:be9ec73af639 637 * @brief Supports 7 Digits of 7 Segments and Icons. Also supports a scanned keyboard of 7 keys.
wim 5:be9ec73af639 638 *
wim 5:be9ec73af639 639 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 5:be9ec73af639 640 */
wim 5:be9ec73af639 641 PT6312_C2233(PinName mosi, PinName miso, PinName sclk, PinName cs);
wim 5:be9ec73af639 642
wim 5:be9ec73af639 643 #if DOXYGEN_ONLY
wim 5:be9ec73af639 644 /** Write a character to the Display
wim 5:be9ec73af639 645 *
wim 5:be9ec73af639 646 * @param c The character to write to the display
wim 5:be9ec73af639 647 */
wim 5:be9ec73af639 648 int putc(int c);
wim 5:be9ec73af639 649
wim 5:be9ec73af639 650 /** Write a formatted string to the Display
wim 5:be9ec73af639 651 *
wim 5:be9ec73af639 652 * @param format A printf-style format string, followed by the
wim 5:be9ec73af639 653 * variables to use in formatting the string.
wim 5:be9ec73af639 654 */
wim 5:be9ec73af639 655 int printf(const char* format, ...);
wim 5:be9ec73af639 656 #endif
wim 5:be9ec73af639 657
wim 5:be9ec73af639 658 /** Locate cursor to a screen column
wim 5:be9ec73af639 659 *
wim 5:be9ec73af639 660 * @param column The horizontal position from the left, indexed from 0
wim 5:be9ec73af639 661 */
wim 5:be9ec73af639 662 void locate(int column);
wim 5:be9ec73af639 663
wim 5:be9ec73af639 664 /** Clear the screen and locate to 0
wim 5:be9ec73af639 665 * @param bool clrAll Clear Icons also (default = false)
wim 5:be9ec73af639 666 */
wim 5:be9ec73af639 667 void cls(bool clrAll = false);
wim 5:be9ec73af639 668
wim 5:be9ec73af639 669 /** Set Icon
wim 5:be9ec73af639 670 *
wim 5:be9ec73af639 671 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 5:be9ec73af639 672 * @return none
wim 5:be9ec73af639 673 */
wim 5:be9ec73af639 674 void setIcon(Icon icon);
wim 5:be9ec73af639 675
wim 5:be9ec73af639 676 /** Clr Icon
wim 5:be9ec73af639 677 *
wim 5:be9ec73af639 678 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 5:be9ec73af639 679 * @return none
wim 5:be9ec73af639 680 */
wim 5:be9ec73af639 681 void clrIcon(Icon icon);
wim 5:be9ec73af639 682
wim 5:be9ec73af639 683 /** Set User Defined Characters (UDC)
wim 5:be9ec73af639 684 *
wim 5:be9ec73af639 685 * @param unsigned char udc_idx The Index of the UDC (0..7)
wim 5:be9ec73af639 686 * @param int udc_data The bitpattern for the UDC (16 bits)
wim 5:be9ec73af639 687 */
wim 5:be9ec73af639 688 void setUDC(unsigned char udc_idx, int udc_data);
wim 5:be9ec73af639 689
wim 5:be9ec73af639 690
wim 5:be9ec73af639 691 /** Number of screen columns
wim 5:be9ec73af639 692 *
wim 5:be9ec73af639 693 * @param none
wim 5:be9ec73af639 694 * @return columns
wim 5:be9ec73af639 695 */
wim 5:be9ec73af639 696 int columns();
wim 5:be9ec73af639 697
wim 5:be9ec73af639 698 /** Write databyte to PT6312
wim 5:be9ec73af639 699 * @param int address display memory location to write byte
wim 5:be9ec73af639 700 * @param char data byte written at given address
wim 5:be9ec73af639 701 * @return none
wim 5:be9ec73af639 702 */
wim 5:be9ec73af639 703 void writeData(int address, char data){
wim 5:be9ec73af639 704 PT6312::writeData(address, data);
wim 5:be9ec73af639 705 }
wim 5:be9ec73af639 706
wim 5:be9ec73af639 707 /** Write Display datablock to PT6312
wim 5:be9ec73af639 708 * @param DisplayData_t data Array of PT6312_DISPLAY_MEM (=22) bytes for displaydata (starting at address 0)
wim 5:be9ec73af639 709 * @param length number bytes to write (valid range 0..(DVD462_NR_GRIDS*2) (=14), starting at address 0)
wim 5:be9ec73af639 710 * @return none
wim 5:be9ec73af639 711 */
wim 5:be9ec73af639 712 void writeData(DisplayData_t data, int length = (C2233_NR_GRIDS*2)) {
wim 5:be9ec73af639 713 PT6312::writeData(data, length);
wim 5:be9ec73af639 714 }
wim 5:be9ec73af639 715
wim 5:be9ec73af639 716 protected:
wim 5:be9ec73af639 717 // Stream implementation functions
wim 5:be9ec73af639 718 virtual int _putc(int value);
wim 5:be9ec73af639 719 virtual int _getc();
wim 5:be9ec73af639 720
wim 5:be9ec73af639 721 private:
wim 5:be9ec73af639 722 int _column; // Current cursor location
wim 5:be9ec73af639 723 int _columns; // Max number of columns
wim 5:be9ec73af639 724
wim 5:be9ec73af639 725 DisplayData_t _displaybuffer; // Local mirror for all chars and icons
wim 5:be9ec73af639 726 UDCData_t _UDC_7S; // User Defined Character pattterns (UDC)
wim 1:c5e247159aa6 727 };
wim 5:be9ec73af639 728 #endif
wim 1:c5e247159aa6 729
wim 5:be9ec73af639 730 #endif