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

Dependents:   mbed_PT6312

This library is documented here.

Revision:
3:156c23d9652a
Parent:
2:f010b7022803
Child:
5:be9ec73af639
--- a/Font_16Seg.h	Thu Aug 27 21:22:30 2015 +0000
+++ b/Font_16Seg.h	Thu Sep 10 18:40:51 2015 +0000
@@ -19,9 +19,14 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+#ifndef MBED_FONT_16SEG_H
+#define MBED_FONT_16SEG_H
 
-// Segment bit positions for 14 or 16 Segment display following the Philips DVP630 and DVD737 mapping for PT6312
-// Modify this table for different hardware. The Font definition table below will be adapted automatically for the segments.
+// Segment bit positions for 14 or 16 Segment display using the Philips DVP630 and DVD737 mapping for PT6312
+// Modify this table for different 'bit-to-segment' mappings. The ASCII character defines and the FONT_16S const table below 
+// will be adapted automatically according to the bit-to-segment mapping. Obviously this will only work when the segment
+// mapping is identical for every digit position. This will be the case unless the hardware designer really hates software developers.
+//
 #define S_A1   0x0001  // Assuming 2 part A segment
 #define S_A2   0x0001
 #define S_J    0x0002  // Assuming linked J and P segments
@@ -36,20 +41,21 @@
 #define S_E    0x0200
 #define S_R    0x0400
 #define S_N    0x0800
-#define S_D1   0x1000 // Assuming 2 part D segment
+#define S_D1   0x1000  // Assuming 2 part D segment
 #define S_D2   0x1000
 #define S_COL  0x2000
 #define S_S    0x4000
 //#define S_DP   0x8000  // Assuming single DP segment
 
 //Mask for blending out and restoring Icons
+//One mask pattern will be sufficient assuming that all digits use the same mapping.
 #define S_ICON_MSK (S_COL)
 
 
 // ASCII Font definitions for segments in each character
 //
 //32 0x20
-#define C_SPC  (0x0000)
+#define C_SPC  (0x0000)    //Space
 #define C_EXC  (S_B | S_C) //!
 #define C_QTE  (S_B | S_F) //"
 #define C_HSH  (S_B | S_C | S_D1 | S_D2 | S_G1 | S_G2 | S_J | S_P) //#
@@ -66,7 +72,7 @@
 #define C_MIN  (S_G1 | S_G2 | S_S) //-
 #define C_DOT  (S_C) //.
 #define C_RS   (S_K | S_R  | S_S)  // /
-//48 0x30
+//48 0x30 digits
 #define C_0    (S_A1 | S_A2 | S_B | S_C  | S_D1 | S_D2 | S_E  | S_F)
 #define C_1    (S_B  | S_C)
 #define C_2    (S_A1 | S_A2 | S_B | S_D1 | S_D2 | S_E  | S_G1 | S_G2 | S_S)
@@ -88,7 +94,7 @@
 //64 0x40
 //#define C_AT   (S_A1 | S_A2 | S_B  | S_C  | S_D1 | S_D2 | S_E | S_G1  | S_P | S_S) // Not correct when J and P are linked
 #define C_AT   (S_A1 | S_A2 | S_B  | S_C  | S_D1 | S_D2 | S_E  | S_G1 | S_S)  // @
-#define C_A    (S_A1 | S_A2 | S_B  | S_C  | S_E  | S_F  | S_G1 | S_G2 | S_S)
+#define C_A    (S_A1 | S_A2 | S_B  | S_C  | S_E  | S_F  | S_G1 | S_G2 | S_S)  // Upper case alphabet
 #define C_B    (S_A1 | S_A2 | S_B  | S_C  | S_D1 | S_D2 | S_J  | S_P  | S_G2 | S_S)
 #define C_C    (S_A1 | S_A2 | S_D1 | S_D2 | S_E  | S_F)
 #define C_D    (S_A1 | S_A2 | S_B  | S_C  | S_D1 | S_D2 | S_J  | S_P  | S_S)
