1.介绍
OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术。
OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。
常用的OLED屏幕有蓝色、黄色、白色等几种。屏的大小为0.96寸,像素点为128*64,所以我们称为0.96oled屏或者12864屏。
2.特点
1.模块尺寸:23.7 *23.8mm
2.电源电压:3.3-5.5V
3.驱动芯片:SSD1306
4.测试平台:提供 k60/k10,9s12XS128,51,stm32,stm8等单片机

3.OLED屏幕显存
OLED本身是没有显存的,他的现存是依赖SSD1306提供的,而SSD1306提供一块显存。
SSD1306显存总共为128×64像素(8192个点),SSD1306将这些显存分成8页,每页对应8行像素。每页包含128列,每列用1个字节(8位)表示该列的8个像素状态,因此每页需要128字节,总显存为1024字节。

4.屏幕原理
STM32内部建立一个缓存(共128*8个字节),每次修改的时候,只是修改STM32上的缓存(实际上就是SRAM),修改完后一次性把STM32上的缓存数据写入到OLED的GRAM。
这个方法也有坏处,对于SRAM很小的单片机(51系列)就比较麻烦。
5.OLED屏幕常用指令

命令0X81: 设置对比度。包含两个字节,第一个0X81为命令,随后方法是的一个字节要设置这个对比度,值越大屏幕越亮。
命令0XAE/0XAF: 0XAE为关闭显示命令,0XAF为开启显示命令
0X8D: 包含两个字节,第一个为命令字,第二个为设置值,第二个字节的BIT2表示电荷泵的开关状态,该位为1开启电荷泵,为0则关闭。模块初始化的时候,这个必须要开启,否则看不到屏幕显示。
命令0XB0~B7:用于设置页地址,其低三位的值对应GRAM页地址。
命令0X00~0X0F:用于设置显示时的起始列地址低四位。
命令0X10~0X1F: 用于设置显示时的起始列地址高四位。
6.OLED 项目

