Library for TM1650 LED controller (32 LEDs max, 28 keys max)

Dependents:   mbed_TM1650

See here for more info.

Committer:
wim
Date:
Tue Oct 10 18:38:46 2017 +0000
Revision:
0:4430a1559b4f
Library for TM1650 LED controller (32 LEDs max, 27 keys max)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:4430a1559b4f 1 /* mbed TM1650 Library, for TM1650 LED controller
wim 0:4430a1559b4f 2 * Copyright (c) 2017, v01: WH, Initial version
wim 0:4430a1559b4f 3 *
wim 0:4430a1559b4f 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:4430a1559b4f 5 * of this software and associated documentation files (the "Software"), to deal
wim 0:4430a1559b4f 6 * in the Software without restriction, inclumosig without limitation the rights
wim 0:4430a1559b4f 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:4430a1559b4f 8 * copies of the Software, and to permit persons to whom the Software is
wim 0:4430a1559b4f 9 * furnished to do so, subject to the following conditions:
wim 0:4430a1559b4f 10 *
wim 0:4430a1559b4f 11 * The above copyright notice and this permission notice shall be included in
wim 0:4430a1559b4f 12 * all copies or substantial portions of the Software.
wim 0:4430a1559b4f 13 *
wim 0:4430a1559b4f 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:4430a1559b4f 15 * IMPLIED, INCLUmosiG BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:4430a1559b4f 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:4430a1559b4f 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:4430a1559b4f 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:4430a1559b4f 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:4430a1559b4f 20 * THE SOFTWARE.
wim 0:4430a1559b4f 21 */
wim 0:4430a1559b4f 22
wim 0:4430a1559b4f 23 #ifndef TM1650_H
wim 0:4430a1559b4f 24 #define TM1650_H
wim 0:4430a1559b4f 25
wim 0:4430a1559b4f 26 // Select one of the testboards for TM1650 LED controller
wim 0:4430a1559b4f 27 #include "TM1650_Config.h"
wim 0:4430a1559b4f 28
wim 0:4430a1559b4f 29 /** An interface for driving TM1650 LED controller
wim 0:4430a1559b4f 30 *
wim 0:4430a1559b4f 31 * @code
wim 0:4430a1559b4f 32 * #include "mbed.h"
wim 0:4430a1559b4f 33 * #include "TM1650.h"
wim 0:4430a1559b4f 34 *
wim 0:4430a1559b4f 35 * Serial pc(USBTX, USBRX);
wim 0:4430a1559b4f 36 *
wim 0:4430a1559b4f 37 * //DisplayData_t size is 4 bytes (4 grids @ 8 segments)
wim 0:4430a1559b4f 38 * TM1650::DisplayData_t all_str = {0xFF, 0xFF, 0xFF, 0xFF};
wim 0:4430a1559b4f 39 *
wim 0:4430a1559b4f 40 * // KeyData_t size is 1 bytes
wim 0:4430a1559b4f 41 * TM1650::KeyData_t keydata;
wim 0:4430a1559b4f 42 *
wim 0:4430a1559b4f 43 * // TM1650 declaration, Select the desired type in TM1650_Config.h
wim 0:4430a1559b4f 44 * TM1650_MEIBAI MEIBAI(p6, p7); //LPC1768
wim 0:4430a1559b4f 45 * //TM1650_MEIBAI MEIBAI(D9, D10); //F401
wim 0:4430a1559b4f 46 *
wim 0:4430a1559b4f 47 * int main() {
wim 0:4430a1559b4f 48 * MEIBAI.cls();
wim 0:4430a1559b4f 49 * MEIBAI.writeData(all_str);
wim 0:4430a1559b4f 50 * wait(1);
wim 0:4430a1559b4f 51 * MEIBAI.setBrightness(TM1650_BRT0);
wim 0:4430a1559b4f 52 * wait(1);
wim 0:4430a1559b4f 53 * MEIBAI.setBrightness(TM1650_BRT3);
wim 0:4430a1559b4f 54 *
wim 0:4430a1559b4f 55 * while (1) {
wim 0:4430a1559b4f 56 * MEIBAI.cls();
wim 0:4430a1559b4f 57 * wait(0.5);
wim 0:4430a1559b4f 58 * MEIBAI.writeData(all_str);
wim 0:4430a1559b4f 59 * wait(1.0);
wim 0:4430a1559b4f 60 * MEIBAI.cls();
wim 0:4430a1559b4f 61 * MEIBAI.printf(" HI ");
wim 0:4430a1559b4f 62 * wait(1.0);
wim 0:4430a1559b4f 63 *
wim 0:4430a1559b4f 64 * // Check and read keydata
wim 0:4430a1559b4f 65 * if (MEIBAI.getKeys(&keydata)) {
wim 0:4430a1559b4f 66 * pc.printf("Keydata = 0x%02x\r\n", keydata);
wim 0:4430a1559b4f 67 *
wim 0:4430a1559b4f 68 * if (keydata == TM1650_SW1_BIT) { //sw1
wim 0:4430a1559b4f 69 * MEIBAI.cls();
wim 0:4430a1559b4f 70 * MEIBAI.printf("--01");
wim 0:4430a1559b4f 71 * }
wim 0:4430a1559b4f 72 * } // Check keydata
wim 0:4430a1559b4f 73 * } // while
wim 0:4430a1559b4f 74 * }
wim 0:4430a1559b4f 75 * @endcode
wim 0:4430a1559b4f 76 */
wim 0:4430a1559b4f 77
wim 0:4430a1559b4f 78
wim 0:4430a1559b4f 79 //TM1650 Display data
wim 0:4430a1559b4f 80 #define TM1650_MAX_NR_GRIDS 4
wim 0:4430a1559b4f 81 #define TM1650_BYTES_PER_GRID 1
wim 0:4430a1559b4f 82
wim 0:4430a1559b4f 83 //Significant bits Keymatrix data
wim 0:4430a1559b4f 84 //#define TM1638_KEY_MSK 0xFF
wim 0:4430a1559b4f 85
wim 0:4430a1559b4f 86 //Memory size in bytes for Display and Keymatrix
wim 0:4430a1559b4f 87 #define TM1650_DISPLAY_MEM (TM1650_MAX_NR_GRIDS * TM1650_BYTES_PER_GRID)
wim 0:4430a1559b4f 88 #define TM1650_KEY_MEM 1
wim 0:4430a1559b4f 89
wim 0:4430a1559b4f 90 //Data write command
wim 0:4430a1559b4f 91 //Valid data addresses are 0x68, 0x6A, 0x6C, 0x6E
wim 0:4430a1559b4f 92 #define TM1650_DATA_WR_CMD 0x68
wim 0:4430a1559b4f 93 #define TM1650_ADDR_MSK 0x03 //0..3
wim 0:4430a1559b4f 94
wim 0:4430a1559b4f 95 //Display control command
wim 0:4430a1559b4f 96 #define TM1650_DSP_CTRL_CMD 0x48
wim 0:4430a1559b4f 97
wim 0:4430a1559b4f 98 #define TM1650_BRT_MSK 0x70
wim 0:4430a1559b4f 99 //#define TM1650_BRT_SHFT 4
wim 0:4430a1559b4f 100 #define TM1650_BRT0 0x10 //Pulsewidth 1/16
wim 0:4430a1559b4f 101 #define TM1650_BRT1 0x20
wim 0:4430a1559b4f 102 #define TM1650_BRT2 0x30
wim 0:4430a1559b4f 103 #define TM1650_BRT3 0x40
wim 0:4430a1559b4f 104 #define TM1650_BRT4 0x50
wim 0:4430a1559b4f 105 #define TM1650_BRT5 0x60
wim 0:4430a1559b4f 106 #define TM1650_BRT6 0x70
wim 0:4430a1559b4f 107 #define TM1650_BRT7 0x00 //Pulsewidth 15/16
wim 0:4430a1559b4f 108
wim 0:4430a1559b4f 109 #define TM1650_BRT_DEF TM1650_BRT3
wim 0:4430a1559b4f 110
wim 0:4430a1559b4f 111 #define TM1650_DSP_8S 0x00
wim 0:4430a1559b4f 112 #define TM1650_DSP_7S 0x08
wim 0:4430a1559b4f 113
wim 0:4430a1559b4f 114 #define TM1650_DSP_OFF 0x00
wim 0:4430a1559b4f 115 #define TM1650_DSP_ON 0x01
wim 0:4430a1559b4f 116
wim 0:4430a1559b4f 117
wim 0:4430a1559b4f 118 //Keydata read command
wim 0:4430a1559b4f 119 #define TM1650_KEY_RD_CMD 0x49
wim 0:4430a1559b4f 120
wim 0:4430a1559b4f 121 //Access to 28 Switches
wim 0:4430a1559b4f 122 //d7 d6 d5 d4 d3 d2 d1 d0
wim 0:4430a1559b4f 123 // . 1 . . . 1 . . = Valid Key
wim 0:4430a1559b4f 124 #define TM1650_SW_MSK 0x44
wim 0:4430a1559b4f 125
wim 0:4430a1559b4f 126 //A -> Dig1 .. Dig4
wim 0:4430a1559b4f 127 #define TM1650_SW1_BIT 0x44
wim 0:4430a1559b4f 128 #define TM1650_SW2_BIT 0x45
wim 0:4430a1559b4f 129 #define TM1650_SW3_BIT 0x46
wim 0:4430a1559b4f 130 #define TM1650_SW4_BIT 0x47
wim 0:4430a1559b4f 131 //B -> Dig1 .. Dig4
wim 0:4430a1559b4f 132 #define TM1650_SW5_BIT 0x4C
wim 0:4430a1559b4f 133 #define TM1650_SW6_BIT 0x4D
wim 0:4430a1559b4f 134 #define TM1650_SW7_BIT 0x4E
wim 0:4430a1559b4f 135 #define TM1650_SW8_BIT 0x4F
wim 0:4430a1559b4f 136 //C -> Dig1 .. Dig4
wim 0:4430a1559b4f 137 #define TM1650_SW9_BIT 0x54
wim 0:4430a1559b4f 138 #define TM1650_SW10_BIT 0x55
wim 0:4430a1559b4f 139 #define TM1650_SW11_BIT 0x56
wim 0:4430a1559b4f 140 #define TM1650_SW12_BIT 0x57
wim 0:4430a1559b4f 141 //D -> Dig1 .. Dig4
wim 0:4430a1559b4f 142 #define TM1650_SW13_BIT 0x5C
wim 0:4430a1559b4f 143 #define TM1650_SW14_BIT 0x5D
wim 0:4430a1559b4f 144 #define TM1650_SW15_BIT 0x5E
wim 0:4430a1559b4f 145 #define TM1650_SW16_BIT 0x5F
wim 0:4430a1559b4f 146 //E -> Dig1 .. Dig4
wim 0:4430a1559b4f 147 #define TM1650_SW17_BIT 0x64
wim 0:4430a1559b4f 148 #define TM1650_SW18_BIT 0x65
wim 0:4430a1559b4f 149 #define TM1650_SW19_BIT 0x66
wim 0:4430a1559b4f 150 #define TM1650_SW20_BIT 0x67
wim 0:4430a1559b4f 151 //F -> Dig1 .. Dig4
wim 0:4430a1559b4f 152 #define TM1650_SW21_BIT 0x6C
wim 0:4430a1559b4f 153 #define TM1650_SW22_BIT 0x6D
wim 0:4430a1559b4f 154 #define TM1650_SW23_BIT 0x6E
wim 0:4430a1559b4f 155 #define TM1650_SW24_BIT 0x6F
wim 0:4430a1559b4f 156 //G -> Dig1 .. Dig4
wim 0:4430a1559b4f 157 #define TM1650_SW25_BIT 0x74
wim 0:4430a1559b4f 158 #define TM1650_SW26_BIT 0x75
wim 0:4430a1559b4f 159 #define TM1650_SW27_BIT 0x76
wim 0:4430a1559b4f 160 #define TM1650_SW28_BIT 0x77
wim 0:4430a1559b4f 161
wim 0:4430a1559b4f 162
wim 0:4430a1559b4f 163
wim 0:4430a1559b4f 164 /** A class for driving TM1650 LED controller
wim 0:4430a1559b4f 165 *
wim 0:4430a1559b4f 166 * @brief Supports 4 Grids @ 8 Segments and upto 28 Keys.
wim 0:4430a1559b4f 167 * Serial bus interface device.
wim 0:4430a1559b4f 168 */
wim 0:4430a1559b4f 169 class TM1650 {
wim 0:4430a1559b4f 170 public:
wim 0:4430a1559b4f 171
wim 0:4430a1559b4f 172 /** Datatype for displaydata */
wim 0:4430a1559b4f 173 typedef char DisplayData_t[TM1650_DISPLAY_MEM];
wim 0:4430a1559b4f 174
wim 0:4430a1559b4f 175 /** Datatypes for keymatrix data */
wim 0:4430a1559b4f 176 typedef char KeyData_t;
wim 0:4430a1559b4f 177
wim 0:4430a1559b4f 178 /** Constructor for class for driving TM1650 LED controller
wim 0:4430a1559b4f 179 *
wim 0:4430a1559b4f 180 * @brief Supports 4 Grids @ 8 segments and 28 Keys.
wim 0:4430a1559b4f 181 * Serial bus interface device.
wim 0:4430a1559b4f 182 *
wim 0:4430a1559b4f 183 * @param PinName dio Serial bus DIO pin
wim 0:4430a1559b4f 184 * @param PinName sck Serial bus CLK pin
wim 0:4430a1559b4f 185 */
wim 0:4430a1559b4f 186 TM1650(PinName dio, PinName clk);
wim 0:4430a1559b4f 187
wim 0:4430a1559b4f 188
wim 0:4430a1559b4f 189 /** Clear the screen and locate to 0
wim 0:4430a1559b4f 190 */
wim 0:4430a1559b4f 191 void cls();
wim 0:4430a1559b4f 192
wim 0:4430a1559b4f 193 /** Write databyte to TM1650
wim 0:4430a1559b4f 194 * @param char data byte written at given address
wim 0:4430a1559b4f 195 * @param int address display memory location to write byte
wim 0:4430a1559b4f 196 * @return none
wim 0:4430a1559b4f 197 */
wim 0:4430a1559b4f 198 void writeData(char data, int address);
wim 0:4430a1559b4f 199
wim 0:4430a1559b4f 200 /** Write Display datablock to TM1650
wim 0:4430a1559b4f 201 * @param DisplayData_t data Array of TM1650_DISPLAY_MEM (=4) bytes for displaydata
wim 0:4430a1559b4f 202 * @param length number bytes to write (valid range 0..(TM1650_MAX_NR_GRIDS * TM1650_BYTES_PER_GRID) (=4), when starting at address 0)
wim 0:4430a1559b4f 203 * @param int address display memory location to write bytes (default = 0)
wim 0:4430a1559b4f 204 * @return none
wim 0:4430a1559b4f 205 */
wim 0:4430a1559b4f 206 void writeData(DisplayData_t data, int length = (TM1650_MAX_NR_GRIDS * TM1650_BYTES_PER_GRID), int address = 0);
wim 0:4430a1559b4f 207
wim 0:4430a1559b4f 208 /** Read keydata block from TM1650
wim 0:4430a1559b4f 209 *
wim 0:4430a1559b4f 210 * @param *keydata Ptr to bytes for keydata
wim 0:4430a1559b4f 211 * @return bool keypress True when at least one key was pressed
wim 0:4430a1559b4f 212 */
wim 0:4430a1559b4f 213 bool getKeys(KeyData_t *keydata);
wim 0:4430a1559b4f 214
wim 0:4430a1559b4f 215 /** Set Brightness
wim 0:4430a1559b4f 216 *
wim 0:4430a1559b4f 217 * @param char brightness (3 significant bits, valid range 0..7 (1/16 .. 14/16 dutycycle)
wim 0:4430a1559b4f 218 * @return none
wim 0:4430a1559b4f 219 */
wim 0:4430a1559b4f 220 void setBrightness(char brightness = TM1650_BRT_DEF);
wim 0:4430a1559b4f 221
wim 0:4430a1559b4f 222 /** Set the Display mode On/off
wim 0:4430a1559b4f 223 *
wim 0:4430a1559b4f 224 * @param bool display mode
wim 0:4430a1559b4f 225 * @return none
wim 0:4430a1559b4f 226 */
wim 0:4430a1559b4f 227 void setDisplay(bool on);
wim 0:4430a1559b4f 228
wim 0:4430a1559b4f 229 private:
wim 0:4430a1559b4f 230 DigitalInOut _dio;
wim 0:4430a1559b4f 231 DigitalOut _clk;
wim 0:4430a1559b4f 232
wim 0:4430a1559b4f 233 char _bright;
wim 0:4430a1559b4f 234 char _segment;
wim 0:4430a1559b4f 235 char _display;
wim 0:4430a1559b4f 236
wim 0:4430a1559b4f 237 /** Init the Serial interface and the controller
wim 0:4430a1559b4f 238 * @param none
wim 0:4430a1559b4f 239 * @return none
wim 0:4430a1559b4f 240 */
wim 0:4430a1559b4f 241 void _init();
wim 0:4430a1559b4f 242
wim 0:4430a1559b4f 243 /** Generate Start condition for TM1650
wim 0:4430a1559b4f 244 * @param none
wim 0:4430a1559b4f 245 * @return none
wim 0:4430a1559b4f 246 */
wim 0:4430a1559b4f 247 void _start();
wim 0:4430a1559b4f 248
wim 0:4430a1559b4f 249 /** Generate Stop condition for TM1650
wim 0:4430a1559b4f 250 * @param none
wim 0:4430a1559b4f 251 * @return none
wim 0:4430a1559b4f 252 */
wim 0:4430a1559b4f 253 void _stop();
wim 0:4430a1559b4f 254
wim 0:4430a1559b4f 255 /** Send byte to TM1650
wim 0:4430a1559b4f 256 * @param int data
wim 0:4430a1559b4f 257 * @return none
wim 0:4430a1559b4f 258 */
wim 0:4430a1559b4f 259 void _write(int data);
wim 0:4430a1559b4f 260
wim 0:4430a1559b4f 261 /** Read byte from TM1650
wim 0:4430a1559b4f 262 * @param none
wim 0:4430a1559b4f 263 * @return read byte
wim 0:4430a1559b4f 264 */
wim 0:4430a1559b4f 265 char _read();
wim 0:4430a1559b4f 266
wim 0:4430a1559b4f 267 /** Write command and parameter to TM1650
wim 0:4430a1559b4f 268 * @param int cmd Command byte
wim 0:4430a1559b4f 269 * @Param int data Parameters for command
wim 0:4430a1559b4f 270 * @return none
wim 0:4430a1559b4f 271 */
wim 0:4430a1559b4f 272 void _writeCmd(int cmd, int data);
wim 0:4430a1559b4f 273 };
wim 0:4430a1559b4f 274
wim 0:4430a1559b4f 275 #if (MEIBAI_TEST == 1)
wim 0:4430a1559b4f 276 // Derived class for TM1650 used in MEIBAI display unit with 4 Digits and 3 keys
wim 0:4430a1559b4f 277 //
wim 0:4430a1559b4f 278
wim 0:4430a1559b4f 279 #include "Font_7Seg.h"
wim 0:4430a1559b4f 280
wim 0:4430a1559b4f 281 #define MEIBAI_NR_GRIDS 4
wim 0:4430a1559b4f 282 #define MEIBAI_NR_DIGITS 4
wim 0:4430a1559b4f 283 #define MEIBAI_NR_UDC 8
wim 0:4430a1559b4f 284
wim 0:4430a1559b4f 285
wim 0:4430a1559b4f 286 /** Constructor for class for driving TM1650 controller as used in MEIBAI
wim 0:4430a1559b4f 287 *
wim 0:4430a1559b4f 288 * @brief Supports 4 Digits of 7 Segments + DP.
wim 0:4430a1559b4f 289 * Also Supports 3 Keys. Serial bus interface device.
wim 0:4430a1559b4f 290 *
wim 0:4430a1559b4f 291 * @param PinName dio Serial bus DIO pin
wim 0:4430a1559b4f 292 * @param PinName sck Serial bus CLK pin
wim 0:4430a1559b4f 293 */
wim 0:4430a1559b4f 294 class TM1650_MEIBAI : public TM1650, public Stream {
wim 0:4430a1559b4f 295 public:
wim 0:4430a1559b4f 296
wim 0:4430a1559b4f 297 /** Enums for Icons */
wim 0:4430a1559b4f 298 // Grid encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 0:4430a1559b4f 299 enum Icon {
wim 0:4430a1559b4f 300 DP1 = ( 1<<24) | S7_DP1, /**< Digit 1 */
wim 0:4430a1559b4f 301 DP2 = ( 2<<24) | S7_DP2, /**< Digit 2 */
wim 0:4430a1559b4f 302 DP3 = ( 3<<24) | S7_DP3, /**< Digit 3 */
wim 0:4430a1559b4f 303 DP4 = ( 4<<24) | S7_DP4, /**< Digit 4 */
wim 0:4430a1559b4f 304 };
wim 0:4430a1559b4f 305
wim 0:4430a1559b4f 306 typedef char UDCData_t[MEIBAI_NR_UDC];
wim 0:4430a1559b4f 307
wim 0:4430a1559b4f 308
wim 0:4430a1559b4f 309 /** Constructor for class for driving TM1650 LED controller
wim 0:4430a1559b4f 310 *
wim 0:4430a1559b4f 311 * @brief Supports 4 Digits of 7 Segments + DP.
wim 0:4430a1559b4f 312 * Also Supports 3 Keys. Serial bus interface device.
wim 0:4430a1559b4f 313 *
wim 0:4430a1559b4f 314 * @param PinName dio Serial bus DIO pin
wim 0:4430a1559b4f 315 * @param PinName sck Serial bus CLK pin
wim 0:4430a1559b4f 316 */
wim 0:4430a1559b4f 317 TM1650_MEIBAI(PinName dio, PinName clk);
wim 0:4430a1559b4f 318
wim 0:4430a1559b4f 319
wim 0:4430a1559b4f 320 #if DOXYGEN_ONLY
wim 0:4430a1559b4f 321 /** Write a character to the Display
wim 0:4430a1559b4f 322 *
wim 0:4430a1559b4f 323 * @param c The character to write to the display
wim 0:4430a1559b4f 324 * @return c
wim 0:4430a1559b4f 325 */
wim 0:4430a1559b4f 326 int putc(int c);
wim 0:4430a1559b4f 327
wim 0:4430a1559b4f 328 /** Write a formatted string to the Display
wim 0:4430a1559b4f 329 *
wim 0:4430a1559b4f 330 * @param format A printf-style format string, followed by the
wim 0:4430a1559b4f 331 * variables to use in formatting the string.
wim 0:4430a1559b4f 332 * @return chars written
wim 0:4430a1559b4f 333 */
wim 0:4430a1559b4f 334 int printf(const char* format, ...);
wim 0:4430a1559b4f 335 #endif
wim 0:4430a1559b4f 336
wim 0:4430a1559b4f 337 /** Locate cursor to a screen column
wim 0:4430a1559b4f 338 *
wim 0:4430a1559b4f 339 * @param column The horizontal position from the left, indexed from 0
wim 0:4430a1559b4f 340 * @return none
wim 0:4430a1559b4f 341 */
wim 0:4430a1559b4f 342 void locate(int column);
wim 0:4430a1559b4f 343
wim 0:4430a1559b4f 344 /** Clear the screen and locate to 0
wim 0:4430a1559b4f 345 * @param bool clrAll Clear Icons also (default = false)
wim 0:4430a1559b4f 346 * @return none
wim 0:4430a1559b4f 347 */
wim 0:4430a1559b4f 348 void cls(bool clrAll = false);
wim 0:4430a1559b4f 349
wim 0:4430a1559b4f 350 /** Set Icon
wim 0:4430a1559b4f 351 *
wim 0:4430a1559b4f 352 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 0:4430a1559b4f 353 * @return none
wim 0:4430a1559b4f 354 */
wim 0:4430a1559b4f 355 void setIcon(Icon icon);
wim 0:4430a1559b4f 356
wim 0:4430a1559b4f 357 /** Clr Icon
wim 0:4430a1559b4f 358 *
wim 0:4430a1559b4f 359 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 0:4430a1559b4f 360 * @return none
wim 0:4430a1559b4f 361 */
wim 0:4430a1559b4f 362 void clrIcon(Icon icon);
wim 0:4430a1559b4f 363
wim 0:4430a1559b4f 364 /** Set User Defined Characters (UDC)
wim 0:4430a1559b4f 365 *
wim 0:4430a1559b4f 366 * @param unsigned char udc_idx The Index of the UDC (0..7)
wim 0:4430a1559b4f 367 * @param int udc_data The bitpattern for the UDC (16 bits)
wim 0:4430a1559b4f 368 * @return none
wim 0:4430a1559b4f 369 */
wim 0:4430a1559b4f 370 void setUDC(unsigned char udc_idx, int udc_data);
wim 0:4430a1559b4f 371
wim 0:4430a1559b4f 372
wim 0:4430a1559b4f 373 /** Number of screen columns
wim 0:4430a1559b4f 374 *
wim 0:4430a1559b4f 375 * @param none
wim 0:4430a1559b4f 376 * @return columns
wim 0:4430a1559b4f 377 */
wim 0:4430a1559b4f 378 int columns();
wim 0:4430a1559b4f 379
wim 0:4430a1559b4f 380 /** Write databyte to TM1650
wim 0:4430a1559b4f 381 * @param char data byte written at given address
wim 0:4430a1559b4f 382 * @param int address display memory location to write byte
wim 0:4430a1559b4f 383 * @return none
wim 0:4430a1559b4f 384 */
wim 0:4430a1559b4f 385 void writeData(char data, int address){
wim 0:4430a1559b4f 386 TM1650::writeData(data, address);
wim 0:4430a1559b4f 387 }
wim 0:4430a1559b4f 388
wim 0:4430a1559b4f 389 /** Write Display datablock to TM1650
wim 0:4430a1559b4f 390 * @param DisplayData_t data Array of TM1650_DISPLAY_MEM (=4) bytes for displaydata
wim 0:4430a1559b4f 391 * @param length number bytes to write (valid range 0..(MEIBAI_NR_GRIDS * TM1650_BYTES_PER_GRID) (=4), when starting at address 0)
wim 0:4430a1559b4f 392 * @param int address display memory location to write bytes (default = 0)
wim 0:4430a1559b4f 393 * @return none
wim 0:4430a1559b4f 394 */
wim 0:4430a1559b4f 395 void writeData(DisplayData_t data, int length = (MEIBAI_NR_GRIDS * TM1650_BYTES_PER_GRID), int address = 0) {
wim 0:4430a1559b4f 396 TM1650::writeData(data, length, address);
wim 0:4430a1559b4f 397 }
wim 0:4430a1559b4f 398
wim 0:4430a1559b4f 399 protected:
wim 0:4430a1559b4f 400 // Stream implementation functions
wim 0:4430a1559b4f 401 virtual int _putc(int value);
wim 0:4430a1559b4f 402 virtual int _getc();
wim 0:4430a1559b4f 403
wim 0:4430a1559b4f 404 private:
wim 0:4430a1559b4f 405 int _column;
wim 0:4430a1559b4f 406 int _columns;
wim 0:4430a1559b4f 407
wim 0:4430a1559b4f 408 DisplayData_t _displaybuffer;
wim 0:4430a1559b4f 409 UDCData_t _UDC_7S;
wim 0:4430a1559b4f 410 };
wim 0:4430a1559b4f 411 #endif
wim 0:4430a1559b4f 412
wim 0:4430a1559b4f 413 #endif