@@ -117,13 +123,13 @@
 #define C_Z    (S_A1 | S_A2 | S_D1 | S_D2 | S_K  | S_R  | S_S)
 //91 0x5B
 #define C_SBL  (S_A1 | S_D1 | S_E  | S_F)  // [
-#define C_LS   (S_H  | S_N  | S_S)         // 
+#define C_LS   (S_H  | S_N  | S_S)         // left slash
 #define C_SBR  (S_A2 | S_B | S_C | S_D2)   // ]
 #define C_PWR  (S_N  | S_R  | S_S)         // ^
 #define C_UDS  (S_D1 | S_D2)
 #define C_DSH  (S_H)                       // `  
 //97 0x61
-// a...z
+// a...z No defines provided. Just use the Upper case characters again
 //122
 
 //123 0x7B
@@ -132,113 +138,32 @@
 #define C_CBR  (S_G2 | S_J  | S_P  | S_S)        // }
 #define C_TLD  (S_B  | S_E  | S_G1 | S_G2 | S_S) // ~
 #define C_DEL  (0x0000)
+
+//User Defined Characters (some examples)
+#define UDC_SANDHR  (S_A1 | S_A2 | S_D1 | S_D2 | S_H  | S_K | S_N | S_R | S_S)  //Sandhour
+
+#define UDC_WHEEL0  (S_G1 | S_G2 | S_S)  // -
+#define UDC_WHEEL1  (S_H  | S_N  | S_S)  /* \ */
+#define UDC_WHEEL2  (S_J  | S_P  | S_S)  // |
+#define UDC_WHEEL3  (S_K  | S_R  | S_S)  // /
+#define UDC_WHEEL4  (S_G1 | S_G2 | S_S)  // -
+#define UDC_WHEEL5  (S_H  | S_N  | S_S)  /* \ */
+#define UDC_WHEEL6  (S_J  | S_P  | S_S)  // |
+#define UDC_WHEEL7  (S_K  | S_R  | S_S)  // /
                                                                           
 // Font data selection for transmission to PT6512 memory
 #define LO(x)  ( x & 0xFF)
 #define HI(x)  ((x >> 8) & 0xFF)
 
 
-// ASCII Font definition table for transmission to PT6312
+// ASCII Font definition table
 //
 #define FONT_16S_START     0x20
 #define FONT_16S_END       0x7F
 //#define FONT_16S_NR_CHARS (FONT_16S_END - FONT_16S_START + 1)
