Princeton PT6964 LED controller supports 4 Digits @ 13 Segments, 5 Digits @ 12 Segments, 6 Digits @ 11 Segments or 7 Digits @ 10 Segments. Also supports a scanned keyboard of upto 20 keys. SPI bus interface.

Dependents:   mbed_PT6964

Princeton PT6964 LED controller supports 4 Digits @ 13 Segments, 5 Digits @ 12 Segments, 6 Digits @ 11 Segments or 7 Digits @ 10 Segments. Also supports a scanned keyboard of upto 20 keys. SPI bus interface.

See Component page here.

Files at this revision

API Documentation at this revision

Comitter:
wim
Date:
Sat Jan 09 13:40:06 2016 +0000
Parent:
0:27f32a087e5a
Child:
2:eaf2f5d1af34
Commit message:
Updated Icon handling, UDCs and _putc()

Changed in this revision

Font_7Seg.cpp Show annotated file Show diff for this revision Revisions of this file
Font_7Seg.h Show annotated file Show diff for this revision Revisions of this file
PT6964.cpp Show annotated file Show diff for this revision Revisions of this file
PT6964.h Show annotated file Show diff for this revision Revisions of this file
--- a/Font_7Seg.cpp	Sat Nov 21 16:43:15 2015 +0000
+++ b/Font_7Seg.cpp	Sat Jan 09 13:40:06 2016 +0000
@@ -1,5 +1,6 @@
 /* mbed LED Font Library, for Princeton PT6964 controller as used in DVD538A
  * Copyright (c) 2015, v01: WH, Initial version
+ *               2016, v02: WH, fonttable changed to short          
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -21,29 +22,42 @@
  */
 #include "Font_7Seg.h"
 
+
+//Mask for blending out and restoring Icons
+const char MASK_ICON_GRID[][2] = {
+                                   {LO(S7_ICON_GR1), HI(S7_ICON_GR1)},
+                                   {LO(S7_ICON_GR2), HI(S7_ICON_GR2)},
+                                   {LO(S7_ICON_GR3), HI(S7_ICON_GR3)},
+                                   {LO(S7_ICON_GR4), HI(S7_ICON_GR4)},
+                                   {LO(S7_ICON_GR5), HI(S7_ICON_GR5)},
+                                   {LO(S7_ICON_GR6), HI(S7_ICON_GR6)},
+                                   {LO(S7_ICON_GR7), HI(S7_ICON_GR7)}                                   
+                                 };
+
+
 // ASCII Font definition table for transmission to PT6964
 //
 //#define FONT_7S_START     0x20
 //#define FONT_7S_END       0x7F
 //#define FONT_7S_NR_CHARS (FONT_7_END - FONT_7S_START + 1)
  
-const char FONT_7S[][2] = { 
-                             {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_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)}
-                                                 };// 127                             
-  
+const short FONT_7S[] = { 
+                           C7_0, //48 0x30
+                           C7_1,
+                           C7_2,
+                           C7_3,
+                           C7_4,                   
+                           C7_5,
+                           C7_6,
+                           C7_7,
+                           C7_8,
+                           C7_9,
+                           C7_A, //65 0x41, A
+                           C7_B,
+                           C7_C,
+                           C7_D,
+                           C7_E,
+                           C7_F
+                         };// 127                             
+
  