注:
1.时序图函数
cs
void I2C_WriteByte(uint8_t addr,uint8_t data )
{
while(I2C_GetFlagStatus( I2C1, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C1, ENABLE);
while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_MODE_SELECT) );
I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);
while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) );
I2C_SendData(I2C1,addr);
while( !I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTING));
I2C_SendData(I2C1,data);
while( !I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTING));
I2C_GenerateSTOP(I2C1, ENABLE);
}
主设备(STM32) 从设备(OLED)
│ │
│───START───────────>│ (1) 发出起始信号
│ │
│──0x78(W)──┬───────>│ (2) 发送OLED地址+写位
│ │<──ACK──┤ OLED回应ACK
│ │ │
│──控制字节─┬───────>│ (3) 发送命令/数据选择位
│ │<──ACK──┤ OLED回应ACK
│ │ │
│──数据字节─┬───────>│ (4) 发送实际数据
│ │<──ACK──┤ OLED回应ACK
│ │ │
│───STOP────────────>│ (5) 发出停止信号
步骤1:检查总线忙while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
防止在总线被占用时启动新通信
等待直到
BUSY标志为0步骤2:生成起始条件
I2C_GenerateSTART(I2C1, ENABLE);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
I2C_GenerateSTART: 硬件产生START信号等待事件
EV5:SB=1(Start Bit)此时I2C进入主模式
步骤3:发送从设备地址
I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
OLED_ADDRESS应为0x78(OLED的7位地址+写位=0)等待事件
EV6:ADDR=1+TXE=1+ 方向位表示地址已发送并收到ACK
步骤4:发送控制字节
I2C_SendData(I2C1, addr);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTING));
addr: OLED的控制字节,决定后续是命令还是数据
0x00: 命令
0x40: 数据等待事件
EV8_1:TXE=1+BTF=0步骤5:发送数据字节
I2C_SendData(I2C1, data);
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTING));
data: 实际要显示的数据或命令值同样等待发送完成事件
步骤6:生成停止条件
I2C_GenerateSTOP(I2C1, ENABLE);
硬件产生STOP信号,结束本次传输
无需等待,STOP由硬件自动完成
主设备(STM32的I2C模块) 产生起始信号(S)
主设备 在完成后,给自己(STM32)的 SR1寄存器的SB位置1
主设备 向CPU报告:"我完成了起始信号!"(事件EV5)
主设备 发送从设备地址到总线上
从设备 如果存在且正常,会拉低SDA线(发出ACK应答)
主设备 检测到这个ACK后,给自己的 SR1寄存器的ADDR位置1
主设备 再次向CPU报告:"地址发送成功且对方答应了!"(事件EV6和EV8)
OLED通常有固定地址:
7位地址:
0x3C或0x3D转换到发送地址:
写操作:(0x3C << 1) | 0 = 0x78
读操作:(0x3C << 1) | 1 = 0x79
OLED_ADDRESS 是OLED的从何设备地址
addr参数是 OLED 的寄存器/命令地址,data是要写入该寄存器的值。
2.OLED先发送指令,在发送数据
cs
void WriteCmd(unsigned char I2C_Command)
{
I2C_WriteByte(0x00,I2C_Command);
}
void WriteData(unsigned char I2C_Data)
{
I2C_WriteByte(0x40,I2C_Data);
}
|----------------|--------|------|--------------------------------|
| WriteCmd(命令) | 0x00 | 命令字节 | 向 OLED 发送控制命令(如设置坐标、开关显示等) |
| WriteDat(数据) | 0x40 | 数据字节 | 向 OLED 写入显示数据(像素点数据) |
3.OLED坐标函数
cs
void OLED_SetPos(unsigned char x,unsigned char y)
{
WriteCmd(0xB0 + y);
WriteCmd(0x00 | (x & 0x0F));
WriteCmd(0x10 | (x & 0xF0)>>4);
}
-
x= 列地址 (Column)→ 水平方向(0~127) -
y= 页地址 (Page)→ 垂直方向(0~7)
1.
WriteCmd(0xb0 + y);
0xB0:是SSD1306的**"设置页起始地址"** 命令的基础值。
+ y:页号偏移(0~7),因为128x64的OLED垂直方向分为8页(Page),每页8行像素。作用 :选择要操作的垂直位置(Y坐标所在的页)。
2.
WriteCmd(((x & 0xf0) >> 4) | 0x10);
x & 0xF0:取x的高4位。
>> 4:右移4位,得到纯高4位值(0x50→0x05)。
| 0x10:与0x10(二进制0001 0000)进行或运算。
0x10是SSD1306的**"设置列地址高4位"**命令码。作用 :设置列地址的高4位(X坐标的[7:4]位)。
3.
WriteCmd((x & 0x0f) | 0x00);
x & 0x0F:取x的低4位。
| 0x01:这里可能是笔误或特定型号设置。通常应该是| 0x00。
标准SSD1306命令:**
0x00是"设置列地址低4位"**的命令码。有些代码会写成
| 0x01,但根据手册应该是0x00。作用 :设置列地址的低4位(X坐标的[3:0]位)。
4.OLED 在写入数据时,列地址是自动递增的
cs
void OLED_Fill(unsigned char Fill_Data)
{
unsigned char n,m;
for( m = 0;m < 8;m++)
{
WriteCmd(0xB0 + m);
WriteCmd(0x00);
WriteCmd(0x10);
for(n = 0;n < 128;n++)
{
WriteData(Fill_Data);
}
}
}
当你向 OLED 写入一个字节的数据后:
-
列地址指针会自动加 1(指向下一列)
-
页地址保持不变
-
下一个写入的数据会自动出现在下一列
5.OLED 显示字符串函数
cs
void OLED_Showstring(unsigned char x,unsigned char y,unsigned char ch[],unsigned char TextSize)
{
unsigned char i = 0,j = 0,c = 0;
switch(TextSize)
{
case 1 :
{
while(ch[j] != '\0')
{
if(x > 122)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
c = ch[j] - 32;
for(i = 0;i < 6;i++)
{
WriteData( F6x8[c][i] );
}
x += 6;
j++;
}
break;
}
case 2:
{
while(ch[j] != '\0')
{
if(x > 120)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
c = ch[j] - 32;
for(i = 0;i < 8;i++)
WriteData(F8X16[c*16+i]);
OLED_SetPos(x,y+1);
for(i = 0;i < 8;i++)
WriteData(F8X16[c*16+i+8]);
x += 8;
j++;
}
}
break;
}
}
case1:
j为遍历数标
c理解为字模库的遍历索引,字模库为n行6列,c代表行数
因为6x8[],6个像素宽,8个像素高。OLED为64*128,分为8页,8*128,因此每完成一个字符的显示,x要移动6位
因此边界检查 x+6 >128 越界, x <= 122
c = ch[j] - 32; 因为字模库中没有存储 ASCII 前32个控制字符。
case2:
6.F6x8[][6]
1. 一个字符的6字节排列
F6x8[字符索引] = {字节0, 字节1, 字节2, 字节3, 字节4, 字节5}
└列0 ┘└列1 ┘└列2 ┘└列3 ┘└列4 ┘└列5 ┘
2. 字节的位-像素映射
每个字节的 8个位 对应 一列的8个垂直像素 :
位7 位6 位5 位4 位3 位2 位1 位0
│ │ │ │ │ │ │ │
像素7 像素6 像素5 像素4 像素3 像素2 像素1 像素0
(底部) (顶部)
-
1 = 像素点亮(白色)
-
0 = 像素熄灭(黑色)
注意 :实际显示时,位0对应顶部像素 ,位7对应底部像素。
例:'H'(索引40)
{0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F}
二进制:
列0: 00000000 ← 左边距
列1: 01111111 ← 点亮中间6个像素(位1-6)
列2: 00001000 ← 只点亮第3个像素(位3)
列3: 00001000
列4: 00001000
列5: 01111111
列1:0x7F = 01111111
位7 位6 位5 位4 位3 位2 位1 位0
0 1 1 1 1 1 1 1
│ │ │ │ │ │ │ │
底 ↑ ↑ ↑ ↑ ↑ ↑ 顶
列0 列1 列2 列3 列4 列5
00000000 01111111 00001000 00001000 00001000 01111111
像素映射(●=亮,○=灭):
列0 列1 列2 列3 列4 列5
○ ● ○ ○ ○ ● ← 像素0(位0) 顶部
○ ● ○ ○ ○ ● ← 像素1(位1)
○ ● ○ ○ ○ ● ← 像素2(位2)
○ ● ● ● ● ● ← 像素3(位3)
○ ● ○ ○ ○ ● ← 像素4(位4)
○ ● ○ ○ ○ ● ← 像素5(位5)
○ ● ○ ○ ○ ● ← 像素6(位6)
○ ○ ○ ○ ○ ○ ← 像素7(位7) 底部(留空)
7.F8x16[]
8X16 表示:它描述的是显示尺寸 ,不是存储格式
宽度:8像素(列)
高度:16像素(行)
字符尺寸:8列宽 × 16行高
存储方式:
分为上下两部分
上半部分:8个字节 → 控制8列,每列8个像素(行0~7)
下半部分:8个字节 → 控制同样的8列,每列8个像素(行8~15)
总共:16字节
8个像素宽,16个像素高,高于一页,所以要用两页来显示,所以y坐标加一。而且是一维数组,要+8。
这里把16个元素看成一组,代表一个字符,前8个位上半字符,后8位为下半字符。
F6x8[][6](小字体):
二维数组:F6x8[字符数][6]
每个字符:6字节
直接对应:6列 × 8行(每字节控制一列的8个像素)
F8X16[](大字体):
一维数组:F8X16[]
每个字符:16字节(连续存储)
存储方式:前8字节(8列前8行)=上半部分,后8字节(8列后8行)=下半部分
实际尺寸:8列 × 16行
8.像素和比特
- 像素 = Picture Element(图像元素)
- 是数字图像的最小单位
- 一个可寻址、可控制的显示点
在OLED中的像素
对于你的 128×64 OLED:
128像素宽:水平方向128个点
64像素高:垂直方向64个点
总共 8192个像素点
- 比特 = Binary Digit(二进制位)
- 信息的最小单位
- 只能是 0 或 1
在OLED中的意义
在单色OLED中:
1比特 控制 1个像素 的亮灭
比特值:1 = 像素亮(白色),0 = 像素灭(黑色)
在单色OLED中的关系
1比特 → 控制 → 1像素
数据 ←对应→ 显示
在单色显示中,像素和比特是 一一对应的控制关系,但它们是不同层次的概念。
在彩色显示中:
1像素 = 多个比特(如24位真彩色)
1像素 = R(8bit) + G(8bit) + B(8bit) = 24bit
9.OLED显示汉字函数
cs
void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char N)
{
unsigned char wn = 0;
unsigned int addr = 32 * N;
OLED_SetPos(x,y);
for(wn = 0;wn < 16;wn++)
{
WriteData( F16x16[addr]);
addr += 1;
}
OLED_SetPos(x,y+1);
for(wn = 0;wn < 16;wn++)
{
WriteData( F16x16[addr]);
addr += 1;
}
}
16x16,一个汉字占32个字节,N汉字的索引
注意:一维数组使用遍历数标方便

