【STM32+HAL库】---- 硬件IIC驱动0.96OLED
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode
内容原著声明
代码借鉴学习于以下文章:
STM32 使用硬件IIC驱动0.96寸4针IOLED显示器(HAL库)
1 新建cubemax工程
1.1 配置系统时钟RCC
1.2 配置引脚
1.3 导出工程
略...
2 代码
2.1 OLED_IIC_Config.h
/**
* ************************************************************************
*
* @file OLED_IIC_Config.h
* @author zxr
* @brief IIC和OLED基础配置头文件
*
* ************************************************************************
* @copyright Copyright (c) 2024 zxr
* ************************************************************************
*/
#ifndef OLED_IIC_CONFIG_H
#define OLED_IIC_CONFIG_H
#include "main.h"
#include "stm32g0xx_hal.h"
#define OLED_ADDRESS 0x78 //OLED地址 默认0x78
//OLED命令控制宏
#define LEFT 0x27
#define RIGHT 0x26
#define UP 0X29
#define DOWM 0x2A
#define ON 0xA7
#define OFF 0xA6
#define SCREEN_PAGE_NUM (8) //屏幕页数
#define SCREEN_PAGEDATA_NUM (128) //每页的数据个数
#define SCREEN_COLUMN (128) //列数
#define SCREEN_ROW (64) //行数
void WriteCmd(unsigned char cmd); //写命令
void WriteDat(unsigned char dat); //写数据
void OLED_ON(void); //开启OLED
void OLED_OFF(void); //休眠OLED
void OLED_CLS(void); //OLED清屏函数
void OLED_Init(void); //OLED初始化函数
void OLED_RefreshRAM(void); //更新数据缓冲区
void OLED_ClearRAM(void); //清除数据缓冲区
void OLED_SetPixel(signed short int x, signed short int y, unsigned char set_pixel); //设置坐标像素点数据
void OLED_DisplayMode(unsigned char mode); //屏幕内容取反显示
void OLED_IntensityControl(unsigned char intensity);//屏幕亮度调节
void OLED_Shift(unsigned char shift_num); //全屏内容偏移指定距离
void OLED_HorizontalShift(unsigned char start_page,unsigned char end_page,unsigned char direction); //屏幕内容水平方向滚动播放
#endif /*OLED_IIC_CONFIG_H*/
2.2 OLED_IIC_Config.c
/**
* ************************************************************************
*
* @file OLED_IIC_Config.c
* @author zxr
* @brief IIC初始化配置和OLED屏幕的底层驱动
*
* ************************************************************************
* @copyright Copyright (c) 2024 zxr
* ************************************************************************
*/
#include "OLED_IIC_Config.h"
#include "i2c.h"
#include "MyDelay.h"
unsigned char ScreenBuffer[SCREEN_PAGE_NUM][SCREEN_COLUMN];//定义屏幕的存储空间
/**
* @brief 向OLED寄存器地址写一个byte的数据
* @param addr:寄存器地址
* @param data:要写入的数据
* @retval 无
*/
void I2C_WriteByte(uint8_t addr, uint8_t data)
{
extern I2C_HandleTypeDef hi2c1;
HAL_I2C_Mem_Write(&hi2c1, OLED_ADDRESS, addr, I2C_MEMADD_SIZE_8BIT, &data, 1, 10);
}
/**
* ************************************************************************
* @brief 写命令函数
* @param[in] cmd 写入的命令
* ************************************************************************
*/
void WriteCmd(unsigned char cmd)
{
I2C_WriteByte(0x00, cmd);
}
/**
* ************************************************************************
* @brief 写数据函数
* @param[in] dat 写入的数据
* ************************************************************************
*/
void WriteDat(unsigned char dat)
{
I2C_WriteByte(0x40, dat);
}
/**
* ************************************************************************
* @brief 开启OLED
* ************************************************************************
*/
void OLED_ON(void)
{
WriteCmd(0X8D); //设置电荷泵
WriteCmd(0X14); //开启电荷泵
WriteCmd(0XAF); //OLED唤醒
}
/**
* ************************************************************************
* @brief 休眠OLED
* ************************************************************************
*/
void OLED_OFF(void)
{
WriteCmd(0X8D); //设置电荷泵
WriteCmd(0X10); //关闭电荷泵
WriteCmd(0XAE); //OLED休眠
}
/**
* ************************************************************************
* @brief OLED清屏函数
* ************************************************************************
*/
void OLED_CLS(void)//清屏
{
unsigned char m,n;
for(m=0;m<8;m++)
{
WriteCmd(0xb0+m); //page0-page1
WriteCmd(0x00); //low column start address
WriteCmd(0x10); //high column start address
for(n=0;n<128;n++)
{
WriteDat(0x00);
}
}
}
/**
* ************************************************************************
* @brief OLED初始化函数
* ************************************************************************
*/
void OLED_Init(void)
{
WriteCmd(0xAE); //显示关闭
WriteCmd(0x20); //设置内存寻址模式
WriteCmd(0x10); //00,水平寻址模式;01,垂直寻址模式;10,页寻址模式(复位);11,无效
WriteCmd(0xb0); //设置页寻址模式的页起始地址,0-7
WriteCmd(0xc8); //设置COM输出扫描方向
WriteCmd(0x00); //-设置低列地址
WriteCmd(0x10); //-设置高列地址
WriteCmd(0x40); //-设置起始行地址
WriteCmd(0x81); //设置对比度控制寄存器
WriteCmd(0xff); //亮度调节 0x00~0xff
WriteCmd(0xa1); //设置段重新映射0到127
WriteCmd(0xa6); //设置正常显示
WriteCmd(0xa8); //设置复用比例(1到64)
WriteCmd(0x3F); //
WriteCmd(0xa4); //0xa4,输出遵循RAM内容;0xa5,输出忽略RAM内容
WriteCmd(0xd3); //设置显示偏移
WriteCmd(0x00); //不偏移
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); //设置DC-DC使能
WriteCmd(0x14); //
WriteCmd(0xaf); //--turn on oled panel
OLED_CLS();
}
/**
* ************************************************************************
* @brief 更新数据缓冲区
* ************************************************************************
*/
void OLED_RefreshRAM(void)
{
// 页寻址模式填充
for(unsigned short int m = 0; m < SCREEN_ROW/8; m++)
{
WriteCmd(0xb0+m); //设置页地址b0~b7
WriteCmd(0x00); //设置显示位置—列低地址00-0f
WriteCmd(0x10); //设置显示位置—列高地址10-1f
for(unsigned short int n = 0; n < SCREEN_COLUMN; n++)
{
WriteDat(ScreenBuffer[m][n]);
}
}
}
/**
* ************************************************************************
* @brief 清除数据缓冲区
* ************************************************************************
*/
void OLED_ClearRAM(void)
{
for(unsigned short int m = 0; m < SCREEN_ROW/8; m++)
{
for(unsigned short int n = 0; n < SCREEN_COLUMN; n++)
{
ScreenBuffer[m][n] = 0x00;
}
}
}
/**
* ************************************************************************
* @brief 设置坐标像素点数据
*
* @param[in] x 起始点横坐标(x:0~127)
* @param[in] y 起始点纵坐标(y:0~63)
* @param[in] set_pixel 该点的数据 SET_PIXEL = 1, RESET_PIXEL = 0
*
* ************************************************************************
*/
void OLED_SetPixel(signed short int x, signed short int y, unsigned char set_pixel)
{
if (x >= 0 && x < SCREEN_COLUMN && y >= 0 && y < SCREEN_ROW) {
if(set_pixel){
ScreenBuffer[y/8][x] |= (0x01 << (y%8));
}
else{
ScreenBuffer[y/8][x] &= ~(0x01 << (y%8));
}
}
}
/**
* ************************************************************************
* @brief 屏幕内容取反显示
*
* @param[in] mode 开关
* 开 ON 0xA7 点亮全屏
* 关 OFF 0xA6 默认此模式,设置像素点亮
*
* ************************************************************************
*/
void OLED_DisplayMode(unsigned char mode)
{
WriteCmd(mode);
}
/**
* ************************************************************************
* @brief 屏幕亮度调节
*
* @param[in] intensity 亮度大小(0~255),默认为0x7f
*
* ************************************************************************
*/
void OLED_IntensityControl(unsigned char intensity)
{
WriteCmd(0x81);
WriteCmd(intensity);
}
/**
* ************************************************************************
* @brief 全屏内容偏移指定距离
*
* @param[in] shift_num 偏移距离(0~63)
*
* ************************************************************************
*/
void OLED_Shift(unsigned char shift_num)
{
for(unsigned char i = 0; i < shift_num; i++)
{
WriteCmd(0xd3);//设置显示偏移,垂直向上偏移
WriteCmd(i);//偏移量
HAL_Delay(10);//延时时间
}
}
/**
* ************************************************************************
* @brief 屏幕内容水平方向滚动播放
*
* @param[in] start_page 开始页数 (0~7)
* @param[in] end_page 结束页数 (0~7)
* @param[in] direction 滚动方向
* 左 LEFT 0x27
* 右 RIGHT 0x26
* @note 在开始页数和结束页数之间的内容才会滚动播放,且写命令顺序不得改变
* ************************************************************************
*/
void OLED_HorizontalShift(unsigned char start_page,unsigned char end_page,unsigned char direction)
{
WriteCmd(0x2e); //关闭滚动
WriteCmd(direction);//设置滚动方向
WriteCmd(0x00);//虚拟字节设置,默认为0x00
WriteCmd(start_page);//设置开始页地址
WriteCmd(0x05);//设置每个滚动步骤之间的时间间隔的帧频
WriteCmd(end_page);//设置结束页地址
WriteCmd(0x00);//虚拟字节设置,默认为0x00
WriteCmd(0xff);//虚拟字节设置,默认为0xff
WriteCmd(0x2f);//开启滚动-0x2f,禁用滚动-0x2e,禁用需要重写数据
}
2.3 OLED_Function.h
/**
* ************************************************************************
*
* @file OLED_Function.h
* @author zxr
* @brief OLED功能函数驱动头文件
*
* ************************************************************************
* @copyright Copyright (c) 2024 zxr
* ************************************************************************
*/
#ifndef _OLED_FUNCTION_H_
#define _OLED_FUNCTION_H_
#include "OLED_IIC_Config.h"
//字符串显示函数
void OLED_ShowStr(signed short int x, signed short int y, unsigned char ch[], unsigned char TextSize);
//中文汉字显示函数
void OLED_ShowChinese(signed short int x, signed short int y, unsigned char* ch);
//BMP图片显示函数
void OLED_ShowBMP(signed short int x0,signed short int y0,signed short int L,signed short int H,const unsigned char BMP[]);
#endif /* _OLED_FUNCTION_H_ */
2.4 OLED_Function.c
#include "OLED_Function.h"
#include "OLED_Front.h"
/**
* ************************************************************************
* @brief 字符串显示函数
*
* @param[in] x 起始点横坐标(0~127)
* @param[in] y 起始点纵坐标(0~63)
* @param[in] ch 字符串(通过双引号引入)
* @param[in] TextSize 字符大小(1:6*8 ;2:8*16)
*
* ************************************************************************
*/
void OLED_ShowStr(signed short int x, signed short int y, unsigned char ch[], unsigned char TextSize)
{
if (x >= 0 && x < SCREEN_COLUMN && y >= 0 && y < SCREEN_ROW)
{
int32_t c = 0;
unsigned char j = 0;
switch(TextSize)
{
case 1:
{
while(ch[j] != '\0')
{
c = ch[j] - 32;
if(c < 0) //无效字符
break;
if(x >= 125 || (127-x < 6))//一行最大显示字符数:21字节显示,多出两列,不显示 || 剩余列小于6不能显示完整字符,换行显示
{
x = 0;
y += 8;//换行显示
if(63 - y < 8) // 不足以显示一行时不显示
break;
}
for(unsigned char m = 0; m < 6; m++)
{
for(unsigned char n = 0; n < 8; n++)
{
OLED_SetPixel(x+m, y+n, (F6x8[c][m] >> n) & 0x01);
}
}
x += 6;
j++;
}
}break;
case 2:
{
while(ch[j] != '\0')
{
c = ch[j] - 32;
if(c < 0) //无效字符
break;
if(x >= 127 || (127-x < 8))//16字节显示 || 剩余列小于8不能显示完整字符,换行显示
{
x = 0;
y += 16;//换行显示
if(63 - y < 16) // 不足以显示一行时不显示
break;
}
for(unsigned char m = 0; m < 2; m++)
{
for(unsigned char n = 0; n < 8; n++)
{
for(unsigned char i = 0; i < 8; i++)
{
OLED_SetPixel(x+n, y+i+m*8, (F8X16[c][n+m*8] >> i) & 0x01);
}
}
}
x += 8;
j++;
}
}break;
}
}
OLED_RefreshRAM();
}
/**
* ************************************************************************
* @brief 中文汉字显示函数
*
* @param[in] x 起始点横坐标(0~127)
* @param[in] y 起始点纵坐标(0~63)
* @param[in] ch 汉字字模库索引
*
* @example OLED_ShowCN(0,0,"字");
* ************************************************************************
*/
void OLED_ShowChinese(signed short int x, signed short int y, unsigned char* ch)
{
if (x >= 0 && x < SCREEN_COLUMN && y >= 0 && y < SCREEN_ROW) {
int32_t len = 0,offset = sizeof(F16x16_CN[0].index);
while(ch[len] != '\0')
{
if(x >= 127 || (127-x < 16))//8个汉字显示||剩余列小于16不能显示完整字符,换行显示
{
x = 0;
y += 16;
if(63 - y < 16) // 不足以显示一行时不显示
break;
}
//需要处理输入数据大于显示数据的问题
for(unsigned char i = 0; i < sizeof(F16x16_CN)/sizeof(GB2312_CN); i++)
{
if(((F16x16_CN[i].index[0] == ch[len]) && (F16x16_CN[i].index[1] == ch[len+1]))){
for(unsigned char m = 0; m < 2; m++) //页
{
for(unsigned char n = 0; n < 16; n++) // 列
{
for(unsigned char j = 0; j < 8; j++) // 行
{
OLED_SetPixel(x+n, y+j+m*8, (F16x16_CN[i].encoder[n+m*16] >> j) & 0x01);
}
}
}
x += 16;
len += offset;
break;
}
else if(F16x16_CN[i].index[0] == ch[len] && ch[len] == 0x20){
for(unsigned char m = 0; m < 2; m++)
{
for(unsigned char n = 0; n < 16; n++)
{
for(unsigned char j = 0; j < 8; j++)
{
OLED_SetPixel(x+n, y+j+m*8, (F16x16_CN[i].encoder[n+m*16] >> j) & 0x01);
}
}
}
x += 16;
len++;
break;
}
}
}
}
OLED_RefreshRAM();
}
/**
* ************************************************************************
* @brief BMP图片显示函数
*
* @param[in] x0 起始点横坐标(0~127)
* @param[in] y0 起始点纵坐标(0~63)
* @param[in] L BMP图片宽度
* @param[in] H BMP图片高度
* @param[in] BMP 图片取模地址
*
* @example OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_0);
* ************************************************************************
*/
void OLED_ShowBMP(signed short int x0,signed short int y0,signed short int L,signed short int H,const unsigned char BMP[])
{
if (x0 >= 0 && x0 < SCREEN_COLUMN && x0+L <= SCREEN_ROW &&\
y0 >= 0 && y0 < SCREEN_COLUMN && y0+H <= SCREEN_ROW) {
unsigned char *p = (unsigned char *)BMP;
for(signed short int y = y0; y < y0+H; y+=8)
{
for(signed short int x = x0; x < x0+L; x++)
{
for(signed short int i = 0; i < 8; i++)
{
OLED_SetPixel(x, y+i, ((*p) >> i) & 0x01);
}
p++;
}
}
}
OLED_RefreshRAM();
}
2.5 OLED_Front.h
点击查看代码
#ifndef _OLED_FRONT_H_
#define _OLED_FRONT_H_
/**
* ************************************************************************
* @brief 大小6*8的字符取模库
* ************************************************************************
*/
static 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
};
/**
* ************************************************************************
* @brief 大小为8*16的字符取模库
* ************************************************************************
*/
static unsigned char F8X16[][16]=
{
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
};
/**
* ************************************************************************
* @brief 汉字字模数据结构
* index[] 汉字内码索引。使用UTF-8编码格式时为index[3];使用GB2312或GBK编码格式时为index[2];
* encoder 点阵码数据
* ************************************************************************
*/
typedef struct {
char index[2];
unsigned char encoder[32];
}GB2312_CN;
/**
* ************************************************************************
* @brief GB2312_CN 16*16汉字字模库
* 取模设置:共阴、列行式、逆向输出
* 数组格式参照代码所示
* ************************************************************************
*/
static GB2312_CN F16x16_CN[] = {
{"嵌",
0x80,0x80,0xEE,0x88,0x88,0x88,0xE8,0x8F,0x08,0x88,0x78,0x48,0x4E,0x40,0xC0,0x00,
0x00,0x00,0x7F,0x24,0x24,0x24,0x7F,0x00,0x81,0x40,0x30,0x0F,0x30,0x41,0x80,0x00,
},
{"入",
0x00,0x00,0x00,0x00,0x00,0x01,0xE2,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x03,0x0C,0x30,0x40,0x80,0x80,0x00,
},
{"式",
0x10,0x10,0x90,0x90,0x90,0x90,0x90,0x10,0x10,0xFF,0x10,0x10,0x11,0x16,0x10,0x00,
0x00,0x20,0x60,0x20,0x3F,0x10,0x10,0x10,0x00,0x03,0x0C,0x10,0x20,0x40,0xF8,0x00,
},
{"学",
0x40,0x30,0x11,0x96,0x90,0x90,0x91,0x96,0x90,0x90,0x98,0x14,0x13,0x50,0x30,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x84,0x7E,0x06,0x05,0x04,0x04,0x04,0x04,0x04,0x00,
},
{"习",
0x00,0x02,0x02,0x02,0x12,0x22,0xC2,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
0x00,0x08,0x18,0x08,0x04,0x04,0x04,0x02,0x02,0x41,0x81,0x40,0x3F,0x00,0x00,0x00,
},
};
/**
* ************************************************************************
* @brief astronaut_x 太空人52*48系列(共10张) 图像取模 纵向取模,字节倒序
* ************************************************************************
*/
static unsigned char astronaut_0[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0xC0,
0xA0,0x60,0x60,0x60,0xA0,0xC0,0x40,0x40,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
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,0x10,0x00,0x00,0x30,0x0C,0x02,0x81,
0xE0,0xF0,0xF8,0xFC,0xFC,0xFC,0xFC,0xFE,0xFC,0xFC,0xFC,0xF8,0xF8,0xF1,0xE2,0x04,
0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x40,0x00,0x0F,
0x60,0x80,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x60,0x0F,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x02,0x08,0x10,0x42,0x84,0x04,0x09,0x13,0x17,0x17,0x0F,0x1F,0x6F,
0x1F,0x1F,0x1F,0x0F,0x07,0x07,0x03,0x00,0x00,0x00,0x02,0x44,0x48,0x90,0x62,0x98,
0x00,0xE4,0x08,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x18,0x40,0x04,0x28,0x20,0x98,0xA4,0xA4,0x18,0x40,0x00,0x02,
0x00,0x0A,0x04,0x03,0x0C,0xC0,0x00,0x40,0x80,0x01,0x04,0x00,0x00,0x00,0x00,0x00,
0x00,0x04,0x08,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,0x01,0x00,0x08,0x10,
0x42,0x00,0x08,0x38,0x48,0x05,0x24,0x1E,0x09,0x00,0x04,0x00,0x10,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_1[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,
0xE4,0x60,0x20,0x20,0x20,0x00,0x44,0x44,0x80,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
0x00,0x00,0x00,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,0x30,0x8C,0xC2,0xE1,
0xE3,0xF1,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xE0,0xC0,0x80,0x00,0x00,0x01,0x02,0x04,
0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFC,0x00,0x00,0xB0,0x70,0x4F,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x87,0x07,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x3F,
0x9F,0x1F,0x1F,0x0B,0x00,0x04,0x03,0x00,0x00,0x04,0x00,0x08,0x01,0x40,0x22,0x14,
0x08,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,0x02,0x08,0x10,0x40,
0x80,0x00,0x00,0x00,0x01,0x09,0x26,0xB0,0x20,0xC0,0xA0,0x80,0x00,0x41,0x08,0x05,
0x00,0x08,0x05,0x03,0x08,0x80,0x00,0x00,0x00,0x01,0x04,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,
0x00,0x80,0x08,0x08,0x29,0x26,0x0E,0x00,0x09,0x00,0x05,0x00,0x00,0x02,0x84,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_2[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x00,
0x20,0x20,0x20,0x20,0x20,0x00,0x40,0x44,0x80,0x08,0x10,0x20,0x40,0x00,0x00,0x00,
0x00,0x00,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0x9C,0xCE,0xC7,
0xC1,0xC1,0xC0,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,
0x30,0x81,0x02,0x04,0x10,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF0,0x00,0x00,
0x00,0x00,0x00,0x80,0xEC,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x07,0x07,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
0x7F,0x93,0x10,0x08,0x04,0x04,0x03,0x00,0x00,0x10,0x21,0x40,0x82,0x44,0x28,0x10,
0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x07,0x1C,0x70,0xA0,0xE0,0x80,0x02,0x92,0x12,0x00,0x00,
0x10,0x09,0x06,0x03,0x08,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x10,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x01,
0x04,0x00,0x08,0x08,0x2F,0x22,0x1E,0x00,0x09,0x00,0x05,0x00,0x00,0x00,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_3[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,
0x20,0x20,0x20,0x20,0x20,0x00,0x40,0x40,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,0x30,0x7C,0x8E,0x81,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0xC4,
0x30,0xC0,0x02,0x04,0x10,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x00,0x0F,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,0xF8,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xE2,0x2F,0x20,0x20,0x40,0x00,0x00,0x01,0x04,0x10,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x08,0x10,0x00,0x03,0x07,0x07,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,
0x10,0xF0,0x10,0x08,0x04,0x04,0x03,0x20,0x42,0x06,0x0C,0x38,0xE0,0xC1,0x02,0x04,
0x90,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x10,0x20,0x18,0xA4,0xA4,0x18,0x01,0x06,0x08,
0x10,0x01,0x0D,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x00,0x04,0x18,0x24,0x22,0x11,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x00,0x06,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_4[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x40,0x44,
0x24,0x24,0x20,0x22,0x20,0x20,0x44,0x44,0x80,0x08,0x10,0x20,0x40,0x00,0x00,0x00,
0x00,0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xEC,0x02,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x1B,0x04,
0x18,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,
0x7C,0xFC,0xF8,0xF8,0xF0,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xE0,0x1F,0x00,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,0x01,0x07,0x07,0x0F,0x0F,0x1F,0x10,0x10,0x10,0x10,
0x10,0xF0,0x90,0x08,0x38,0x74,0xC2,0x81,0x00,0x00,0x00,0x00,0x01,0x04,0x08,0x10,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x00,0x00,0x00,0x02,0x02,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x18,0x00,0x00,0x00,0x02,0x04,0x10,0x60,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x16,0x38,0x70,0xF0,0x83,0x8F,0x94,0x28,0x08,
0x08,0x14,0xC6,0x19,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x30,
0x00,0x00,0x00,0x00,0x02,0x04,0x10,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x02,0x04,0x04,0x28,0x04,0x23,0x03,0x11,0x0E,0x45,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_5[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x40,0x40,
0x20,0x20,0x20,0x20,0x20,0x60,0x44,0xC4,0x84,0x08,0x10,0x20,0x4C,0x80,0x00,0x00,
0x00,0x08,0x08,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,0x30,0x1C,0x1E,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x05,0x0A,0x0C,
0x30,0xC1,0x02,0x0C,0x10,0x60,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x05,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
0x70,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x80,0xF0,0x4F,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x0C,0x08,0x10,0x10,0x10,0x00,0x30,0xA0,
0x30,0xD0,0x08,0x04,0x02,0x02,0x01,0x00,0x00,0x03,0x06,0x1C,0x38,0xE1,0xE2,0x9C,
0x08,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x00,0x00,0x00,0x03,0x18,0x60,0x07,0x3E,0x28,0xB0,0xC0,0x80,0xA0,0x10,0x08,0x00,
0x04,0x8A,0x04,0x03,0x0C,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x24,
0x28,0x00,0x00,0x00,0x03,0x04,0x18,0x60,0x80,0x00,0x01,0x00,0x01,0x01,0x00,0x01,
0x02,0x04,0x08,0x38,0x48,0x47,0x26,0x1E,0x09,0x09,0x04,0x02,0x00,0x00,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_6[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,
0x20,0x20,0x60,0xA0,0x20,0x60,0xC0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0C,0x02,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x3F,0xFF,0xFF,0xFF,0xFE,0xFC,
0xF8,0xC0,0x00,0x00,0x10,0x20,0x80,0x40,0x40,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x30,0xC0,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x03,0x07,0x87,0x6F,0x0F,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x10,0x20,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x05,0x08,0x08,0x10,0x10,0x10,0x90,0x60,
0x30,0x10,0x10,0x18,0x48,0x14,0x42,0x01,0x09,0x20,0x42,0x84,0x48,0x30,0x40,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x08,0x10,0x40,0x00,0x00,0x01,0x84,0x89,0x64,0x0C,0x92,0x21,
0x02,0x0C,0x01,0x0A,0xC0,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,
0x01,0x02,0x04,0x39,0x4A,0x3C,0x22,0x12,0x01,0x08,0x07,0x00,0x00,0x00,0x00,0x00,
0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_7[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0xC0,
0xE0,0x60,0x60,0x20,0xA0,0xC0,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x02,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,
0xF0,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x00,0x0F,
0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x0F,0x1F,
0x1F,0x3F,0x3F,0xBF,0x7F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80,
0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,
0x00,0x00,0x02,0x08,0x10,0x00,0x03,0x04,0x00,0x0E,0x14,0x18,0x10,0x90,0x60,0x20,
0x30,0x90,0xD0,0x08,0x04,0x04,0x82,0x01,0x01,0x00,0x82,0x44,0x08,0x10,0xC0,0x00,
0x00,0x00,0x00,0x00,0x01,0x04,0x0B,0x20,0x40,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x04,0x10,0x40,0x81,0x07,0x1C,0xB0,0xF0,0x01,0x8C,0x08,0x63,0x00,
0x00,0x01,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x02,0x00,
0x00,0x00,0x00,0x00,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,0x01,
0x02,0x00,0x04,0x00,0x18,0x24,0x20,0x12,0x01,0x09,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
static unsigned char astronaut_8[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xC0,
0x24,0x20,0x20,0x20,0xA0,0xC0,0xC4,0xC4,0x80,0x08,0x10,0x20,0x40,0x80,0x00,0x06,
0x00,0x00,0x00,0x00,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,0x0C,0x02,0x07,
0x03,0x01,0x00,0xE0,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,
0xF0,0x80,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x03,0x1F,0x3F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x04,0x04,0x08,0x00,0x10,0x18,0x18,0x10,0x20,
0x10,0x10,0x11,0x09,0x05,0x04,0x03,0x00,0x00,0x00,0x03,0x04,0x0A,0xA4,0xE8,0x10,
0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x10,0x20,0x80,
0x00,0x00,0x00,0x00,0x04,0x20,0x40,0x23,0x18,0x20,0x80,0x80,0x0A,0x41,0x09,0x00,
0x00,0x08,0x84,0x03,0x08,0xA0,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x00,0x00,0x00,0x00,0x02,0x04,0x10,0x20,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x81,
0x04,0x00,0x08,0x30,0x48,0x04,0x23,0x17,0x09,0x04,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,
};
static unsigned char astronaut_9[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,
0x20,0x20,0x20,0x20,0x20,0x00,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x88,0x00,0x00,
0x00,0x00,0x00,0x00,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,0x7C,0x0E,0x07,
0x02,0xC0,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFC,
0xF0,0x80,0x02,0x04,0x10,0x20,0x80,0x00,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x60,0x80,0x00,0x00,0x00,0x0F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0x8F,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x00,0x00,0x08,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x04,0x08,0x00,0x10,0x11,0x11,0x23,0x23,
0x13,0x13,0x93,0x0B,0x07,0x07,0x03,0x00,0x00,0x00,0x02,0x45,0x0A,0x64,0xC8,0x10,
0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x10,0x40,0x01,0x24,0x10,0x40,0x14,0xA0,0x04,0x00,0x00,0x01,
0x02,0x88,0x04,0x07,0xB0,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x04,0x10,0x20,0x80,0x00,0x01,0x02,0x02,0x01,0x01,0x02,
0x04,0x00,0x08,0x30,0x48,0x45,0x26,0x1A,0x01,0x08,0x03,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
#endif
3 功能验证
首先在main.c
中引入头文件
/* USER CODE BEGIN Includes */
#include "OLED_IIC_Config.h"
#include "OLED_Function.h"
#include "OLED_Front.h"
/* USER CODE END Includes */
随即根据要求在main函数
中添加对应功能函数即可
3.1 显示英文字符
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
OLED_Init(); //OLED初始化
OLED_ShowStr(0,0,"OLED-TEXT",1);
OLED_ShowStr(0,16,"OLED-TEXT",2);
}
3.2 显示中文汉字
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
OLED_Init(); //OLED初始化
OLED_ShowChinese(0,16,"嵌");
OLED_ShowChinese(16,16,"入");
OLED_ShowChinese(32,16,"式");
}
【注意】使用时应将编译器编码选项选择为GBK系列
,否则编译报错,尤其注意通过keil修改后,再用vscode打开看见有乱码时,一定检查一下编译器的编码格式是否为GBK系列
3.3 显示内容垂直偏移指定距离
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
OLED_Init(); //OLED初始化
OLED_ShowStr(0,40,"OLED-TEXT",1);
OLED_ShowChinese(0,48,"嵌");
OLED_ShowChinese(16,48,"入");
OLED_ShowChinese(32,48,"式");
OLED_Shift(20);
}
3.4 显示内容水平循环滚动
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
OLED_Init(); //OLED初始化
OLED_ShowStr(0,0,"OLED-TEXT",1);
OLED_ShowChinese(0,16,"嵌");
OLED_ShowChinese(16,16,"入");
OLED_ShowChinese(32,16,"式");
OLED_HorizontalShift(0,3,RIGHT);
}
3.3 显示BMP图片
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_I2C1_Init();
OLED_Init(); //OLED初始化
while (1)
{
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_0);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_1);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_2);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_3);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_4);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_5);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_6);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_7);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_8);
OLED_ShowBMP(0,0,52,48,(unsigned char *)astronaut_9);
}
}
本文来自博客园,作者:晚风也温柔,转载请注明原文链接:https://www.cnblogs.com/zxr-blog/p/18002669