\ No newline at end of file
--- a/Font_7Seg.h	Sat Nov 21 16:43:15 2015 +0000
+++ b/Font_7Seg.h	Sat Jan 09 13:40:06 2016 +0000
@@ -1,5 +1,6 @@
 /* mbed LED Font Library, for Princeton PT6964 controller as used in DVD538A
  * Copyright (c) 2015, v01: WH, Initial version
+ *               2016, v02: WH, fonttable changed to short, added symbols
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -27,56 +28,121 @@
 // 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_D    0x0008 
-#define S_C    0x0010
-#define S_B    0x0020
-#define S_A    0x0040 
-#define S_E    0x0080
-#define S_F    0x0100
-#define S_G    0x0200
+#define S7_D    0x0008 
+#define S7_C    0x0010
+#define S7_B    0x0020
+#define S7_A    0x0040 
+#define S7_E    0x0080
+#define S7_F    0x0100
+#define S7_G    0x0200
+
+//Mask for blending out and setting 7 segments digits
+#define MASK_7S_ALL = (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G}
 
-#define S_LD2  0x0001
-#define S_LD1  0x0002
-#define S_CD   0x0008
-#define S_DVD  0x0010
-#define S_PSE  0x0020
-#define S_PLY  0x0040
-#define S_COL  0x0080
-#define S_MP4  0x0100
-#define S_MP3  0x0200
+//Icons Grid 1
+#define S7_LD2  0x0001
+#define S7_LD1  0x0002
+#define S7_CD   0x0008
+#define S7_DVD  0x0010
+#define S7_PSE  0x0020
+#define S7_PLY  0x0040
+#define S7_COL2 0x0080
+#define S7_MP4  0x0100
+#define S7_MP3  0x0200
+#define S7_ICON_GR1 (S7_LD2 | S7_LD1 | S7_CD | S7_DVD | S7_PSE | S7_PLY | S7_COL2 | S7_MP4 | S7_MP3)
+
+//Icons Grid 2
+#define S7_ICON_GR2 (0x0000)
+
+//Icons Grid 3
+#define S7_ICON_GR3 (0x0000)
+
+//Icons Grid 4
+#define S7_ICON_GR4 (0x0000)
+
+//Icons Grid 5
+#define S7_ICON_GR5 (0x0000)
+
+//Icons Grid 6
+#define S7_ICON_GR6 (0x0000)
+
+//Icons Grid 7
+#define S7_ICON_GR7 (0x0000)
 
 //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 (0x0000)
+//#define S_ICON_MSK (0x0000)
 
+//Mask for blending out and restoring Icons
+extern const char MASK_ICON_GRID[][2]; 
 
 // ASCII Font definitions for segments in each character
 //
+//32 0x20  Symbols
+#define C7_SPC  (0x0000)
+//#define C_CMA  (S_DP)
+//#define C_DPT  (S_DP)
+#define C7_MIN  (S7_G)
+
 //48 0x30 digits
-#define C_0    (S_A | S_B | S_C | S_D | S_E | S_F)
-#define C_1    (S_B | S_C)
-#define C_2    (S_A | S_B | S_D | S_E | S_G)
-#define C_3    (S_A | S_B | S_C | S_D | S_G)
-#define C_4    (S_B | S_C | S_F | S_G)
-#define C_5    (S_A | S_C | S_D | S_F | S_G)
-#define C_6    (S_A | S_C | S_D | S_E | S_F | S_G)
-#define C_7    (S_A | S_B | S_C)
-#define C_8    (S_A | S_B | S_C | S_D | S_E | S_F | S_G)
-#define C_9    (S_A | S_B | S_C | S_D | S_F | S_G)
+#define C7_0    (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
+#define C7_1    (S7_B | S7_C)
+#define C7_2    (S7_A | S7_B | S7_D | S7_E | S7_G)
+#define C7_3    (S7_A | S7_B | S7_C | S7_D | S7_G)
+#define C7_4    (S7_B | S7_C | S7_F | S7_G)
+#define C7_5    (S7_A | S7_C | S7_D | S7_F | S7_G)
+#define C7_6    (S7_A | S7_C | S7_D | S7_E | S7_F | S7_G)
+#define C7_7    (S7_A | S7_B | S7_C)
+#define C7_8    (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F | S7_G)
+#define C7_9    (S7_A | S7_B | S7_C | S7_D | S7_F | S7_G)
 //64 0x40
-#define C_A    (S_A | S_B | S_C | S_E | S_F | S_G )  // Upper case alphabet
-#define C_B    (S_C | S_D | S_E | S_F | S_G)
-#define C_C    (S_A | S_D | S_E | S_F)
-#define C_D    (S_B | S_C | S_D | S_E | S_G)
-#define C_E    (S_A | S_D | S_E | S_F | S_G)
-#define C_F    (S_A | S_E | S_F | S_G)
-//97 0x61
-#define C_a    (S_A | S_B | S_C | S_E | S_F | S_G )  // Lower case alphabet
-#define C_b    (S_C | S_D | S_E | S_F | S_G)
-#define C_c    (S_A | S_D | S_E | S_F)
-#define C_d    (S_B | S_C | S_D | S_E | S_G)
-#define C_e    (S_A | S_D | S_E | S_F | S_G)
-#define C_f    (S_A | S_E | S_F | S_G)
+#define C7_A    (S7_A | S7_B | S7_C | S7_E | S7_F | S7_G )  // Upper case alphabet
+#define C7_B    (S7_C | S7_D | S7_E | S7_F | S7_G)
+#define C7_C    (S7_A | S7_D | S7_E | S7_F)
+#define C7_D    (S7_B | S7_C | S7_D | S7_E | S7_G)
+#define C7_E    (S7_A | S7_D | S7_E | S7_F | S7_G)
+#define C7_F    (S7_A | S7_E | S7_F | S7_G)
+#define C7_G    (S7_A | S7_B | S7_C | S7_F | S7_G)
+#define C7_H    (S7_B | S7_C | S7_E | S7_F | S7_G)
+#define C7_I    (S7_B | S7_C)
+#define C7_J    (S7_B | S7_C | S7_D)
+#define C7_L    (S7_D | S7_E | S7_F)
+#define C7_M    (S7_C | S7_E | S7_G)
+#define C7_N    (S7_C | S7_E | S7_G)
+#define C7_O    (S7_A | S7_B | S7_C | S7_D | S7_E | S7_F)
+#define C7_P    (S7_A | S7_B | S7_E | S7_F | S7_G)
+#define C7_Q    (S7_A | S7_B | S7_C | S7_F | S7_G)
+#define C7_R    (S7_E | S7_G)
+#define C7_S    (S7_A | S7_C | S7_D | S7_F | S7_G)
+#define C7_T    (S7_D | S7_E | S7_F | S7_G)
+#define C7_U    (S7_B | S7_C | S7_D | S7_E | S7_F)
+#define C7_Y    (S7_B | S7_C | S7_D | S7_F | S7_G)
+#define C7_Z    (S7_A | S7_B | S7_D | S7_E | S7_G)
+
+//97 0x61  Lower case alphabet
+#define C7_a     C7_A
+#define C7_b     C7_B
+#define C7_c     C7_C
+#define C7_d     C7_D
+#define C7_e     C7_E
+#define C7_f     C7_H
+#define C7_g     C7_G
+#define C7_h     C7_H
+#define C7_i     C7_I
+#define C7_j     C7_J
+#define C7_l     C7_L
+#define C7_m     C7_M
+#define C7_n     C7_N
+#define C7_o     C7_O
+#define C7_p     C7_P
+#define C7_q     C7_Q
+#define C7_r     C7_R
+#define C7_s     C7_S
+#define C7_t     C7_T
+#define C7_u     C7_U
+#define C7_y     C7_Y
+#define C7_z     C7_Z
+
 
 // Font data selection for transmission to PT6964 memory
 #define LO(x)  ( x & 0xFF)
@@ -88,6 +154,6 @@
 //#define FONT_7S_START     0x20
 //#define FONT_7S_END       0x7F
 //#define FONT_7S_NR_CHARS (FONT_7S_END - FONT_7S_START + 1)
-extern const char FONT_7S[][2]; 
+extern const short FONT_7S[]; 
 
 #endif 
\ No newline at end of file
--- a/PT6964.cpp	Sat Nov 21 16:43:15 2015 +0000
+++ b/PT6964.cpp	Sat Jan 09 13:40:06 2016 +0000
@@ -1,5 +1,7 @@
 /* mbed PT6964 Library, for PT6964 LED controller
  * Copyright (c) 2015, v01: WH, Initial version
+ *               2015, v02: WH, rename Digit/Grid 
+ *               2016, v03: WH, updated Icon handling, UDCs and _putc() 
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -277,40 +279,43 @@
     return _columns;
 }
 
-    
+
 /** Clear the screen and locate to 0
-  */
-void PT6964_DVD538A::cls() {
-  
-#if(0)
-  //clear local buffer (including Icons)
-  for (int idx = 0; idx < DVD538A_NR_GRIDS; idx++) {
-    _displaybuffer[(idx<<1)]     = 0x00;  
-    _displaybuffer[(idx<<1) + 1] = 0x00;      
+  * @param bool clrAll Clear Icons also (default = false)
+  */ 
+void PT6964_DVD538A::cls(bool clrAll) {  
+
+  if (clrAll) {
+    //clear local buffer (including Icons)
+    for (int idx=0; idx < (DVD538A_NR_GRIDS << 1); idx++) {
+      _displaybuffer[idx] = 0x00;  
+    }
+  }  
+  else {
+    //clear local buffer (preserving Icons)
+    for (int idx=0; idx < DVD538A_NR_GRIDS; idx++) {
+      _displaybuffer[(idx<<1)]     = _displaybuffer[(idx<<1)]     & MASK_ICON_GRID[idx][0];  
+      _displaybuffer[(idx<<1) + 1] = _displaybuffer[(idx<<1) + 1] & MASK_ICON_GRID[idx][1];
+    }  
   }
-#else
-  //clear local buffer (preserving Icons)
-  for (int idx = DVD538A_DIG1_IDX; idx < (DVD538A_DIG1_IDX + DVD538A_NR_DIGITS); idx++) {    
-    _displaybuffer[(idx<<1)]     = _displaybuffer[(idx<<1)]     & LO(S_ICON_MSK);  
-    _displaybuffer[(idx<<1) + 1] = _displaybuffer[(idx<<1) + 1] & HI(S_ICON_MSK);      
-  }
-#endif  
 
   writeData(_displaybuffer, (DVD538A_NR_GRIDS*2));
 
   _column = 0;   
-}    
+}     
+
 
 /** Set Icon
   *
-  * @param Icon icon Enums Icon has Grid position encoded in 16 MSBs, Icon pattern encoded in 16 LSBs
+  * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
   * @return none
   */
 void PT6964_DVD538A::setIcon(Icon icon) {
   int addr, icn;
 
-   icn =         icon  & 0xFFFF;
-  addr = ((icon >> 16) & 0xFFFF) - 1; 
+   icn =        icon  & 0xFFFF;
+  addr = (icon >> 24) & 0xFF; 
+  addr = (addr - 1) << 1;     
     
   //Save char...and set bits for icon to write
   _displaybuffer[addr]   = _displaybuffer[addr]   | LO(icn);      
@@ -320,15 +325,16 @@
 
 /** Clr Icon
   *
-  * @param Icon icon Enums Icon has Grid position encoded in 16 MSBs, Icon pattern encoded in 16 LSBs
+  * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
   * @return none
   */
 void PT6964_DVD538A::clrIcon(Icon icon) {
   int addr, icn;
 
-   icn =         icon  & 0xFFFF;
-  addr = ((icon >> 16) & 0xFFFF) - 1; 
-    
+  icn =        icon  & 0xFFFF;
+  addr = (icon >> 24) & 0xFF; 
+  addr = (addr - 1) << 1;     
+
   //Save char...and clr bits for icon to write
   _displaybuffer[addr]   = _displaybuffer[addr]   & ~LO(icn);      
   _displaybuffer[addr+1] = _displaybuffer[addr+1] & ~HI(icn);      
@@ -349,90 +355,77 @@
   }
   // Mask out Icon bits?
 
-  _UDC_16S[udc_idx][0] = LO(udc_data);
-  _UDC_16S[udc_idx][1] = HI(udc_data);
+  _UDC_7S[udc_idx] = udc_data;
 }
 
+
 /** Write a single character (Stream implementation)
   */
 int PT6964_DVD538A::_putc(int value) {
-  int addr;
+    int addr;
+    bool validChar = false;
+    short pattern  = 0x0000;
     
     if ((value == '\n') || (value == '\r')) {
       //No character to write
+      validChar = false;
       
       //Update Cursor      
       _column = 0;
+    } 
+    else if (value == '-') {
+      //No character to write
+      validChar = true;
+      pattern = C7_MIN;         
     }
     else if ((value >= 0) && (value < DVD538A_NR_UDC)) {
       //Character to write
-      addr = (DVD538A_DIG1_IDX + ((DVD538A_NR_DIGITS - 1) - _column)) << 1; 
-      
-      //Save icons...and set bits for character to write
-      _displaybuffer[addr]   = (_displaybuffer[addr]   & LO(S_ICON_MSK)) | _UDC_16S[value][0];      
-      _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | _UDC_16S[value][1];      
-      writeData(_displaybuffer, (DVD538A_NR_GRIDS*2));
-               
-      //Update Cursor
-      _column++;
-      if (_column > (DVD538A_NR_DIGITS - 1)) {
-        _column = 0;
-      }          
+      validChar = true;
+      pattern = _UDC_7S[value];
     }  
     else if ((value >= (int)'0') && (value <= (int) '9')) {   
       //Character to write
-      value = value - (int) '0';
-      addr = (DVD538A_DIG1_IDX + ((DVD538A_NR_DIGITS - 1) - _column)) << 1; 
-      
+      validChar = true;
+      pattern = FONT_7S[value - (int) '0'];
+    }
+    else if ((value >= (int) 'A') && (value <= (int) 'F')) {   
+      //Character to write
+      validChar = true;
+      pattern = FONT_7S[10 + value - (int) 'A'];
+    }
+    else if ((value >= (int) 'a') && (value <= (int) 'f')) {   
+      //Character to write
+      validChar = true;
+      pattern = FONT_7S[10 + value - (int) 'a'];
+    } //else
+
+    if (validChar) {
+      //Character to write
+ 
+      //Translate between _column and displaybuffer entries
+      //_column == 0 => Grid5 => addr = 8
+      //_column == 1 => Grid4 => addr = 6
+      //_column == 2 => Grid3 => addr = 4
+      //_column == 3 => Grid4 => addr = 2            
+      addr = (4 - _column) << 1;
+
       //Save icons...and set bits for character to write
-      _displaybuffer[addr]   = (_displaybuffer[addr]   & LO(S_ICON_MSK)) | FONT_7S[value][0];      
-      _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | FONT_7S[value][1];      
+      _displaybuffer[addr]   = (_displaybuffer[addr]   & MASK_ICON_GRID[4 - _column][0]) | LO(pattern);
+      _displaybuffer[addr+1] = (_displaybuffer[addr+1] & MASK_ICON_GRID[4 - _column][1]) | HI(pattern);
+
       writeData(_displaybuffer, (DVD538A_NR_GRIDS*2));
-               
+                                
       //Update Cursor
       _column++;
       if (_column > (DVD538A_NR_DIGITS - 1)) {
         _column = 0;
       }
-    }            
-    else if ((value >= (int) 'A') && (value <= (int) 'F')) {   
-      //Character to write
-      value = 10 + value - (int) 'A';
-      addr = (DVD538A_DIG1_IDX + ((DVD538A_NR_DIGITS - 1) - _column)) << 1; 
-      
-      //Save icons...and set bits for character to write
-      _displaybuffer[addr]   = (_displaybuffer[addr]   & LO(S_ICON_MSK)) | FONT_7S[value][0];      
-      _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | FONT_7S[value][1];      
-      writeData(_displaybuffer, (DVD538A_NR_GRIDS*2));
-               
-      //Update Cursor
-      _column++;
-      if (_column > (DVD538A_NR_DIGITS - 1)) {
-        _column = 0;
-      }
-    }  
-    else if ((value >= (int) 'a') && (value <= (int) 'f')) {   
-      //Character to write
-      value = 10 + value - (int) 'a';
-      addr = (DVD538A_DIG1_IDX + ((DVD538A_NR_DIGITS - 1) - _column)) << 1; 
-      
-      //Save icons...and set bits for character to write
-      _displaybuffer[addr]   = (_displaybuffer[addr]   & LO(S_ICON_MSK)) | FONT_7S[value][0];      
-      _displaybuffer[addr+1] = (_displaybuffer[addr+1] & HI(S_ICON_MSK)) | FONT_7S[value][1];      
-      writeData(_displaybuffer, (DVD538A_NR_GRIDS*2));
-               
-      //Update Cursor
-      _column++;
-      if (_column > (DVD538A_NR_DIGITS - 1)) {
-        _column = 0;
-      }          
 
-    } //else
+    } // if validChar           
 
     return value;
 }
 