10.OLED显示图像函数
cs
void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
{
unsigned char x = 0,y = 0;
unsigned int j = 0;
if(y1 % 8 == 0)
y = y1/8;
else
y = y1/8+1;
for(y = y0;y < y1;y++)
{
OLED_SetPos(x0,y);
for(x = x0;x < x1;x++)
{
WriteData(BMP[j++]);
}
}
}
x0, y0:位图显示的起始坐标(左上角)
x1, y1:位图显示的结束坐标(右下角+1)
BMP[]:存储位图数据的数组,每个字节代表一个像素块(通常是8个像素垂直排列)
if (y1 % 8 == 0)
y = y1 / 8;
else
y = y1 / 8 + 1;
OLED 屏幕通常按每 8 行一个字节的方式存储像素数据。
这里计算从
y0到y1总共需要多少字节行(不是像素行)。
注:图片要BMP格式

完整函数代码
cs
//oled.h
#ifndef _OLED_H_
#define _OLED_H_
#define OLED_ADDRESS 0x78
void I2C_Configuration(void);
void I2C_WriteByte(uint8_t addr,uint8_t data );
void WriteCmd(unsigned char I2C_Command);
void WriteData(unsigned char I2C_Data);
void OLED_Init(void);
void OLED_SetPos(unsigned char x,unsigned char y);
void OLED_Fill(unsigned char Fill_Data);
void OLED_Clear(void);
void OLED_Open(void);
void OLED_Close(void);
void OLED_Showstring(unsigned char x,unsigned char y,unsigned char ch[],unsigned char TextSize);
void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char N);
void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);
#endif
cs
//oled.c
#include "stm32f10x.h"
#include "oled.h"
#include "systick.h"
#include "OLED_Codetab.h"
void I2C_Configuration()
{
GPIO_InitTypeDef GPIO_Initstructure;
I2C_InitTypeDef I2C_Initstructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd( RCC_APB1Periph_I2C1, ENABLE);
//SCL PV6 | SDL PB7
GPIO_Initstructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Initstructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_Initstructure);
I2C_DeInit(I2C1);
I2C_Initstructure.I2C_Ack = I2C_Ack_Enable;
I2C_Initstructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_Initstructure.I2C_ClockSpeed = 400000;
I2C_Initstructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_Initstructure.I2C_Mode = I2C_Mode_I2C;
I2C_Initstructure.I2C_OwnAddress1 = 0x30;
I2C_Init(I2C1,&I2C_Initstructure);
I2C_Cmd(I2C1,ENABLE);
}
void I2C_WriteByte(uint8_t addr,uint8_t data )
{
while(I2C_GetFlagStatus( I2C1, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C1, ENABLE);
while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_MODE_SELECT) );
I2C_Send7bitAddress(I2C1, OLED_ADDRESS, I2C_Direction_Transmitter);
while( !I2C_CheckEvent( I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) );
I2C_SendData(I2C1,addr);
while( !I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTING));
I2C_SendData(I2C1,data);
while( !I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTING));
I2C_GenerateSTOP(I2C1, ENABLE);
}
void WriteCmd(unsigned char I2C_Command)
{
I2C_WriteByte(0x00,I2C_Command);
}
void WriteData(unsigned char I2C_Data)
{
I2C_WriteByte(0x40,I2C_Data);
}
//OELDÆÁÄ>>³õʼ>>¯
void OLED_Init(void)
{
ms_delay(100);
WriteCmd(0xAE); //display off
WriteCmd(0x20); //Set Memory Addressing Mode
WriteCmd(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
WriteCmd(0xb0); //Set Page Start Address for Page Addressing Mode,0-7
WriteCmd(0xc8); //Set COM Output Scan Direction
WriteCmd(0x00); //---set low column address
WriteCmd(0x10); //---set high column address
WriteCmd(0x40); //--set start line address
WriteCmd(0x81); //--set contrast control register
WriteCmd(0xff); //ÁÁ¶Èµ÷½Ú 0x00~0xff
WriteCmd(0xa1); //--set segment re-map 0 to 127
WriteCmd(0xa6); //--set normal display
WriteCmd(0xa8); //--set multiplex ratio(1 to 64)
WriteCmd(0x3F); //
WriteCmd(0xa4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
WriteCmd(0xd3); //-set display offset
WriteCmd(0x00); //-not offset
WriteCmd(0xd5); //--set display clock divide ratio/oscillator frequency
WriteCmd(0xf0); //--set divide ratio
WriteCmd(0xd9); //--set pre-charge period
WriteCmd(0x22); //
WriteCmd(0xda); //--set com pins hardware configuration
WriteCmd(0x12);
WriteCmd(0xdb); //--set vcomh
WriteCmd(0x20); //0x20,0.77xVcc
WriteCmd(0x8d); //--set DC-DC enable
WriteCmd(0x14); //
WriteCmd(0xaf); //--turn on oled panel
}
void OLED_SetPos(unsigned char x,unsigned char y)
{
WriteCmd(0xB0 + y);
WriteCmd(0x00 | (x & 0x0F));
WriteCmd(0x10 | (x & 0xF0)>>4);
}
void OLED_Fill(unsigned char Fill_Data)
{
unsigned char n,m;
for( m = 0;m < 8;m++)
{
WriteCmd(0xB0 + m);
WriteCmd(0x00);
WriteCmd(0x10);
for(n = 0;n < 128;n++)
{
WriteData(Fill_Data);
}
}
}
void OLED_Clear(void)
{
OLED_Fill(0x00);
}
void OLED_Open(void)
{
WriteCmd(0X8D);
WriteCmd(0X14);
WriteCmd(0XAF);
}
void OLED_Close(void)
{
WriteCmd(0X8D);
WriteCmd(0X10);
WriteCmd(0XAE);
}
void OLED_Showstring(unsigned char x,unsigned char y,unsigned char ch[],unsigned char TextSize)
{
unsigned char i = 0,j = 0,c = 0;
switch(TextSize)
{
case 1 :
{
while(ch[j] != '\0')
{
if(x > 122)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
c = ch[j] - 32;
for(i = 0;i < 6;i++)
{
WriteData( F6x8[c][i] );
}
x += 6;
j++;
}
break;
}
case 2:
{
while(ch[j] != '\0')
{
if(x > 120)
{
x = 0;
y++;
}
OLED_SetPos(x,y);
c = ch[j] - 32;
for(i = 0;i < 8;i++)
WriteData(F8X16[c*16+i]);
OLED_SetPos(x,y+1);
for(i = 0;i < 8;i++)
WriteData(F8X16[c*16+i+8]);
x += 8;
j++;
}
}
break;
}
}
void OLED_ShowCN(unsigned char x,unsigned char y,unsigned char N)
{
unsigned char wn = 0;
unsigned int addr = 32 * N;
OLED_SetPos(x,y);
for(wn = 0;wn < 16;wn++)
{
WriteData( F16x16[addr]);
addr += 1;
}
OLED_SetPos(x,y+1);
for(wn = 0;wn < 16;wn++)
{
WriteData( F16x16[addr]);
addr += 1;
}
}
void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
{
unsigned char x = 0,y = 0;
unsigned int j = 0;
if(y1 % 8 == 0)
y = y1/8;
else
y = y1/8+1;
for(y = y0;y < y1;y++)
{
OLED_SetPos(x0,y);
for(x = x0;x < x1;x++)
{
WriteData(BMP[j++]);
}
}
}
cs
//main.c
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "buzzer.h"
#include "key.h"
#include "Relay.h"
#include "Shake.h"
#include "Exti.h"
#include "usart.h"
#include "stdio.h"
#include "Time.h"
#include "sg90.h"
#include "systick.h"
#include "oled.h"
extern const unsigned char BMP1[];
void delay(uint16_t time)
{
uint16_t i = 0;
while(time --)
{
i = 12000;
while(i --);
}
}
int main()
{
unsigned char i = 0;
I2C_Configuration();
OLED_Init();
delay(2000);
OLED_Open();
OLED_Fill(0xff);
delay(2000);
OLED_Fill(0x00);
delay(2000);
// OLED_Showstring(1,3,"Hello World",1);
// OLED_Showstring(1,5,"Miao Miao",2);
// for(i = 0;i < 2;i++)
// {
// OLED_ShowCN( 22+i*16,0,i);
// }
while(1)
{
OLED_DrawBMP( 0, 0, 128, 8, ( unsigned char *) BMP1);
}
}
cs
const unsigned char F16x16[]=
{
0x00,0x80,0x60,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,
0x01,0x00,0x00,0xFF,0x00,0x10,0x0C,0x03,0x40,0x80,0x7F,0x00,0x01,0x06,0x18,0x00,/*"Äã",0*/
0x10,0x10,0xF0,0x1F,0x10,0xF0,0x00,0x80,0x82,0x82,0xE2,0x92,0x8A,0x86,0x80,0x00,
0x40,0x22,0x15,0x08,0x16,0x61,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/*"ºÃ",1*/
};
const unsigned char F6x8[][6] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};
const unsigned char F8X16[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// 0
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,//! 1
0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" 2
0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,//# 3
0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,//$ 4
0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,//% 5
0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,//& 6
0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//' 7
0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,//( 8
0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,//) 9
0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,//* 10
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+ 11
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,//, 12
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- 13
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,//. 14
0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/// 15
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//0 16
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//1 17
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//2 18
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//3 19
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//4 20
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//5 21
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//6 22
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//7 23
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//8 24
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//9 25
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//: 26
0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,//; 27
0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,//< 28
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,//= 29
0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,//> 30
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//? 31
0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,//@ 32
0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,//A 33
0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,//B 34
0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,//C 35
0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,//D 36
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,//E 37
0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,//F 38
0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,//G 39
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H 40
0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//I 41
0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,//J 42
0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,//K 43
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L 44
0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,//M 45
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,//N 46
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,//O 47
0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,//P 48
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,//Q 49
0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,//R 50
0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,//S 51
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T 52
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//U 53
0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,//V 54
0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,//W 55
0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,//X 56
0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//Y 57
0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,//Z 58
0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,//[ 59
0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,//\ 60
0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,//] 61
0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//^ 62
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_ 63
0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//` 64
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,//a 65
0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,//b 66
0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,//c 67
0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,//d 68
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,//e 69
0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//f 70
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,//g 71
0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//h 72
0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//i 73
0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,//j 74
0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,//k 75
0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//l 76
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,//m 77
0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,//n 78
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,//o 79
0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,//p 80
0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,//q 81
0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,//r 82
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,//s 83
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,//t 84
0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,//u 85
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,//v 86
0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,//w 87
0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,//x 88
0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,//y 89
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,//z 90
0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,//{ 91
0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,//| 92
0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//} 93
0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//~ 94
};
const unsigned char BMP1[] =
{
0X22,0X01,0X80,0X00,0X40,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,0XC0,0XE0,0XF0,0XF0,0X38,0X3C,0X1C,
0X0C,0X1C,0X1C,0X38,0X38,0XF0,0XF0,0XE0,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,0XC0,0XE0,0XF0,0X70,0X30,0X30,0X30,0X70,0X30,0X30,0X30,0X30,0X70,0X70,
0XE0,0XC0,0XC0,0X00,0X00,0X00,0X80,0XC0,0XE0,0XE0,0X70,0X70,0X30,0X30,0X38,0X38,
0X38,0X38,0X38,0X18,0X1C,0X1C,0X1C,0X18,0X18,0X18,0X18,0X00,0X00,0X00,0X18,0X1C,
0X1C,0X0C,0X0C,0X0C,0X0C,0X0C,0X0C,0X1C,0X1C,0X39,0X3B,0X13,0X01,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFF,0XFF,0X38,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,0XC0,0XF8,0XFC,0XFC,0X38,0X38,0X70,0X60,
0X00,0XFF,0XFF,0XFF,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X80,0X80,
0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,
0X00,0XE0,0XE0,0XC0,0X86,0X07,0X07,0X03,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,0XC0,0XE0,
0XE0,0X60,0X70,0X30,0X38,0X38,0X18,0X1C,0X1C,0X0F,0X0F,0X1F,0X1F,0X1C,0X08,0X00,
0X00,0X01,0X01,0X03,0X03,0X07,0X07,0X0E,0X0E,0X0E,0X0C,0X0C,0X0C,0X0C,0X0C,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X06,0X06,0X06,0X84,0X80,0X80,0X80,0X80,0X80,0X81,0XC3,0XFF,0XFF,
0XFF,0XF1,0XC0,0XC0,0XC0,0XC0,0XE0,0XE0,0X61,0X01,0X01,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X0F,0X0F,0X3F,0XFC,0XF0,0XE0,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,0X3C,0X7F,0XFF,0XE3,
0XC1,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,0X01,0X01,0X01,0X01,0X0F,0X1F,0X1F,0X1F,0X1F,0X1F,
0X1F,0X0F,0X07,0X03,0X01,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X03,0X03,0X03,0X01,0X00,0X30,0X30,0X70,0X70,0X70,0X60,0XE0,
0XE0,0XC0,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,0X00,0X00,0X00,
0X01,0X00,0X00,0X00,0X00,0X0E,0X0E,0X0C,0X0C,0X0C,0X1C,0X1C,0X38,0X38,0X70,0X70,
0X60,0XE0,0XE0,0XC0,0XC0,0XC0,0X80,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,0X30,0X30,0X30,
0X30,0X70,0XE0,0XE0,0XC0,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,
0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X80,0X00,0X40,
0XE0,0XF1,0X7F,0X3F,0X0F,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,0X03,0X03,0X07,0X07,0X06,0X0E,0X0E,0X0C,0X1C,
0X1C,0X38,0X38,0X30,0X30,0X30,0X70,0X70,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,0XE1,0XE3,0X77,0X27,0X06,0X00,0X00,0X00,0X00,0X00,0X03,0X03,
0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,0X03,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,
0X00,0X00,0X00,0X03,0X07,0X07,0X07,0X06,0X07,0X07,0X07,0X07,0X07,0X07,0X07,0X07,
0X03,0X03,0X03,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,
};