TM1638 LED controller. Max 80 LEDs, Max 24 Key scan. Supports LED&KEY, QYF-TM1638 and JY-LKM1638 module.

Dependents:   mbed_TM1638 Otjimaniya RL0201-V1

See here for more information.

Committer:
wim
Date:
Fri Jan 15 19:09:59 2016 +0000
Revision:
2:532ce15ea9ec
Parent:
1:1f2453ed85d7
Child:
4:b2bbdc58967e
Refactored display and keyboard defines, added ASCII font.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 0:201dfacbe0e5 1 /* mbed TM1638 Library, for TM1638 LED controller
wim 0:201dfacbe0e5 2 * Copyright (c) 2015, v01: WH, Initial version
wim 2:532ce15ea9ec 3 * 2016, v02: WH, refactored display and keyboard defines
wim 0:201dfacbe0e5 4 *
wim 0:201dfacbe0e5 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 0:201dfacbe0e5 6 * of this software and associated documentation files (the "Software"), to deal
wim 0:201dfacbe0e5 7 * in the Software without restriction, including without limitation the rights
wim 0:201dfacbe0e5 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 0:201dfacbe0e5 9 * copies of the Software, and to permit persons to whom the Software is
wim 0:201dfacbe0e5 10 * furnished to do so, subject to the following conditions:
wim 0:201dfacbe0e5 11 *
wim 0:201dfacbe0e5 12 * The above copyright notice and this permission notice shall be included in
wim 0:201dfacbe0e5 13 * all copies or substantial portions of the Software.
wim 0:201dfacbe0e5 14 *
wim 0:201dfacbe0e5 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 0:201dfacbe0e5 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 0:201dfacbe0e5 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 0:201dfacbe0e5 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 0:201dfacbe0e5 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 0:201dfacbe0e5 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 0:201dfacbe0e5 21 * THE SOFTWARE.
wim 0:201dfacbe0e5 22 */
wim 0:201dfacbe0e5 23
wim 0:201dfacbe0e5 24 #ifndef TM1638_H
wim 0:201dfacbe0e5 25 #define TM1638_H
wim 0:201dfacbe0e5 26
wim 0:201dfacbe0e5 27 // Select one of the testboards for TM1638 LED controller
wim 0:201dfacbe0e5 28 #include "TM1638_Config.h"
wim 0:201dfacbe0e5 29
wim 0:201dfacbe0e5 30 /** An interface for driving TM1638 LED controller
wim 0:201dfacbe0e5 31 *
wim 0:201dfacbe0e5 32 * @code
wim 0:201dfacbe0e5 33 * #include "mbed.h"
wim 0:201dfacbe0e5 34 * #include "TM1638.h"
wim 0:201dfacbe0e5 35 *
wim 0:201dfacbe0e5 36 * DisplayData_t size is 16 bytes (8 grids @ 10 segments)
wim 0:201dfacbe0e5 37 * TM1638::DisplayData_t all_str = {0xFF,0x3F, 0xFF,0x3F, 0xFF,0x3F, 0xFF,0x3F, 0xFF,0x3F, 0xFF,0x3F, 0xFF,0x3F, 0xFF,0x3F};
wim 0:201dfacbe0e5 38 *
wim 1:1f2453ed85d7 39 * // KeyData_t size is 4 bytes
wim 0:201dfacbe0e5 40 * TM1638::KeyData_t keydata;
wim 0:201dfacbe0e5 41 *
wim 0:201dfacbe0e5 42 * // TM1638 declaration
wim 0:201dfacbe0e5 43 * TM1638 TM1638(p5,p6,p7, p8);
wim 0:201dfacbe0e5 44 *
wim 0:201dfacbe0e5 45 * int main() {
wim 0:201dfacbe0e5 46 * TM1638.cls();
wim 0:201dfacbe0e5 47 * TM1638.writeData(all_str);
wim 0:201dfacbe0e5 48 * wait(1);
wim 0:201dfacbe0e5 49 * TM1638.setBrightness(TM1638_BRT0);
wim 0:201dfacbe0e5 50 * wait(1);
wim 0:201dfacbe0e5 51 * TM1638.setBrightness(TM1638_BRT3);
wim 0:201dfacbe0e5 52 *
wim 0:201dfacbe0e5 53 * while (1) {
wim 0:201dfacbe0e5 54 * // Check and read keydata
wim 0:201dfacbe0e5 55 * if (TM1638.getKeys(&keydata)) {
wim 0:201dfacbe0e5 56 * pc.printf("Keydata 0..3 = 0x%02x 0x%02x 0x%02x 0x%02x\r\n", keydata[0], keydata[1], keydata[2], keydata[3]);
wim 0:201dfacbe0e5 57 *
wim 1:1f2453ed85d7 58 * if (keydata[0] == 0x01) { //sw1
wim 0:201dfacbe0e5 59 * TM1638.cls();
wim 0:201dfacbe0e5 60 * TM1638.writeData(all_str);
wim 0:201dfacbe0e5 61 * }
wim 0:201dfacbe0e5 62 * }
wim 0:201dfacbe0e5 63 * }
wim 0:201dfacbe0e5 64 * }
wim 0:201dfacbe0e5 65 * @endcode
wim 0:201dfacbe0e5 66 */
wim 0:201dfacbe0e5 67
wim 2:532ce15ea9ec 68
wim 2:532ce15ea9ec 69 //TM1638 Display and Keymatrix data
wim 2:532ce15ea9ec 70 #define TM1638_MAX_NR_GRIDS 8
wim 2:532ce15ea9ec 71 #define TM1638_BYTES_PER_GRID 2
wim 2:532ce15ea9ec 72 //Significant bits Keymatrix data
wim 2:532ce15ea9ec 73 #define TM1638_KEY_MSK 0x77
wim 2:532ce15ea9ec 74
wim 0:201dfacbe0e5 75 //Memory size in bytes for Display and Keymatrix
wim 2:532ce15ea9ec 76 #define TM1638_DISPLAY_MEM (TM1638_MAX_NR_GRIDS * TM1638_BYTES_PER_GRID)
wim 0:201dfacbe0e5 77 #define TM1638_KEY_MEM 4
wim 2:532ce15ea9ec 78
wim 0:201dfacbe0e5 79
wim 0:201dfacbe0e5 80 //Reserved bits for commands
wim 0:201dfacbe0e5 81 #define TM1638_CMD_MSK 0xC0
wim 0:201dfacbe0e5 82
wim 0:201dfacbe0e5 83 //Data setting commands
wim 0:201dfacbe0e5 84 #define TM1638_DATA_SET_CMD 0x40
wim 0:201dfacbe0e5 85 #define TM1638_DATA_WR 0x00
wim 0:201dfacbe0e5 86 #define TM1638_KEY_RD 0x02
wim 0:201dfacbe0e5 87 #define TM1638_ADDR_INC 0x00
wim 0:201dfacbe0e5 88 #define TM1638_ADDR_FIXED 0x04
wim 0:201dfacbe0e5 89 #define TM1638_MODE_NORM 0x00
wim 0:201dfacbe0e5 90 #define TM1638_MODE_TEST 0x08
wim 0:201dfacbe0e5 91
wim 0:201dfacbe0e5 92 //Address setting commands
wim 0:201dfacbe0e5 93 #define TM1638_ADDR_SET_CMD 0xC0
wim 0:201dfacbe0e5 94 #define TM1638_ADDR_MSK 0x0F
wim 0:201dfacbe0e5 95
wim 0:201dfacbe0e5 96 //Display control commands
wim 0:201dfacbe0e5 97 #define TM1638_DSP_CTRL_CMD 0x80
wim 0:201dfacbe0e5 98 #define TM1638_BRT_MSK 0x07
wim 0:201dfacbe0e5 99 #define TM1638_BRT0 0x00 //Pulsewidth 1/16
wim 0:201dfacbe0e5 100 #define TM1638_BRT1 0x01
wim 0:201dfacbe0e5 101 #define TM1638_BRT2 0x02
wim 0:201dfacbe0e5 102 #define TM1638_BRT3 0x03
wim 0:201dfacbe0e5 103 #define TM1638_BRT4 0x04
wim 0:201dfacbe0e5 104 #define TM1638_BRT5 0x05
wim 0:201dfacbe0e5 105 #define TM1638_BRT6 0x06
wim 0:201dfacbe0e5 106 #define TM1638_BRT7 0x07 //Pulsewidth 14/16
wim 0:201dfacbe0e5 107
wim 0:201dfacbe0e5 108 #define TM1638_BRT_DEF TM1638_BRT3
wim 0:201dfacbe0e5 109
wim 0:201dfacbe0e5 110 #define TM1638_DSP_OFF 0x00
wim 0:201dfacbe0e5 111 #define TM1638_DSP_ON 0x08
wim 0:201dfacbe0e5 112
wim 0:201dfacbe0e5 113
wim 0:201dfacbe0e5 114 /** A class for driving TM1638 LED controller
wim 0:201dfacbe0e5 115 *
wim 0:201dfacbe0e5 116 * @brief Supports 8 Grids @ 10 Segments.
wim 0:201dfacbe0e5 117 * Also supports a scanned keyboard of upto 24 keys.
wim 0:201dfacbe0e5 118 * SPI bus interface device.
wim 0:201dfacbe0e5 119 */
wim 0:201dfacbe0e5 120 class TM1638 {
wim 0:201dfacbe0e5 121 public:
wim 0:201dfacbe0e5 122
wim 0:201dfacbe0e5 123 /** Datatypes for display and keymatrix data */
wim 0:201dfacbe0e5 124 typedef char DisplayData_t[TM1638_DISPLAY_MEM];
wim 0:201dfacbe0e5 125 typedef char KeyData_t[TM1638_KEY_MEM];
wim 0:201dfacbe0e5 126
wim 0:201dfacbe0e5 127 /** Constructor for class for driving TM1638 LED controller
wim 0:201dfacbe0e5 128 *
wim 0:201dfacbe0e5 129 * @brief Supports 8 Grids @ 10 segments.
wim 0:201dfacbe0e5 130 * Also supports a scanned keyboard of upto 24 keys.
wim 0:201dfacbe0e5 131 * SPI bus interface device.
wim 0:201dfacbe0e5 132 *
wim 0:201dfacbe0e5 133 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 0:201dfacbe0e5 134 */
wim 0:201dfacbe0e5 135 TM1638(PinName mosi, PinName miso, PinName sclk, PinName cs);
wim 0:201dfacbe0e5 136
wim 0:201dfacbe0e5 137 /** Clear the screen and locate to 0
wim 0:201dfacbe0e5 138 */
wim 0:201dfacbe0e5 139 void cls();
wim 0:201dfacbe0e5 140
wim 0:201dfacbe0e5 141 /** Write databyte to TM1638
wim 0:201dfacbe0e5 142 * @param int address display memory location to write byte
wim 0:201dfacbe0e5 143 * @param char data byte written at given address
wim 0:201dfacbe0e5 144 * @return none
wim 0:201dfacbe0e5 145 */
wim 0:201dfacbe0e5 146 void writeData(int address, char data);
wim 0:201dfacbe0e5 147
wim 0:201dfacbe0e5 148 /** Write Display datablock to TM1638
wim 0:201dfacbe0e5 149 * @param DisplayData_t data Array of TM1638_DISPLAY_MEM (=16) bytes for displaydata (starting at address 0)
wim 0:201dfacbe0e5 150 * @param length number bytes to write (valid range 0..TM1638_DISPLAY_MEM (=16), starting at address 0)
wim 0:201dfacbe0e5 151 * @return none
wim 0:201dfacbe0e5 152 */
wim 0:201dfacbe0e5 153 void writeData(DisplayData_t data, int length = TM1638_DISPLAY_MEM);
wim 0:201dfacbe0e5 154
wim 0:201dfacbe0e5 155 /** Read keydata block from TM1638
wim 0:201dfacbe0e5 156 * @param *keydata Ptr to Array of TM1638_KEY_MEM (=4) bytes for keydata
wim 0:201dfacbe0e5 157 * @return bool keypress True when at least one key was pressed
wim 0:201dfacbe0e5 158 *
wim 0:201dfacbe0e5 159 * Note: Due to the hardware configuration the TM1638 key matrix scanner will detect multiple keys pressed at same time,
wim 0:201dfacbe0e5 160 * but this may result in some spurious keys also being set in keypress data array.
wim 0:201dfacbe0e5 161 * It may be best to ignore all keys in those situations. That option is implemented in this method depending on #define setting.
wim 0:201dfacbe0e5 162 */
wim 0:201dfacbe0e5 163 bool getKeys(KeyData_t *keydata);
wim 0:201dfacbe0e5 164
wim 0:201dfacbe0e5 165 /** Set Brightness
wim 0:201dfacbe0e5 166 *
wim 0:201dfacbe0e5 167 * @param char brightness (3 significant bits, valid range 0..7 (1/16 .. 14/14 dutycycle)
wim 0:201dfacbe0e5 168 * @return none
wim 0:201dfacbe0e5 169 */
wim 0:201dfacbe0e5 170 void setBrightness(char brightness = TM1638_BRT_DEF);
wim 0:201dfacbe0e5 171
wim 0:201dfacbe0e5 172 /** Set the Display mode On/off
wim 0:201dfacbe0e5 173 *
wim 0:201dfacbe0e5 174 * @param bool display mode
wim 0:201dfacbe0e5 175 */
wim 0:201dfacbe0e5 176 void setDisplay(bool on);
wim 0:201dfacbe0e5 177
wim 0:201dfacbe0e5 178 private:
wim 0:201dfacbe0e5 179 SPI _spi;
wim 0:201dfacbe0e5 180 DigitalOut _cs;
wim 0:201dfacbe0e5 181 char _display;
wim 0:201dfacbe0e5 182 char _bright;
wim 0:201dfacbe0e5 183
wim 0:201dfacbe0e5 184 /** Init the SPI interface and the controller
wim 0:201dfacbe0e5 185 * @param none
wim 0:201dfacbe0e5 186 * @return none
wim 0:201dfacbe0e5 187 */
wim 0:201dfacbe0e5 188 void _init();
wim 0:201dfacbe0e5 189
wim 0:201dfacbe0e5 190 /** Helper to reverse all command or databits. The TM1638 expects LSB first, whereas SPI is MSB first
wim 0:201dfacbe0e5 191 * @param char data
wim 0:201dfacbe0e5 192 * @return bitreversed data
wim 0:201dfacbe0e5 193 */
wim 0:201dfacbe0e5 194 char _flip(char data);
wim 0:201dfacbe0e5 195
wim 0:201dfacbe0e5 196 /** Write command and parameter to TM1638
wim 0:201dfacbe0e5 197 * @param int cmd Command byte
wim 0:201dfacbe0e5 198 * &Param int data Parameters for command
wim 0:201dfacbe0e5 199 * @return none
wim 0:201dfacbe0e5 200 */
wim 0:201dfacbe0e5 201 void _writeCmd(int cmd, int data);
wim 0:201dfacbe0e5 202 };
wim 0:201dfacbe0e5 203
wim 0:201dfacbe0e5 204
wim 0:201dfacbe0e5 205 #if (LEDKEY8_TEST == 1)
wim 0:201dfacbe0e5 206 // Derived class for TM1638 used in LED&KEY display unit
wim 0:201dfacbe0e5 207 //
wim 0:201dfacbe0e5 208
wim 0:201dfacbe0e5 209 #include "Font_7Seg.h"
wim 0:201dfacbe0e5 210
wim 0:201dfacbe0e5 211 #define LEDKEY8_NR_GRIDS 8
wim 0:201dfacbe0e5 212 #define LEDKEY8_NR_DIGITS 8
wim 0:201dfacbe0e5 213 #define LEDKEY8_NR_UDC 8
wim 0:201dfacbe0e5 214
wim 1:1f2453ed85d7 215 //Access to 8 Switches
wim 1:1f2453ed85d7 216 #define LEDKEY8_SW1_IDX 0
wim 1:1f2453ed85d7 217 #define LEDKEY8_SW1_BIT 0x01
wim 1:1f2453ed85d7 218 #define LEDKEY8_SW2_IDX 1
wim 1:1f2453ed85d7 219 #define LEDKEY8_SW2_BIT 0x01
wim 1:1f2453ed85d7 220 #define LEDKEY8_SW3_IDX 2
wim 1:1f2453ed85d7 221 #define LEDKEY8_SW3_BIT 0x01
wim 1:1f2453ed85d7 222 #define LEDKEY8_SW4_IDX 3
wim 1:1f2453ed85d7 223 #define LEDKEY8_SW4_BIT 0x01
wim 1:1f2453ed85d7 224
wim 1:1f2453ed85d7 225 #define LEDKEY8_SW5_IDX 0
wim 1:1f2453ed85d7 226 #define LEDKEY8_SW5_BIT 0x10
wim 1:1f2453ed85d7 227 #define LEDKEY8_SW6_IDX 1
wim 1:1f2453ed85d7 228 #define LEDKEY8_SW6_BIT 0x10
wim 1:1f2453ed85d7 229 #define LEDKEY8_SW7_IDX 2
wim 1:1f2453ed85d7 230 #define LEDKEY8_SW7_BIT 0x10
wim 1:1f2453ed85d7 231 #define LEDKEY8_SW8_IDX 3
wim 1:1f2453ed85d7 232 #define LEDKEY8_SW8_BIT 0x10
wim 1:1f2453ed85d7 233
wim 0:201dfacbe0e5 234 /** Constructor for class for driving TM1638 controller as used in LEDKEY8
wim 0:201dfacbe0e5 235 *
wim 0:201dfacbe0e5 236 * @brief Supports 8 Digits of 7 Segments + DP + LED Icons, Also supports a scanned keyboard of 8 keys.
wim 0:201dfacbe0e5 237 *
wim 0:201dfacbe0e5 238 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 0:201dfacbe0e5 239 */
wim 0:201dfacbe0e5 240 class TM1638_LEDKEY8 : public TM1638, public Stream {
wim 0:201dfacbe0e5 241 public:
wim 0:201dfacbe0e5 242
wim 0:201dfacbe0e5 243 /** Enums for Icons */
wim 1:1f2453ed85d7 244 // Grid encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 0:201dfacbe0e5 245 enum Icon {
wim 0:201dfacbe0e5 246 LD1 = (1<<24) | S7_LD1,
wim 0:201dfacbe0e5 247 LD2 = (2<<24) | S7_LD2,
wim 0:201dfacbe0e5 248 LD3 = (3<<24) | S7_LD3,
wim 0:201dfacbe0e5 249 LD4 = (4<<24) | S7_LD4,
wim 0:201dfacbe0e5 250 LD5 = (5<<24) | S7_LD5,
wim 0:201dfacbe0e5 251 LD6 = (6<<24) | S7_LD6,
wim 0:201dfacbe0e5 252 LD7 = (7<<24) | S7_LD7,
wim 0:201dfacbe0e5 253 LD8 = (8<<24) | S7_LD8,
wim 0:201dfacbe0e5 254
wim 0:201dfacbe0e5 255 DP1 = (1<<24) | S7_DP1,
wim 0:201dfacbe0e5 256 DP2 = (2<<24) | S7_DP2,
wim 0:201dfacbe0e5 257 DP3 = (3<<24) | S7_DP3,
wim 0:201dfacbe0e5 258 DP4 = (4<<24) | S7_DP4,
wim 0:201dfacbe0e5 259 DP5 = (5<<24) | S7_DP5,
wim 0:201dfacbe0e5 260 DP6 = (6<<24) | S7_DP6,
wim 0:201dfacbe0e5 261 DP7 = (7<<24) | S7_DP7,
wim 0:201dfacbe0e5 262 DP8 = (8<<24) | S7_DP8
wim 0:201dfacbe0e5 263 };
wim 0:201dfacbe0e5 264
wim 0:201dfacbe0e5 265 typedef char UDCData_t[LEDKEY8_NR_UDC];
wim 0:201dfacbe0e5 266
wim 0:201dfacbe0e5 267 /** Constructor for class for driving TM1638 LED controller as used in LEDKEY8
wim 0:201dfacbe0e5 268 *
wim 0:201dfacbe0e5 269 * @brief Supports 8 Digits of 7 Segments + DP + LED Icons. Also supports a scanned keyboard of 8 keys.
wim 0:201dfacbe0e5 270 *
wim 0:201dfacbe0e5 271 * @param PinName mosi, miso, sclk, cs SPI bus pins
wim 0:201dfacbe0e5 272 */
wim 0:201dfacbe0e5 273 TM1638_LEDKEY8(PinName mosi, PinName miso, PinName sclk, PinName cs);
wim 0:201dfacbe0e5 274
wim 0:201dfacbe0e5 275 #if DOXYGEN_ONLY
wim 0:201dfacbe0e5 276 /** Write a character to the Display
wim 0:201dfacbe0e5 277 *
wim 0:201dfacbe0e5 278 * @param c The character to write to the display
wim 0:201dfacbe0e5 279 */
wim 0:201dfacbe0e5 280 int putc(int c);
wim 0:201dfacbe0e5 281
wim 0:201dfacbe0e5 282 /** Write a formatted string to the Display
wim 0:201dfacbe0e5 283 *
wim 0:201dfacbe0e5 284 * @param format A printf-style format string, followed by the
wim 0:201dfacbe0e5 285 * variables to use in formatting the string.
wim 0:201dfacbe0e5 286 */
wim 0:201dfacbe0e5 287 int printf(const char* format, ...);
wim 0:201dfacbe0e5 288 #endif
wim 0:201dfacbe0e5 289
wim 0:201dfacbe0e5 290 /** Locate cursor to a screen column
wim 0:201dfacbe0e5 291 *
wim 0:201dfacbe0e5 292 * @param column The horizontal position from the left, indexed from 0
wim 0:201dfacbe0e5 293 */
wim 0:201dfacbe0e5 294 void locate(int column);
wim 0:201dfacbe0e5 295
wim 0:201dfacbe0e5 296 /** Clear the screen and locate to 0
wim 0:201dfacbe0e5 297 * @param bool clrAll Clear Icons also (default = false)
wim 0:201dfacbe0e5 298 */
wim 0:201dfacbe0e5 299 void cls(bool clrAll = false);
wim 0:201dfacbe0e5 300
wim 0:201dfacbe0e5 301 /** Set Icon
wim 0:201dfacbe0e5 302 *
wim 1:1f2453ed85d7 303 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 0:201dfacbe0e5 304 * @return none
wim 0:201dfacbe0e5 305 */
wim 0:201dfacbe0e5 306 void setIcon(Icon icon);
wim 0:201dfacbe0e5 307
wim 0:201dfacbe0e5 308 /** Clr Icon
wim 0:201dfacbe0e5 309 *
wim 1:1f2453ed85d7 310 * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
wim 0:201dfacbe0e5 311 * @return none
wim 0:201dfacbe0e5 312 */
wim 0:201dfacbe0e5 313 void clrIcon(Icon icon);
wim 0:201dfacbe0e5 314
wim 0:201dfacbe0e5 315 /** Set User Defined Characters (UDC)
wim 0:201dfacbe0e5 316 *
wim 0:201dfacbe0e5 317 * @param unsigned char udc_idx The Index of the UDC (0..7)
wim 0:201dfacbe0e5 318 * @param int udc_data The bitpattern for the UDC (16 bits)
wim 0:201dfacbe0e5 319 */
wim 0:201dfacbe0e5 320 void setUDC(unsigned char udc_idx, int udc_data);
wim 0:201dfacbe0e5 321
wim 0:201dfacbe0e5 322
wim 0:201dfacbe0e5 323 /** Number of screen columns
wim 0:201dfacbe0e5 324 *
wim 0:201dfacbe0e5 325 * @param none
wim 0:201dfacbe0e5 326 * @return columns
wim 0:201dfacbe0e5 327 */
wim 0:201dfacbe0e5 328 int columns();
wim 0:201dfacbe0e5 329
wim 0:201dfacbe0e5 330 /** Write databyte to TM1638
wim 0:201dfacbe0e5 331 * @param int address display memory location to write byte
wim 0:201dfacbe0e5 332 * @param char data byte written at given address
wim 0:201dfacbe0e5 333 * @return none
wim 0:201dfacbe0e5 334 */
wim 0:201dfacbe0e5 335 void writeData(int address, char data){
wim 0:201dfacbe0e5 336 TM1638::writeData(address, data);
wim 0:201dfacbe0e5 337 }
wim 0:201dfacbe0e5 338
wim 0:201dfacbe0e5 339 /** Write Display datablock to TM1638
wim 0:201dfacbe0e5 340 * @param DisplayData_t data Array of TM1638_DISPLAY_MEM (=16) bytes for displaydata (starting at address 0)
wim 0:201dfacbe0e5 341 * @param length number bytes to write (valid range 0..(LEDKEY8_NR_GRIDS*2) (=16), starting at address 0)
wim 0:201dfacbe0e5 342 * @return none
wim 0:201dfacbe0e5 343 */
wim 0:201dfacbe0e5 344 void writeData(DisplayData_t data, int length = (LEDKEY8_NR_GRIDS*2)) {
wim 0:201dfacbe0e5 345 TM1638::writeData(data, length);
wim 0:201dfacbe0e5 346 }
wim 0:201dfacbe0e5 347
wim 0:201dfacbe0e5 348 protected:
wim 0:201dfacbe0e5 349 // Stream implementation functions
wim 0:201dfacbe0e5 350 virtual int _putc(int value);
wim 0:201dfacbe0e5 351 virtual int _getc();
wim 0:201dfacbe0e5 352
wim 0:201dfacbe0e5 353 private:
wim 0:201dfacbe0e5 354 int _column;
wim 0:201dfacbe0e5 355 int _columns;
wim 0:201dfacbe0e5 356
wim 0:201dfacbe0e5 357 DisplayData_t _displaybuffer;
wim 0:201dfacbe0e5 358 UDCData_t _UDC_7S;
wim 0:201dfacbe0e5 359 };
wim 0:201dfacbe0e5 360 #endif
wim 0:201dfacbe0e5 361
wim 0:201dfacbe0e5 362 #endif