-
 // get a single character (Stream implementation)
 int PT6964_DVD538A::_getc() {
     return -1;
--- a/PT6964.h	Sat Nov 21 16:43:15 2015 +0000
+++ b/PT6964.h	Sat Jan 09 13:40:06 2016 +0000
@@ -1,5 +1,7 @@
 /* mbed PT6964 Library, for PT6964 LED controller
  * Copyright (c) 2015, v01: WH, Initial version
+ *               2015, v02: WH, rename Digit/Grid 
+ *               2016, v03: WH, updated Icon handling, UDCs and _putc()  
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -222,7 +224,7 @@
 
 #define DVD538A_NR_GRIDS  5
 #define DVD538A_NR_DIGITS 4
-#define DVD538A_DIG1_IDX  1
+//#define DVD538A_DIG1_IDX  1
 #define DVD538A_NR_UDC    8
 
 /** Constructor for class for driving Princeton PT6964 controller as used in DVD538A
@@ -235,20 +237,20 @@
  public:
 
   /** Enums for Icons */
-  //  Grid encoded in 16 MSBs, Icon pattern encoded in 16 LSBs
+  //  Grid encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
   enum Icon {
-    Grid1_LD1  = (1<<16) | S_LD1,
-    Grid1_LD2  = (1<<16) | S_LD2,
-    Grid1_CD   = (1<<16) | S_CD,
-    Grid1_DVD  = (1<<16) | S_DVD,
-    Grid1_PSE  = (1<<16) | S_PSE,
-    Grid1_PLY  = (1<<16) | S_PLY,    
-    Grid1_COL  = (1<<16) | S_COL,
-    Grid1_MP4  = (1<<16) | S_MP4,
-    Grid1_MP3  = (1<<16) | S_MP3    
+    LD1  = (1<<24) | S7_LD1,
+    LD2  = (1<<24) | S7_LD2,
+    CD   = (1<<24) | S7_CD,
+    DVD  = (1<<24) | S7_DVD,
+    PSE  = (1<<24) | S7_PSE,
+    PLY  = (1<<24) | S7_PLY,    
+    COL2 = (1<<24) | S7_COL2,
+    MP4  = (1<<24) | S7_MP4,
+    MP3  = (1<<24) | S7_MP3    
   };
   
-  typedef char UDCData_t[DVD538A_NR_UDC][2];
+  typedef short UDCData_t[DVD538A_NR_UDC];
   
  /** Constructor for class for driving Princeton PT6964 VFD controller as used in DVD538A
    *
@@ -280,19 +282,20 @@
     void locate(int column);
     
     /** Clear the screen and locate to 0
+     * @param bool clrAll Clear Icons also (default = false)
      */
-    void cls();
+    void cls(bool clrAll = false);   
 
     /** Set Icon
      *
-     * @param Icon icon Enums Icon has Grid position encoded in 16 MSBs, Icon pattern encoded in 16 LSBs
+     * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
      * @return none
      */
     void setIcon(Icon icon);
 
     /** Clr Icon
      *
-     * @param Icon icon Enums Icon has Grid position encoded in 16 MSBs, Icon pattern encoded in 16 LSBs
+     * @param Icon icon Enums Icon has Grid position encoded in 8 MSBs, Icon pattern encoded in 16 LSBs
      * @return none
      */
     void clrIcon(Icon icon);
@@ -331,7 +334,7 @@
     int _columns;   
     
     DisplayData_t _displaybuffer;
-    UDCData_t _UDC_16S; 
+    UDCData_t _UDC_7S; 
 };