Wim Huiskamp / LC75711

Dependents:   mbed_LC75711

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LC75711.h Source File

LC75711.h

00001 /* mbed LC75710 Library, for Sanyo LC7571X VFD controller
00002  * Note: The LC75710, LC75711 and LC75712 differ only in the built-in character ROM
00003  *
00004  * Copyright (c) 2017, v01: WH, Initial version
00005  *               2017, v02: WH, Cleaned up docs 
00006  *               2017, v03: WH, Modified setBlink 
00007  *
00008  * Permission is hereby granted, free of charge, to any person obtaining a copy
00009  * of this software and associated documentation files (the "Software"), to deal
00010  * in the Software without restriction, including without limitation the rights
00011  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00012  * copies of the Software, and to permit persons to whom the Software is
00013  * furnished to do so, subject to the following conditions:
00014  *
00015  * The above copyright notice and this permission notice shall be included in
00016  * all copies or substantial portions of the Software.
00017  *
00018  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00019  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00020  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
00021  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00022  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00023  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00024  * THE SOFTWARE.
00025  */
00026 
00027 #ifndef LC75711_H
00028 #define LC75711_H
00029 
00030 // Select one of the testboards for Sanyo LC75711 VFD controller
00031 #include "LC75711_Config.h"
00032 #include "LC75711_UDC.h"
00033 
00034 /** An interface for driving Sanyo LC75711 VFD controller
00035  *
00036  * @code
00037  *
00038  * #if (LC75711_TEST == 1)  
00039  * // Direct driving of LC75711 Test
00040  *
00041  * #include "mbed.h"
00042  * #include "LC75711.h" 
00043  *
00044  * DigitalOut myled(LED1);
00045  * Serial pc(USBTX, USBRX);
00046  * 
00047  * // LC75711 declaration, Default setting 16 Grids @ 35 Segments
00048  * LC75711 LC75711(p5, p7, p8); // DI, CLK, CS
00049  *
00050  * int main() {
00051  *   pc.printf("Hello World: LC75711 test\n\r");
00052  *
00053  *   LC75711.cls(); 
00054  *
00055  *   LC75711.writeData((char)'H', 9);
00056  *   LC75711.writeData((char)'e', 8);
00057  *   LC75711.writeData((char)'l', 7);
00058  *   LC75711.writeData((char)'l', 6);
00059  *   LC75711.writeData((char)'o', 5);
00060  *   wait(2);
00061  *   LC75711.setBrightness(LC75711_BRT0);
00062  *   wait(2);
00063  *   LC75711.setBrightness(LC75711_BRT3);
00064  *           
00065  *   while(1) {
00066  *     myled = !myled;
00067  *     wait(1);
00068  *   }
00069  * }
00070  * #endif
00071  *
00072  * @endcode
00073  */
00074 
00075 
00076 //LC75711 Display and Annunciator data
00077 #define LC75711_MAX_NR_GRIDS   16
00078 #define LC75711_BYTES_PER_GRID  1
00079 
00080 //Memory size in bytes for Display and Annunciators
00081 #define LC75711_DISPLAY_MEM    64
00082 #define LC75711_ADD_MEM        16
00083 //#define LC75711_UDC_MEM       8
00084 
00085 //Serial control data consists of an 8-bit address and a 24-bit instruction. The address is used as a chip select function 
00086 //when multiple ICs are connected to the same bus. The address for the LC75710NE series is only used to distinguish the device
00087 //from different types of devices. Multiple LC75711 devices on the same bus can only be distinguised by the CE control.
00088 //Note that the serial control is similar but not identical to SPI behaviour: 
00089 // The address is transmitted during CE low, the command & data is latched on falling CE edge.
00090 // A wait time must be observed after each command. Typical delay is 18 us.
00091 //Address (LSB sent first)
00092 #define LC75711_ADDRESS      0x67
00093 
00094 
00095 //
00096 //Blink command, allows individual digit control
00097 // 1 0 1 M A BC2 BC1 BC0 GR16 ... GR1
00098 #define LC75711_BLNK_REG     0xA0
00099 #define LC75711_BLNK_MA_MSK  0x18
00100 #define LC75711_BLNK_BC_MSK  0x07
00101 
00102 //Blinking Mode
00103 // M A Display operating state
00104 // 0 0 Neither MDATA nor ADATA blinks.
00105 // 0 1 Only ADATA blinks.
00106 // 1 0 Only MDATA blinks.
00107 // 1 1 Both ADATA and MDATA blink.
00108 
00109 //Blinking Period in sec when fOSC is 2.7 MHz
00110 // BC2 BC1 BC0 HEX
00111 // 0   0   0   0   Blink operation is stopped.
00112 // 0   0   1   1   0.1
00113 // 0   1   0   2   0.2
00114 // 0   1   1   3   0.3
00115 // 1   0   0   4   0.4
00116 // 1   0   1   5   0.5
00117 // 1   1   0   6   0.8
00118 // 1   1   1   7   1.0
00119 #define LC75711_BLNK_00      0x00
00120 #define LC75711_BLNK_01      0x01
00121 #define LC75711_BLNK_02      0x02
00122 #define LC75711_BLNK_03      0x03
00123 #define LC75711_BLNK_04      0x04
00124 #define LC75711_BLNK_05      0x05
00125 #define LC75711_BLNK_08      0x06
00126 #define LC75711_BLNK_10      0x07
00127 
00128 #define LC75711_BLNK_ON      (LC75711_BLNK_MA_MSK | LC75711_BLNK_08)
00129 #define LC75711_BLNK_OFF     (LC75711_BLNK_MA_MSK | LC75711_BLNK_00)
00130 
00131 //Grid selectors
00132 #define LC75711_GR1     (1 <<  0)
00133 #define LC75711_GR2     (1 <<  1)
00134 #define LC75711_GR3     (1 <<  2)
00135 #define LC75711_GR4     (1 <<  3)
00136 #define LC75711_GR5     (1 <<  4)
00137 #define LC75711_GR6     (1 <<  5)
00138 #define LC75711_GR7     (1 <<  6)
00139 #define LC75711_GR8     (1 <<  7)
00140 #define LC75711_GR9     (1 <<  8)
00141 #define LC75711_GR10    (1 <<  9)
00142 #define LC75711_GR11    (1 << 10)
00143 #define LC75711_GR12    (1 << 11)
00144 #define LC75711_GR13    (1 << 12)
00145 #define LC75711_GR14    (1 << 13)
00146 #define LC75711_GR15    (1 << 14)
00147 #define LC75711_GR16    (1 << 15)
00148 
00149 #define LC75711_GR_ALL   (0xFFFF)
00150 #define LC75711_GR_MSK   (0xFFFF)
00151 
00152 //Blinking Command delay
00153 #define LC75711_BLNK_DLY       18
00154 
00155 //
00156 //Display On/Off command, allows individual digit control
00157 // 0 0 0 1 * M A O GR16 ... GRD1
00158 #define LC75711_DSPL_REG     0x10
00159 #define LC75711_DSPL_MA_MSK  0x06
00160 #define LC75711_DSPL_O_MSK   0x01
00161 
00162 //On/Off Mode
00163 // M A Display operating state
00164 // 0 0 Both MDATA and ADATA off
00165 // 0 1 Only ADATA on
00166 // 1 0 Only MDATA on
00167 // 1 1 Both ADATA and MDATA on
00168 
00169 //On/Off
00170 // O Display state
00171 // 0 Off
00172 // 1 On
00173 
00174 #define LC75711_DSPL_ON      (LC75711_DSPL_MA_MSK | LC75711_DSPL_O_MSK)
00175 #define LC75711_DSPL_OFF     (LC75711_DSPL_MA_MSK)
00176 
00177 //Display Command delay
00178 #define LC75711_DSPL_DLY       18
00179 
00180 
00181 //Display shift is NOT USED
00182 // This would screw up the correlation between column index and character position.
00183 // It also screws up the correlation between character data and additional data.
00184 // Note that chardata has 64 positions whereas adddata has 16 positions
00185 
00186 //
00187 //Display shift command
00188 // 0 0 1 0 * M A R/L ...
00189 #define LC75711_SHFT_REG     0x20
00190 #define LC75711_SHFT_MA_MSK  0x06
00191 #define LC75711_SHFT_RL_MSK  0x01
00192 
00193 // Shift Mode
00194 // M A Display operating state
00195 // 0 0 Neither MDATA and ADATA shift
00196 // 0 1 Only ADATA 
00197 // 1 0 Only MDATA 
00198 // 1 1 Both ADATA and MDATA
00199 
00200 //Shift direction
00201 // RL Display shift
00202 // 0 Right 
00203 // 1 Left
00204 
00205 //Shift Command delay
00206 #define LC75711_SHFT_DLY       18
00207 
00208 //
00209 //Grid control command
00210 // 0 0 1 1 GN3 GN2 GN1 GN0 ...
00211 #define LC75711_GRID_REG     0x30
00212 #define LC75711_GRID_MSK     0x0F
00213 
00214 //Grids
00215 //
00216 // GN3 GN2 GN1 GN0
00217 //  0   0   0   0   G1 to G16
00218 //  0   0   0   1   G1
00219 //  0   0   1   0   G1 to G2
00220 //  0   0   1   1   G1 to G3
00221 //  0   1   0   0   G1 to G4
00222 //  0   1   0   1   G1 to G5
00223 //  0   1   1   0   G1 to G6
00224 //  0   1   1   1   G1 to G7
00225 //  1   0   0   0   G1 to G8
00226 //  1   0   0   1   G1 to G9
00227 //  1   0   1   0   G1 to G10
00228 //  1   0   1   1   G1 to G11
00229 //  1   1   0   0   G1 to G12
00230 //  1   1   0   1   G1 to G13
00231 //  1   1   1   0   G1 to G14
00232 //  1   1   1   1   G1 to G15
00233 #define LC75711_GR1_GR1   0x01
00234 #define LC75711_GR1_GR2   0x02
00235 #define LC75711_GR1_GR3   0x03
00236 #define LC75711_GR1_GR4   0x04
00237 #define LC75711_GR1_GR5   0x05
00238 #define LC75711_GR1_GR6   0x06
00239 #define LC75711_GR1_GR7   0x07
00240 #define LC75711_GR1_GR8   0x08
00241 #define LC75711_GR1_GR9   0x09
00242 #define LC75711_GR1_GR10  0x0A
00243 #define LC75711_GR1_GR11  0x0B
00244 #define LC75711_GR1_GR12  0x0C
00245 #define LC75711_GR1_GR13  0x0D
00246 #define LC75711_GR1_GR14  0x0E
00247 #define LC75711_GR1_GR15  0x0F
00248 #define LC75711_GR1_GR16  0x00
00249 
00250 //Grid Command delay
00251 #define LC75711_GRID_DLY        1
00252 
00253 //
00254 //Set AC Address command
00255 // 0 1 0 0 RA3 RA2 RA1 RA0 * * DA5 DA4 DA3 DA2 DA1 DA0 * * * * * * * *
00256 #define LC75711_AC_REG       0x40
00257 #define LC75711_AADR_MSK     0x0F
00258 #define LC75711_DADR_MSK     0x3F
00259 
00260 //RA3..RA0 ADRAM Address (Additional data)
00261 //DA5..DA0 DCRAM Address (Character data)
00262 
00263 //AC Command delay
00264 #define LC75711_AC_DLY         18
00265 
00266 //
00267 //Set Brightness command
00268 // 0 1 0 1 * * * * DC7 DC6 DC5 DC4 DC3 DC2 DC1 DC0 * * * * * * * *
00269 #define LC75711_BRT_REG      0x50
00270 #define LC75711_BRT_MSK      0xFF
00271 
00272 //DC7..DC0 Brightness Level (0..239)
00273 //Note Brightness relationship between the number of active Grids (period) and the BRT value (duty cycle)
00274 #define LC75711_BRT_0        0x00
00275 #define LC75711_BRT_1        0x20
00276 #define LC75711_BRT_2        0x40
00277 #define LC75711_BRT_3        0x80
00278 #define LC75711_BRT_4        0xA0
00279 #define LC75711_BRT_5        0xC0
00280 #define LC75711_BRT_6        0xD0
00281 #define LC75711_BRT_7        0xF0
00282 
00283 #define LC75711_BRT_DEF      (LC75711_BRT_3)
00284 
00285 //Brightness Command delay
00286 #define LC75711_BRT_DLY         1
00287 
00288 //
00289 //Set Char data command (DCRAM)
00290 // 0 1 1 0 * * * * * * DA5 DA4 DA3 DA2 DA1 DA0 D7...D0
00291 #define LC75711_DATA_REG     0x60
00292 //#define LC75711_DADR_MSK     0x3F
00293 //#define LC75711_DATA_MSK     0xFF
00294 
00295 //AA5..DA0 DCRAM Address (Character data)
00296 //DA7..DA0 Character Data
00297 
00298 //Set Data Command delay
00299 #define LC75711_DATA_DLY        18
00300 
00301 //
00302 //Set Additional data command (ADRAM), Used for annunciators etc
00303 // 0 1 1 1 RA3 RA2 RA1 RA0 AD8 AD7 AD6 AD5 AD4 AD3 AD2 AD1 * * * * * * * *
00304 #define LC75711_ADAT_REG      0x70
00305 
00306 //RA3..RA0 ADRAM Address (Additional data)
00307 //#define LC75711_AADR_MSK       0x0F
00308 
00309 //AD8..AD1 Additional Data
00310 #define LC75711_ADAT_MSK      0xFF
00311 
00312 //Set AData Command delay
00313 #define LC75711_ADAT_DLY        18
00314 
00315 //
00316 //Set UDC data command (CGRAM)
00317 // 1 0 0 0 * * * * CA7 CA6 ... CA0
00318 //
00319 // * * * * * CD35 CD34 ...    CD25
00320 //
00321 // CD24 CD23 ...               CD9
00322 //
00323 // CD8 ...      CD1
00324 #define LC75711_UDC_REG        0x80
00325 #define LC75711_UDC_MSK        0x0F
00326 #define LC75711_NR_UDC            8
00327 
00328 //CA7..CA0 CGRAM Address (UDC RAM address)
00329 //CD35..CD0 UDC Data
00330 //UDC is a 5x7 Matrix pattern
00331 // CD1  .. CD5
00332 // CD6  .. CD10
00333 // CD11 .. CD15
00334 // CD16 .. CD20
00335 // CD21 .. CD25
00336 // CD26 .. CD30
00337 // CD31 .. CD35
00338 
00339 //Set UDC Data Command delay
00340 #define LC75711_UDC_DLY          18
00341 
00342 //UDCs are defined by a 5x7 matrix and stored as 7 bytes
00343 typedef char UDCData_t[7];
00344 
00345 
00346 /** A class for driving Sanyo LC75711 VFD controller
00347  *
00348  * @brief Supports upto 16 Grids of 35 matrix segments. Also supports 3-8 additional segments (depending on number of grids).
00349  *        SPI bus interface device. 
00350  */
00351 class LC75711 {
00352  public:
00353 
00354   /** Enums for display mode */
00355   enum Mode {
00356     Grid1_Add8  = LC75711_GR1_GR1,
00357     Grid2_Add8  = LC75711_GR1_GR2,
00358     Grid3_Add8  = LC75711_GR1_GR3,
00359     Grid4_Add8  = LC75711_GR1_GR4,
00360     Grid5_Add8  = LC75711_GR1_GR5,
00361     Grid6_Add8  = LC75711_GR1_GR6,
00362     Grid7_Add8  = LC75711_GR1_GR7,
00363     Grid8_Add8  = LC75711_GR1_GR8,
00364     Grid9_Add8  = LC75711_GR1_GR9,
00365     Grid10_Add8 = LC75711_GR1_GR10,
00366     Grid11_Add8 = LC75711_GR1_GR11,
00367     Grid12_Add7 = LC75711_GR1_GR12,
00368     Grid13_Add6 = LC75711_GR1_GR13,
00369     Grid14_Add5 = LC75711_GR1_GR14,
00370     Grid15_Add4 = LC75711_GR1_GR15,
00371     Grid16_Add3 = LC75711_GR1_GR16
00372   };
00373  
00374  /** Datatypes for display data */
00375 //  typedef char DisplayData_t[LC75711_DISPLAY_MEM];
00376 //  typedef char DisplayAdd_t[LC75711_ADD_MEM];  
00377     
00378  /** Constructor for class for driving Sanyo LC75711 VFD controller
00379   *
00380   *  @brief Supports upto 16 Grids of 35 matrix segments. Also supports 3-8 additional segments (depending on number of grids).
00381   *         SPI bus interface device. 
00382   *  @param  PinName mosi, sclk, cs SPI bus pins
00383   *  @param  Mode selects number of Grids and Segments (default 11 Grids, 35 matrix segments, 8 additional segments)
00384   */
00385   LC75711(PinName mosi, PinName sclk, PinName cs, Mode mode = Grid11_Add8);
00386       
00387   /** Clear the screen and locate to 0
00388     *
00389     * @param none
00390     * @return none
00391     */ 
00392   void cls();  
00393 
00394   /** Set the Blink mode
00395     *
00396     * @param int  grids selected grids for Blinking enable (default = all)
00397     * @return none    
00398     */
00399   void setBlink(int grids = LC75711_GR_ALL);
00400 
00401   /** Clr the Blink mode
00402     *
00403     * @param int  grids selected grids for Blinking disable (default = all)
00404     * @return none    
00405     */
00406   void clrBlink(int grids = LC75711_GR_ALL);
00407   
00408   /** Set Brightness
00409     *
00410     * @param  char brightness (8 significant bits, valid range 0..239 (dutycycle linked to number of grids)  
00411     * @return none
00412     */    
00413   void setBrightness(char brightness = LC75711_BRT_DEF);
00414   
00415   /** Set the Display mode On/off
00416     *
00417     * @param bool display mode
00418     * @return none    
00419     */
00420   void setDisplay(bool on);
00421 
00422 
00423   /** Set User Defined Characters (UDC)
00424     *
00425     * @param unsigned char udc_idx   The Index of the UDC (0..7)
00426     * @param UDCData_t udc_data      The bitpattern for the UDC (7 bytes)
00427     * @return none    
00428     */
00429   void setUDC(unsigned char udc_idx, UDCData_t udc_data);
00430 
00431  
00432   /** Write Data to LC75711
00433     *
00434     *  @param char data Character code
00435     *  @param char address Parameter for data
00436     *  @return none
00437     */  
00438   void writeData(char data, char address);
00439 
00440   /** Write Additional Data to LC75711
00441     *
00442     *  @param char adata Additional code (annunciator)
00443     *  @param char address Parameter for data
00444     *  @return none
00445     */  
00446   void writeAData(char adata, char address);
00447  
00448   
00449  private:  
00450   SPI _spi;
00451   DigitalOut _cs;
00452   Mode _mode;
00453   int _blink; // Local shadow
00454     
00455   /** Init the SPI interface and the controller
00456     *
00457     * @param  none
00458     * @return none
00459     */ 
00460   void _init();
00461 
00462   /** Helper to reverse all command or databits. The LC75711 expects LSB first, whereas SPI is MSB first
00463     *
00464     *  @param  char data
00465     *  @return bitreversed data
00466     */ 
00467   char _flip(char data);
00468 
00469 
00470   /** Set Address
00471     *
00472     *  @param char RAM address for data displayed at Grid1 (0..63)
00473     *  @param char RAM address for adata displayed at Grid1 (0..15) 
00474     *  @return none
00475     *
00476     *  Note that a Shift (L/R) command will change the Address of data displayed at Grid1
00477     */  
00478   void _setAddress(char data_addr=0, char adata_addr=0);
00479 
00480 
00481   /** Write command and parameters to LC75711
00482     *
00483     *  @param char cmd Command byte
00484     *  @param char data1 Parameters for command
00485     *  @param char data0 Parameters for command  
00486     *  @param char delay Delay for command execution
00487     *  @return none
00488     */  
00489   void _writeCmd(char cmd, char data1, char data0, char delay);
00490  
00491 };
00492 
00493 
00494 #if (ASTON_TEST == 1)
00495 // Derived class for ASTON display unit
00496 //   Grids 1-10 all display 35 segment matrix characters and no Additional segments.
00497 //   Grid  11 uses a number of Segments to display Icons. 
00498 
00499 //ASTON Display data
00500 #define ASTON_NR_GRIDS  10
00501 #define ASTON_NR_DIGITS 10
00502 //#define ASTON_NR_UDC    8
00503 
00504 //ASTON Memory size in bytes for Display
00505 //#define ASTON_DISPLAY_MEM (ASTON_NR_GRIDS * LC75711_BYTES_PER_GRID)
00506 
00507 
00508 /** Constructor for class for driving Sanyo LC75711 VFD controller as used in ASTON
00509   *
00510   *  @brief Supports 10 Grids of 35 Segments without additional Segments and uses Grid 11 for Icon segments.
00511   *  
00512   *  @param  PinName mosi, sclk, cs SPI bus pins
00513   */
00514 class LC75711_ASTON : public LC75711, public Stream {
00515  public:
00516 
00517   /** Enums for Icons
00518    *
00519    *  @brief Aston display uses Grid 11 to show Icons.
00520    *         The Icons are each connnected to one of the 35 segments. 
00521    *         Icons are controlled by redefining UDC_0. 
00522    *  Icon Enums encode UDC_0 byte index in 8 MSBs and encode Icon bit/segment in 8 LSBs
00523    */
00524   enum Icon {
00525     R0    = (6<<8) | 4,
00526     R1    = (6<<8) | 3,
00527     R2    = (6<<8) | 2,
00528     R3    = (6<<8) | 1,
00529     CRD1  = (5<<8) | 4,
00530     CRD2  = (5<<8) | 3,
00531     CARD  = (5<<8) | 2,
00532     KEY   = (4<<8) | 1,
00533     VDCRP = (4<<8) | 2,
00534     D     = (4<<8) | 0,
00535     D2    = (3<<8) | 4,
00536     MAC   = (3<<8) | 3,
00537     R16_9 = (0<<8) | 0,
00538     DISH  = (5<<8) | 0,     
00539     DSH1  = (4<<8) | 3,
00540     DSH2  = (5<<8) | 1,
00541     TMR   = (1<<8) | 3,
00542     CBND  = (2<<8) | 1,
00543     KBND  = (2<<8) | 4,
00544     AFC   = (3<<8) | 0
00545   };
00546   
00547 
00548 /** Constructor for class for driving Sanyo LC75711 VFD controller as used in ASTON
00549   *
00550   *  @brief Supports 10 Grids of 35 Segments without additional Segments and uses Grid 11 for Icon segments.
00551   *  
00552   *  @param  PinName mosi, sclk, cs SPI bus pins
00553   */
00554   LC75711_ASTON(PinName mosi, PinName sclk, PinName cs);
00555 
00556 #if DOXYGEN_ONLY
00557     /** Write a character to the Display
00558      *
00559      * @param c The character to write to the display
00560      * @return char written
00561      */
00562     int putc(int c);
00563 
00564     /** Write a formatted string to the Display
00565      *
00566      * @param format A printf-style format string, followed by the
00567      *               variables to use in formatting the string.
00568      */
00569     int printf(const char* format, ...);   
00570 #endif
00571 
00572      /** Locate cursor to a screen column
00573      *
00574      * @param column  The horizontal position from the left, indexed from 0
00575      * @return none     
00576      */
00577     void locate(int column);
00578     
00579     /** Clear the screen and locate to 0
00580      *
00581      * @param bool clrAll Clear Icons also (default = false)
00582      */
00583     void cls(bool clrAll = false);
00584 
00585     /** Set Icon
00586      *
00587      * @param Icon Enums Icon Encodes UDC_0 byte index in 8 MSBs and encodes Icon bit/segment in 8 LSBs
00588      * @return none
00589      */
00590     void setIcon(Icon icon);
00591 
00592     /** Clr Icon
00593      *
00594      * @param Icon Enums Icon Encodes UDC_0 byte index in 8 MSBs and encodes Icon bit/segment in 8 LSBs     
00595      * @return none
00596      */
00597     void clrIcon(Icon icon);
00598 
00599    /** Number of screen columns
00600     *
00601     * @param none
00602     * @return columns
00603     */
00604     int columns();   
00605 
00606 protected:  
00607     // Stream implementation functions
00608     virtual int _putc(int value);
00609     virtual int _getc();
00610 
00611 private:
00612     int _column;                     // Current cursor location
00613     int _columns;                    // Max number of columns
00614     
00615 //    DisplayData_t _displaybuffer;    // Local mirror for all chars and icons
00616     UDCData_t _udc_icon;             // The UDC_0 bitpattern for the Icons shown at Grid 11 (7 bytes)    
00617 };
00618 #endif
00619 
00620 #endif