SSD1963 Initial code & test fill screen.
Dependencies: mbed
Revision 0:2714fcd95190, committed 2014-04-18
- 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
diff -r 000000000000 -r 2714fcd95190 SSD1963/SSD1963.cpp --- /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; +} +
diff -r 000000000000 -r 2714fcd95190 SSD1963/SSD1963.h --- /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
diff -r 000000000000 -r 2714fcd95190 SSD1963/tFontLCD.c --- /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
diff -r 000000000000 -r 2714fcd95190 main.cpp --- /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); + + } +}
diff -r 000000000000 -r 2714fcd95190 mbed.bld --- /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