- 
-const char FONT_16S[][2] = { 
-                             {LO(C_SPC), HI(C_SPC)}, //32 0x20, Space
-                             {LO(C_EXC), HI(C_EXC)},
-                             {LO(C_QTE), HI(C_QTE)},
-                             {LO(C_HSH), HI(C_HSH)},
-                             {LO(C_DLR), HI(C_DLR)},
-                             {LO(C_PCT), HI(C_PCT)},
-                             {LO(C_AMP), HI(C_AMP)},
-                             {LO(C_ACC), HI(C_ACC)},
-                             {LO(C_LBR), HI(C_LBR)},
-                             {LO(C_RBR), HI(C_RBR)},                   
-                             {LO(C_MLT), HI(C_MLT)},                            
-                             {LO(C_PLS), HI(C_PLS)},
-                             {LO(C_CMA), HI(C_CMA)},
-                             {LO(C_MIN), HI(C_MIN)},
-                             {LO(C_DOT), HI(C_DOT)},                             
-                             {LO(C_RS), HI(C_RS)},
-                             {LO(C_0), HI(C_0)}, //48 0x30
-                             {LO(C_1), HI(C_1)},
-                             {LO(C_2), HI(C_2)},
-                             {LO(C_3), HI(C_3)},
-                             {LO(C_4), HI(C_4)},                   
-                             {LO(C_5), HI(C_5)},
-                             {LO(C_6), HI(C_6)},
-                             {LO(C_7), HI(C_7)},
-                             {LO(C_8), HI(C_8)},
-                             {LO(C_9), HI(C_9)},
-                             {LO(C_COL), HI(C_COL)}, //58 0x3A
-                             {LO(C_SCL), HI(C_SCL)},
-                             {LO(C_LT), HI(C_LT)},
-                             {LO(C_EQ), HI(C_EQ)},
-                             {LO(C_GT), HI(C_GT)},
-                             {LO(C_QM), HI(C_QM)},                             
-                             {LO(C_AT), HI(C_AT)}, //64 0x40
-                             {LO(C_A), HI(C_A)}, //65 0x41, A
-                             {LO(C_B), HI(C_B)},
-                             {LO(C_C), HI(C_C)},
-                             {LO(C_D), HI(C_D)},
-                             {LO(C_E), HI(C_E)},
-                             {LO(C_F), HI(C_F)},
-                             {LO(C_G), HI(C_G)},
-                             {LO(C_H), HI(C_H)},
-                             {LO(C_I), HI(C_I)},
-                             {LO(C_J), HI(C_J)},                   
-                             {LO(C_K), HI(C_K)},
-                             {LO(C_L), HI(C_L)},
-                             {LO(C_M), HI(C_M)},
-                             {LO(C_N), HI(C_N)},
-                             {LO(C_O), HI(C_O)},
-                             {LO(C_P), HI(C_P)},
-                             {LO(C_Q), HI(C_Q)},
-                             {LO(C_R), HI(C_R)},
-                             {LO(C_S), HI(C_S)},
-                             {LO(C_T), HI(C_T)},
-                             {LO(C_U), HI(C_U)},
-                             {LO(C_V), HI(C_V)},
-                             {LO(C_W), HI(C_W)},
-                             {LO(C_X), HI(C_X)},
-                             {LO(C_Y), HI(C_Y)},
-                             {LO(C_Z), HI(C_Z)}, //90 0x5A, Z
-                             {LO(C_SBL), HI(C_SBL)}, //91 0x5B
-                             {LO(C_LS), HI(C_LS)},
-                             {LO(C_SBR), HI(C_SBR)},
-                             {LO(C_PWR), HI(C_PWR)},
-                             {LO(C_UDS), HI(C_UDS)},  
-                             {LO(C_ACC), HI(C_ACC)},                             
-                             {LO(C_A), HI(C_A)}, //97 0x61, A replacing a
-                             {LO(C_B), HI(C_B)},
-                             {LO(C_C), HI(C_C)},
-                             {LO(C_D), HI(C_D)},
-                             {LO(C_E), HI(C_E)},
-                             {LO(C_F), HI(C_F)},
-                             {LO(C_G), HI(C_G)},
-                             {LO(C_H), HI(C_H)},
-                             {LO(C_I), HI(C_I)},
-                             {LO(C_J), HI(C_J)},                   
-                             {LO(C_K), HI(C_K)},
-                             {LO(C_L), HI(C_L)},
-                             {LO(C_M), HI(C_M)},
-                             {LO(C_N), HI(C_N)},
-                             {LO(C_O), HI(C_O)},
-                             {LO(C_P), HI(C_P)},
-                             {LO(C_Q), HI(C_Q)},
-                             {LO(C_R), HI(C_R)},
-                             {LO(C_S), HI(C_S)},
-                             {LO(C_T), HI(C_T)},
-                             {LO(C_U), HI(C_U)},
-                             {LO(C_V), HI(C_V)},
-                             {LO(C_W), HI(C_W)},
-                             {LO(C_X), HI(C_X)},
-                             {LO(C_Y), HI(C_Y)},
-                             {LO(C_Z), HI(C_Z)}, // 122 0x7A, Z replacing z
-                             {LO(C_CBL), HI(C_CBL)}, // 123 0x7B
-                             {LO(C_OR), HI(C_OR)},
-                             {LO(C_CBR), HI(C_CBR)},
-                             {LO(C_TLD), HI(C_TLD)},
-                             {LO(C_DEL), HI(C_DEL)} };// 127                             
-                         
\ No newline at end of file
+extern const char FONT_16S[][2]; 
+
+
+// Wheel animation definition table
+extern const int WHEEL_ANI[]; 
+#endif                         
\ No newline at end of file