Updated library to work with the FRDM KL25Z board. Original code downloaded from DFRobot. Warning. For the 5 way switch to work correctly the LCD4884 shiled needs to be modified. The PCB line between resistor 202 and 102 just bellow the RED power LED needs to be cut and a connection from the 202 resistor to the 3V3 pin needs to be made.

Dependents:   FRDM_LCD4884

Files at this revision

API Documentation at this revision

Comitter:
COX
Date:
Sat Mar 09 21:07:35 2013 +0000
Commit message:
draft...; first working version;

Changed in this revision

LCD4884.cpp Show annotated file Show diff for this revision Revisions of this file
LCD4884.h Show annotated file Show diff for this revision Revisions of this file
font_6x8.h Show annotated file Show diff for this revision Revisions of this file
font_big.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 28f3c9274ea7 LCD4884.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD4884.cpp	Sat Mar 09 21:07:35 2013 +0000
@@ -0,0 +1,275 @@
+/*
+Modified by COX
+version 0.1
+
+Editor     : COX
+Date       : 06.03.2013
+
+*
+* Update DFRobot source to work on FRDM KL25Z
+*
+*/
+
+#include "LCD4884.h"
+#include "font_6x8.h"
+#include "font_big.h"
+
+DigitalOut SpiClk(SPI_SCK);    //2- Serial Clock(Master Output)
+DigitalOut SpiMosi(SPI_MOSI);  //3- Master Output,Slave Input
+DigitalOut LcdDC(LCD_DC);      //4- Data/Command(command active low)
+DigitalOut SpiCS(SPI_CS);      //5- Chip Select,Slave Transmit Enable(active low,Master Output)
+DigitalOut LcdRst(LCD_RST);    //6- One Reset button
+PwmOut     LcdBl(LCD_BL);      //7- LCD backlight
+
+LCD4884::LCD4884()
+{};
+
+/******************************************************************/
+void LCD4884::backlight(float dat)
+{
+    LcdBl = dat;
+}
+
+/******************************************************************/
+void LCD4884::LCD_init(void)
+{
+    /* pin intializer */
+    SpiClk = LOW;
+    SpiMosi = LOW;
+    SpiCS = LOW;
+    LcdDC = LOW;
+    LcdBl = LOW;
+
+    LcdRst = LOW;
+    wait(ONE_US);
+    LcdRst = HIGH;
+    
+    SpiCS = LOW;  //Chip Select, Slave Transmit Enable(active low, Master Output)
+    wait(ONE_US);
+    SpiCS = HIGH;
+    wait(ONE_US);
+    LcdBl = LCD_INITIAL_BRIGHTNESS;
+    
+    //data_type=0, all are command bytes
+    LCD_write_byte(0x21, 0); //Function Set:0 0 1 0 0 PD V H=0010 0001;PD=0,V=0,H=1;
+    LCD_write_byte(0xc0, 0); //Set Vop:1 Vop6 Vop5 Vop4 Vop3 Vop2 Vop1 Vop0=1100 0000
+    LCD_write_byte(0x06, 0); //Set Temperature Coefficient:0 0 0 0 0 1 Tc1 Tc0=0000 0110;Tc1=1,Tc0=0(Vlcd temperature coefficient 2)
+    LCD_write_byte(0x13, 0); //Set Bias System (BSx):0 0 0 1 0 BS2 BS1 BS0=0001 0011;BS2=0, BS1=1, BS0=1==>N=4,MUX RATE=1:48
+
+    LCD_write_byte(0x20, 0);//Function Set:0 0 1 0 0 PD V H=0010 0000;PD=0,V=0,H=0;
+    LCD_clear();
+    LCD_write_byte(0x0c, 0);//Display Control: 0 0 0 0 1 D 0 E=0000 1100 ;D=1,E=0:normal mode
+
+    SpiCS = LOW;
+}
+
+/******************************************************************/
+void LCD4884::LCD_write_byte(unsigned char dat, unsigned char dat_type)
+{
+    unsigned int i;
+    SpiCS = LOW; //Chip Enable:Active LOW
+
+    if (dat_type == 0)
+        LcdDC = LOW; // D/C=0:the current data byte is interpreted as command byte
+    else
+        LcdDC = HIGH; // D/C=1:write data to display RAM
+
+    for(i=0;i<8;i++)
+    {
+        if(dat&0x80) //1000 0000
+        {
+            SpiMosi = HIGH;
+        }
+        else
+        {
+            SpiMosi = LOW;
+        }
+        SpiClk = LOW;
+        dat = dat << 1;
+        SpiClk = HIGH;
+    }
+    SpiCS = HIGH;
+}
+
+/******************************************************************/
+void LCD4884::LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,
+                  unsigned char Pix_x,unsigned char Pix_y)
+{
+    unsigned int i,n;
+    unsigned char row;
+
+    if (Pix_y%8==0)
+        row=Pix_y/8; //row from 1 to 6;Pix_y from R0 to R47
+    else
+        row=Pix_y/8+1; //Quotient+1
+    
+    for (n=0;n<row;n++)
+    {
+        LCD_set_XY(X,Y);
+        for(i=0; i<Pix_x; i++)
+        {
+            LCD_write_byte(map[i+n*Pix_x], 1); // D/C=1:write data to display RAM
+        }
+        Y++;
+    }
+}
+
+/**************************************************************************************/
+void LCD4884::LCD_write_string(unsigned char X,unsigned char Y,char *s, char mode)
+{
+    LCD_set_XY(X,Y);
+    while (*s)
+    {
+        LCD_write_char(*s, mode);
+        s++;
+    }
+}
+
+/**************************************************************************************/
+void LCD4884::LCD_prop_write_string(unsigned char X,unsigned char Y,char *s, char mode)
+{
+    LCD_set_XY(X,Y);
+    while (*s)
+    {
+        LCD_prop_write_char(*s, mode);
+        s++;
+    }
+}
+
+/*************************************************************************************/
+void LCD4884::LCD_write_chinese(unsigned char X, unsigned char Y,unsigned char *c,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row)
+{
+    unsigned char i,n;
+    LCD_set_XY(X,Y);                             
+    for (i=0;i<num;)
+    {
+        for (n=0; n<ch_with*2; n++)
+        {
+            if (n==ch_with)
+            {
+                if (i==0)
+                    LCD_set_XY(X,Y+1);
+                else
+                  LCD_set_XY((X+(ch_with+row)*i),Y+1);
+            }
+            LCD_write_byte(c[(i*ch_with*2)+n],1);
+        }
+        i++; 
+        LCD_set_XY((X+(ch_with+row)*i),Y); 
+    }
+}
+
+
+/******************************************************************/
+void LCD4884::LCD_write_string_big ( unsigned char X,unsigned char Y, char *string, char mode )
+{
+    while ( *string )
+    {
+        LCD_write_char_big( X, Y, *string , mode );
+        
+        if(*string++ == '.')
+            X += 5;
+        else
+            X += 12;
+    }
+}
+
+/******************************************************************/
+/* write char in big font */
+void LCD4884::LCD_write_char_big (unsigned char X,unsigned char Y, unsigned char ch, char mode)
+{
+   unsigned char i, j;
+   unsigned char *pFont;
+   unsigned char ch_dat;
+   
+   pFont = (unsigned char *) big_number;
+   
+   if(ch == '.')
+        ch = 10;
+   else if (ch == '+')
+        ch = 11;
+   else if (ch == '-')
+        ch = 12;
+   else
+        ch = ch & 0x0f;
+
+   for(i=0;i<3;i++)
+   {
+        LCD_set_XY ( X, Y+i);
+
+        for(j=0; j<16; j++)
+        {
+            ch_dat = *(pFont+ch*48 + i*16 +j);
+            LCD_write_byte( (mode == MENU_NORMAL)? ch_dat : (ch_dat^0xff), 1);
+        }
+   }
+}
+  
+/******************************************************************/
+void LCD4884::LCD_write_char(unsigned char c, char mode)
+{
+    unsigned char line;
+    unsigned char *pFont;
+    unsigned char ch; 
+    
+    pFont = (unsigned char *)font6_8; //pointer *pFont points at font6_8[][6]
+    c -= 32; // the ASCII of "SP" is 32
+
+    for (line=0; line<6; line++)
+    {
+        ch = *(pFont+c*6+line); //read c from the font6_8[][6] (the detail information is in the "font6x8.h")
+        LCD_write_byte( (mode==MENU_NORMAL)? ch: (ch^ 0xff) , 1); //MENU_NORMAL=0,True:return ch;False:return ch
+    }
+}
+
+/*******************************************************************/
+unsigned char LCD4884::LCD_prop_write_char(unsigned char c, char mode)
+{
+    int line, line_s=0, line_e=2;
+    unsigned char *pFont;
+    unsigned char ch;
+
+    pFont = (unsigned char *)font6_8;
+    if (c -= 32)
+    {
+        for (line_s=0; line_s<6; line_s++)
+        {
+            if(*(pFont+c*6+line_s))
+                break;
+        }
+        for (line_e=5; line_e<0; line_e--)
+        {
+            if(*(pFont+c*6+line_e))
+                break;
+        }
+    }
+    for (line=line_s; line<line_e+1; line++)
+    {
+        ch = *(pFont+c*6+line);
+        LCD_write_byte( (mode==MENU_NORMAL)? ch: (ch^ 0xff) , 1);
+    }
+    LCD_write_byte( (mode==MENU_NORMAL)? 0:0xff, 1);
+    return ((unsigned char)(line_e+2 - line_s));
+}
+
+/******************************************************************/
+void LCD4884::LCD_set_XY(unsigned char X, unsigned char Y)
+{
+    LCD_write_byte(0x40 | Y, 0);        // column
+    LCD_write_byte(0x80 | X, 0);        // row
+}
+
+/******************************************************************/
+void LCD4884::LCD_clear(void)
+{
+    unsigned int i;
+
+    LCD_write_byte(0x0c, 0);
+    LCD_write_byte(0x80, 0);
+
+    for (i=0; i<504; i++)  //6*84
+    {
+        LCD_write_byte(0, 1);
+    }
+}
+  
diff -r 000000000000 -r 28f3c9274ea7 LCD4884.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LCD4884.h	Sat Mar 09 21:07:35 2013 +0000
@@ -0,0 +1,61 @@
+/*
+Modified by COX
+version 0.1
+
+Editor     : COX
+Date       : 06.03.2013
+
+*
+* Update DFRobot source to work on FRDM KL25Z
+*
+*/
+
+#ifndef LCD4884_h
+#define LCD4884_h
+
+#include "mbed.h"
+
+// SPI Interface --- (on arduino Arduino Digital Pin 2,3,4,5,6)
+#define SPI_SCK  PTD4   //Serial Clock(Master Output)
+#define SPI_MOSI PTA12  //Master Output,Slave Input
+#define LCD_DC   PTA4   //Data/Command(command active low)
+#define SPI_CS   PTA5   //Chip Select,Slave Transmit Enable(active low,Master Output)
+#define LCD_RST  PTC8   //One Reset button
+#define LCD_BL   PTC9   //PWM Backlit control (Arduino DIO Pin 7)
+
+
+//display mode -- normal / highlight
+#define MENU_NORMAL 0
+#define MENU_HIGHLIGHT 1
+#define OFF 0
+#define ON 1
+#define LOW 0
+#define HIGH 1
+#define ONE_US 0.000001
+#define LCD_INITIAL_BRIGHTNESS 1
+
+namespace mbed {
+
+class LCD4884
+{
+    public:
+    LCD4884();
+    void LCD_init(void);
+    void backlight(float dat);
+    void LCD_write_byte(unsigned char dat, unsigned char dat_type);
+    void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y);
+    void LCD_write_string(unsigned char X,unsigned char Y,char *s, char mode);
+    void LCD_prop_write_string(unsigned char X,unsigned char Y,char *s, char mode);
+    void LCD_write_chinese(unsigned char X, unsigned char Y,unsigned char *c,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row);
+    void LCD_write_string_big ( unsigned char X,unsigned char Y, char *string, char mode );
+    void LCD_write_char_big (unsigned char X,unsigned char Y, unsigned char ch, char mode);
+    void LCD_write_char(unsigned char c, char mode);
+    unsigned char LCD_prop_write_char(unsigned char c, char mode);
+    void LCD_set_XY(unsigned char X, unsigned char Y);
+    void LCD_clear(void);
+    };
+}
+extern LCD4884 lcd;
+              
+#endif
+
diff -r 000000000000 -r 28f3c9274ea7 font_6x8.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/font_6x8.h	Sat Mar 09 21:07:35 2013 +0000
@@ -0,0 +1,99 @@
+// 6 x 8 font
+// 1 pixel space at left and bottom
+// index = ASCII - 32
+
+unsigned char font6_8[][6]=
+{
+    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp
+    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
+    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
+    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #
+    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $
+    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // %
+    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &
+    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '
+    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (
+    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )
+    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *
+    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +
+    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,
+    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -
+    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .
+    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /
+    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
+    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
+    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
+    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
+    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4
+    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5
+    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6
+    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7
+    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8
+    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9
+    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :
+    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;
+    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <
+    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =
+    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >
+    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?
+    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @
+    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A
+    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B
+    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C
+    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D
+    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E
+    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F
+    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G
+    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H
+    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I
+    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J
+    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K
+    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L
+    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M
+    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N
+    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O
+    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P
+    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q
+    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R
+    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S
+    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T
+    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U
+    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V
+    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W
+    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X
+    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y
+    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z
+    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [
+    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55
+    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]
+    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^
+    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _
+    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '
+    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a
+    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b
+    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c
+    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
+    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
+    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
+    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g
+    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
+    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
+    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j
+    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
+    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
+    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
+    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
+    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
+    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p
+    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q
+    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
+    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
+    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
+    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
+    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
+    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
+    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
+    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y
+    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
+    { 0x00,0x00, 0x06, 0x09, 0x09, 0x06 }    // horiz lines
+};
diff -r 000000000000 -r 28f3c9274ea7 font_big.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/font_big.h	Sat Mar 09 21:07:35 2013 +0000
@@ -0,0 +1,140 @@
+// big font
+
+
+//******* VERY LARGE FONTS ********** 
+//used here for displaying temperature
+
+unsigned char   big_number[13][3][16] = {
+
+0,128,192,224,224,96,224,224,  //'0'
+192,128,0,0,0,0,0,0
+,
+112,255,255,1,0,0,0,0,
+255,255,254,0,0,0,0,0
+,
+0,15,31,60,56,48,56,56,
+31,15,3,0,0,0,0,0
+,
+
+0,0,0,0,128,224,224,0,            //'1'
+0,0,0,0,0,0,0,0
+,
+0,0,3,3,3,255,255,0,
+0,0,0,0,0,0,0,0
+,
+0,0,56,56,56,63,63,56,
+56,56,0,0,0,0,0,0
+,
+
+0,192,192,224,96,96,224,224,   //'2'
+192,128,0,0,0,0,0,0
+,
+0,1,0,0,128,192,224,249,
+63,31,0,0,0,0,0,0
+,
+0,60,62,63,63,59,57,56,
+56,56,56,0,0,0,0,0
+,
+
+0,192,224,224,96,96,224,224,   //'3'
+192,192,0,0,0,0,0,0
+,
+0,1,0,0,48,48,56,125,
+239,207,0,0,0,0,0,0
+,
+0,28,56,56,48,48,56,60,
+31,15,1,0,0,0,0,0
+,
+
+0,0,0,0,0,128,192,224,            //'4'
+224,0,0,0,0,0,0,0
+,
+224,240,248,222,207,199,193,255,
+255,192,192,0,0,0,0,0
+,
+0,0,0,0,0,0,0,63,
+63,0,0,0,0,0,0,0
+,
+
+0,224,224,224,224,224,224,224,    //'5'
+224,224,224,0,0,0,0,0
+,
+0,63,63,63,56,56,48,112,
+240,224,0,0,0,0,0,0
+,
+0,28,56,56,48,48,56,60,
+31,15,1,0,0,0,0,0
+,
+
+0,0,128,192,192,224,96,96,        //'6'
+224,224,0,0,0,0,0,0
+,
+224,254,255,55,57,24,24,56,
+240,240,192,0,0,0,0,0
+,
+0,15,31,28,56,48,48,56,
+31,15,7,0,0,0,0,0
+,
+
+0,224,224,224,224,224,224,224,         //'7'
+224,224,224,0,0,0,0,0
+,
+0,0,0,0,128,224,248,126,
+31,7,1,0,0,0,0,0
+,
+0,0,56,62,31,7,1,0,
+0,0,0,0,0,0,0,0
+,
+
+0,128,192,224,224,96,96,224,         //'8'
+192,192,0,0,0,0,0,0
+,
+0,207,255,127,56,48,112,112,
+255,239,199,0,0,0,0,0
+,
+3,15,31,60,56,48,48,56,
+31,31,15,0,0,0,0,0
+,
+
+0,128,192,224,224,96,224,224,         //'9'
+192,128,0,0,0,0,0,0
+,
+12,63,127,241,224,192,192,225,
+255,255,254,0,0,0,0,0
+,
+0,0,56,48,48,56,56,30,
+15,7,0,0,0,0,0,0
+,
+
+
+0,0,0,0,0,0,0,0,                         //'.'
+0,0,0,0,0,0,0,0
+,
+0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0
+,
+60,60,60,0,0,0,0,0,
+0,0,0,0,0,0,0,0
+,
+
+0,0,0,0,0,0,0,0,                        //'+'
+0,0,0,0,0,0,0,0
+,
+0,0,64,64,64,64,64,254,
+254,64,64,64,64,64,0,0
+,
+0,0,0,0,0,0,0,15,
+15,0,0,0,0,0,0,0
+,
+
+0,0,0,0,0,0,0,0,                         //'-'
+0,0,0,0,0,0,0,0
+,
+0,64,64,64,64,64,64,0,
+0,0,0,0,0,0,0,0
+,
+0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0
+};
+
+