Library for Princeton PT6961 LED driver. Supports 6 digits @ 12 segments or 7 digits @ 11 segments. Also supports keyboard scanning of upto 30 keys. SPI interface.

Dependents:   mbed_PT6961

This LED driver is found in frontpanel controllers of consumer electronics such as DVD players. The added features such as the matrix keyboard scanning are useful in these applications.

Additional information is available on the component page here

Committer:
wim
Date:
Thu Jan 14 20:03:13 2016 +0000
Revision:
2:c6883ede8d8b
Parent:
1:eb4758bba68a
Refactored display and keyboard defines

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wim 1:eb4758bba68a 1 /* mbed VFD Font Library, for Princeton PT6961 LED controller as used in V56S
wim 1:eb4758bba68a 2 * Copyright (c) 2015, v01: WH, Initial version, Test V56S
wim 1:eb4758bba68a 3 *
wim 1:eb4758bba68a 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
wim 1:eb4758bba68a 5 * of this software and associated documentation files (the "Software"), to deal
wim 1:eb4758bba68a 6 * in the Software without restriction, including without limitation the rights
wim 1:eb4758bba68a 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
wim 1:eb4758bba68a 8 * copies of the Software, and to permit persons to whom the Software is
wim 1:eb4758bba68a 9 * furnished to do so, subject to the following conditions:
wim 1:eb4758bba68a 10 *
wim 1:eb4758bba68a 11 * The above copyright notice and this permission notice shall be included in
wim 1:eb4758bba68a 12 * all copies or substantial portions of the Software.
wim 1:eb4758bba68a 13 *
wim 1:eb4758bba68a 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
wim 1:eb4758bba68a 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
wim 1:eb4758bba68a 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
wim 1:eb4758bba68a 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
wim 1:eb4758bba68a 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
wim 1:eb4758bba68a 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
wim 1:eb4758bba68a 20 * THE SOFTWARE.
wim 1:eb4758bba68a 21 */
wim 1:eb4758bba68a 22 #ifndef MBED_FONT_7SEG_H
wim 1:eb4758bba68a 23 #define MBED_FONT_7SEG_H
wim 1:eb4758bba68a 24
wim 2:c6883ede8d8b 25 // Select one of the testboards for Princeton PT6961 LED controller
wim 1:eb4758bba68a 26 #include "PT6961_Config.h"
wim 1:eb4758bba68a 27
wim 1:eb4758bba68a 28 #if (HR734_TEST == 1)
wim 1:eb4758bba68a 29 // Segment bit positions for 7 Segment display using the HR734 mapping for PT6961
wim 1:eb4758bba68a 30 // Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_7S const table below
wim 1:eb4758bba68a 31 // will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
wim 1:eb4758bba68a 32 // mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
wim 1:eb4758bba68a 33 // In this specific case grids 2,3 and 4 have two 7 segment digits, grid 5 hase one. Unfortunetely the patterns for the second digits
wim 1:eb4758bba68a 34 // of grid 3 and 4 are shifted by one bit position.
wim 1:eb4758bba68a 35 //
wim 1:eb4758bba68a 36 #define S7_A 0x0100
wim 1:eb4758bba68a 37 #define S7_B 0x0080
wim 1:eb4758bba68a 38 #define S7_C 0x0040
wim 1:eb4758bba68a 39 #define S7_D 0x0020
wim 1:eb4758bba68a 40 #define S7_E 0x0010
wim 1:eb4758bba68a 41 #define S7_F 0x0008
wim 1:eb4758bba68a 42 #define S7_G 0x0004
wim 1:eb4758bba68a 43
wim 1:eb4758bba68a 44 //Mask for blending out and setting 7 segments digits
wim 1:eb4758bba68a 45 #define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
wim 1:eb4758bba68a 46
wim 1:eb4758bba68a 47 //Segments Grid1
wim 1:eb4758bba68a 48 #define S7_H1 0x0002
wim 1:eb4758bba68a 49 //Segments Grid2
wim 1:eb4758bba68a 50 #define S7_J2 0x0002
wim 1:eb4758bba68a 51 //Segments Grid3
wim 1:eb4758bba68a 52 #define S7_J3 0x0002
wim 1:eb4758bba68a 53 //Segments Grid4
wim 1:eb4758bba68a 54 #define S7_K1 0x0002
wim 1:eb4758bba68a 55 //Segments Grid5
wim 1:eb4758bba68a 56 #define S7_J5 0x0002
wim 1:eb4758bba68a 57 //Segments Grid6
wim 1:eb4758bba68a 58 #define S7_M5 0x0008
wim 1:eb4758bba68a 59 #define S7_P4 0x0010
wim 1:eb4758bba68a 60 #define S7_M3 0x0020
wim 1:eb4758bba68a 61 #define S7_M2 0x0040
wim 1:eb4758bba68a 62 #define S7_M1 0x0080
wim 1:eb4758bba68a 63 #define S7_L1 0x0100
wim 1:eb4758bba68a 64
wim 1:eb4758bba68a 65 //Icons Grid 1
wim 1:eb4758bba68a 66 #define S7_RA 0x0001
wim 1:eb4758bba68a 67 #define S7_ICON_GR1 (S7_RA)
wim 1:eb4758bba68a 68
wim 1:eb4758bba68a 69 //Icons Grid 2
wim 1:eb4758bba68a 70 #define S7_M 0x0001
wim 1:eb4758bba68a 71 #define S7_ICON_GR2 (S7_M)
wim 1:eb4758bba68a 72
wim 1:eb4758bba68a 73 //Icons Grid 3
wim 1:eb4758bba68a 74 #define S7_ARW 0x0001
wim 1:eb4758bba68a 75 #define S7_ICON_GR3 (S7_ARW)
wim 1:eb4758bba68a 76
wim 1:eb4758bba68a 77 //Icons Grid 4
wim 1:eb4758bba68a 78 #define S7_HDDVD_HD 0x0001
wim 1:eb4758bba68a 79 #define S7_ICON_GR4 (S7_HDDVD_HD)
wim 1:eb4758bba68a 80
wim 1:eb4758bba68a 81 //Icons Grid 5
wim 1:eb4758bba68a 82 #define S7_HDDVD_D 0x0001
wim 1:eb4758bba68a 83 #define S7_ICON_GR5 (S7_HDDVD_D)
wim 1:eb4758bba68a 84
wim 1:eb4758bba68a 85 //Icons Grid 6
wim 1:eb4758bba68a 86 #define S7_HDDVD_VD 0x0001
wim 1:eb4758bba68a 87 #define S7_DP2 0x0002
wim 1:eb4758bba68a 88 #define S7_DP1 0x0004
wim 1:eb4758bba68a 89 #define S7_ICON_GR6 (S7_HDDVD_VD)
wim 1:eb4758bba68a 90
wim 1:eb4758bba68a 91 //Icons Grid 7
wim 1:eb4758bba68a 92 #define S7_R 0x0002
wim 1:eb4758bba68a 93 #define S7_W 0x0004
wim 1:eb4758bba68a 94 #define S7_SO 0x0008
wim 1:eb4758bba68a 95 #define S7_P 0x0010
wim 1:eb4758bba68a 96 #define S7_CLK 0x0020
wim 1:eb4758bba68a 97 #define S7_BRK 0x0040
wim 1:eb4758bba68a 98 #define S7_DP4 0x0080
wim 1:eb4758bba68a 99 #define S7_DP3 0x0100
wim 1:eb4758bba68a 100 #define S7_ICON_GR7 (S7_R | S7_W | S7_SO | S7_P | S7_CLK | S7_BRK)
wim 1:eb4758bba68a 101
wim 1:eb4758bba68a 102
wim 1:eb4758bba68a 103 //Mask for blending out and restoring Icons
wim 1:eb4758bba68a 104 extern const char MASK_ICON_GRID[][2];
wim 1:eb4758bba68a 105 #endif
wim 1:eb4758bba68a 106
wim 1:eb4758bba68a 107 #if (V56S_TEST == 1)
wim 1:eb4758bba68a 108 // Segment bit positions for 7 Segment display using the Mustek V56S mapping for PT6961
wim 1:eb4758bba68a 109 // Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_7S const table below
wim 1:eb4758bba68a 110 // will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
wim 1:eb4758bba68a 111 // mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
wim 1:eb4758bba68a 112 // In this specific case grids 2,3 and 4 have two 7 segment digits, grid 5 hase one. Unfortunetely the patterns for the second digits
wim 1:eb4758bba68a 113 // of grid 3 and 4 are shifted by one bit position.
wim 1:eb4758bba68a 114 //
wim 1:eb4758bba68a 115 #define S7_A 0x0001
wim 1:eb4758bba68a 116 #define S7_B 0x0002
wim 1:eb4758bba68a 117 #define S7_C 0x0004
wim 1:eb4758bba68a 118 #define S7_D 0x0008
wim 1:eb4758bba68a 119 #define S7_E 0x0010
wim 1:eb4758bba68a 120 #define S7_F 0x0020
wim 1:eb4758bba68a 121 #define S7_G 0x0040
wim 1:eb4758bba68a 122
wim 1:eb4758bba68a 123 //Mask for blending out and setting 7 segments digits
wim 1:eb4758bba68a 124 #define MASK_7S_ALL = (S7_D | S7_E | S7_C | S7_G | S7_F | S7_B | S7_A}
wim 1:eb4758bba68a 125
wim 1:eb4758bba68a 126 //Icons Grid 1
wim 1:eb4758bba68a 127 #define S7_RED 0x0080
wim 1:eb4758bba68a 128 #define S7_GRN 0x0100
wim 1:eb4758bba68a 129 #define S7_YEL 0x0180
wim 1:eb4758bba68a 130 #define S7_ICON_GR1 (S7_RED | S7_GRN)
wim 1:eb4758bba68a 131
wim 1:eb4758bba68a 132 #define S7_ICON_GR2 (0x0000)
wim 1:eb4758bba68a 133 #define S7_ICON_GR3 (0x0000)
wim 1:eb4758bba68a 134 #define S7_ICON_GR4 (0x0000)
wim 1:eb4758bba68a 135 #define S7_ICON_GR5 (0x0000)
wim 1:eb4758bba68a 136
wim 1:eb4758bba68a 137 //Icons Grid 6
wim 1:eb4758bba68a 138 #define S7_DVD 0x0001
wim 1:eb4758bba68a 139 #define S7_COL1 0x0002
wim 1:eb4758bba68a 140 #define S7_DP3 0x0004
wim 1:eb4758bba68a 141 #define S7_PSE 0x0008
wim 1:eb4758bba68a 142 #define S7_MP3 0x0010
wim 1:eb4758bba68a 143 #define S7_PLY 0x0020
wim 1:eb4758bba68a 144 #define S7_CD 0x0040
wim 1:eb4758bba68a 145 #define S7_COL3 0x0080
wim 1:eb4758bba68a 146 #define S7_ICON_GR6 (S7_DVD | S7_COL1 | S7_DP3 | S7_PSE | S7_MP3 | S7_PLY | S7_CD | S7_COL3)
wim 1:eb4758bba68a 147
wim 1:eb4758bba68a 148 //Icons Grid 7
wim 1:eb4758bba68a 149 #define S7_ARW 0x0001
wim 1:eb4758bba68a 150 #define S7_ANT 0x0002
wim 1:eb4758bba68a 151 #define S7_DTS 0x0004
wim 1:eb4758bba68a 152 #define S7_MHZ 0x0008
wim 1:eb4758bba68a 153 #define S7_DDD 0x0010
wim 1:eb4758bba68a 154 #define S7_KHZ 0x0020
wim 1:eb4758bba68a 155 #define S7_RDS 0x0080
wim 1:eb4758bba68a 156 #define S7_ICON_GR7 (S7_ARW | S7_ANT | S7_DTS | S7_MHZ | S7_DDD| S7_KHZ | S7_RDS )
wim 1:eb4758bba68a 157
wim 1:eb4758bba68a 158
wim 1:eb4758bba68a 159 //Mask for blending out and restoring Icons
wim 1:eb4758bba68a 160 extern const char MASK_ICON_GRID[][2];
wim 1:eb4758bba68a 161 #endif
wim 1:eb4758bba68a 162
wim 1:eb4758bba68a 163
wim 1:eb4758bba68a 164 // ASCII Font definitions for segments in each character
wim 1:eb4758bba68a 165 //
wim 1:eb4758bba68a 166 //32 0x20 Symbols
wim 1:eb4758bba68a 167 #define C7_SPC (0x0000)
wim 1:eb4758bba68a 168 //#define C7_CMA (S7_DP)
wim 1:eb4758bba68a 169 //#define C7_DPT (S7_DP)
wim 1:eb4758bba68a 170 #define C7_MIN (S7_G)
wim 1:eb4758bba68a 171
wim 1:eb4758bba68a 172 //48 0x30 Digits
wim 1:eb4758bba68a 173 #define C7_0 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
wim 1:eb4758bba68a 174 #define C7_1 (S7_B | S7_C)
wim 1:eb4758bba68a 175 #define C7_2 (S7_A | S7_B | S7_D | S7_E | S7_G)
wim 1:eb4758bba68a 176 #define C7_3 (S7_A | S7_B | S7_C | S7_D | S7_G)
wim 1:eb4758bba68a 177 #define C7_4 (S7_B | S7_C | S7_F | S7_G)
wim 1:eb4758bba68a 178 #define C7_5 (S7_A | S7_C | S7_D | S7_F | S7_G)
wim 1:eb4758bba68a 179 #define C7_6 (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 180 #define C7_7 (S7_A | S7_B | S7_C)
wim 1:eb4758bba68a 181 #define C7_8 (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 182 #define C7_9 (S7_A | S7_B | S7_C | S7_D | S7_F | S7_G)
wim 1:eb4758bba68a 183 //64 0x40 Upper case alphabet
wim 1:eb4758bba68a 184 #define C7_A (S7_A | S7_B | S7_C | S7_E | S7_F | S7_G )
wim 1:eb4758bba68a 185 #define C7_B (S7_C | S7_D | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 186 #define C7_C (S7_A | S7_D | S7_E | S7_F)
wim 1:eb4758bba68a 187 #define C7_D (S7_B | S7_C | S7_D | S7_E | S7_G)
wim 1:eb4758bba68a 188 #define C7_E (S7_A | S7_D | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 189 #define C7_F (S7_A | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 190
wim 1:eb4758bba68a 191 #define C7_G (S7_A | S7_B | S7_C | S7_F | S7_G)
wim 1:eb4758bba68a 192 #define C7_H (S7_B | S7_C | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 193 #define C7_I (S7_B | S7_C)
wim 1:eb4758bba68a 194 #define C7_J (S7_B | S7_C | S7_D)
wim 1:eb4758bba68a 195 #define C7_L (S7_D | S7_E | S7_F)
wim 1:eb4758bba68a 196 #define C7_M (S7_C | S7_E | S7_G)
wim 1:eb4758bba68a 197 #define C7_N (S7_C | S7_E | S7_G)
wim 1:eb4758bba68a 198 #define C7_O (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
wim 1:eb4758bba68a 199 #define C7_P (S7_A | S7_B | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 200 #define C7_Q (S7_A | S7_B | S7_C | S7_F | S7_G)
wim 1:eb4758bba68a 201 #define C7_R (S7_E | S7_G)
wim 1:eb4758bba68a 202 #define C7_S (S7_A | S7_C | S7_D | S7_F | S7_G)
wim 1:eb4758bba68a 203 #define C7_T (S7_D | S7_E | S7_F | S7_G)
wim 1:eb4758bba68a 204 #define C7_U (S7_B | S7_C | S7_D | S7_E | S7_F)
wim 1:eb4758bba68a 205 #define C7_Y (S7_B | S7_C | S7_D | S7_F | S7_G)
wim 1:eb4758bba68a 206 #define C7_Z (S7_A | S7_B | S7_D | S7_E | S7_G)
wim 1:eb4758bba68a 207
wim 1:eb4758bba68a 208 //97 0x61 Lower case alphabet
wim 1:eb4758bba68a 209 #define C7_a C7_A
wim 1:eb4758bba68a 210 #define C7_b C7_B
wim 1:eb4758bba68a 211 #define C7_c C7_C
wim 1:eb4758bba68a 212 #define C7_d C7_D
wim 1:eb4758bba68a 213 #define C7_e C7_E
wim 1:eb4758bba68a 214 #define C7_f C7_H
wim 1:eb4758bba68a 215
wim 1:eb4758bba68a 216 #define C7_g C7_G
wim 1:eb4758bba68a 217 #define C7_h C7_H
wim 1:eb4758bba68a 218 #define C7_i C7_I
wim 1:eb4758bba68a 219 #define C7_j C7_J
wim 1:eb4758bba68a 220 #define C7_l C7_L
wim 1:eb4758bba68a 221 #define C7_m C7_M
wim 1:eb4758bba68a 222 #define C7_n C7_N
wim 1:eb4758bba68a 223 #define C7_o C7_O
wim 1:eb4758bba68a 224 #define C7_p C7_P
wim 1:eb4758bba68a 225 #define C7_q C7_Q
wim 1:eb4758bba68a 226 #define C7_r C7_R
wim 1:eb4758bba68a 227 #define C7_s C7_S
wim 1:eb4758bba68a 228 #define C7_t C7_T
wim 1:eb4758bba68a 229 #define C7_u C7_U
wim 1:eb4758bba68a 230 #define C7_y C7_Y
wim 1:eb4758bba68a 231 #define C7_z C7_Z
wim 1:eb4758bba68a 232
wim 1:eb4758bba68a 233
wim 1:eb4758bba68a 234 //User Defined Characters (some examples)
wim 1:eb4758bba68a 235
wim 2:c6883ede8d8b 236 // Font data selection for transmission to PT6961 memory
wim 1:eb4758bba68a 237 #define LO(x) ( x & 0xFF)
wim 1:eb4758bba68a 238 #define HI(x) ((x >> 8) & 0xFF)
wim 1:eb4758bba68a 239
wim 1:eb4758bba68a 240
wim 1:eb4758bba68a 241 // ASCII Font definition table
wim 1:eb4758bba68a 242 //
wim 1:eb4758bba68a 243 //#define FONT_7S_START 0x20
wim 1:eb4758bba68a 244 //#define FONT_7S_END 0x7F
wim 1:eb4758bba68a 245 //#define FONT_7S_NR_CHARS (FONT_7S_END - FONT_7S_START + 1)
wim 1:eb4758bba68a 246 extern const short FONT_7S[];
wim 1:eb4758bba68a 247
wim 1:eb4758bba68a 248 #endif