STM32 —— 中景园0.96寸OLED
OLED,即有机发光二极管( Organic Light Emitting Diode )。 OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示 OLED 效果要来得好一些。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。
分辨率:128*64
驱动方式:SPI/IIC,以下程序是IO口模拟IIC通信。
#ifndef __OLED_H
#define __OLED_Htypedef signed char int8_t;
typedef signed short int int16_t;
typedef signed int int32_t;
typedef signed __int64 int64_t;/* exact-width unsigned integer types */
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned int size_t;
typedef unsigned __int64 uint64_t;#define OLED_SCL_PORT GPIOA
#define OLED_SCL_PIN GPIO_Pin_5
#define OLED_SCL_CONFIG() GPIOConfig(OLED_SCL_PORT, OLED_SCL_PIN, GPIO_Mode_Out_PP)
#define OLED_SCL_LOW() GPIO_ResetBits(OLED_SCL_PORT, OLED_SCL_PIN) // SCL
#define OLED_SCL_HIGH() GPIO_SetBits(OLED_SCL_PORT, OLED_SCL_PIN)#define OLED_SDA_PORT GPIOA
#define OLED_SDA_PIN GPIO_Pin_7
#define OLED_SDA_CONFIG() GPIOConfig(OLED_SDA_PORT, OLED_SDA_PIN, GPIO_Mode_Out_PP)
#define OLED_SDA_LOW() GPIO_ResetBits(OLED_SDA_PORT, OLED_SDA_PIN) // SDA
#define OLED_SDA_HIGH() GPIO_SetBits(OLED_SDA_PORT, OLED_SDA_PIN)#define OLED_RES_PORT GPIOA
#define OLED_RES_PIN GPIO_Pin_6
#define OLED_RES_CONFIG() GPIOConfig(OLED_RES_PORT, OLED_RES_PIN, GPIO_Mode_Out_PP)
#define OLED_RES_LOW() GPIO_ResetBits(OLED_RES_PORT, OLED_RES_PIN) // RES
#define OLED_RES_HIGH() GPIO_SetBits(OLED_RES_PORT, OLED_RES_PIN)#define OLED_MODE 0
#define SIZE 8
#define XLevelL 0x00
#define XLevelH 0x10
#define Max_Column 128
#define Max_Row 64
#define Brightness 0xFF
#define X_WIDTH 128
#define Y_WIDTH 64 #define OLED_CMD 0 //写命令
#define OLED_DATA 1 //写数据void IICStart(void);
void IICStop(void);
void I2CWriteCmd(uint8_t cmd);
void I2CWriteData(uint8_t data);
void I2CWriteByte(uint8_t byte);
void I2CWaitAck(void);//OLED控制用函数
void OLEDWriteByte(uint8_t dat,uint8_t cmd);
void OLEDDisplayOn(void);
void OLEDDisplayOff(void);
void OLEDInit(void);
void OLEDClear(void);
void OLEDDrawPoint(uint8_t x,uint8_t y,uint8_t t);
void OLEDFill(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2,uint8_t dot);
void OLEDShowChar(uint8_t x,uint8_t y,uint8_t chr,uint8_t Char_Size);
void OLEDShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size);
void OLEDShowString(uint8_t x,uint8_t y, uint8_t *p,uint8_t Char_Size);
void OLEDSetPos(uint8_t x, uint8_t y);
void OLEDShowCHinese(uint8_t x,uint8_t y,uint8_t no);
void OLEDDrawBMP(uint8_t x0, uint8_t y0,uint8_t x1,uint8_t y1,uint8_t BMP[]);#endif
#include "oled.h"
#include "stdlib.h"
#include "oledfont.h"void IICStart(void)
{OLED_SCL_HIGH() ;OLED_SDA_HIGH();OLED_SDA_LOW();OLED_SCL_LOW();
}void IICStop(void)
{OLED_SCL_HIGH() ;OLED_SDA_LOW();OLED_SDA_HIGH();}void I2CWaitAck(void)
{OLED_SCL_HIGH() ;OLED_SCL_LOW();
}void I2CWriteByte(uint8_t byte)
{uint8_t i;uint8_t m, data;data = byte;OLED_SCL_LOW();for(i = 0; i < 8; i++){m = data;m = m & 0x80;if(m == 0x80){OLED_SDA_HIGH();}else{OLED_SDA_LOW();}data = data << 1;OLED_SCL_HIGH();OLED_SCL_LOW();}
}void I2CWriteCmd(uint8_t cmd)
{IICStart();I2CWriteByte(0x78); //Slave address,SA0=0I2CWaitAck();I2CWriteByte(0x00); //write commandI2CWaitAck();I2CWriteByte(cmd);I2CWaitAck();IICStop();
}void I2CWriteData(uint8_t data)
{IICStart();I2CWriteByte(0x78); //D/C#=0; R/W#=0I2CWaitAck();I2CWriteByte(0x40); //write dataI2CWaitAck();I2CWriteByte(data);I2CWaitAck();IICStop();
}void OLEDWriteByte(uint8_t dat, uint8_t cmd)
{if(cmd){I2CWriteData(dat);}else{I2CWriteCmd(dat);}
}//坐标设置void OLEDSetPos(uint8_t x, uint8_t y)
{OLEDWriteByte(0xb0 + y, OLED_CMD);OLEDWriteByte(((x & 0xf0) >> 4) | 0x10, OLED_CMD);OLEDWriteByte((x & 0x0f), OLED_CMD);
}
//开启OLED显示
void OLEDDisplayOn(void)
{OLEDWriteByte(0X8D, OLED_CMD); //SET DCDC命令OLEDWriteByte(0X14, OLED_CMD); //DCDC ONOLEDWriteByte(0XAF, OLED_CMD); //DISPLAY ON
}
//关闭OLED显示
void OLEDDisplayOff(void)
{OLEDWriteByte(0X8D, OLED_CMD); //SET DCDC命令OLEDWriteByte(0X10, OLED_CMD); //DCDC OFFOLEDWriteByte(0XAE, OLED_CMD); //DISPLAY OFF
}
//清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!
void OLEDClear(void)
{uint8_t i, n;for(i = 0; i < 8; i++){OLEDWriteByte (0xb0 + i, OLED_CMD); //设置页地址(0~7)OLEDWriteByte (0x00, OLED_CMD); //设置显示位置—列低地址OLEDWriteByte (0x10, OLED_CMD); //设置显示位置—列高地址for(n = 0; n < 128; n++){OLEDWriteByte(0, OLED_DATA);}} //更新显示
}
void OLED_On(void)
{uint8_t i, n;for(i = 0; i < 8; i++){OLEDWriteByte (0xb0 + i, OLED_CMD); //设置页地址(0~7)OLEDWriteByte (0x00, OLED_CMD); //设置显示位置—列低地址OLEDWriteByte (0x10, OLED_CMD); //设置显示位置—列高地址for(n = 0; n < 128; n++){OLEDWriteByte(1, OLED_DATA);}} //更新显示
}
//在指定位置显示一个字符,包括部分字符
//x:0~127
//y:0~63
//mode:0,反白显示;1,正常显示
//size:选择字体 16/12
void OLEDShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t Char_Size)
{uint8_t c = 0, i = 0;c = chr - ' '; //得到偏移后的值if(x > Max_Column - 1){x = 0;y = y + 2;}if(Char_Size == 16){OLEDSetPos(x, y);for(i = 0; i < 8; i++){OLEDWriteByte(F8X16[c * 16 + i], OLED_DATA);}OLEDSetPos(x, y + 1);for(i = 0; i < 8; i++){OLEDWriteByte(F8X16[c * 16 + i + 8], OLED_DATA);}}else{OLEDSetPos(x, y);for(i = 0; i < 6; i++){OLEDWriteByte(F6x8[c][i], OLED_DATA);}}
}//m^n函数
uint32_t oled_pow(uint8_t m, uint8_t n)
{uint32_t result = 1;while(n--){result *= m;}return result;
}
//显示2个数字
//x,y :起点坐标
//len :数字的位数
//size:字体大小
//mode:模式 0,填充模式;1,叠加模式
//num:数值(0~4294967295);
void OLEDShowNum(uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size2)
{uint8_t t, temp;uint8_t enshow = 0;for(t = 0; t < len; t++){temp = (num / oled_pow(10, len - t - 1)) % 10;if(enshow == 0 && t < (len - 1)){if(temp == 0){OLEDShowChar(x + (size2 / 2)*t, y, ' ', size2);continue;}else{enshow = 1;}}OLEDShowChar(x + (size2 / 2)*t, y, temp + '0', size2);}
}
//显示一个字符号串
void OLEDShowString(uint8_t x, uint8_t y, uint8_t *chr, uint8_t Char_Size)
{uint8_t j = 0;while (chr[j] != '\0'){OLEDShowChar(x, y, chr[j], Char_Size);x += 8;if(x > 120){x = 0;y += 2;}j++;}
}
//显示汉字
void OLEDShowCHinese(uint8_t x, uint8_t y, uint8_t no)
{uint8_t t;OLEDSetPos(x, y);for(t = 0; t < 16; t++){OLEDWriteByte(chinese[2 * no][t], OLED_DATA);}OLEDSetPos(x, y + 1);for(t = 0; t < 16; t++){OLEDWriteByte(chinese[2 * no + 1][t], OLED_DATA);}
}/***********功能描述:显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7*****************/
void OLEDDrawBMP(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t BMP[])
{uint32_t j = 0;uint8_t x, y;if(y1 % 8 == 0){y = y1 / 8;}else{y = y1 / 8 + 1;}for(y = y0; y < y1; y++){OLEDSetPos(x0, y);for(x = x0; x < x1; x++){OLEDWriteByte(BMP[j++], OLED_DATA);}}
}static void oled_delay(uint32_t ms)
{while(--ms);
}void OLEDInit(void)
{OLED_SCL_CONFIG();OLED_SDA_CONFIG();OLED_RES_CONFIG();OLED_SCL_HIGH();OLED_SDA_HIGH();OLED_RES_LOW();oled_delay(20000000);OLED_RES_HIGH();oled_delay(50000000);OLEDWriteByte(0xAE, OLED_CMD); //--display offOLEDWriteByte(0x00, OLED_CMD); //---set low column addressOLEDWriteByte(0x10, OLED_CMD); //---set high column addressOLEDWriteByte(0x40, OLED_CMD); //--set start line addressOLEDWriteByte(0xB0, OLED_CMD); //--set page addressOLEDWriteByte(0x81, OLED_CMD); // contract controlOLEDWriteByte(0xFF, OLED_CMD); //--128OLEDWriteByte(0xA1, OLED_CMD); //set segment remapOLEDWriteByte(0xA6, OLED_CMD); //--normal / reverseOLEDWriteByte(0xA8, OLED_CMD); //--set multiplex ratio(1 to 64)OLEDWriteByte(0x3F, OLED_CMD); //--1/32 dutyOLEDWriteByte(0xC8, OLED_CMD); //Com scan directionOLEDWriteByte(0xD3, OLED_CMD); //-set display offsetOLEDWriteByte(0x00, OLED_CMD); //OLEDWriteByte(0xD5, OLED_CMD); //set osc divisionOLEDWriteByte(0x80, OLED_CMD); //OLEDWriteByte(0xD8, OLED_CMD); //set area color mode offOLEDWriteByte(0x05, OLED_CMD); //OLEDWriteByte(0xD9, OLED_CMD); //Set Pre-Charge PeriodOLEDWriteByte(0xF1, OLED_CMD); //OLEDWriteByte(0xDA, OLED_CMD); //set com pin configuartionOLEDWriteByte(0x12, OLED_CMD); //OLEDWriteByte(0xDB, OLED_CMD); //set VcomhOLEDWriteByte(0x30, OLED_CMD); //OLEDWriteByte(0x8D, OLED_CMD); //set charge pump enableOLEDWriteByte(0x14, OLED_CMD); //OLEDWriteByte(0xAF, OLED_CMD); //--turn on oled panel
}//=====================================================================================
//
// OLEDInit(); //初始化OLED
// OLEDClear();
// OLEDShowCHinese(10, 0, 0);
// OLEDShowCHinese(28, 0, 1);
// OLEDShowCHinese(46, 0, 2);
// OLEDShowCHinese(64, 0, 3);
// OLEDShowCHinese(82, 0, 4);
// OLEDShowCHinese(100, 0, 5);
// OLEDShowString(6, 3, "CAN ID:0x", 16);
// OLEDShowString(78, 3, bbb, 16);
// OLEDShowString(62, 6, ccc, 16);
//=====================================================================================
#ifndef _OLEDFONT_H_
#define _OLEDFONT_H_
//常用ASCII表
//偏移量32
//ASCII字符集
//偏移量32
//大小:12*6
/************************************6*8的点阵************************************/
const unsigned char F6x8[][6] =
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp0x00, 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,// 00x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 10x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 20x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 30x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 40x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 50x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 60x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 70x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 80x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 90x00, 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,// A0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 550x00, 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,// a0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};
/****************************************8*16的点阵************************************/
const unsigned char F8X16[] =
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 00x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, //! 10x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //" 20x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00, 0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, //# 30x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00, 0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, //$ 40xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, //% 50x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, //& 60x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //' 70x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, //( 80x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, //) 90x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00, 0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, //* 100x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, //+ 110x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, //, 120x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //- 130x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, //. 140x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04, 0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, /// 150x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, //0 160x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //1 170x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, //2 180x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, 0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, //3 190x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, //4 200x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, //5 210x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, //6 220x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, //7 230x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, //8 240x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, //9 250x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, //: 260x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, //; 270x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, //< 280x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, //= 290x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, //> 300x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, //? 310xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00, 0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, //@ 320x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, //A 330x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, //B 340xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, 0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, //C 350x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, //D 360x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, //E 370x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, //F 380xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, //G 390x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, //H 400x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //I 410x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, //J 420x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00, 0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, //K 430x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, //L 440x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, //M 450x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, //N 460xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, //O 470x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, //P 480xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, //Q 490x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, //R 500x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, //S 510x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, //T 520x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, //U 530x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, //V 540xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00, 0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, //W 550x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08, 0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, //X 560x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, //Y 570x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, //Z 580x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, //[ 590x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, //\ 600x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, //] 610x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //^ 620x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //_ 630x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //` 640x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, //a 650x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, //b 660x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, //c 670x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, //d 680x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, //e 690x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //f 700x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, //g 710x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, //h 720x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //i 730x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, //j 740x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, //k 750x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, //l 760x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, //m 770x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, //n 780x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, //o 790x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, //p 800x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, //q 810x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, //r 820x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, //s 830x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, //t 840x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, //u 850x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, //v 860x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, //w 870x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, //x 880x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, //y 890x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, //z 900x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, //{ 910x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, //| 920x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, //} 930x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //~ 94
};const unsigned char chinese[][32] =
{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00},{0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00}, /*"上",0*/{0x10, 0x60, 0x02, 0x0C, 0xC0, 0x10, 0x08, 0xF7, 0x14, 0x54, 0x94, 0x14, 0xF4, 0x04, 0x00, 0x00},{0x04, 0x04, 0x7C, 0x03, 0x00, 0x01, 0x1D, 0x13, 0x11, 0x55, 0x99, 0x51, 0x3F, 0x11, 0x01, 0x00}, /*"海",1*/{0x40, 0x42, 0xCC, 0x00, 0x20, 0xF0, 0x28, 0x27, 0x24, 0xE4, 0x34, 0x2C, 0x20, 0xE0, 0x00, 0x00},{0x80, 0x40, 0x3F, 0x40, 0x80, 0xA1, 0x91, 0x8D, 0x83, 0x81, 0x9F, 0xA5, 0xA9, 0xA1, 0xB8, 0x00}, /*"逸",2*/{0x10, 0x88, 0xC4, 0x33, 0x04, 0xF4, 0x94, 0x94, 0xF4, 0x9F, 0xF4, 0x94, 0x94, 0xF4, 0x04, 0x00},{0x01, 0x00, 0xFF, 0x00, 0x42, 0x32, 0x02, 0x72, 0x82, 0x86, 0x9A, 0x82, 0xE2, 0x0A, 0x32, 0x00}, /*"德",3*/{0x10, 0x60, 0x02, 0x0C, 0xC0, 0x10, 0x08, 0x27, 0x24, 0x24, 0x24, 0x24, 0x24, 0x04, 0x00, 0x00},{0x04, 0x04, 0x7C, 0x03, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3F, 0x40, 0xF0, 0x00}, /*"汽",4*/{0x00, 0x08, 0x88, 0x48, 0x28, 0x18, 0x0F, 0xE8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00},{0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0xFF, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x00}, /*"车",5*/{0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x20, 0x40, 0x80, 0x00, 0x00},{0x08, 0x04, 0x03, 0x00, 0x00, 0x40, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0E, 0x00}, /*"小",6*/{0x00, 0x00, 0x10, 0x98, 0x94, 0x52, 0x51, 0x30, 0x10, 0x08, 0x04, 0x40, 0x80, 0x00, 0x00, 0x00},{0x00, 0x41, 0x21, 0x11, 0x0D, 0x41, 0x81, 0x7F, 0x01, 0x01, 0x05, 0x09, 0x11, 0x63, 0x00, 0x00}, /*"糸",7*/{0x00, 0x08, 0x88, 0x48, 0x28, 0x18, 0x0F, 0xE8, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00},{0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0xFF, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x00}, /*"车",8*/{0x80, 0x70, 0x00, 0xFF, 0x20, 0x10, 0x04, 0x04, 0x04, 0x04, 0xFC, 0x04, 0x04, 0x04, 0x04, 0x00},{0x80, 0x60, 0x18, 0x07, 0x08, 0x30, 0x00, 0x00, 0x40, 0x80, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"灯",9*/
};#endif