SSD1963 Initial code & test fill screen.

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
techstep
Date:
Fri Apr 18 04:16:35 2014 +0000
Commit message:
ST Nucleo F401RE; 7" TFT LCD 800x480 [SSD1963]; Test TFT Init.

Changed in this revision

SSD1963/SSD1963.cpp Show annotated file Show diff for this revision Revisions of this file
SSD1963/SSD1963.h Show annotated file Show diff for this revision Revisions of this file
SSD1963/tFontLCD.c Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SSD1963/SSD1963.cpp	Fri Apr 18 04:16:35 2014 +0000
@@ -0,0 +1,335 @@
+/*****************************************************************************
+ * Project      : 7" TFT LCD 800x480 [AT070TN92]
+ * Compiler     : mbed Online
+ * Type         : Libraries
+ * Comment      : Support mbed ST Nucleo Board.
+ *              : Support Chip = SSD1963
+ * File         : SSD1963.c
+ *
+ * Author       : Mr.Thongchai Artsamart [Bird Techstep]
+ * E-Mail       : t.artsamart@gmail.com
+ *              : tbird_th@hotmail.com
+ * Start Date   : 20/03/2014 [dd/mm/yyyy]
+ * Version Date : 20/03/2014 [dd/mm/yyyy]
+ * Licensed under a Creative Commons Attribution-ShareAlike 3.0 License.
+ *****************************************************************************
+ * Remark    : Thank you -. no1wudi [CooCox]
+ *                       -.
+ *****************************************************************************/
+#include "mbed.h"
+#include "SSD1963.h"
+//#include "tFontLCD.c"
+//#include "stm32f4xx.h"
+
+/*
+#define  HDP 799     // [ 799][ 799] Horizontal Display Period
+#define  HT  928     // [ 928][1000] Horizontal Total
+#define  HPS 46      // [  46][  51] LLINE Pulse Start Position
+#define  LPS 15      // [  15][   3] Horizontal Display Period Start Position
+#define  HPW 48      // [  48][   8] LLINE Pulse Width
+#define  VDP 479     // [ 479][ 479] Vertical Display Period
+#define  VT  525     // [ 525][ 530] Vertical Total
+#define  VPS 16      // [  16][  24] LFRAME Pulse Start Position
+#define  FPS 8       // [   8][  23] Vertical Display Period Start Position
+#define  VPW 16      // [  16][   3] LFRAME Pulse Width
+*/
+
+SSD1963::SSD1963() {
+    init();
+}
+/*
+uint16_t SSD1963::width(void) {
+  return _width;
+}
+uint16_t SSD1963::height(void) {
+  return _height;
+}
+*/
+void SSD1963::init(void) {
+    
+    /* GPIOC Periph clock enable */
+    //RCC->AHB1ENR |= (RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN); // For F401RE
+    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
+    //RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
+    RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
+    //RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN;
+    
+    /* Configure PC[0..7] in input/output mode  */
+    GPIOC->MODER |= (GPIO_MODER_MODER0_0  | GPIO_MODER_MODER1_0  | GPIO_MODER_MODER2_0  | GPIO_MODER_MODER3_0  |
+                     GPIO_MODER_MODER4_0  | GPIO_MODER_MODER5_0  | GPIO_MODER_MODER6_0  | GPIO_MODER_MODER7_0);
+    /* Configure PA[8..15] in input/output mode  */
+    GPIOC->MODER |= (GPIO_MODER_MODER8_0  | GPIO_MODER_MODER9_0  | GPIO_MODER_MODER10_0 | GPIO_MODER_MODER11_0 |
+                     GPIO_MODER_MODER12_0 | GPIO_MODER_MODER13_0 | GPIO_MODER_MODER14_0 | GPIO_MODER_MODER15_0);
+    /* Configure PB[0:1:2:6:7] in input/output mode  */
+    GPIOB->MODER |= (GPIO_MODER_MODER0_0  | GPIO_MODER_MODER1_0  | GPIO_MODER_MODER2_0  |
+                     GPIO_MODER_MODER6_0  | GPIO_MODER_MODER7_0);
+
+    // Ensure push pull mode selected--default
+    GPIOC->OTYPER &= ~(GPIO_OTYPER_OT_0  | GPIO_OTYPER_OT_1  | GPIO_OTYPER_OT_2  | GPIO_OTYPER_OT_3  |
+                       GPIO_OTYPER_OT_4  | GPIO_OTYPER_OT_5  | GPIO_OTYPER_OT_6  | GPIO_OTYPER_OT_7);
+    GPIOC->OTYPER &= ~(GPIO_OTYPER_OT_8  | GPIO_OTYPER_OT_9  | GPIO_OTYPER_OT_10 | GPIO_OTYPER_OT_11 |
+                       GPIO_OTYPER_OT_12 | GPIO_OTYPER_OT_13 | GPIO_OTYPER_OT_14 | GPIO_OTYPER_OT_15);
+    GPIOB->OTYPER &= ~(GPIO_OTYPER_OT_0  | GPIO_OTYPER_OT_1  | GPIO_OTYPER_OT_2  |
+                       GPIO_OTYPER_OT_6  | GPIO_OTYPER_OT_7);
+
+    //Ensure maximum speed setting (even though it is unnecessary)
+    GPIOC->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR0  | GPIO_OSPEEDER_OSPEEDR1  | GPIO_OSPEEDER_OSPEEDR2  | GPIO_OSPEEDER_OSPEEDR3  |
+                       GPIO_OSPEEDER_OSPEEDR4  | GPIO_OSPEEDER_OSPEEDR5  | GPIO_OSPEEDER_OSPEEDR6  | GPIO_OSPEEDER_OSPEEDR7);
+    GPIOC->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR8  | GPIO_OSPEEDER_OSPEEDR9  | GPIO_OSPEEDER_OSPEEDR10 | GPIO_OSPEEDER_OSPEEDR11 |
+                       GPIO_OSPEEDER_OSPEEDR12 | GPIO_OSPEEDER_OSPEEDR13 | GPIO_OSPEEDER_OSPEEDR14 | GPIO_OSPEEDER_OSPEEDR15);
+    GPIOB->OSPEEDR |= (GPIO_OSPEEDER_OSPEEDR0  | GPIO_OSPEEDER_OSPEEDR1  | GPIO_OSPEEDER_OSPEEDR2  |
+                       GPIO_OSPEEDER_OSPEEDR6  | GPIO_OSPEEDER_OSPEEDR7);
+
+    //Ensure all pull up pull down resistors are disabled
+    //GPIOC->PUPDR &= ~(GPIO_PUPDR_PUPDR0  | GPIO_PUPDR_PUPDR1  | GPIO_PUPDR_PUPDR2  | GPIO_PUPDR_PUPDR3  |
+    //                  GPIO_PUPDR_PUPDR4  | GPIO_PUPDR_PUPDR5  | GPIO_PUPDR_PUPDR6  | GPIO_PUPDR_PUPDR7);
+    // Pull UP
+    //GPIOC->PUPDR &= ~(GPIO_PUPDR_PUPDR0_0  | GPIO_PUPDR_PUPDR1_0  | GPIO_PUPDR_PUPDR2_0  | GPIO_PUPDR_PUPDR3_0  |
+    //                  GPIO_PUPDR_PUPDR4_0  | GPIO_PUPDR_PUPDR5_0  | GPIO_PUPDR_PUPDR6_0  | GPIO_PUPDR_PUPDR7_0);
+    // Pull Down
+    GPIOC->PUPDR &= ~(GPIO_PUPDR_PUPDR0_1  | GPIO_PUPDR_PUPDR1_1  | GPIO_PUPDR_PUPDR2_1  | GPIO_PUPDR_PUPDR3_1  |
+                      GPIO_PUPDR_PUPDR4_1  | GPIO_PUPDR_PUPDR5_1  | GPIO_PUPDR_PUPDR6_1  | GPIO_PUPDR_PUPDR7_1);
+                      
+    //GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR8  | GPIO_PUPDR_PUPDR9  | GPIO_PUPDR_PUPDR10 | GPIO_PUPDR_PUPDR11 |
+    //                  GPIO_PUPDR_PUPDR12 | GPIO_PUPDR_PUPDR13 | GPIO_PUPDR_PUPDR14 | GPIO_PUPDR_PUPDR15);
+    GPIOC->PUPDR &= ~(GPIO_PUPDR_PUPDR8_1  | GPIO_PUPDR_PUPDR9_1  | GPIO_PUPDR_PUPDR10_1 | GPIO_PUPDR_PUPDR11_1 |
+                      GPIO_PUPDR_PUPDR12_1 | GPIO_PUPDR_PUPDR13_1 | GPIO_PUPDR_PUPDR14_1 | GPIO_PUPDR_PUPDR15_1);
+    GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPDR0  | GPIO_PUPDR_PUPDR1  | GPIO_PUPDR_PUPDR2  |
+                      GPIO_PUPDR_PUPDR6  | GPIO_PUPDR_PUPDR7);
+
+    wait_ms(100);
+  //rotation  = 0;
+  //cursor_y  = cursor_x = 0;
+  //textsize  = 1;
+  //textcolor = 0xFFFF;
+  //_width    = TFTWIDTH;
+  //_height   = TFTHEIGHT;
+  //wrap      = true;
+}
+
+void SSD1963::writeData(uint16_t data) {
+    CS_LOW; RS_HIGH; RD_HIGH; WR_HIGH;
+    //GPIOA->ODR = (data&0xFF00);
+    //GPIOC->ODR = (data&0x00FF);
+    GPIOC->ODR = (data&0xFFFF);
+    WR_STROBE;
+    CS_HIGH;
+}
+
+void SSD1963::writeCommand(uint16_t cmd) {
+    CS_LOW; RS_LOW; RD_HIGH; WR_HIGH;
+    //GPIOA->ODR = (cmd&0xFF00);
+    //GPIOC->ODR = (cmd&0x00FF);
+    GPIOC->ODR = (cmd&0xFFFF);
+    WR_STROBE;
+    RS_HIGH;
+    CS_HIGH;
+}
+
+uint16_t SSD1963::readData(void) {
+    uint16_t data = 0x0000;
+    CS_LOW; RS_HIGH; RD_LOW; WR_HIGH;
+    wait_us(10);
+    //data = (GPIOA->IDR&0xFF00 | GPIOC->IDR&0x00FF);
+    data = (GPIOC->IDR&0xFFFF);
+    RD_HIGH;
+    CS_HIGH;
+    return data;
+}
+
+void SSD1963::writeRegister(uint16_t addr, uint16_t data) {
+    writeCommand(addr);
+    writeData(data);
+}
+
+void SSD1963::reset(void) {
+    //CS_LOW;
+    RST_HIGH;  wait_ms(2);
+    RST_LOW;   wait_ms(2);
+    RST_HIGH;  wait_ms(4);
+    
+    CS_HIGH;
+    RS_HIGH;
+    RD_HIGH;
+    WR_HIGH;
+}
+
+void SSD1963::begin() {
+
+    reset();
+    wait_ms(10);
+    // Set PLL MN -------------------------------------------------------------
+    // @Parameters : 3
+    writeCommand(0xE2);
+    writeData(0x23);             // N[7:0] : Multiplier (N) of PLL. (POR = 00101101) b00100011
+    writeData(0x02);             // M[3:0] : Divider (M) of PLL. (POR = 0011)
+    writeData(0x04);             // C[2] : Effectuate MN value (POR = 100) - Effectuate the multiplier and divider value
+    //writeData(0x54);
+    
+    // Set PLL
+    // @Parameters : 1
+    writeCommand(0xE0);
+    writeData(0x01);             // Use reference clock as system clock & Enable PLL
+    wait_us(100);                  // Wait 100us to let the PLL stable
+    writeCommand(0xE0);             // Set PLL
+    writeData(0x03);             // Use PLL output as system clock & Enable PLL
+    wait_us(100); 
+
+    // Software Reset ---------------------------------------------------------
+    writeCommand(0x01);
+    wait_us(100);   
+
+    // Set LSHIFT Frequency ---------------------------------------------------
+    // @Parameters : 3
+    writeCommand(0xE6);             // Set LSHIFT Frequency
+    writeData(0x03);             // LCDC_FPR[19:16] : The highest 4 bits for the pixel clock frequency settings
+    writeData(0xFF);             // LCDC_FPR[15:8]  : The higher byte for the pixel clock frequency settings
+    writeData(0xFF);             // LCDC_FPR[7:0]   : The low byte for the pixel clock frequency settings
+
+    // Set LCD Mode
+    // @Parameters : 7
+    writeCommand(0xB0);
+    /*
+    writeData(0x00);             // A[5..0] TFT
+    //writeData(0x10);
+    writeData(0x00);             // B[7..5]   : Hsync+Vsync +DE mode & TFT mode
+    //writeData(0x80);
+    writeData((HDP>>8)&0xFF);    // HPS[10:8] : Set the horizontal panel size (POR = 010)
+    writeData(HDP&0xFF);         // HPS[7:0]  : Set the horizontal panel size (POR = 01111111)
+    writeData((VDP>>8)&0xFF);    // VPS[10:8] : Set the vertical panel size (POR = 001)
+    writeData(VDP&0xFF);         // VPS[7:0]  : Set the vertical panel size (POR = 11011111)
+    writeData(0x00);             // G[5..0]   : Even line RGB sequence & Odd line RGB sequence
+    */
+    writeData(0x10);                // set 18-bit for 7" panel TY700TFT800480
+    writeData(0x80);                // set TTL mode
+    writeData((DISP_HOR_RESOLUTION-1)>>8); //Set panel size
+    writeData(DISP_HOR_RESOLUTION-1);
+    writeData((DISP_VER_RESOLUTION-1)>>8);
+    writeData(DISP_VER_RESOLUTION-1);
+    writeData(0x00);
+    
+    
+    // Set Horizontal Period --------------------------------------------------
+    // @Parameters : 8
+    writeCommand(0xB4);
+    /*
+    writeData((HT>>8)&0xFF);     // HT[10:8]   : High byte of horizontal total period (display + non-display) in pixel clock
+    writeData(HT&0xFF);          // HT[7:0]    : Low byte of the horizontal total period (display + non-display) in pixel clock
+    writeData((HPS>>8)&0xFF);    // HPS[10:8]  : High byte of the non-display period between the start of the horizontal sync (LLINE) signal
+    writeData(HPS&0xFF);         // HPS[7:0]   : Low byte of the non-display period between the start of the horizontal sync (LLINE) signal
+    writeData(HPW&0xFF);         // HPW[6:0]   : Set the horizontal sync pulse width (LLINE) in pixel clock
+    writeData((LPS>>8)&0xFF);    // LPS[10:8]  : Set the horizontal sync pulse (LLINE) start location in pixel clock
+    writeData(LPS&0xFF);         // LPS[7:0]   : Set the horizontal sync pulse width (LLINE) in start.
+    writeData(0x00);             // LPSPP[1:0] : Set the horizontal sync pulse subpixel start position
+    */
+    #define HT (DISP_HOR_RESOLUTION+DISP_HOR_PULSE_WIDTH+DISP_HOR_BACK_PORCH+DISP_HOR_FRONT_PORCH)
+    writeData((HT-1)>>8);   
+    writeData(HT-1);
+    #define HPS (DISP_HOR_PULSE_WIDTH+DISP_HOR_BACK_PORCH)
+    writeData((HPS-1)>>8);
+    writeData(HPS-1);
+    writeData(DISP_HOR_PULSE_WIDTH-1);
+    writeData(0x00);
+    writeData(0x00);
+    writeData(0x00);
+    
+    // Set Vertical Period ----------------------------------------------------
+    // @Parameters : 7
+    writeCommand(0xB6);
+    /*
+    writeData((VT>>8)&0xFF);     // VT[10:8]  : High byte of the vertical total (display + non-display) period in lines
+    writeData(VT&0xFF);          // VT[7:0]   : Low byte of the vertical total (display + non-display) period in lines
+    writeData((VPS>>8)&0xFF);    // VPS[10:8] : High byte the non-display period in lines between the start of the frame and the first display data in line
+    writeData(VPS&0xFF);         // VPS[7:0]  : The non-display period in lines between the start of the frame and the first display data in line
+    writeData(VPW&0xFF);         // VPW[6:0]  : Set the vertical sync pulse width (LFRAME) in lines
+    writeData((FPS>>8)&0xFF);    // FPS[10:8] : High byte of the vertical sync pulse (LFRAME) start location in lines
+    writeData(FPS&0xFF);         // FPS[7:0]  : Low byte of the vertical sync pulse (LFRAME) start location in lines
+    */
+    #define VT (DISP_VER_PULSE_WIDTH+DISP_VER_BACK_PORCH+DISP_VER_FRONT_PORCH+DISP_VER_RESOLUTION)
+    writeData((VT-1)>>8);
+    writeData(VT-1);
+    #define VSP (DISP_VER_PULSE_WIDTH+DISP_VER_BACK_PORCH)
+    writeData((VSP-1)>>8);
+    writeData(VSP-1);
+    writeData(DISP_VER_PULSE_WIDTH-1);
+    writeData(0x00);
+    writeData(0x00);
+    
+    // Set GPIO Value ---------------------------------------------------------
+    // @Parameters : 1
+    writeCommand(0xBA);
+    writeData(0x05);             // A[3..0] : GPIO[2:0] Output 1
+    
+    // Set GPIO Configuration
+    // @Parameters : 2
+    writeCommand(0xB8);
+    writeData(0x07);             // A[7..0] : GPIO3 = Input, GPIO[2:0] = Output
+    writeData(0x01);             // B[0] : GPIO0 Normal
+    
+        //Set pixel format, i.e. the bpp
+    writeCommand(0x3A);
+    writeData(0x55);                // set 16bpp
+
+    // Set Address Mode -------------------------------------------------------
+    // @Parameters : 1
+    //writeCommand(0x36);             // Set Rotation
+    //writeData(0x00);             // A[7..0] : Set the read order from host processor to frame buffer by A[7:5] and A[3] and 
+                                                       // from frame buffer to the display panel by A[2:0] and A[4].
+                                                       // A[7] : Page address order
+    // Set Pixel Data Interface -----------------------------------------------
+    // @Parameters : 1
+    writeCommand(0xF0);             // A[2:0] : Pixel Data Interface Format
+    writeData(0x03);             // 16-bit (565 format)
+    wait_us(100);
+    
+    // enter_partial_mode
+    //writeCommand(0x12);             // Part of the display area is used for image display
+    // set_display_on
+    writeCommand(0x29);             // Show the image on the display device
+    
+    //writeCommand(0x2C);
+}
+
+void SSD1963::fillScreen(uint16_t color){
+    
+    uint16_t start_x = 0;
+    uint16_t end_x   = 799;
+    uint16_t start_y = 0;
+    uint16_t end_y   = 479;
+    
+    writeCommand(0x2A);
+    //nCS_LOW;
+    writeData(start_x>>8);
+    writeData(start_x);
+    writeData(end_x>>8);
+    writeData(end_x);
+    //nCS_HIGH;
+    writeCommand(0x2B);
+    //nCS_LOW;
+    writeData(start_y>>8);
+    writeData(start_y);
+    writeData(end_y>>8);
+    writeData(end_y);
+    //nCS_HIGH;
+    
+    writeCommand(0x2C);
+
+    uint16_t i,j;
+    for(i=0;i<800;i++){
+        for (j=0;j<480;j++){
+            writeData(color);
+        }
+    }
+}
+
+// - Color RGB R5 G6 B5 -------------------------------------------------------
+uint16_t SSD1963::Color565(uint8_t r, uint8_t g, uint8_t b) {
+  uint16_t c;
+  c = r >> 3;
+  c <<= 6;
+  c |= g >> 2;
+  c <<= 5;
+  c |= b >> 3;
+  return c;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SSD1963/SSD1963.h	Fri Apr 18 04:16:35 2014 +0000
@@ -0,0 +1,323 @@
+/*****************************************************************************
+ * Project      : 7" TFT LCD 800x480 [AT070TN92]
+ * Compiler     : mbed Online
+ * Type         : Libraries
+ * Comment      : Support mbed ST Nucleo Board.
+ *              : Support Chip = SSD1963
+ * File         : SSD1963.h
+ *
+ * Author       : Mr.Thongchai Artsamart [Bird Techstep]
+ * E-Mail       : t.artsamart@gmail.com
+ *              : tbird_th@hotmail.com
+ * Start Date   : 20/03/2014 [dd/mm/yyyy]
+ * Version Date : 20/03/2014 [dd/mm/yyyy]
+ * Licensed under a Creative Commons Attribution-ShareAlike 3.0 License.
+ *****************************************************************************
+ * Remark    : Thank you -. no1wudi [CooCox]
+ *                       -.
+ *****************************************************************************/
+#ifndef __SSD1963_H_
+#define __SSD1963_H_
+//#include "mbed.h"
+
+    /*********************************************************************
+    * Overview: Image orientation (can be 0, 90, 180, 270 degrees).
+    *********************************************************************/  
+    #define DISP_ORIENTATION    0
+    /*********************************************************************
+    * Overview: Panel Data Width (R,G,B) in (6,6,6)
+    *********************************************************************/
+    #define DISP_DATA_WIDTH                 18
+    /*********************************************************************
+    * Overview: Horizontal and vertical display resolution
+    *                  (from the glass datasheet).
+    *********************************************************************/
+    #define DISP_HOR_RESOLUTION 800
+    #define DISP_VER_RESOLUTION 480
+    /*********************************************************************
+    * Overview: Horizontal synchronization timing in pixels
+    *                  (from the glass datasheet).
+    *********************************************************************/
+    #define DISP_HOR_PULSE_WIDTH        1
+    #define DISP_HOR_BACK_PORCH         210
+    #define DISP_HOR_FRONT_PORCH        45  
+    /*********************************************************************
+    * Overview: Vertical synchronization timing in lines
+    *                  (from the glass datasheet).
+    *********************************************************************/
+    #define DISP_VER_PULSE_WIDTH        1
+    #define DISP_VER_BACK_PORCH         34  
+    #define DISP_VER_FRONT_PORCH        10
+
+/*********************************************************************
+* Overview: Some basic colors definitions.
+*********************************************************************/
+#define BLACK               RGB565CONVERT(0,    0,      0)
+#define BRIGHTBLUE          RGB565CONVERT(0,    0,      255)
+#define BRIGHTGREEN         RGB565CONVERT(0,    255,    0)
+#define BRIGHTCYAN          RGB565CONVERT(0,    255,    255)
+#define BRIGHTRED           RGB565CONVERT(255,  0,      0)
+#define BRIGHTMAGENTA       RGB565CONVERT(255,  0,      255)
+#define BRIGHTYELLOW        RGB565CONVERT(255,  255,    0)
+#define BLUE                RGB565CONVERT(0,    0,      128)
+#define GREEN               RGB565CONVERT(0,    128,    0)
+#define CYAN                RGB565CONVERT(0,    128,    128)
+#define RED                 RGB565CONVERT(128,  0,      0)
+#define MAGENTA             RGB565CONVERT(128,  0,      128)
+#define BROWN               RGB565CONVERT(255,  128,    0)
+#define LIGHTGRAY           RGB565CONVERT(128,  128,    128)
+#define DARKGRAY            RGB565CONVERT(64,   64,     64)
+#define LIGHTBLUE           RGB565CONVERT(128,  128,    255)
+#define LIGHTGREEN          RGB565CONVERT(128,  255,    128)
+#define LIGHTCYAN           RGB565CONVERT(128,  255,    255)
+#define LIGHTRED            RGB565CONVERT(255,  128,    128)
+#define LIGHTMAGENTA        RGB565CONVERT(255,  128,    255)
+#define YELLOW              RGB565CONVERT(255,  255,    128)
+#define WHITE               RGB565CONVERT(255,  255,    255)
+                            
+#define GRAY0               RGB565CONVERT(224,  224,    224)
+#define GRAY1               RGB565CONVERT(192,  192,    192)   
+#define GRAY2               RGB565CONVERT(160,  160,    160)   
+#define GRAY3               RGB565CONVERT(128,  128,    128)
+#define GRAY4               RGB565CONVERT(96,   96,     96)
+#define GRAY5               RGB565CONVERT(64,   64,     64)
+#define GRAY6               RGB565CONVERT(32,   32,     32)
+
+// PB0 PB1 PB2 PB6 PB7
+// RST nCS nRD nWR nRS
+  // - LCD_CS -----------------------------------------------------------------
+  #define CS_HIGH    {GPIOB->BSRRL = GPIO_BSRR_BS_1;}
+  #define CS_LOW     {GPIOB->BSRRH = GPIO_BSRR_BS_1;}
+  // - LCD_RS -----------------------------------------------------------------
+  #define RS_HIGH    {GPIOB->BSRRL = GPIO_BSRR_BS_7;}
+  #define RS_LOW     {GPIOB->BSRRH = GPIO_BSRR_BS_7;}
+  // - LCD_WR -----------------------------------------------------------------
+  #define WR_HIGH    {GPIOB->BSRRL = GPIO_BSRR_BS_6;}
+  #define WR_LOW     {GPIOB->BSRRH = GPIO_BSRR_BS_6;}
+  #define WR_STROBE  {WR_LOW; WR_HIGH;}
+  // - LCD_RD -----------------------------------------------------------------
+  #define RD_HIGH    {GPIOB->BSRRL = GPIO_BSRR_BS_2;}
+  #define RD_LOW     {GPIOB->BSRRH = GPIO_BSRR_BS_2;}
+  // - LCD_RST ----------------------------------------------------------------
+  #define RST_HIGH   {GPIOB->BSRRL = GPIO_BSRR_BS_0;}
+  #define RST_LOW    {GPIOB->BSRRH = GPIO_BSRR_BS_0;}
+  
+/*
+// Section : SSD1963 Command --------------------------------------------------
+// - HX83XX Register Names ----------------------------------------------------
+#define COL_ADD_START_HI  0x02  // W/R -   SC[15:8] (8'b0000_0000)
+#define COL_ADD_START_LO  0x03  // W/R -   SC[7:0] (8'b0000_0000)
+
+#define COL_ADD_END_HI    0x04  // W/R -   EC[15:8] (8'b0000_0000)
+#define COL_ADD_END_LO    0x05  // W/R -   EC[7:0] (8'b1110_1111)
+
+#define ROW_ADD_START_HI  0x06  // W/R -   SP[15:8] (8'b0000_0000)
+#define ROW_ADD_START_LO  0x07  // W/R -   SP[7:0] (8'b0000_00000)
+
+#define ROW_ADD_END_HI    0x08  // W/R -   EP[15:8] (8'b0000_0001)
+#define ROW_ADD_END_LO    0x09  // W/R -   EP[7:0] (8'b0011_1111)
+
+//#define MEM_ACCESS        0x16  // W/R -   MY(0) MX(0) MV(0) ML(0) BGR(0) - - -
+#define MEM_ACCESS        0x36
+//#define SRAM_WRITE        0x22  // W/R SRAM Write
+#define SRAM_WRITE        0x2C
+*/
+/*
+#define Com_NOP                 0x00   // brief No opeation
+#define Com_Reset               0x01   // brief Software reset
+#define Com_GetPowerMode        0x0A   // brief Get power mode
+#define Com_GetAddressMode      0x0B   // brief Get the frame memory t the display panel read order
+#define Com_GetPixelFormat      0x0C   // brief Get the current pixel format
+#define Com_GetDisplayModule    0x0D   // brief Get the current display format
+#define Com_GetSignalMode       0x0E   // brief Get the display mode from peripharel
+#define Com_EnterSleepMode      0x10   // brief Enter the sleep mode
+#define Com_ExitSleepMode       0x11   // brief Turn on the panel
+#define Com_EnterPartialMode    0x12   // brief Enter partial mode
+#define Com_EnterNormalMode     0x13   // brief Enter normal mode
+#define Com_ExitInvertMode      0x20   // brief Exit the invert mode
+#define Com_EnterInvertMode     0x21
+
+#define Com_SetGammaCurve       0x26
+
+#define Com_SetDisplayOff       0x28
+#define Com_SetDisplayOn        0x29
+
+#define Com_SetColumnAddress    0x2A
+
+#define Com_SetPageAddress      0x2B
+
+#define Com_WriteMemory         0x2C
+
+#define Com_ReadMomery          0x2E
+
+#define Com_SetPartialArea      0x30
+
+#define Com_SetScrollArea       0x33
+
+#define Com_SetTearOff          0x34
+#define Com_SetTearOn           0x35
+
+#define Com_SetAddressMode      0x36
+
+#define Com_SetScrollStart      0x37
+
+#define Com_ExtiIdleMode        0x38
+#define Com_EnterIdleMode       0x39
+
+#define Com_SetPixelFormat      0x3A
+
+#define Com_WriteMemoryContinue 0x3C
+
+#define Com_ReadMemoryContinue  0x3E
+
+#define Com_SetTearScanLine     0x44
+#define Com_GetTearScanLine     0x45
+
+#define Com_GetDDB              0xA1
+
+#define Com_SetLCDMode          0xB0
+#define Com_GetLCDMode          0xB1
+
+#define Com_SetHoriPeriod       0xB4
+#define Com_GetHoriPeriod       0xB5
+
+#define Com_SetVertPeriod       0xB6
+#define Com_GetVertPeriod       0xB7
+
+#define Com_SetGPIOConf         0xB8
+#define Com_GetGPIOConf         0xB9
+
+#define Com_SetGPIOValue        0xBA
+
+#define Com_GetGPIOStatus       0xBB
+
+#define Com_SetPostProcessor    0xBC
+#define Com_GetPostProcessor    0xBD
+
+#define Com_SetPWMConf          0xBE
+#define Com_GetPWMConf          0xBF
+
+#define Com_SetLCDGenerator0    0xC0
+#define Com_GetLCDGenerator0    0xC1
+
+#define Com_SetLCDGenerator1    0xC2
+#define Com_GetLCDGenerator1    0xC3
+
+#define Com_SetLCDGenerator2    0xC4
+#define Com_GetLCDGenerator2    0xC5
+
+#define Com_SetLCDGenerator3    0xC6
+#define Com_GetLCDGenerator3    0xC7
+
+#define Com_SetDynamicBackLightConf      0xD0
+#define Com_GetDynamicBackLightConf      0xD1
+
+#define Com_SetDynamicBackLightThreshold 0xD4
+#define Com_GetDynamicBackLightThreshold 0xD5
+
+#define Com_SetPLLStart         0xE0
+
+#define Com_SetPLLConfig        0xE2
+#define Com_GetPLLConfig        0xE3
+
+#define Com_GetPLLStatus        0xE4
+
+#define Com_SetDeepSleepMode    0xE5
+
+#define Com_GetPixelClock       0xE7
+#define Com_SetPixelClock       0xE6
+
+#define Com_SetPixelInterface   0xF0
+#define Com_GetPixelInterface   0xF1
+*/
+// End : SSD1963 Command ------------------------------------------------------
+
+#define swap(a, b) { int16_t t = a; a = b; b = t; }
+
+class SSD1963 {
+  public:
+    SSD1963();
+    void init(void);
+    void begin(void);
+    void reset(void);
+    
+    //void drawPixel(uint16_t x, uint16_t y, uint16_t color);
+    void fillScreen(uint16_t color);
+    //void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
+    //void drawVerticalLine(uint16_t x, uint16_t y, uint16_t length, uint16_t color);
+    //void drawHorizontalLine(uint16_t x, uint16_t y, uint16_t length, uint16_t color);
+    //void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
+    //void fillTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t color);
+    //void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
+    //void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
+    //void drawRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);
+    //void fillRoundRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t radius, uint16_t color);
+    //void drawCircle(uint16_t x0, uint16_t y0, uint16_t r,   uint16_t color);
+    //void fillCircle(uint16_t x0, uint16_t y0, uint16_t r,   uint16_t color);
+    
+    //void setCursor(uint16_t x, uint16_t y);
+    //void setTextColor(uint16_t c);
+    //void setTextColor(uint16_t c, uint16_t bg);
+    //void setTextSize(uint8_t s);
+    //void setTextWrap(bool w);
+    //void drawChar(uint16_t x, uint16_t y, unsigned char c, uint16_t color, uint16_t bg, uint8_t size);
+    //void drawBitmap(uint16_t x, uint16_t y, const uint8_t *bitmap, uint16_t w, uint16_t h, uint16_t color);
+    
+    //virtual size_t write(uint8_t);
+    
+    uint16_t Color565(uint8_t r, uint8_t g, uint8_t b);
+    //uint8_t readID(void);
+
+    //void setRotation(uint8_t x);
+    //uint8_t getRotation();
+    // These methods are public in order for BMP examples to work:
+    //void setAddrWindow(int x1, int y1, int x2, int y2);
+    //void pushColors(uint16_t *data, uint8_t len, bool first);
+    
+    // - Low Level ------------------------------------------------------------
+    void writeData(uint16_t data);
+    void writeCommand(uint16_t cmd);
+    uint16_t readData(void);
+    void writeRegister(uint16_t addr, uint16_t data);
+
+    //void writeData8(uint8_t d);
+    //void writeData16(uint16_t d);
+    //void writeCommand(uint8_t c);
+    //uint8_t readData8(void);
+    //uint16_t readData16(void);
+    //void writeRegister(uint8_t addr, uint8_t data);
+    //void writeRegisterPair(uint8_t aH, uint8_t aL, uint16_t d);
+    
+    //uint16_t width();
+    //uint16_t height();
+    
+    static const uint16_t TFTWIDTH  = 800;
+    static const uint16_t TFTHEIGHT = 480;
+    
+    //void writeData_unsafe(uint16_t d);
+    //void setWriteDir(void);
+    //void setReadDir(void);
+    
+    //void write8(uint8_t d);
+    
+  private:
+    //void init(void);
+    //void flood(uint16_t color, uint32_t len);
+    
+    //void drawCircleHelper(uint16_t x0, uint16_t y0, uint16_t r, uint8_t corner, uint16_t color);
+    //void fillCircleHelper(uint16_t x0, uint16_t y0, uint16_t r, uint8_t corner, uint16_t delta, uint16_t color);
+    
+    //uint8_t read8(void);
+
+  protected:
+    //uint16_t _width, _height;
+    //uint8_t  textsize;
+    //uint16_t cursor_x, cursor_y;
+    //uint16_t textcolor;
+    //uint16_t textbgcolor;
+    //uint8_t  rotation;
+    //uint8_t  driver;
+    //bool wrap;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SSD1963/tFontLCD.c	Fri Apr 18 04:16:35 2014 +0000
@@ -0,0 +1,240 @@
+/*****************************************************************************
+ * Project      : 7" TFT LCD 800x480 [AT070TN92]
+ * Compiler     : mbed Online
+ * Type         : Libraries
+ * Comment      : Support mbed ST Nucleo Board.
+ *              : Support Chip = SSD1963
+ * File         : tFontLCD.c
+ *
+ * Author       : Mr.Thongchai Artsamart [Bird Techstep]
+ * E-Mail       : t.artsamart@gmail.com
+ *              : tbird_th@hotmail.com
+ * Start Date   : 20/03/2014 [dd/mm/yyyy]
+ * Version Date : 20/03/2014 [dd/mm/yyyy]
+ * Licensed under a Creative Commons Attribution-ShareAlike 3.0 License.
+ *****************************************************************************
+ * Remark    : 
+ *             
+ *****************************************************************************/
+static unsigned char tfont[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x20] :  32 Char : Space
+  0x00, 0x00, 0xf0, 0xf8, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x00, // [0x21] :  33 Char : ! 
+  0x00, 0x1e, 0x1e, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x22] :  34 Char : " 
+  0x20, 0xf8, 0xf8, 0x20, 0xf8, 0xf8, 0x20, 0x00, 0x04, 0x1f, 0x1f, 0x04, 0x1f, 0x1f, 0x04, 0x00, // [0x23] :  35 Char : # 
+  0x30, 0x78, 0xc8, 0xce, 0x88, 0x38, 0x30, 0x00, 0x0c, 0x1c, 0x10, 0x71, 0x11, 0x1f, 0x0e, 0x00, // [0x24] :  36 Char : $ 
+  0x30, 0x78, 0x30, 0x80, 0xc0, 0x60, 0x38, 0x00, 0x1c, 0x06, 0x03, 0x01, 0x0c, 0x1e, 0x0c, 0x00, // [0x25] :  37 Char : % 
+  0x00, 0xb0, 0xf8, 0xe8, 0xf8, 0xb0, 0x80, 0x00, 0x0f, 0x1f, 0x18, 0x1b, 0x0f, 0x1f, 0x10, 0x00, // [0x26] :  38 Char : & 
+  0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x27] :  39 Char : ' 
+  0x00, 0x00, 0xf0, 0xf8, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x30, 0x20, 0x00, 0x00, // [0x28] :  40 Char : ( 
+  0x00, 0x00, 0x04, 0x0c, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x1f, 0x0f, 0x00, 0x00, // [0x29] :  41 Char : ) 
+  0x00, 0x40, 0xc0, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x01, 0x05, 0x07, 0x03, 0x07, 0x05, 0x01, 0x00, // [0x2A] :  42 Char : * 
+  0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x07, 0x07, 0x01, 0x01, 0x00, // [0x2B] :  43 Char : + 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3c, 0x1c, 0x00, 0x00, 0x00, // [0x2C] :  44 Char : , 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, // [0x2D] :  45 Char : - 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, // [0x2E] :  46 Char : . 
+  0x00, 0x00, 0x00, 0xc0, 0xf0, 0x7c, 0x1c, 0x00, 0x00, 0x1c, 0x1f, 0x07, 0x01, 0x00, 0x00, 0x00, // [0x2F] :  47 Char : / 
+  0xe0, 0xf0, 0x18, 0x88, 0x18, 0xf0, 0xe0, 0x00, 0x07, 0x0f, 0x18, 0x11, 0x18, 0x0f, 0x07, 0x00, // [0x30] :  48 Char : 0 
+  0x00, 0x20, 0x30, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, // [0x31] :  49 Char : 1 
+  0x10, 0x18, 0x08, 0x88, 0xc8, 0x78, 0x30, 0x00, 0x1c, 0x1e, 0x13, 0x11, 0x10, 0x18, 0x18, 0x00, // [0x32] :  50 Char : 2 
+  0x10, 0x18, 0x08, 0x88, 0x88, 0xf8, 0x70, 0x00, 0x08, 0x18, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x33] :  51 Char : 3 
+  0x80, 0xc0, 0x60, 0x30, 0xf8, 0xf8, 0x00, 0x00, 0x03, 0x03, 0x02, 0x12, 0x1f, 0x1f, 0x12, 0x00, // [0x34] :  52 Char : 4 
+  0xf8, 0xf8, 0x88, 0x88, 0x88, 0x88, 0x08, 0x00, 0x08, 0x18, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x35] :  53 Char : 5 
+  0xc0, 0xe0, 0xb0, 0x98, 0x88, 0x80, 0x00, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x36] :  54 Char : 6 
+  0x18, 0x18, 0x08, 0x88, 0xe8, 0x78, 0x18, 0x00, 0x00, 0x00, 0x1e, 0x1f, 0x01, 0x00, 0x00, 0x00, // [0x37] :  55 Char : 7 
+  0x70, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0x70, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x38] :  56 Char : 8 
+  0x70, 0xf8, 0x88, 0x88, 0x88, 0xf8, 0xf0, 0x00, 0x00, 0x10, 0x10, 0x18, 0x0c, 0x07, 0x03, 0x00, // [0x39] :  57 Char : 9 
+  0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0d, 0x00, 0x00, 0x00, // [0x3A] :  58 Char : : 
+  0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1d, 0x0d, 0x00, 0x00, 0x00, // [0x3B] :  59 Char : ; 
+  0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x10, 0x00, 0x00, 0x01, 0x03, 0x06, 0x0c, 0x18, 0x10, 0x00, // [0x3C] :  60 Char : < 
+  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, // [0x3D] :  61 Char : = 
+  0x00, 0x10, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x10, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x00, // [0x3E] :  62 Char : > 
+  0x30, 0x38, 0x08, 0x08, 0x88, 0xf8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x1b, 0x00, 0x00, 0x00, // [0x3F] :  63 Char : ? 
+  0xf0, 0xf8, 0x08, 0xc8, 0xc8, 0xf8, 0xf0, 0x00, 0x0f, 0x1f, 0x10, 0x17, 0x17, 0x17, 0x03, 0x00, // [0x40] :  64 Char : @ 
+  0xc0, 0xe0, 0x30, 0x18, 0x30, 0xe0, 0xc0, 0x00, 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x1f, 0x1f, 0x00, // [0x41] :  65 Char : A 
+  0x08, 0xf8, 0xf8, 0x88, 0x88, 0xf8, 0x70, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x42] :  66 Char : B 
+  0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x07, 0x0f, 0x18, 0x10, 0x10, 0x18, 0x0c, 0x00, // [0x43] :  67 Char : C 
+  0x08, 0xf8, 0xf8, 0x08, 0x18, 0xf0, 0xe0, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x18, 0x0f, 0x07, 0x00, // [0x44] :  68 Char : D 
+  0x08, 0xf8, 0xf8, 0x88, 0xc8, 0x18, 0x38, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x11, 0x18, 0x1c, 0x00, // [0x45] :  69 Char : E 
+  0x08, 0xf8, 0xf8, 0x88, 0xc8, 0x18, 0x38, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x01, 0x00, 0x00, 0x00, // [0x46] :  70 Char : F 
+  0xe0, 0xf0, 0x18, 0x08, 0x08, 0x18, 0x30, 0x00, 0x07, 0x0f, 0x18, 0x11, 0x19, 0x0f, 0x1f, 0x00, // [0x47] :  71 Char : G 
+  0xf8, 0xf8, 0x80, 0x80, 0x80, 0xf8, 0xf8, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, // [0x48] :  72 Char : H 
+  0x00, 0x00, 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, // [0x49] :  73 Char : I 
+  0x00, 0x00, 0x00, 0x08, 0xf8, 0xf8, 0x08, 0x00, 0x0e, 0x1e, 0x10, 0x10, 0x1f, 0x0f, 0x00, 0x00, // [0x4A] :  74 Char : J 
+  0x08, 0xf8, 0xf8, 0x80, 0xc0, 0x78, 0x38, 0x00, 0x10, 0x1f, 0x1f, 0x01, 0x03, 0x1e, 0x1c, 0x00, // [0x4B] :  75 Char : K 
+  0x08, 0xf8, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x18, 0x1c, 0x00, // [0x4C] :  76 Char : L 
+  0xf8, 0xf8, 0x70, 0xe0, 0x70, 0xf8, 0xf8, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, // [0x4D] :  77 Char : M 
+  0xf8, 0xf8, 0x70, 0xe0, 0xc0, 0xf8, 0xf8, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x01, 0x1f, 0x1f, 0x00, // [0x4E] :  78 Char : N 
+  0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x4F] :  79 Char : O 
+  0x08, 0xf8, 0xf8, 0x88, 0x88, 0xf8, 0x70, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, // [0x50] :  80 Char : P 
+  0xf0, 0xf8, 0x08, 0x08, 0x08, 0xf8, 0xf0, 0x00, 0x0f, 0x1f, 0x10, 0x1c, 0x78, 0x7f, 0x4f, 0x00, // [0x51] :  81 Char : Q 
+  0x08, 0xf8, 0xf8, 0x88, 0x88, 0xf8, 0x70, 0x00, 0x10, 0x1f, 0x1f, 0x00, 0x01, 0x1f, 0x1f, 0x00, // [0x52] :  82 Char : R 
+  0x30, 0x78, 0xc8, 0x88, 0x08, 0x38, 0x30, 0x00, 0x0c, 0x1c, 0x10, 0x11, 0x13, 0x1e, 0x0c, 0x00, // [0x53] :  83 Char : S 
+  0x38, 0x18, 0x08, 0xf8, 0xf8, 0x08, 0x18, 0x38, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, // [0x54] :  84 Char : T 
+  0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x55] :  85 Char : U 
+  0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x03, 0x07, 0x0c, 0x18, 0x0c, 0x07, 0x03, 0x00, // [0x56] :  86 Char : V 
+  0xf8, 0xf8, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x00, 0x07, 0x1f, 0x18, 0x0e, 0x18, 0x1f, 0x07, 0x00, // [0x57] :  87 Char : W 
+  0x18, 0x78, 0xe0, 0x80, 0x80, 0xe0, 0x78, 0x18, 0x18, 0x1e, 0x07, 0x01, 0x01, 0x07, 0x1e, 0x18, // [0x58] :  88 Char : X 
+  0x78, 0xf8, 0x80, 0x00, 0x00, 0x80, 0xf8, 0x78, 0x00, 0x00, 0x11, 0x1f, 0x1f, 0x11, 0x00, 0x00, // [0x59] :  89 Char : Y 
+  0x38, 0x18, 0x08, 0x88, 0xc8, 0x78, 0x38, 0x00, 0x1c, 0x1e, 0x13, 0x11, 0x10, 0x18, 0x1c, 0x00, // [0x5A] :  90 Char : Z 
+  0x00, 0x00, 0xfc, 0xfc, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x20, 0x20, 0x00, 0x00, // [0x5B] :  91 Char : [ 
+  0x00, 0x1c, 0x7c, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1f, 0x1c, 0x00, // [0x5C] :  92 Char : BackSlash 
+  0x00, 0x00, 0x04, 0x04, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3f, 0x3f, 0x00, 0x00, // [0x5D] :  93 Char : ] 
+  0x10, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x5E] :  94 Char : ^ 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, // [0x5F] :  95 Char : _ 
+  0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x60] :  96 Char : ` 
+  0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x1e, 0x12, 0x12, 0x0f, 0x1f, 0x10, 0x00, // [0x61] :  97 Char : a 
+  0x08, 0xf8, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x10, 0x11, 0x1f, 0x0e, 0x00, // [0x62] :  98 Char : b 
+  0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x10, 0x19, 0x09, 0x00, // [0x63] :  99 Char : c 
+  0x00, 0x00, 0x80, 0x80, 0xf8, 0xf8, 0x00, 0x00, 0x0e, 0x1f, 0x11, 0x10, 0x0f, 0x1f, 0x10, 0x00, // [0x64] : 100 Char : d 
+  0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0f, 0x1f, 0x12, 0x12, 0x12, 0x1b, 0x0b, 0x00, // [0x65] : 101 Char : e 
+  0x00, 0x40, 0xf0, 0xf8, 0x48, 0x18, 0x30, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, // [0x66] : 102 Char : f 
+  0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x4f, 0x9f, 0x90, 0x90, 0xff, 0x7f, 0x00, 0x00, // [0x67] : 103 Char : g 
+  0x08, 0xf8, 0xf8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x01, 0x00, 0x1f, 0x1f, 0x00, // [0x68] : 104 Char : h 
+  0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, // [0x69] : 105 Char : i 
+  0x00, 0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x60, 0xe0, 0x80, 0x80, 0xff, 0x7f, 0x00, // [0x6A] : 106 Char : j 
+  0x08, 0xf8, 0xf8, 0x00, 0x00, 0x80, 0x80, 0x00, 0x10, 0x1f, 0x1f, 0x02, 0x07, 0x1d, 0x18, 0x00, // [0x6B] : 107 Char : k 
+  0x00, 0x00, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, // [0x6C] : 108 Char : l 
+  0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1f, 0x1f, 0x01, 0x1f, 0x01, 0x1f, 0x1f, 0x00, // [0x6D] : 109 Char : m 
+  0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x1f, 0x1f, 0x00, // [0x6E] : 110 Char : n 
+  0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x10, 0x1f, 0x0f, 0x00, // [0x6F] : 111 Char : o 
+  0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0xff, 0xff, 0x90, 0x10, 0x1f, 0x0f, 0x00, // [0x70] : 112 Char : p 
+  0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x0f, 0x1f, 0x10, 0x90, 0xff, 0xff, 0x80, 0x00, // [0x71] : 113 Char : q 
+  0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x11, 0x00, 0x01, 0x03, 0x00, // [0x72] : 114 Char : r 
+  0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x09, 0x13, 0x12, 0x16, 0x14, 0x1c, 0x09, 0x00, // [0x73] : 115 Char : s 
+  0x40, 0x40, 0xf0, 0xf8, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x1f, 0x10, 0x18, 0x08, 0x00, // [0x74] : 116 Char : t 
+  0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x0f, 0x1f, 0x10, 0x00, // [0x75] : 117 Char : u 
+  0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x03, 0x07, 0x0c, 0x18, 0x0c, 0x07, 0x03, 0x00, // [0x76] : 118 Char : v 
+  0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x0f, 0x1f, 0x18, 0x0e, 0x18, 0x1f, 0x0f, 0x00, // [0x77] : 119 Char : w 
+  0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x19, 0x19, 0x0f, 0x06, 0x0f, 0x19, 0x19, 0x00, // [0x78] : 120 Char : x 
+  0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x8f, 0x9f, 0x90, 0x90, 0xd0, 0x7f, 0x3f, 0x00, // [0x79] : 121 Char : y 
+  0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x19, 0x1d, 0x14, 0x16, 0x12, 0x1b, 0x19, 0x00, // [0x7A] : 122 Char : z 
+  0x00, 0x80, 0x80, 0xf8, 0x7c, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x20, 0x20, 0x00, // [0x7B] : 123 Char : { 
+  0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, // [0x7C] : 124 Char : | 
+  0x00, 0x04, 0x04, 0x7c, 0xf8, 0x80, 0x80, 0x00, 0x00, 0x20, 0x20, 0x3f, 0x1f, 0x00, 0x00, 0x00, // [0x7D] : 125 Char : } 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x01, 0x03, 0x02, 0x03, 0x01, 0x00, // [0x7E] : 126 Char : ~ 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x7F] : 127 Char : Delete Character
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x80] : 128 Char : *none
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x40, 0x00, 0x01, 0x01, 0x05, 0x0b, 0x1d, 0x12, 0x0c, 0x00, // [0x81] : 129 Char : Tho Than *
+  0x10, 0x18, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x82] : 130 Char : Sara I - L
+  0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x83] : 131 Char : Sara II - L
+  0x10, 0x10, 0x18, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x84] : 132 Char : Sara Ue - L
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x85] : 133 Char : *none
+  0x10, 0x10, 0x18, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x86] : 134 Char : Sara Uee -L
+  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x87] : 135 Char : Mai Ek - L
+  0x00, 0x01, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x88] : 136 Char : Mai Tho - L
+  0x03, 0x02, 0x01, 0x03, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x89] : 137 Char : Mai Tri - L
+  0x00, 0x00, 0x02, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x8A] : 138 Char : Mai Chattawa - L
+  0x00, 0x02, 0x05, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x8B] : 139 Char : Thanthakhat - L
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x8C] : 140 Char : Mai Ek - H
+  0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x8D] : 141 Char : Mai Tho - H
+  0x00, 0x00, 0x03, 0x02, 0x01, 0x03, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x8E] : 142 Char : Mai Tri - H
+  0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x8F] : 143 Char : Mai Chattawa - H
+  0x00, 0x00, 0x00, 0x02, 0x05, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x90] : 144 Char : Thanthakhat - H
+  0x00, 0x00, 0x00, 0x0e, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x91] : 145 Char : ‘ 
+  0x00, 0x00, 0x10, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x92] : 146 Char : ’ 
+  0x0e, 0x1e, 0x10, 0x00, 0x0e, 0x1e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x93] : 147 Char : “ 
+  0x10, 0x1e, 0x0e, 0x00, 0x10, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x94] : 148 Char : ” 
+  0x00, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x00, // [0x95] : 149 Char : • 
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x96] : 150 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x97] : 151 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x98] : 152 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x99] : 153 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x9A] : 154 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x9B] : 155 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x9C] : 156 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x9D] : 157 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x9E] : 158 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0x9F] : 159 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xA0] : 160 Char : *none
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, // [0xA1] : 161 Char : Ko Kai
+  0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x11, 0x1f, 0x10, 0x10, 0x0f, 0x00, // [0xA2] : 162 Char : Kho Khai
+  0x80, 0x40, 0x80, 0x40, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x01, 0x10, 0x1f, 0x10, 0x10, 0x0f, 0x00, // [0xA3] : 163 Char : Kho Khuat
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x03, 0x1c, 0x02, 0x05, 0x02, 0x00, 0x1f, 0x00, // [0xA4] : 164 Char : Kho Khwai
+  0x80, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0x00, 0x03, 0x1c, 0x02, 0x05, 0x02, 0x00, 0x1f, 0x00, // [0xA5] : 165 Char : Kho Khon
+  0x80, 0x40, 0x80, 0x40, 0x80, 0x00, 0xc0, 0x00, 0x00, 0x0d, 0x12, 0x0f, 0x04, 0x08, 0x1f, 0x00, // [0xA6] : 166 Char : Kho Rakhang
+  0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x11, 0x0f, 0x00, // [0xA7] : 167 Char : Ngo Ngu
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x02, 0x15, 0x1e, 0x10, 0x0f, 0x00, // [0xA8] : 168 Char : Cho Chan
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x02, 0x05, 0x1e, 0x08, 0x04, 0x0e, 0x13, 0x0c, // [0xA9] : 169 Char : Cho Ching
+  0x80, 0x40, 0x80, 0x40, 0x40, 0xa0, 0x10, 0x00, 0x00, 0x11, 0x1f, 0x10, 0x10, 0x0f, 0x00, 0x00, // [0xAA] : 170 Char : Cho Chang
+  0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0xa0, 0x10, 0x00, 0x01, 0x10, 0x1f, 0x10, 0x10, 0x0f, 0x00, // [0xAB] : 171 Char : So So
+  0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0xc0, 0x00, 0x0e, 0x15, 0x0c, 0x12, 0x0f, 0x04, 0x1f, 0x00, // [0xAC] : 172 Char : Cho Choe
+  0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0xc0, 0x00, 0x0e, 0x15, 0x08, 0x40, 0xbf, 0x50, 0x7f, 0x00, // [0xAD] : 173 Char : Yo Ying
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x08, 0x14, 0x4f, 0xa0, 0x40, 0x60, 0xff, 0x00, // [0xAE] : 174 Char : Do Chada
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x08, 0x54, 0xaf, 0x40, 0xa0, 0x40, 0xff, 0x00, // [0xAF] : 175 Char : To Patak
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x40, 0x00, 0x41, 0xa1, 0x45, 0x8b, 0x5d, 0xb2, 0x4c, 0x00, // [0xB0] : 176 Char : Tho Than
+  0x80, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x1f, 0x00, // [0xB1] : 177 Char : Tho Nangmontho
+  0x80, 0x40, 0x80, 0x40, 0x80, 0x00, 0xc0, 0x00, 0x1f, 0x02, 0x0d, 0x12, 0x0f, 0x04, 0x1f, 0x00, // [0xB2] : 178 Char : Tho Phuthao
+  0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0xc0, 0x00, 0x0e, 0x15, 0x08, 0x00, 0x1f, 0x0c, 0x13, 0x0c, // [0xB3] : 179 Char : No Nen
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x03, 0x1c, 0x0a, 0x05, 0x02, 0x00, 0x1f, 0x00, // [0xB4] : 180 Char : Do Dek
+  0x80, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0x00, 0x03, 0x1c, 0x0a, 0x05, 0x02, 0x00, 0x1f, 0x00, // [0xB5] : 181 Char : To Tao
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, 0x00, 0x1f, 0x00, // [0xB6] : 182 Char : Tho Thung
+  0x80, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x01, 0x1f, 0x01, 0x00, 0x00, 0x1f, 0x00, // [0xB7] : 183 Char : Tho Thahan
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x40, 0x00, 0x01, 0x11, 0x1f, 0x11, 0x12, 0x0c, 0x00, 0x00, // [0xB8] : 184 Char : Tho Thong
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0x1f, 0x08, 0x04, 0x0e, 0x13, 0x0c, // [0xB9] : 185 Char : No Nu
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, // [0xBA] : 186 Char : Bo Baimai
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x11, 0x1f, 0x10, 0x10, 0x10, 0x0f, 0x00, // [0xBB] : 187 Char : Po Pla
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0f, 0x11, 0x08, 0x06, 0x08, 0x10, 0x0f, 0x00, // [0xBC] : 188 Char : Pho Phung
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x0f, 0x11, 0x08, 0x06, 0x08, 0x10, 0x0f, 0x00, // [0xBD] : 189 Char : Fo Fa
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x01, 0x1f, 0x08, 0x06, 0x08, 0x1f, 0x00, // [0xBE] : 190 Char : Pho Phan
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x01, 0x1f, 0x08, 0x06, 0x08, 0x1f, 0x00, // [0xBF] : 191 Char : Fo Fan
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x08, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, // [0xC0] : 192 Char : Pho Samphao
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x0c, 0x13, 0x0f, 0x02, 0x04, 0x08, 0x1f, 0x00, // [0xC1] : 193 Char : Mo Ma
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x1b, 0x15, 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, // [0xC2] : 194 Char : Yo Yak
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x40, 0x00, 0x01, 0x01, 0x01, 0x09, 0x15, 0x0e, 0x00, 0x00, // [0xC3] : 195 Char : Ro Rua
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, 0x00, 0xff, 0x00, // [0xC4] : 196 Char : Ru
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x0e, 0x15, 0x09, 0x01, 0x02, 0x04, 0x1f, 0x00, // [0xC5] : 197 Char : Lo Ling
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x08, 0x14, 0x0f, 0x00, 0x00, 0x00, 0xff, 0x00, // [0xC6] : 198 Char : Lu
+  0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x0f, 0x00, // [0xC7] : 199 Char : Wo Waen
+  0x80, 0x40, 0x40, 0x40, 0xc0, 0x40, 0xa0, 0x10, 0x03, 0x1e, 0x02, 0x05, 0x02, 0x00, 0x1f, 0x00, // [0xC8] : 200 Char : So Sala
+  0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x11, 0x1f, 0x12, 0x15, 0x12, 0x0f, 0x01, // [0xC9] : 201 Char : So Rusi
+  0x80, 0x40, 0x40, 0x40, 0xc0, 0x40, 0xa0, 0x10, 0x0e, 0x15, 0x09, 0x01, 0x02, 0x04, 0x1f, 0x00, // [0xCA] : 202 Char : So Sua
+  0x80, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x01, 0x1f, 0x04, 0x02, 0x01, 0x1e, 0x00, // [0xCB] : 203 Char : Ho Hip
+  0x80, 0x40, 0x80, 0x00, 0x20, 0x50, 0xe0, 0x10, 0x00, 0x01, 0x1f, 0x08, 0x06, 0x08, 0x1f, 0x00, // [0xCC] : 204 Char : Lo Chula
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x1e, 0x15, 0x12, 0x10, 0x10, 0x0f, 0x00, // [0xCD] : 205 Char : O Ang
+  0x00, 0x80, 0xc0, 0xc0, 0xc0, 0x40, 0xa0, 0x10, 0x00, 0x1e, 0x15, 0x12, 0x10, 0x10, 0x0f, 0x00, // [0xCE] : 206 Char : Ho Nokhuk
+  0x40, 0xa0, 0xc0, 0x80, 0x40, 0x40, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, // [0xCF] : 207 Char : Paiyannoi
+  0x00, 0x80, 0x40, 0x80, 0x00, 0x80, 0x40, 0x00, 0x00, 0x08, 0x15, 0x19, 0x11, 0x08, 0x04, 0x00, // [0xD0] : 208 Char : Sara A
+  0x00, 0x08, 0x14, 0x18, 0x10, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xD1] : 209 Char : Mai Han-Akat
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, // [0xD2] : 210 Char : Sara Aa
+  0x08, 0x94, 0x48, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, // [0xD3] : 211 Char : Sara Am
+  0x00, 0x10, 0x18, 0x18, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xD4] : 212 Char : Sara I
+  0x00, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xD5] : 213 Char : Sara Ii
+  0x00, 0x10, 0x10, 0x18, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xD6] : 214 Char : Sara Ue
+  0x00, 0x10, 0x10, 0x18, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xD7] : 215 Char : Sara Uee
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x00, // [0xD8] : 216 Char : Sara U
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc0, 0x80, 0xc0, 0x00, // [0xD9] : 217 Char : Sara Uu
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, // [0xDA] : 218 Char : Phinthu
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xDB] : 219 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xDC] : 220 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xDD] : 221 Char : *none
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xDE] : 222 Char : *none
+  0x20, 0xe0, 0x20, 0x20, 0xe0, 0x30, 0xc0, 0x00, 0x10, 0x1f, 0x31, 0x1f, 0x11, 0x11, 0x0e, 0x00, // [0xDF] : 223 Char : Thai Currency Symbol Baht
+  0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, 0x00, // [0xE0] : 224 Char : Sara E
+  0xc0, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, 0x0f, 0x14, 0x08, 0x00, // [0xE1] : 225 Char : Sara Ae
+  0x00, 0x0c, 0x0a, 0x0a, 0xf2, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, // [0xE2] : 226 Char : Sara O
+  0x00, 0x1c, 0x26, 0x1a, 0xc2, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, // [0xE3] : 227 Char : Sara Ai Maimuan
+  0x00, 0x02, 0x04, 0x08, 0xc4, 0x22, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x08, 0x00, // [0xE4] : 228 Char : Sara Ai Maimalai
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, // [0xE5] : 229 Char : Lakkhangyao
+  0xc0, 0x60, 0xa0, 0x40, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, // [0xE6] : 230 Char : Maiyamok
+  0x00, 0x0c, 0x12, 0x0a, 0x14, 0x0a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xE7] : 231 Char : Maitaikhu
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xE8] : 232 Char : Mai Ek
+  0x00, 0x14, 0x1c, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xE9] : 233 Char : Mai Tho
+  0x00, 0x1c, 0x08, 0x04, 0x0c, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xEA] : 234 Char : Mai Tri
+  0x00, 0x00, 0x00, 0x08, 0x1c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xEB] : 235 Char : Mai Chattawa
+  0x00, 0x00, 0x00, 0x08, 0x14, 0x0c, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xEC] : 236 Char : Thanthakhat
+  0x00, 0x00, 0x00, 0x08, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xED] : 237 Char : Nikhahit
+  0x00, 0x00, 0x00, 0x00, 0x0a, 0x15, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [0xEE] : 238 Char : Yamakkan
+  0x00, 0xc0, 0x20, 0xa0, 0xa0, 0x20, 0xc0, 0x00, 0x00, 0x03, 0x04, 0x05, 0x05, 0x04, 0x03, 0x00, // [0xEF] : 239 Char : Fongman
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x07, 0x08, 0x10, 0x10, 0x10, 0x08, 0x07, 0x00, // [0xF0] : 240 Char : Thai Digit Zero
+  0x80, 0xc0, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x03, 0x14, 0x13, 0x10, 0x10, 0x08, 0x07, 0x00, // [0xF1] : 241 Char : Thai Digit One
+  0xf8, 0x00, 0x80, 0xc0, 0x80, 0x40, 0x80, 0x00, 0x1f, 0x10, 0x13, 0x14, 0x13, 0x10, 0x0f, 0x00, // [0xF2] : 242 Char : Thai Digit Two
+  0x00, 0x80, 0x40, 0x80, 0x40, 0x80, 0x00, 0x00, 0x0f, 0x12, 0x0c, 0x01, 0x00, 0x00, 0x1f, 0x00, // [0xF3] : 243 Char : Thai Digit Three
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x30, 0x08, 0x07, 0x08, 0x10, 0x16, 0x19, 0x16, 0x10, 0x00, // [0xF4] : 244 Char : Thai Digit Four
+  0x00, 0x80, 0x60, 0x50, 0x60, 0x40, 0x30, 0x08, 0x07, 0x08, 0x10, 0x16, 0x19, 0x16, 0x10, 0x00, // [0xF5] : 245 Char : Thai Digit Five
+  0x08, 0x30, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x0c, 0x12, 0x1c, 0x10, 0x08, 0x07, 0x00, // [0xF6] : 246 Char : Thai Digit Six
+  0x80, 0x40, 0x80, 0x40, 0x80, 0x00, 0xf0, 0x08, 0x0f, 0x12, 0x0d, 0x00, 0x1f, 0x08, 0x07, 0x00, // [0xF7] : 247 Char : Thai Digit Seven
+  0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x30, 0x08, 0x07, 0x08, 0x10, 0x08, 0x16, 0x09, 0x06, 0x00, // [0xF8] : 248 Char : Thai Digit Eight
+  0x00, 0x80, 0x80, 0x40, 0x40, 0xa0, 0x18, 0x04, 0x0f, 0x12, 0x0c, 0x01, 0x02, 0x04, 0x09, 0x00, // [0xF9] : 249 Char : Thai Digit Nine
+  0x40, 0xa0, 0xc0, 0x80, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, // [0xFA] : 250 Char : Angkhankhu
+  0x80, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0x08, 0x06, 0x08, 0x06, 0x08, 0x04, // [0xFB] : 251 Char : Khomut
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Apr 18 04:16:35 2014 +0000
@@ -0,0 +1,142 @@
+/*****************************************************************************
+ * Project      : 7" TFT LCD 800x480 [AT070TN92]
+ * Compiler     : mbed Online
+ * Type         : Main
+ * Comment      : Support mbed ST Nucleo Board. [Now on ST Nucleo F030R8]
+ *              : Support Chip = SSD1963
+ * File         : main.c
+ *
+ * Author       : Mr.Thongchai Artsamart [Bird Techstep]
+ * E-Mail       : t.artsamart@gmail.com
+ *              : tbird_th@hotmail.com
+ * Start Date   : 20/03/2014 [dd/mm/yyyy]
+ * Version Date : 20/03/2014 [dd/mm/yyyy]
+ * Licensed under a Creative Commons Attribution-ShareAlike 3.0 License.
+ *****************************************************************************
+ * Remark    : Thank you -. no1wudi [CooCox]
+ *                       -.
+ *****************************************************************************/
+#include "mbed.h"
+#include "SSD1963.h"
+//#include "stm32f4xx.h"
+
+// Section : Define panel -----------------------------------------------------
+#define LCD_W 800
+#define LCD_H 480
+
+// Section : Color define -----------------------------------------------------
+#define ColorLightPink          255,182,193
+#define ColorPink               255,192,203
+#define ColorCrimson            220,20,60
+#define ColorLavenderBlush      255,240,245
+#define ColorHotPink            255,105,180
+#define ColorDeepPink           255,20,147
+#define ColorMediumVioletRed    199,21,133
+#define ColorOrchid             218,112,214
+#define ColorPurple             128,0,128
+#define ColorBlue               0,0,255
+#define ColorYellow             255,255,0
+#define ColorOlive              128,128,0
+#define ColorGreen              0,255,0
+#define ColorGold               215,215,0
+#define ColorOrange             255,165,0
+#define ColorRed                255,0,0
+#define ColorWhite              255,255,255
+#define ColorBlack              0,0,0
+#define ColorGlay               128,128,128
+// End : Color define ---------------------------------------------------------
+
+// Section : Pins Connect -----------------------------------------------------
+// Bus PortC
+// RS PA_15
+// WR PA_14
+// RD PA_13
+// CS PA_12
+// RESET PA_11
+
+// Test Fast IO in PortC ------------------------------------------------------
+//#define LCD_PIN_RESET  GPIOA,GPIO_Pin_11
+//#define LCD_PIN_nCS    GPIOA,GPIO_Pin_12
+//#define LCD_PIN_nRD    GPIOA,GPIO_Pin_13
+//#define LCD_PIN_nWR    GPIOA,GPIO_Pin_14
+//#define LCD_PIN_nRS    GPIOA,GPIO_Pin_15
+// End Test Fast IO in PortC --------------------------------------------------
+
+//PortInOut LCD_BUS(PortC, 0xFFFF);
+//BusInOut  LCD_BUS(PC_0,PC_1,PC_2,PC_3,PC_4,PC_5,PC_6,PC_7,PC_8,PC_9,PC_10,PC_11,PC_12,PC_13,PC_14,PC_15);
+//#define LCD_RESET PA_11
+//#define LCD_nCS   PA_12
+//#define LCD_nRD   PA_13
+//#define LCD_nWR   PA_14
+//#define LCD_nRS   PA_15
+//DigitalOut LCD_RESET(PA_11);
+//DigitalOut LCD_nCS(PA_12);
+//DigitalOut LCD_nRD(PA_13);
+//DigitalOut LCD_nWR(PA_14);
+//DigitalOut LCD_nRS(PA_15);
+// End : Pins Connect ---------------------------------------------------------
+
+//SSD1963 MyTFT(LCD_nRS, LCD_nWR, LCD_nRD, LCD_nCS, LCD_RESET, &LCD_BUS);
+//Serial pc(SERIAL_TX, SERIAL_RX);
+SSD1963 MyTFT;
+
+// define timer ms ------------------------------------------------------------
+#define timer_ms 1000
+//=======================================
+int main(void) {
+    /*
+    MyTFT.writeCommand(0x0000);  uint16_t tftID = MyTFT.readData();
+    pc.printf("\n \r");
+    pc.printf("Hello World! Bird Techstep\n \r");
+    pc.printf("TFT LCD Chip No. : ");
+    pc.printf("0x%04x", tftID);
+    pc.printf("\n \r");
+    // Use GPIOC->ODR = Output or GPIOC->IDR = Input
+    */
+    //MyTFT.init();
+    MyTFT.begin();
+   
+    while(1)
+    {
+        MyTFT.fillScreen(MyTFT.Color565(ColorBlack));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorGlay));
+        wait_ms(timer_ms);
+
+        MyTFT.fillScreen(MyTFT.Color565(ColorLightPink));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorPink));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorCrimson));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorLavenderBlush));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorHotPink));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorDeepPink));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorMediumVioletRed));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorOrchid));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorPurple));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorWhite));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorBlue));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorYellow));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorOlive));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorGreen));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorGold));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorOrange));
+        wait_ms(timer_ms);
+        MyTFT.fillScreen(MyTFT.Color565(ColorRed));
+        wait_ms(timer_ms);
+        
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Apr 18 04:16:35 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/ed8466a608b4
\ No newline at end of file