晶聯訊JLX12864G-086-PC-3S LCD顯示屏 C51驅動代碼
//7.1.2 例程:以下為串行方式顯示漢字及 ASCII 字元的例程:
//液晶屏型号:JLX12864G-086-PC-3S
//接口:串行
//中文字庫:帶中文字庫 IC:JLX-GB2312,豎置橫排
//驅動 IC:UC1701X(與 ST7565R 相容)
//主機闆:89C516-001 老主機闆
//單片機:51 系列
//版權所有:深圳市晶聯訊電子有限公司:網址 http://www.jlxlcd.cn;
//程式設計:葉建人,2013 年 10 月 11 日
#include <reg52.H>
#include <intrins.h>
sbit lcd_sclk = P3 ^ 2; //接口定義:lcd_sclk 就是 LCD 的 SCLK
sbit lcd_sid = P3 ^ 1; //接口定義:lcd_sid 就是 LCD 的 SDA
sbit lcd_rs = P3 ^ 0; //接口定義:lcd_rs 就是 LCD 的 RS,也叫“CD”
sbit lcd_reset = P1 ^ 0; //接口定義:lcd_reset 就是 LCD 的 RESET
sbit lcd_cs1 = P1 ^ 1; //接口定義:lcd_cs1 就是 LCD 的 CS1
sbit Rom_IN = P1 ^ 2; //字庫 IC 接口定義:Rom_IN 就是字庫 IC 的 SI
sbit Rom_OUT = P1 ^ 3; //字庫 IC 接口定義:Rom_OUT 就是字庫 IC 的 SO
sbit Rom_SCK = P1 ^ 4; //字庫 IC 接口定義:Rom_SCK 就是字庫 IC 的 SCK
sbit Rom_CS = P1 ^ 5; //字庫 IC 接口定義 Rom_CS 就是字庫 IC 的 CS#
sbit key = P2 ^ 0; //定義一個按鍵
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar code bmp1[];
uchar code jiong1[] = {//-- 文字: 囧 --
//-- 宋體 12; 此字型下對應的點陣為:寬 x 高=16x16 --
0x00,0xFE,0x82,0x42,0xA2,0x9E,0x8A,0x82,0x86,0x8A,0xB2,0x62,0x02,0xFE,0x00,0x00,
0x00,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x7F,0x00,0x00 };
uchar code lei1[] = {//-- 文字: 畾 --
//-- 宋體 12; 此字型下對應的點陣為:寬 x 高=16x16 --
0x80,0x80,0x80,0xBF,0xA5,0xA5,0xA5,0x3F,0xA5,0xA5,0xA5,0xBF,0x80,0x80,0x80,0x00,
0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00 };
//延時
void delay(int n_ms)
{
int j, k;
for (j = 0; j < n_ms; j++)
for (k = 0; k < 110; k++)
;
}
//短延時
void delay_us(int n_us)
{
int j, k;
for (j = 0; j < n_us; j++)
for (k = 0; k < 1; k++)
;
}
//等待一個按鍵,我的主機闆是用 P2.0 與 GND 之間接一個按鍵
void waitkey()
{
repeat:
if (key == 1) goto repeat;
else
delay(600);
}
//寫指令到 LCD 子產品
void transfer_command_lcd(int data1)
{
char i;
lcd_cs1 = 0;
lcd_rs = 0;
for (i = 0; i < 8; i++)
{
lcd_sclk = 0; //delay_us(10); //加少量延時
if (data1 & 0x80)
lcd_sid = 1;
else
lcd_sid = 0;
lcd_sclk = 1; //delay_us(10); //加少量延時
data1 = data1 <<= 1;
}
lcd_cs1 = 1;
}
//寫資料到 LCD 子產品
void transfer_data_lcd(int data1)
{
char i;
lcd_cs1 = 0;
lcd_rs = 1;
for (i = 0; i < 8; i++)
{
lcd_sclk = 0;
if (data1 & 0x80)
lcd_sid = 1;
else
lcd_sid = 0;
lcd_sclk = 1;
data1 = data1 <<= 1;
}
lcd_cs1 = 1;
}
//LCD 子產品初始化
void initial_lcd()
{
lcd_reset = 0; //低電平複位
delay(100);
lcd_reset = 1; //複位完畢
delay(100);
transfer_command_lcd(0xe2); //軟複位
delay(5);
transfer_command_lcd(0x2c); //升壓步聚 1
delay(50);
transfer_command_lcd(0x2e); //升壓步聚 2
delay(50);
transfer_command_lcd(0x2f); //升壓步聚 3
delay(5);
transfer_command_lcd(0x23); //粗調對比度,可設定範圍 0x20~0x27
transfer_command_lcd(0x81); //微調對比度
transfer_command_lcd(0x28); //微調對比度的值,可設定範圍 0x00~0x3f
transfer_command_lcd(0xa2); //1/9 偏壓比(bias)
transfer_command_lcd(0xc8); //行掃描順序:從上到下
transfer_command_lcd(0xa0); //列掃描順序:從左到右
transfer_command_lcd(0x40); //起始行:第一行開始
transfer_command_lcd(0xaf); //開顯示
}
void lcd_address(uint page, uint column)
{
column = column - 0x01;
transfer_command_lcd(0xb0 + page - 1); //設定頁位址,每 8 行為一頁,全屏共 64 行,被分成 8 頁
transfer_command_lcd(0x10 + (column >> 4 & 0x0f)); //設定列位址的高 4 位
transfer_command_lcd(column & 0x0f); //設定列位址的低 4 位
}
//全屏清屏
void clear_screen()
{
unsigned char i, j;
for (i = 0; i<9; i++)
{
transfer_command_lcd(0xb0 + i);
transfer_command_lcd(0x10);
transfer_command_lcd(0x00);
for (j = 0; j<132; j++)
{
transfer_data_lcd(0x00);
}
}
}
//顯示 128x64 點陣圖像
void display_128x64(uchar *dp)
{
uint i, j;
for (j = 0; j<8; j++)
{
lcd_address(j + 1, 1);
for (i = 0; i<128; i++)
{
transfer_data_lcd(*dp); //寫資料到 LCD,每寫完一個 8 位的資料後列位址自動加 1
dp++;
}
}
}
//顯示 16x16 點陣圖像、漢字、生僻字或 16x16 點陣的其他圖示
void display_graphic_16x16(uchar page, uchar column, uchar *dp)
{
uint i, j;
for (j = 0; j<2; j++)
{
lcd_address(page + j, column);
for (i = 0; i<16; i++)
{
transfer_data_lcd(*dp); //寫資料到 LCD,每寫完一個 8 位的資料後列位址自動加 1
dp++;
}
}
}
//顯示 8x16 點陣圖像、ASCII, 或 8x16 點陣的自造字元、其他圖示
void display_graphic_8x16(uchar page, uchar column, uchar *dp)
{
uint i, j;
for (j = 0; j<2; j++)
{
lcd_address(page + j, column);
for (i = 0; i<8; i++)
{
transfer_data_lcd(*dp); //寫資料到 LCD,每寫完一個 8 位的資料後列位址自動加 1
dp++;
}
}
}
//顯示 5X8 點陣圖像、ASCII, 或 5x8 點陣的自造字元、其他圖示
void display_graphic_5x8(uchar page, uchar column, uchar *dp)
{
uint i;
lcd_address(page, column);
for (i = 0; i<6; i++)
{
transfer_data_lcd(*dp);
dp++;
}
}
//送指令到晶聯訊字庫 IC
void send_command_to_ROM(uchar datu)
{
uchar i;
for (i = 0; i<8; i++)
{
Rom_SCK = 0;
delay_us(10);
if (datu & 0x80)
Rom_IN = 1;
else
Rom_IN = 0;
datu = datu << 1;
Rom_SCK = 1;
delay_us(10);
}
}
//從晶聯訊字庫 IC 中取漢字或字元資料(1 個位元組)
static uchar get_data_from_ROM()
{
uchar i;
uchar ret_data = 0;
for (i = 0; i<8; i++)
{
Rom_OUT = 1;
Rom_SCK = 0;
//delay_us(1);
ret_data = ret_data << 1;
if (Rom_OUT)
ret_data = ret_data + 1;
else
ret_data = ret_data + 0;
Rom_SCK = 1;
//delay_us(1);
}
return(ret_data);
}
//從指定位址讀出資料寫到液晶屏指定(page,column)座标中
void get_and_write_16x16(ulong fontaddr, uchar page, uchar column)
{
uchar i, j, disp_data;
Rom_CS = 0;
send_command_to_ROM(0x03);
send_command_to_ROM((fontaddr & 0xff0000) >> 16); //位址的高 8 位,共 24 位
send_command_to_ROM((fontaddr & 0xff00) >> 8); //位址的中 8 位,共 24 位
send_command_to_ROM(fontaddr & 0xff); //位址的低 8 位,共 24 位
for (j = 0; j<2; j++)
{
lcd_address(page + j, column);
for (i = 0; i<16; i++)
{
disp_data = get_data_from_ROM();
transfer_data_lcd(disp_data); //寫資料到 LCD,每寫完 1 位元組的資料後列位址自動加 1
}
}
Rom_CS = 1;
}
//從指定位址讀出資料寫到液晶屏指定(page,column)座标中
void get_and_write_8x16(ulong fontaddr, uchar page, uchar column)
{
uchar i, j, disp_data;
Rom_CS = 0;
send_command_to_ROM(0x03);
send_command_to_ROM((fontaddr & 0xff0000) >> 16); //位址的高 8 位,共 24 位
send_command_to_ROM((fontaddr & 0xff00) >> 8); //位址的中 8 位,共 24 位
send_command_to_ROM(fontaddr & 0xff); //位址的低 8 位,共 24 位
for (j = 0; j<2; j++)
{
lcd_address(page + j, column);
for (i = 0; i<8; i++)
{
disp_data = get_data_from_ROM();
transfer_data_lcd(disp_data); //寫資料到 LCD,每寫完 1 位元組的資料後列位址自動加 1
}
}
Rom_CS = 1;
}
//從指定位址讀出資料寫到液晶屏指定(page,column)座标中
void get_and_write_5x8(ulong fontaddr, uchar page, uchar column)
{
uchar i, disp_data;
Rom_CS = 0;
send_command_to_ROM(0x03);
send_command_to_ROM((fontaddr & 0xff0000) >> 16); //位址的高 8 位,共 24 位
send_command_to_ROM((fontaddr & 0xff00) >> 8); //位址的中 8 位,共 24 位
send_command_to_ROM(fontaddr & 0xff); //位址的低 8 位,共 24 位
lcd_address(page, column);
for (i = 0; i<5; i++)
{
disp_data = get_data_from_ROM();
transfer_data_lcd(disp_data); //寫資料到 LCD,每寫完 1 位元組的資料後列位址自動加 1
}
Rom_CS = 1;
}
//****************************************************************
ulong fontaddr = 0;
void display_GB2312_string(uchar page, uchar column, uchar *text)
{
uchar i = 0;
while ((text[i]>0x00))
{
if (((text[i] >= 0xb0) && (text[i] <= 0xf7)) && (text[i + 1] >= 0xa1))
{
//國标簡體(GB2312)漢字在晶聯訊字庫 IC 中的位址由以下公式來計算:
//Address = ((MSB - 0xB0) * 94 + (LSB - 0xA1)+ 846)*32+ BaseAdd;BaseAdd=0
//由于擔心 8 位單片機有乘法溢出問題,是以分三部取位址
fontaddr = (text[i] - 0xb0) * 94;
fontaddr += (text[i + 1] - 0xa1) + 846;
fontaddr = (ulong)(fontaddr * 32);
get_and_write_16x16(fontaddr, page, column); //從指定位址讀出資料寫到液晶屏指定(page,column)座标中
i += 2;
column += 16;
}
else if (((text[i] >= 0xa1) && (text[i] <= 0xa3)) && (text[i + 1] >= 0xa1))
{ //國标簡體(GB2312)15x16 點的字元在晶聯訊字庫 IC 中的位址由以下公式來計算:
//Address = ((MSB - 0xa1) * 94 + (LSB - 0xA1))*32+ BaseAdd;BaseAdd=0
//由于擔心 8 位單片機有乘法溢出問題,是以分三部取位址
fontaddr = (text[i] - 0xa1) * 94;
fontaddr += (text[i + 1] - 0xa1);
fontaddr = (ulong)(fontaddr * 32);
get_and_write_16x16(fontaddr, page, column); //從指定位址讀出資料寫到液晶屏指定(page,column)座标中
i += 2;
column += 16;
}
else if ((text[i] >= 0x20) && (text[i] <= 0x7e))
{
fontaddr = (text[i] - 0x20);
fontaddr = (unsigned long)(fontaddr * 16);
fontaddr = (unsigned long)(fontaddr + 0x3cf80);
get_and_write_8x16(fontaddr, page, column); //從指定位址讀出資料寫到液晶屏指定(page,column)座标中
i += 1;
column += 8;
}
else
i++;
}
}
void display_string_5x8(uchar page, uchar column, uchar *text)
{
unsigned char i = 0;
while ((text[i]>0x00))
{
if ((text[i] >= 0x20) && (text[i] <= 0x7e))
{
fontaddr = (text[i] - 0x20);
fontaddr = (unsigned long)(fontaddr * 8);
fontaddr = (unsigned long)(fontaddr + 0x3bfc0);
get_and_write_5x8(fontaddr, page, column); //從指定位址讀出資料寫到液晶屏指定(page,column)座标中
i += 1;
column += 6;
}
else
i++;
}
}
//===============main program===================
void main(void)
{
while (1)
{
initial_lcd();
clear_screen();
//clear all dots
display_128x64(bmp1);
delay(2000);
display_GB2312_string(1, 1, "12864,帶中文字庫"); //在第 1 頁,第 1 列,顯示一串 16x16 點陣漢字或 8x16 的 ASCII 字
display_GB2312_string(3, 1, "16X16 簡體漢字庫,"); //顯示一串 16x16 點陣漢字或 8x16 的 ASCII 字.以下雷同
display_GB2312_string(5, 1, "或 8X16 點陣 ASCII,");
display_GB2312_string(7, 1, "或 5x8 點陣 ASCII 碼");
delay(4000);
clear_screen();
display_GB2312_string(1, 1, "晶聯訊成立于二零");
display_GB2312_string(3, 1, "零四年十一月七日");
display_GB2312_string(5, 1, "主要生産液晶子產品");
display_GB2312_string(7, 1, "品質至上真誠服務");
delay(4000);
display_GB2312_string(1, 1, "GB2312 簡體字庫及");
display_GB2312_string(3, 1, "有圖型功能,可自");
display_GB2312_string(5, 1, "編大字或圖像或生");
display_GB2312_string(7, 1, "僻字,例如: ");
display_graphic_16x16(7, 97, jiong1); //在第 7 頁,第 81列顯示單個自編生僻漢字“囧”
display_graphic_16x16(7, 113, lei1); //顯示單個自編生僻漢字"畾“ delay(4000);
clear_screen();
display_GB2312_string(1, 1, "<[email protected]#$%^&*()_-+]/"); //在第 1 頁,第 1 列,顯示一串 16x16 點陣漢字或 8*16 的 ASCII 字
display_string_5x8(3, 1, "<[email protected]#$%^&*()_-+]/;.,?[");//在第 3 頁,第 1 列,顯示一串 5x8 點陣的 ASCII 字
display_string_5x8(4, 1, "JLX electronics Co., ");//顯示一串 5x8 點陣的 ASCII 字
display_string_5x8(5, 1, "Ltd. established at ");//顯示一串 5x8 點陣的 ASCII 字
display_string_5x8(6, 1, "year 2004.Focus LCM. ");//顯示一串 5x8 點陣的 ASCII 字
display_string_5x8(7, 1, "TEL:0755-29784961 ");//顯示一串 5x8 點陣的 ASCII 字
display_string_5x8(8, 1, "FAX:0755-29784964 ");//顯示一串 5x8 點陣的 ASCII 字
delay(4000);
display_GB2312_string(1, 1, "啊阿埃挨哎唉哀皚"); //在第 1 頁,第 1 列,顯示一串 16x16 點陣漢字或 8x16 的 ASCII 字
display_GB2312_string(3, 1, "癌藹矮艾礙愛隘鞍"); //顯示一串 16x16 點陣漢字或 8x16 的 ASCII 字.以下雷同
display_GB2312_string(5, 1, "氨安俺按暗岸胺案");
display_GB2312_string(7, 1, "肮昂盎凹敖熬翺襖");
delay(4000);
display_GB2312_string(1, 1, "鬟鬣麽麾縻麂麇麈");
display_GB2312_string(3, 1, "麋麒鏖麝麟黛黜黝");
display_GB2312_string(5, 1, "黠黟黢黩黧黥黪黯");
display_GB2312_string(7, 1, "鼢鼬鼯鼹鼷鼽鼾齄");
delay(4000);
}
}
uchar code bmp1[] = {
//-- 調入了一幅圖像:D:\我的檔案\My Pictures\12864-555.bmp -- //-- 寬度 x 高度=128x64 --
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xC0,0xC0,0xE0,0x60,0xE0,0xE0,0xE0,0xE0,0x60,
0x60,0x60,0x60,0x60,0x60,0x60,0xE0,0xE0,0xE0,0xE0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x18,0x1C,0x0C,
0x0E,0x07,0x03,0x03,0x01,0x81,0xE0,0x78,0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x1C,0x79,0xE1,0x83,
0x03,0x07,0x0E,0x0C,0x1C,0x18,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xC0,
0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xE0,0xE0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xF0,0x78,0x1E,0x07,0x03,0x81,0x80,0xC0,0xC0,0xC0,0xE0,0x60,
0x60,0x60,0x70,0xF0,0xFE,0x3F,0x19,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x38,0x31,0x3F,
0xFE,0xF0,0x60,0x60,0xE0,0xC0,0xC0,0xC0,0x80,0x81,0x03,0x07,0x1E,0x78,0xF0,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFC,0xFF,0x7F,0x07,0x0F,0x1F,0x3D,
0x79,0x71,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x80,0xC0,0xE0,0xF0,0x71,0x79,0x3D,0x1F,0x0F,0xFF,0xFE,0xFC,0x00,0x00,0x00,0x00,
0x00,0x80,0xFE,0xFF,0xF9,0x1C,0x0E,0x07,0x03,0x03,0x01,0x01,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x03,0x07,0x0E,0x1C,0xF9,0xFF,
0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x0E,0x9E,0xFC,0xF8,0xF0,0xE0,0xC0,0xC0,0x80,
0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xF0,0xF8,0xF8,0xFC,0x9E,0x0F,0x07,
0x03,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x3F,0xFF,0xDF,0x38,0x70,0xE0,0xC0,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,0xE0,0x70,0x38,0xDF,0xFF,
0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
0x80,0xC0,0xE0,0xF0,0x78,0x3C,0x1E,0x0F,0x07,0x03,0x01,0x00,0x01,0x01,0x03,0x07,
0x0F,0x1E,0x1E,0x0E,0x0F,0x07,0x03,0x01,0x01,0x00,0x01,0x01,0x03,0x07,0x0F,0x1E,
0x3C,0x78,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x0F,0x3C,0x70,0xE0,0xC1,0x81,0x03,0x03,0x03,0x07,0x06,
0x06,0x06,0x0E,0x0F,0x7F,0xFC,0x98,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0C,0x8C,0xFC,
0x7F,0x0F,0x06,0x06,0x07,0x03,0x03,0x03,0x81,0xC1,0xE0,0x70,0x3C,0x0F,0x07,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x1F,0x3F,0x7C,0xFC,0xFE,0xEF,
0xE7,0xE3,0xE1,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,0xE0,
0xE0,0xE0,0xE0,0xE1,0xE3,0xE7,0xEF,0xFE,0x7C,0x3F,0x1F,0x0F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x0C,0x1C,0x18,
0x38,0x70,0x60,0xE0,0xC0,0xC1,0x87,0x9E,0xB8,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0xF0,0xB8,0xDE,0xC7,0xE1,
0x60,0x70,0x38,0x18,0x1C,0x0C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x03,0x03,0x03,0x03,0x03,0x07,0x07,
0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x03,0x03,0x03,0x01,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};