UP 路径优化
This commit is contained in:
313
lib/oled/inc/oled.h
Normal file
313
lib/oled/inc/oled.h
Normal file
@@ -0,0 +1,313 @@
|
||||
#pragma once
|
||||
#ifndef HW_LIB_OLED_H
|
||||
#define HW_LIB_OLED_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
|
||||
#define REFRESH_CALL_ENABLE 1 //使用DMA或者整体刷新函数
|
||||
#define HZK_FONT //使用HZK 12/16 字体 tools下可自由生成
|
||||
#define UTF8_TO_UNICODE //启用UTF8转换显示
|
||||
//#define LVGL_FONT //启用LVGL字体
|
||||
|
||||
/**
|
||||
* @brief OLED设备结构体
|
||||
*/
|
||||
typedef struct OLED_Dev OLED_T;
|
||||
|
||||
/**
|
||||
* @brief OLED命令处理函数指针类型
|
||||
* @param data: [输入] 数据指针
|
||||
* @param len: [输入] 数据长度
|
||||
* @return uint8_t 返回值
|
||||
*/
|
||||
typedef uint8_t (*OLED_CMD_t)(uint8_t* data, size_t len);
|
||||
|
||||
/**
|
||||
* @brief OLED数据处理函数指针类型
|
||||
* @param data: [输入] 数据指针
|
||||
* @param len: [输入] 数据长度
|
||||
* @return uint8_t 返回值
|
||||
*/
|
||||
typedef uint8_t (*OLED_DATA_t)(uint8_t* data, size_t len);
|
||||
|
||||
#if REFRESH_CALL_ENABLE
|
||||
|
||||
/**
|
||||
* @brief OLED刷新函数指针类型
|
||||
*/
|
||||
typedef void (*OLED_REFRESH_t)(OLED_T* dev);
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OLED状态枚举
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
IDLE, /**< 空闲状态 */
|
||||
WRITE, /**< 写入状态 */
|
||||
REFRESH, /**< 刷新状态 */
|
||||
} OLED_STATE_T;
|
||||
|
||||
/**
|
||||
* @brief OLED设备结构体
|
||||
*/
|
||||
struct OLED_Dev
|
||||
{
|
||||
uint8_t* buf; /**< 显示缓冲区指针 */
|
||||
uint8_t width; /**< 显示宽度 */
|
||||
uint8_t height; /**< 显示高度 */
|
||||
OLED_STATE_T state; /**< OLED状态 */
|
||||
OLED_CMD_t cmd; /**< OLED命令处理函数指针 */
|
||||
OLED_DATA_t data; /**< OLED数据处理函数指针 */
|
||||
#if REFRESH_CALL_ENABLE
|
||||
OLED_REFRESH_t call; /**< OLED刷新函数指针 */
|
||||
#endif
|
||||
};
|
||||
|
||||
// OLED初始化指令数组
|
||||
//const uint8_t initCmd[] = {
|
||||
// 1, 0xAE, // 关闭显示
|
||||
// 2, 0xD5, 0x80, // 设置显示时钟分频比/振荡器频率
|
||||
// 2, 0xA8, 0x3F, // 设置多路复用比率
|
||||
// 2, 0xD3, 0x00, // 设置显示偏移
|
||||
// 2, 0x40, 0x00, // 设置显示起始行
|
||||
// 2, 0x8D, 0x14, // 电荷泵设置
|
||||
// 2, 0x20, 0x00, // 设置内存寻址模式
|
||||
// 1, 0xA0, // 设置段重映射
|
||||
// 1, 0xC0, // 设置COM输出扫描方向
|
||||
// 2, 0xDA, 0x12, // 设置COM引脚硬件配置
|
||||
// 2, 0x81, 0xCF, // 设置对比度控制
|
||||
// 2, 0xD9, 0xF1, // 设置预充电周期
|
||||
// 2, 0xDB, 0x20, // 设置VCOMH取消电平
|
||||
// 2, 0xA4, 0xA6, // 整个显示打开
|
||||
// 1, 0xAF // 打开显示
|
||||
//};
|
||||
|
||||
|
||||
/**
|
||||
* @brief OLED初始化
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @return void
|
||||
* @example OLED_Init(&oled_dev);
|
||||
*/
|
||||
void OLED_Init(OLED_T* dev);
|
||||
|
||||
/**
|
||||
* @brief OLED初始化
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @return void
|
||||
* @example OLED_Init(&oled_dev);
|
||||
*/
|
||||
void OLED_Init_CMD(OLED_T* dev, uint8_t* cmd, uint16_t len);
|
||||
/**
|
||||
* @brief 打开OLED显示
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @return void
|
||||
* @example OLED_ON(&oled_dev);
|
||||
*/
|
||||
void OLED_ON(OLED_T* dev);
|
||||
|
||||
/**
|
||||
* @brief 关闭OLED显示
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @return void
|
||||
* @example OLED_OFF(&oled_dev);
|
||||
*/
|
||||
void OLED_OFF(OLED_T* dev);
|
||||
|
||||
/**
|
||||
* @brief 打开或关闭OLED显示
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param e: [输入] true表示打开,false表示关闭
|
||||
* @return void
|
||||
* @example OLED_Turn(&oled_dev, true);
|
||||
*/
|
||||
void OLED_Turn(OLED_T* dev, bool e);
|
||||
|
||||
/**
|
||||
* @brief 刷新OLED显示
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @return void
|
||||
* @example OLED_Refresh(&oled_dev);
|
||||
*/
|
||||
void OLED_Refresh(OLED_T* dev);
|
||||
|
||||
/**
|
||||
* @brief 设置OLED显示开关
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param e: [输入] true表示显示,false表示关闭
|
||||
* @return void
|
||||
* @example OLED_DisplayTurn(&oled_dev, true);
|
||||
*/
|
||||
void OLED_DisplayTurn(OLED_T* dev, bool e);
|
||||
|
||||
/**
|
||||
* @brief 设置显示位置
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] X坐标
|
||||
* @param y: [输入] Y坐标
|
||||
* @return void
|
||||
* @example OLED_Set(&oled_dev, 0, 0);
|
||||
*/
|
||||
void OLED_Set(OLED_T* dev, uint8_t x, uint8_t y);
|
||||
|
||||
/**
|
||||
* @brief 取消显示位置
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] X坐标偏移量
|
||||
* @param y: [输入] Y坐标偏移量
|
||||
* @return void
|
||||
* @example OLED_RSet(&oled_dev, 10, 10);
|
||||
*/
|
||||
void OLED_RSet(OLED_T* dev, uint8_t x, uint8_t y);
|
||||
|
||||
/**
|
||||
* @brief 绘制直线
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x1: [输入] 起始点X坐标
|
||||
* @param y1: [输入] 起始点Y坐标
|
||||
* @param x2: [输入] 结束点X坐标
|
||||
* @param y2: [输入] 结束点Y坐标
|
||||
* @return void
|
||||
* @example OLED_DrawLine(&oled_dev, 0, 0, 20, 20);
|
||||
*/
|
||||
void OLED_DrawLine(OLED_T* dev, uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
|
||||
|
||||
/**
|
||||
* @brief 在 OLED 上绘制矩形
|
||||
* @param dev: [输入] OLED 设备指针
|
||||
* @param x1: [输入] 矩形左上角 x 坐标
|
||||
* @param y1: [输入] 矩形左上角 y 坐标
|
||||
* @param x2: [输入] 矩形右下角 x 坐标
|
||||
* @param y2: [输入] 矩形右下角 y 坐标
|
||||
* @return void
|
||||
* @example OLED_DrawRect(&oledDevice, 10, 10, 50, 30);
|
||||
**/
|
||||
void OLED_DrawRect(OLED_T* dev, uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);
|
||||
|
||||
/**
|
||||
* @brief 绘制圆
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] 圆心X坐标
|
||||
* @param y: [输入] 圆心Y坐标
|
||||
* @param r: [输入] 圆半径
|
||||
* @return void
|
||||
* @example OLED_DrawCircle(&oled_dev, 30, 30, 10);
|
||||
*/
|
||||
void OLED_DrawCircle(OLED_T* dev, uint8_t x, uint8_t y, uint8_t r);
|
||||
|
||||
/**
|
||||
* @brief 显示字符
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] X坐标
|
||||
* @param y: [输入] Y坐标
|
||||
* @param chr: [输入] 要显示的字符
|
||||
* @param size1: [输入] 字体大小
|
||||
* @return void
|
||||
* @example OLED_ShowChar(&oled_dev, 0, 0, 'A', 16);
|
||||
*/
|
||||
void OLED_ShowChar(OLED_T* dev, uint8_t x, uint8_t y, uint8_t chr, uint8_t size1);
|
||||
|
||||
/**
|
||||
* @brief 显示字符串
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] X坐标
|
||||
* @param y: [输入] Y坐标
|
||||
* @param chr: [输入] 要显示的字符串
|
||||
* @param size1: [输入] 字体大小
|
||||
* @return void
|
||||
* @example OLED_ShowString(&oled_dev, 0, 0, "Hello", 16);
|
||||
*/
|
||||
void OLED_ShowString(OLED_T* dev, uint8_t x, uint8_t y, uint8_t* chr, uint8_t size1);
|
||||
#ifdef HZK_FONT
|
||||
|
||||
/**
|
||||
* @brief 在OLED上显示指定大小的中文字符串
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] X坐标
|
||||
* @param y: [输入] Y坐标
|
||||
* @param str: [输入] 中文字符串指针
|
||||
* @return void
|
||||
* @example OLED_ShowCHString(&oled_device, 0, 0, chinese_str);
|
||||
**/
|
||||
void OLED_ShowCHString(OLED_T* dev, uint8_t x, uint8_t y, uint8_t* str);
|
||||
#endif
|
||||
/**
|
||||
* @brief 在OLED屏幕上显示数字
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] 数字显示的起始横坐标
|
||||
* @param y: [输入] 数字显示的起始纵坐标
|
||||
* @param num: [输入] 要显示的数字
|
||||
* @param len: [输入] 数字长度
|
||||
* @param size1: [输入] 字体大小
|
||||
* @return void
|
||||
* @example OLED_ShowNum(&oled_dev, 0, 0, 12345, 5, 12);
|
||||
**/
|
||||
void OLED_ShowNum(OLED_T* dev, uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size1);
|
||||
|
||||
/**
|
||||
* @brief 在OLED屏幕上显示图片
|
||||
* @param dev: [输入] OLED设备结构体指针
|
||||
* @param x0: [输入] 图片左上角x坐标
|
||||
* @param y0: [输入] 图片左上角y坐标
|
||||
* @param w: [输入] 图片宽度
|
||||
* @param h: [输入] 图片高度
|
||||
* @param bmp: [输入] 图片数据指针
|
||||
* @return void
|
||||
* @example OLED_ShowPic(&oled_dev, 0, 0, 128, 64, bmp_data);
|
||||
**/
|
||||
void OLED_ShowPic(OLED_T* dev, uint8_t x0, uint8_t y0, uint8_t w, uint8_t h, uint8_t* bmp);
|
||||
|
||||
/**
|
||||
* @brief 设置显示起始坐标
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param x: [输入] X坐标
|
||||
* @param y: [输入] Y坐标
|
||||
* @return void
|
||||
* @example OLED_SPos(&oled_dev, 0, 0);
|
||||
*/
|
||||
void OLED_SPos(OLED_T* dev, uint8_t x, uint8_t y);
|
||||
|
||||
/**
|
||||
* @brief 填充OLED显示缓冲区
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @param data: [输入] 填充数据
|
||||
* @return void
|
||||
* @example OLED_Fill(&oled_dev, 0xFF);
|
||||
*/
|
||||
void OLED_Fill(OLED_T* dev, uint8_t data);
|
||||
|
||||
/**
|
||||
* @brief 清空OLED显示缓冲区
|
||||
* @param dev: [输入] OLED设备指针
|
||||
* @return void
|
||||
* @example OLED_CLS(&oled_dev);
|
||||
*/
|
||||
void OLED_CLS(OLED_T* dev);
|
||||
|
||||
#ifdef LVGL_FONT
|
||||
|
||||
#include "lvgl.h"
|
||||
|
||||
/**
|
||||
* @brief 在OLED上显示字符串
|
||||
* @param dev: [输入] OLED设备结构体指针
|
||||
* @param font: [输入] 字体信息
|
||||
* @param s: [输入] 要显示的字符串
|
||||
* @param x: [输入] 字符串左上角 x 坐标
|
||||
* @param y: [输入] 字符串左上角 y 坐标
|
||||
* @return void
|
||||
* @example OLED_DisplayString(&oled_device, &font_arial_16, "Hello World", 10, 20);
|
||||
**/
|
||||
void OLED_DisplayString(OLED_T *dev, const lv_font_t *font, uint8_t *s, uint16_t x, uint16_t y);
|
||||
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif //HW_LIB_OLED_H
|
583
lib/oled/inc/oled_font.h
Normal file
583
lib/oled/inc/oled_font.h
Normal file
@@ -0,0 +1,583 @@
|
||||
#ifndef HW_LIB_OLED_FONT_H
|
||||
#define HW_LIB_OLED_FONT_H
|
||||
|
||||
//12*6 ASCII字符集点阵
|
||||
const unsigned char asc2_1206[95][12] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*" ",0*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"!",1*/
|
||||
{0x00, 0x00, 0x30, 0x00, 0x40, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00}, /*""",2*/
|
||||
{0x09, 0x00, 0x0B, 0xC0, 0x3D, 0x00, 0x0B, 0xC0, 0x3D, 0x00, 0x09, 0x00}, /*"#",3*/
|
||||
{0x18, 0xC0, 0x24, 0x40, 0x7F, 0xE0, 0x22, 0x40, 0x31, 0x80, 0x00, 0x00}, /*"$",4*/
|
||||
{0x18, 0x00, 0x24, 0xC0, 0x1B, 0x00, 0x0D, 0x80, 0x32, 0x40, 0x01, 0x80}, /*"%",5*/
|
||||
{0x03, 0x80, 0x1C, 0x40, 0x27, 0x40, 0x1C, 0x80, 0x07, 0x40, 0x00, 0x40}, /*"&",6*/
|
||||
{0x10, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"'",7*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x20, 0x40, 0x40, 0x20}, /*"(",8*/
|
||||
{0x00, 0x00, 0x40, 0x20, 0x20, 0x40, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00}, /*")",9*/
|
||||
{0x09, 0x00, 0x06, 0x00, 0x1F, 0x80, 0x06, 0x00, 0x09, 0x00, 0x00, 0x00}, /*"*",10*/
|
||||
{0x04, 0x00, 0x04, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00}, /*"+",11*/
|
||||
{0x00, 0x10, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*",",12*/
|
||||
{0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00}, /*"-",13*/
|
||||
{0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*".",14*/
|
||||
{0x00, 0x20, 0x01, 0xC0, 0x06, 0x00, 0x38, 0x00, 0x40, 0x00, 0x00, 0x00}, /*"/",15*/
|
||||
{0x1F, 0x80, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x1F, 0x80, 0x00, 0x00}, /*"0",16*/
|
||||
{0x00, 0x00, 0x10, 0x40, 0x3F, 0xC0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00}, /*"1",17*/
|
||||
{0x18, 0xC0, 0x21, 0x40, 0x22, 0x40, 0x24, 0x40, 0x18, 0x40, 0x00, 0x00}, /*"2",18*/
|
||||
{0x10, 0x80, 0x20, 0x40, 0x24, 0x40, 0x24, 0x40, 0x1B, 0x80, 0x00, 0x00}, /*"3",19*/
|
||||
{0x02, 0x00, 0x0D, 0x00, 0x11, 0x00, 0x3F, 0xC0, 0x01, 0x40, 0x00, 0x00}, /*"4",20*/
|
||||
{0x3C, 0x80, 0x24, 0x40, 0x24, 0x40, 0x24, 0x40, 0x23, 0x80, 0x00, 0x00}, /*"5",21*/
|
||||
{0x1F, 0x80, 0x24, 0x40, 0x24, 0x40, 0x34, 0x40, 0x03, 0x80, 0x00, 0x00}, /*"6",22*/
|
||||
{0x30, 0x00, 0x20, 0x00, 0x27, 0xC0, 0x38, 0x00, 0x20, 0x00, 0x00, 0x00}, /*"7",23*/
|
||||
{0x1B, 0x80, 0x24, 0x40, 0x24, 0x40, 0x24, 0x40, 0x1B, 0x80, 0x00, 0x00}, /*"8",24*/
|
||||
{0x1C, 0x00, 0x22, 0xC0, 0x22, 0x40, 0x22, 0x40, 0x1F, 0x80, 0x00, 0x00}, /*"9",25*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*":",26*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*";",27*/
|
||||
{0x00, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x11, 0x00, 0x20, 0x80, 0x40, 0x40}, /*"<",28*/
|
||||
{0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00}, /*"=",29*/
|
||||
{0x00, 0x00, 0x40, 0x40, 0x20, 0x80, 0x11, 0x00, 0x0A, 0x00, 0x04, 0x00}, /*">",30*/
|
||||
{0x18, 0x00, 0x20, 0x00, 0x23, 0x40, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00}, /*"?",31*/
|
||||
{0x1F, 0x80, 0x20, 0x40, 0x27, 0x40, 0x29, 0x40, 0x1F, 0x40, 0x00, 0x00}, /*"@",32*/
|
||||
{0x00, 0x40, 0x07, 0xC0, 0x39, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x40}, /*"A",33*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x24, 0x40, 0x24, 0x40, 0x1B, 0x80, 0x00, 0x00}, /*"B",34*/
|
||||
{0x1F, 0x80, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x30, 0x80, 0x00, 0x00}, /*"C",35*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x20, 0x40, 0x20, 0x40, 0x1F, 0x80, 0x00, 0x00}, /*"D",36*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x24, 0x40, 0x2E, 0x40, 0x30, 0xC0, 0x00, 0x00}, /*"E",37*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x24, 0x40, 0x2E, 0x00, 0x30, 0x00, 0x00, 0x00}, /*"F",38*/
|
||||
{0x0F, 0x00, 0x10, 0x80, 0x20, 0x40, 0x22, 0x40, 0x33, 0x80, 0x02, 0x00}, /*"G",39*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x04, 0x00, 0x04, 0x00, 0x3F, 0xC0, 0x20, 0x40}, /*"H",40*/
|
||||
{0x20, 0x40, 0x20, 0x40, 0x3F, 0xC0, 0x20, 0x40, 0x20, 0x40, 0x00, 0x00}, /*"I",41*/
|
||||
{0x00, 0x60, 0x20, 0x20, 0x20, 0x20, 0x3F, 0xC0, 0x20, 0x00, 0x20, 0x00}, /*"J",42*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x24, 0x40, 0x0B, 0x00, 0x30, 0xC0, 0x20, 0x40}, /*"K",43*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x20, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xC0}, /*"L",44*/
|
||||
{0x3F, 0xC0, 0x3C, 0x00, 0x03, 0xC0, 0x3C, 0x00, 0x3F, 0xC0, 0x00, 0x00}, /*"M",45*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x0C, 0x40, 0x23, 0x00, 0x3F, 0xC0, 0x20, 0x00}, /*"N",46*/
|
||||
{0x1F, 0x80, 0x20, 0x40, 0x20, 0x40, 0x20, 0x40, 0x1F, 0x80, 0x00, 0x00}, /*"O",47*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x24, 0x40, 0x24, 0x00, 0x18, 0x00, 0x00, 0x00}, /*"P",48*/
|
||||
{0x1F, 0x80, 0x21, 0x40, 0x21, 0x40, 0x20, 0xE0, 0x1F, 0xA0, 0x00, 0x00}, /*"Q",49*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x24, 0x40, 0x26, 0x00, 0x19, 0xC0, 0x00, 0x40}, /*"R",50*/
|
||||
{0x18, 0xC0, 0x24, 0x40, 0x24, 0x40, 0x22, 0x40, 0x31, 0x80, 0x00, 0x00}, /*"S",51*/
|
||||
{0x30, 0x00, 0x20, 0x40, 0x3F, 0xC0, 0x20, 0x40, 0x30, 0x00, 0x00, 0x00}, /*"T",52*/
|
||||
{0x20, 0x00, 0x3F, 0x80, 0x00, 0x40, 0x00, 0x40, 0x3F, 0x80, 0x20, 0x00}, /*"U",53*/
|
||||
{0x20, 0x00, 0x3E, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0x20, 0x00}, /*"V",54*/
|
||||
{0x38, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x07, 0xC0, 0x38, 0x00, 0x00, 0x00}, /*"W",55*/
|
||||
{0x20, 0x40, 0x39, 0xC0, 0x06, 0x00, 0x39, 0xC0, 0x20, 0x40, 0x00, 0x00}, /*"X",56*/
|
||||
{0x20, 0x00, 0x38, 0x40, 0x07, 0xC0, 0x38, 0x40, 0x20, 0x00, 0x00, 0x00}, /*"Y",57*/
|
||||
{0x30, 0x40, 0x21, 0xC0, 0x26, 0x40, 0x38, 0x40, 0x20, 0xC0, 0x00, 0x00}, /*"Z",58*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x7F, 0xE0, 0x40, 0x20, 0x40, 0x20, 0x00, 0x00}, /*"[",59*/
|
||||
{0x00, 0x00, 0x70, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x40, 0x00, 0x00}, /*"\",60*/
|
||||
{0x00, 0x00, 0x40, 0x20, 0x40, 0x20, 0x7F, 0xE0, 0x00, 0x00, 0x00, 0x00}, /*"]",61*/
|
||||
{0x00, 0x00, 0x20, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"^",62*/
|
||||
{0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10}, /*"_",63*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"`",64*/
|
||||
{0x00, 0x00, 0x02, 0x80, 0x05, 0x40, 0x05, 0x40, 0x03, 0xC0, 0x00, 0x40}, /*"a",65*/
|
||||
{0x20, 0x00, 0x3F, 0xC0, 0x04, 0x40, 0x04, 0x40, 0x03, 0x80, 0x00, 0x00}, /*"b",66*/
|
||||
{0x00, 0x00, 0x03, 0x80, 0x04, 0x40, 0x04, 0x40, 0x06, 0x40, 0x00, 0x00}, /*"c",67*/
|
||||
{0x00, 0x00, 0x03, 0x80, 0x04, 0x40, 0x24, 0x40, 0x3F, 0xC0, 0x00, 0x40}, /*"d",68*/
|
||||
{0x00, 0x00, 0x03, 0x80, 0x05, 0x40, 0x05, 0x40, 0x03, 0x40, 0x00, 0x00}, /*"e",69*/
|
||||
{0x00, 0x00, 0x04, 0x40, 0x1F, 0xC0, 0x24, 0x40, 0x24, 0x40, 0x20, 0x00}, /*"f",70*/
|
||||
{0x00, 0x00, 0x02, 0xE0, 0x05, 0x50, 0x05, 0x50, 0x06, 0x50, 0x04, 0x20}, /*"g",71*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x04, 0x40, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x40}, /*"h",72*/
|
||||
{0x00, 0x00, 0x04, 0x40, 0x27, 0xC0, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00}, /*"i",73*/
|
||||
{0x00, 0x10, 0x00, 0x10, 0x04, 0x10, 0x27, 0xE0, 0x00, 0x00, 0x00, 0x00}, /*"j",74*/
|
||||
{0x20, 0x40, 0x3F, 0xC0, 0x01, 0x40, 0x07, 0x00, 0x04, 0xC0, 0x04, 0x40}, /*"k",75*/
|
||||
{0x20, 0x40, 0x20, 0x40, 0x3F, 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00}, /*"l",76*/
|
||||
{0x07, 0xC0, 0x04, 0x00, 0x07, 0xC0, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x00}, /*"m",77*/
|
||||
{0x04, 0x40, 0x07, 0xC0, 0x04, 0x40, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x40}, /*"n",78*/
|
||||
{0x00, 0x00, 0x03, 0x80, 0x04, 0x40, 0x04, 0x40, 0x03, 0x80, 0x00, 0x00}, /*"o",79*/
|
||||
{0x04, 0x10, 0x07, 0xF0, 0x04, 0x50, 0x04, 0x40, 0x03, 0x80, 0x00, 0x00}, /*"p",80*/
|
||||
{0x00, 0x00, 0x03, 0x80, 0x04, 0x40, 0x04, 0x50, 0x07, 0xF0, 0x00, 0x10}, /*"q",81*/
|
||||
{0x04, 0x40, 0x07, 0xC0, 0x02, 0x40, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00}, /*"r",82*/
|
||||
{0x00, 0x00, 0x06, 0x40, 0x05, 0x40, 0x05, 0x40, 0x04, 0xC0, 0x00, 0x00}, /*"s",83*/
|
||||
{0x00, 0x00, 0x04, 0x00, 0x1F, 0x80, 0x04, 0x40, 0x00, 0x40, 0x00, 0x00}, /*"t",84*/
|
||||
{0x04, 0x00, 0x07, 0x80, 0x00, 0x40, 0x04, 0x40, 0x07, 0xC0, 0x00, 0x40}, /*"u",85*/
|
||||
{0x04, 0x00, 0x07, 0x00, 0x04, 0xC0, 0x01, 0x80, 0x06, 0x00, 0x04, 0x00}, /*"v",86*/
|
||||
{0x06, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x01, 0xC0, 0x06, 0x00, 0x00, 0x00}, /*"w",87*/
|
||||
{0x04, 0x40, 0x06, 0xC0, 0x01, 0x00, 0x06, 0xC0, 0x04, 0x40, 0x00, 0x00}, /*"x",88*/
|
||||
{0x04, 0x10, 0x07, 0x10, 0x04, 0xE0, 0x01, 0x80, 0x06, 0x00, 0x04, 0x00}, /*"y",89*/
|
||||
{0x00, 0x00, 0x04, 0x40, 0x05, 0xC0, 0x06, 0x40, 0x04, 0x40, 0x00, 0x00}, /*"z",90*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x7B, 0xE0, 0x40, 0x20, 0x00, 0x00}, /*"{",91*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00}, /*"|",92*/
|
||||
{0x00, 0x00, 0x40, 0x20, 0x7B, 0xE0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"}",93*/
|
||||
{0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00, 0x40, 0x00}, /*"~",94*/
|
||||
};
|
||||
//16*8 ASCII字符集点阵
|
||||
const unsigned char asc2_1608[95][16] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*" ",0*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"!",1*/
|
||||
{0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00}, /*""",2*/
|
||||
{0x02, 0x20, 0x03, 0xFC, 0x1E, 0x20, 0x02, 0x20, 0x03, 0xFC, 0x1E, 0x20, 0x02, 0x20, 0x00, 0x00}, /*"#",3*/
|
||||
{0x00, 0x00, 0x0E, 0x18, 0x11, 0x04, 0x3F, 0xFF, 0x10, 0x84, 0x0C, 0x78, 0x00, 0x00, 0x00, 0x00}, /*"$",4*/
|
||||
{0x0F, 0x00, 0x10, 0x84, 0x0F, 0x38, 0x00, 0xC0, 0x07, 0x78, 0x18, 0x84, 0x00, 0x78, 0x00, 0x00}, /*"%",5*/
|
||||
{0x00, 0x78, 0x0F, 0x84, 0x10, 0xC4, 0x11, 0x24, 0x0E, 0x98, 0x00, 0xE4, 0x00, 0x84, 0x00, 0x08}, /*"&",6*/
|
||||
{0x08, 0x00, 0x68, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"'",7*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x18, 0x18, 0x20, 0x04, 0x40, 0x02, 0x00, 0x00}, /*"(",8*/
|
||||
{0x00, 0x00, 0x40, 0x02, 0x20, 0x04, 0x18, 0x18, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*")",9*/
|
||||
{0x02, 0x40, 0x02, 0x40, 0x01, 0x80, 0x0F, 0xF0, 0x01, 0x80, 0x02, 0x40, 0x02, 0x40, 0x00, 0x00}, /*"*",10*/
|
||||
{0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x0F, 0xF8, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00}, /*"+",11*/
|
||||
{0x00, 0x01, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*",",12*/
|
||||
{0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80}, /*"-",13*/
|
||||
{0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*".",14*/
|
||||
{0x00, 0x00, 0x00, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0x20, 0x00}, /*"/",15*/
|
||||
{0x00, 0x00, 0x07, 0xF0, 0x08, 0x08, 0x10, 0x04, 0x10, 0x04, 0x08, 0x08, 0x07, 0xF0, 0x00, 0x00}, /*"0",16*/
|
||||
{0x00, 0x00, 0x08, 0x04, 0x08, 0x04, 0x1F, 0xFC, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}, /*"1",17*/
|
||||
{0x00, 0x00, 0x0E, 0x0C, 0x10, 0x14, 0x10, 0x24, 0x10, 0x44, 0x11, 0x84, 0x0E, 0x0C, 0x00, 0x00}, /*"2",18*/
|
||||
{0x00, 0x00, 0x0C, 0x18, 0x10, 0x04, 0x11, 0x04, 0x11, 0x04, 0x12, 0x88, 0x0C, 0x70, 0x00, 0x00}, /*"3",19*/
|
||||
{0x00, 0x00, 0x00, 0xE0, 0x03, 0x20, 0x04, 0x24, 0x08, 0x24, 0x1F, 0xFC, 0x00, 0x24, 0x00, 0x00}, /*"4",20*/
|
||||
{0x00, 0x00, 0x1F, 0x98, 0x10, 0x84, 0x11, 0x04, 0x11, 0x04, 0x10, 0x88, 0x10, 0x70, 0x00, 0x00}, /*"5",21*/
|
||||
{0x00, 0x00, 0x07, 0xF0, 0x08, 0x88, 0x11, 0x04, 0x11, 0x04, 0x18, 0x88, 0x00, 0x70, 0x00, 0x00}, /*"6",22*/
|
||||
{0x00, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0xFC, 0x13, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x00, 0x00}, /*"7",23*/
|
||||
{0x00, 0x00, 0x0E, 0x38, 0x11, 0x44, 0x10, 0x84, 0x10, 0x84, 0x11, 0x44, 0x0E, 0x38, 0x00, 0x00}, /*"8",24*/
|
||||
{0x00, 0x00, 0x07, 0x00, 0x08, 0x8C, 0x10, 0x44, 0x10, 0x44, 0x08, 0x88, 0x07, 0xF0, 0x00, 0x00}, /*"9",25*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0C, 0x03, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*":",26*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*";",27*/
|
||||
{0x00, 0x00, 0x00, 0x80, 0x01, 0x40, 0x02, 0x20, 0x04, 0x10, 0x08, 0x08, 0x10, 0x04, 0x00, 0x00}, /*"<",28*/
|
||||
{0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x00, 0x00}, /*"=",29*/
|
||||
{0x00, 0x00, 0x10, 0x04, 0x08, 0x08, 0x04, 0x10, 0x02, 0x20, 0x01, 0x40, 0x00, 0x80, 0x00, 0x00}, /*">",30*/
|
||||
{0x00, 0x00, 0x0E, 0x00, 0x12, 0x00, 0x10, 0x0C, 0x10, 0x6C, 0x10, 0x80, 0x0F, 0x00, 0x00, 0x00}, /*"?",31*/
|
||||
{0x03, 0xE0, 0x0C, 0x18, 0x13, 0xE4, 0x14, 0x24, 0x17, 0xC4, 0x08, 0x28, 0x07, 0xD0, 0x00, 0x00}, /*"@",32*/
|
||||
{0x00, 0x04, 0x00, 0x3C, 0x03, 0xC4, 0x1C, 0x40, 0x07, 0x40, 0x00, 0xE4, 0x00, 0x1C, 0x00, 0x04}, /*"A",33*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x11, 0x04, 0x11, 0x04, 0x11, 0x04, 0x0E, 0x88, 0x00, 0x70, 0x00, 0x00}, /*"B",34*/
|
||||
{0x03, 0xE0, 0x0C, 0x18, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0x10, 0x08, 0x1C, 0x10, 0x00, 0x00}, /*"C",35*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0x08, 0x08, 0x07, 0xF0, 0x00, 0x00}, /*"D",36*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x11, 0x04, 0x11, 0x04, 0x17, 0xC4, 0x10, 0x04, 0x08, 0x18, 0x00, 0x00}, /*"E",37*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x11, 0x04, 0x11, 0x00, 0x17, 0xC0, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00}, /*"F",38*/
|
||||
{0x03, 0xE0, 0x0C, 0x18, 0x10, 0x04, 0x10, 0x04, 0x10, 0x44, 0x1C, 0x78, 0x00, 0x40, 0x00, 0x00}, /*"G",39*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x10, 0x84, 0x00, 0x80, 0x00, 0x80, 0x10, 0x84, 0x1F, 0xFC, 0x10, 0x04}, /*"H",40*/
|
||||
{0x00, 0x00, 0x10, 0x04, 0x10, 0x04, 0x1F, 0xFC, 0x10, 0x04, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00}, /*"I",41*/
|
||||
{0x00, 0x03, 0x00, 0x01, 0x10, 0x01, 0x10, 0x01, 0x1F, 0xFE, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00}, /*"J",42*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x11, 0x04, 0x03, 0x80, 0x14, 0x64, 0x18, 0x1C, 0x10, 0x04, 0x00, 0x00}, /*"K",43*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x10, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x00, 0x00}, /*"L",44*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x1F, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x1F, 0xFC, 0x10, 0x04, 0x00, 0x00}, /*"M",45*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x0C, 0x04, 0x03, 0x00, 0x00, 0xE0, 0x10, 0x18, 0x1F, 0xFC, 0x10, 0x00}, /*"N",46*/
|
||||
{0x07, 0xF0, 0x08, 0x08, 0x10, 0x04, 0x10, 0x04, 0x10, 0x04, 0x08, 0x08, 0x07, 0xF0, 0x00, 0x00}, /*"O",47*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x10, 0x84, 0x10, 0x80, 0x10, 0x80, 0x10, 0x80, 0x0F, 0x00, 0x00, 0x00}, /*"P",48*/
|
||||
{0x07, 0xF0, 0x08, 0x18, 0x10, 0x24, 0x10, 0x24, 0x10, 0x1C, 0x08, 0x0A, 0x07, 0xF2, 0x00, 0x00}, /*"Q",49*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x11, 0x04, 0x11, 0x00, 0x11, 0xC0, 0x11, 0x30, 0x0E, 0x0C, 0x00, 0x04}, /*"R",50*/
|
||||
{0x00, 0x00, 0x0E, 0x1C, 0x11, 0x04, 0x10, 0x84, 0x10, 0x84, 0x10, 0x44, 0x1C, 0x38, 0x00, 0x00}, /*"S",51*/
|
||||
{0x18, 0x00, 0x10, 0x00, 0x10, 0x04, 0x1F, 0xFC, 0x10, 0x04, 0x10, 0x00, 0x18, 0x00, 0x00, 0x00}, /*"T",52*/
|
||||
{0x10, 0x00, 0x1F, 0xF8, 0x10, 0x04, 0x00, 0x04, 0x00, 0x04, 0x10, 0x04, 0x1F, 0xF8, 0x10, 0x00}, /*"U",53*/
|
||||
{0x10, 0x00, 0x1E, 0x00, 0x11, 0xE0, 0x00, 0x1C, 0x00, 0x70, 0x13, 0x80, 0x1C, 0x00, 0x10, 0x00}, /*"V",54*/
|
||||
{0x1F, 0xC0, 0x10, 0x3C, 0x00, 0xE0, 0x1F, 0x00, 0x00, 0xE0, 0x10, 0x3C, 0x1F, 0xC0, 0x00, 0x00}, /*"W",55*/
|
||||
{0x10, 0x04, 0x18, 0x0C, 0x16, 0x34, 0x01, 0xC0, 0x01, 0xC0, 0x16, 0x34, 0x18, 0x0C, 0x10, 0x04}, /*"X",56*/
|
||||
{0x10, 0x00, 0x1C, 0x00, 0x13, 0x04, 0x00, 0xFC, 0x13, 0x04, 0x1C, 0x00, 0x10, 0x00, 0x00, 0x00}, /*"Y",57*/
|
||||
{0x08, 0x04, 0x10, 0x1C, 0x10, 0x64, 0x10, 0x84, 0x13, 0x04, 0x1C, 0x04, 0x10, 0x18, 0x00, 0x00}, /*"Z",58*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFE, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x00, 0x00}, /*"[",59*/
|
||||
{0x00, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00}, /*"\",60*/
|
||||
{0x00, 0x00, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"]",61*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00}, /*"^",62*/
|
||||
{0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01}, /*"_",63*/
|
||||
{0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"`",64*/
|
||||
{0x00, 0x00, 0x00, 0x98, 0x01, 0x24, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44, 0x00, 0xFC, 0x00, 0x04}, /*"a",65*/
|
||||
{0x10, 0x00, 0x1F, 0xFC, 0x00, 0x88, 0x01, 0x04, 0x01, 0x04, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00}, /*"b",66*/
|
||||
{0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0x88, 0x00, 0x00}, /*"c",67*/
|
||||
{0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x01, 0x04, 0x01, 0x04, 0x11, 0x08, 0x1F, 0xFC, 0x00, 0x04}, /*"d",68*/
|
||||
{0x00, 0x00, 0x00, 0xF8, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44, 0x01, 0x44, 0x00, 0xC8, 0x00, 0x00}, /*"e",69*/
|
||||
{0x00, 0x00, 0x01, 0x04, 0x01, 0x04, 0x0F, 0xFC, 0x11, 0x04, 0x11, 0x04, 0x11, 0x00, 0x18, 0x00}, /*"f",70*/
|
||||
{0x00, 0x00, 0x00, 0xD6, 0x01, 0x29, 0x01, 0x29, 0x01, 0x29, 0x01, 0xC9, 0x01, 0x06, 0x00, 0x00}, /*"g",71*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x00, 0x84, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x00, 0xFC, 0x00, 0x04}, /*"h",72*/
|
||||
{0x00, 0x00, 0x01, 0x04, 0x19, 0x04, 0x19, 0xFC, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}, /*"i",73*/
|
||||
{0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x01, 0x01, 0x19, 0x01, 0x19, 0xFE, 0x00, 0x00, 0x00, 0x00}, /*"j",74*/
|
||||
{0x10, 0x04, 0x1F, 0xFC, 0x00, 0x24, 0x00, 0x40, 0x01, 0xB4, 0x01, 0x0C, 0x01, 0x04, 0x00, 0x00}, /*"k",75*/
|
||||
{0x00, 0x00, 0x10, 0x04, 0x10, 0x04, 0x1F, 0xFC, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00}, /*"l",76*/
|
||||
{0x01, 0x04, 0x01, 0xFC, 0x01, 0x04, 0x01, 0x00, 0x01, 0xFC, 0x01, 0x04, 0x01, 0x00, 0x00, 0xFC}, /*"m",77*/
|
||||
{0x01, 0x04, 0x01, 0xFC, 0x00, 0x84, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x00, 0xFC, 0x00, 0x04}, /*"n",78*/
|
||||
{0x00, 0x00, 0x00, 0xF8, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x00, 0xF8, 0x00, 0x00}, /*"o",79*/
|
||||
{0x01, 0x01, 0x01, 0xFF, 0x00, 0x85, 0x01, 0x04, 0x01, 0x04, 0x00, 0x88, 0x00, 0x70, 0x00, 0x00}, /*"p",80*/
|
||||
{0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0x01, 0x04, 0x01, 0x04, 0x01, 0x05, 0x01, 0xFF, 0x00, 0x01}, /*"q",81*/
|
||||
{0x01, 0x04, 0x01, 0x04, 0x01, 0xFC, 0x00, 0x84, 0x01, 0x04, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00}, /*"r",82*/
|
||||
{0x00, 0x00, 0x00, 0xCC, 0x01, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0x98, 0x00, 0x00}, /*"s",83*/
|
||||
{0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x07, 0xF8, 0x01, 0x04, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00}, /*"t",84*/
|
||||
{0x01, 0x00, 0x01, 0xF8, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x01, 0x08, 0x01, 0xFC, 0x00, 0x04}, /*"u",85*/
|
||||
{0x01, 0x00, 0x01, 0x80, 0x01, 0x70, 0x00, 0x0C, 0x00, 0x10, 0x01, 0x60, 0x01, 0x80, 0x01, 0x00}, /*"v",86*/
|
||||
{0x01, 0xF0, 0x01, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x00, 0x30, 0x01, 0x0C, 0x01, 0xF0, 0x01, 0x00}, /*"w",87*/
|
||||
{0x00, 0x00, 0x01, 0x04, 0x01, 0x8C, 0x00, 0x74, 0x01, 0x70, 0x01, 0x8C, 0x01, 0x04, 0x00, 0x00}, /*"x",88*/
|
||||
{0x01, 0x01, 0x01, 0x81, 0x01, 0x71, 0x00, 0x0E, 0x00, 0x18, 0x01, 0x60, 0x01, 0x80, 0x01, 0x00}, /*"y",89*/
|
||||
{0x00, 0x00, 0x01, 0x84, 0x01, 0x0C, 0x01, 0x34, 0x01, 0x44, 0x01, 0x84, 0x01, 0x0C, 0x00, 0x00}, /*"z",90*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x3E, 0xFC, 0x40, 0x02, 0x40, 0x02}, /*"{",91*/
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"|",92*/
|
||||
{0x00, 0x00, 0x40, 0x02, 0x40, 0x02, 0x3E, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /*"}",93*/
|
||||
{0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x40, 0x00, 0x20, 0x00, 0x20, 0x00}, /*"~",94*/
|
||||
};
|
||||
//24*12 ASICII字符集点阵
|
||||
const unsigned char asc2_2412[95][36] = {
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*" ",0*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x38,
|
||||
0x0F, 0xFE, 0x38, 0x0F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"!",1*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00,
|
||||
0x31, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*""",2*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x00, 0x67, 0xF8, 0x07, 0xF9, 0x80, 0x00, 0x61, 0x80, 0x00, 0x61, 0x80,
|
||||
0x00, 0x61, 0x80, 0x00, 0x61, 0x80, 0x00, 0x67, 0xF8, 0x07, 0xF9, 0x80, 0x00, 0x61, 0x80, 0x00, 0x00, 0x00
|
||||
}, /*"#",3*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x03, 0xE0, 0xF0, 0x06, 0x30, 0x08, 0x04, 0x18, 0x08,
|
||||
0x1F, 0xFF, 0xFE, 0x04, 0x0E, 0x08, 0x07, 0x87, 0xF0, 0x03, 0x81, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"$",4*/
|
||||
{
|
||||
0x01, 0xF0, 0x00, 0x06, 0x0C, 0x00, 0x04, 0x04, 0x08, 0x06, 0x0C, 0x70, 0x01, 0xF9, 0xC0, 0x00, 0x0E, 0x00,
|
||||
0x00, 0x3B, 0xE0, 0x00, 0xEC, 0x18, 0x07, 0x08, 0x08, 0x04, 0x0C, 0x18, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00
|
||||
}, /*"%",5*/
|
||||
{
|
||||
0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x03, 0xF8, 0x18, 0x04, 0x1C, 0x08, 0x04, 0x17, 0x08, 0x07, 0xE1, 0xD0,
|
||||
0x03, 0xC0, 0xE0, 0x00, 0x23, 0xB0, 0x00, 0x3C, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
|
||||
}, /*"&",6*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x32, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"'",7*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00,
|
||||
0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0C, 0x00, 0x18, 0x10, 0x00, 0x04, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00
|
||||
}, /*"(",8*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x10, 0x00, 0x04, 0x0C, 0x00, 0x18, 0x07, 0x80, 0xF0, 0x01, 0xFF, 0xC0,
|
||||
0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*")",9*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00,
|
||||
0x03, 0xFF, 0xC0, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x66, 0x00, 0x00, 0x66, 0x00, 0x00, 0x42, 0x00
|
||||
}, /*"*",10*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
|
||||
0x01, 0xFF, 0xC0, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00
|
||||
}, /*"+",11*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x32, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*",",12*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"-",13*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*".",14*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x0E, 0x00,
|
||||
0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"/",15*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x70, 0x06, 0x00, 0x18, 0x04, 0x00, 0x08,
|
||||
0x04, 0x00, 0x08, 0x06, 0x00, 0x18, 0x03, 0x80, 0x70, 0x01, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00
|
||||
}, /*"0",16*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x01, 0x00, 0x08, 0x03, 0xFF, 0xF8,
|
||||
0x07, 0xFF, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"1",17*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x01, 0xC0, 0x38, 0x02, 0xC0, 0x58, 0x04, 0x00, 0x98, 0x04, 0x01, 0x18, 0x04, 0x02, 0x18,
|
||||
0x04, 0x04, 0x18, 0x06, 0x1C, 0x18, 0x03, 0xF8, 0x18, 0x01, 0xE0, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"2",18*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x03, 0xC0, 0xF0, 0x04, 0x00, 0x08, 0x04, 0x08, 0x08, 0x04, 0x08, 0x08,
|
||||
0x06, 0x18, 0x08, 0x03, 0xF4, 0x18, 0x01, 0xE7, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"3",19*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x11, 0x00, 0x00, 0x61, 0x00, 0x00, 0x81, 0x08,
|
||||
0x03, 0x01, 0x08, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"4",20*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0xFC, 0xD0, 0x06, 0x08, 0x08, 0x06, 0x10, 0x08, 0x06, 0x10, 0x08,
|
||||
0x06, 0x10, 0x08, 0x06, 0x18, 0x38, 0x06, 0x0F, 0xF0, 0x06, 0x07, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"5",21*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0x84, 0x30, 0x02, 0x08, 0x18, 0x04, 0x10, 0x08,
|
||||
0x04, 0x10, 0x08, 0x04, 0x10, 0x08, 0x07, 0x18, 0x10, 0x03, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00
|
||||
}, /*"6",22*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0xF8,
|
||||
0x06, 0x07, 0xF8, 0x06, 0x18, 0x00, 0x06, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"7",23*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x01, 0xE1, 0xE0, 0x03, 0xF7, 0xF0, 0x06, 0x34, 0x10, 0x04, 0x18, 0x08, 0x04, 0x18, 0x08,
|
||||
0x04, 0x0C, 0x08, 0x04, 0x0C, 0x08, 0x06, 0x16, 0x18, 0x03, 0xF3, 0xF0, 0x01, 0xC1, 0xE0, 0x00, 0x00, 0x00
|
||||
}, /*"8",24*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xFC, 0x30, 0x03, 0x06, 0x38, 0x04, 0x02, 0x08, 0x04, 0x02, 0x08,
|
||||
0x04, 0x02, 0x08, 0x04, 0x04, 0x10, 0x03, 0x08, 0xF0, 0x01, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"9",25*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x38,
|
||||
0x00, 0x70, 0x38, 0x00, 0x70, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*":",26*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x1A,
|
||||
0x00, 0x30, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*";",27*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x00, 0x22, 0x00, 0x00, 0x41, 0x00,
|
||||
0x00, 0x80, 0x80, 0x01, 0x00, 0x40, 0x02, 0x00, 0x20, 0x04, 0x00, 0x10, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"<",28*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00,
|
||||
0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"=",29*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x04, 0x00, 0x10, 0x02, 0x00, 0x20, 0x01, 0x00, 0x40,
|
||||
0x00, 0x80, 0x80, 0x00, 0x41, 0x00, 0x00, 0x22, 0x00, 0x00, 0x14, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*">",30*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x04, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x38, 0x08, 0x0F, 0x38,
|
||||
0x08, 0x08, 0x38, 0x08, 0x10, 0x00, 0x0C, 0x30, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"?",31*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x70, 0x02, 0x0F, 0x10, 0x06, 0x70, 0x88,
|
||||
0x04, 0xC0, 0x88, 0x04, 0x83, 0x08, 0x04, 0x7F, 0x88, 0x02, 0xC0, 0x90, 0x03, 0x01, 0x20, 0x00, 0xFE, 0x40
|
||||
}, /*"@",32*/
|
||||
{
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x01, 0xF8, 0x00, 0x3E, 0x08, 0x01, 0xC2, 0x00, 0x07, 0x02, 0x00,
|
||||
0x07, 0xE2, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08
|
||||
}, /*"A",33*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x08, 0x08, 0x04, 0x08, 0x08, 0x04, 0x08, 0x08,
|
||||
0x04, 0x08, 0x08, 0x06, 0x18, 0x08, 0x03, 0xF4, 0x18, 0x01, 0xE7, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00
|
||||
}, /*"B",34*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x70, 0x02, 0x00, 0x18, 0x04, 0x00, 0x08,
|
||||
0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x10, 0x06, 0x00, 0x20, 0x07, 0x80, 0xC0, 0x00, 0x00, 0x00
|
||||
}, /*"C",35*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08,
|
||||
0x04, 0x00, 0x18, 0x02, 0x00, 0x10, 0x03, 0x80, 0x70, 0x01, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00
|
||||
}, /*"D",36*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x08, 0x08, 0x04, 0x08, 0x08, 0x04, 0x08, 0x08,
|
||||
0x04, 0x08, 0x08, 0x04, 0x3E, 0x08, 0x04, 0x00, 0x08, 0x06, 0x00, 0x18, 0x01, 0x00, 0x60, 0x00, 0x00, 0x00
|
||||
}, /*"E",37*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x08, 0x08, 0x04, 0x08, 0x00, 0x04, 0x08, 0x00,
|
||||
0x04, 0x08, 0x00, 0x04, 0x3E, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"F",38*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x70, 0x06, 0x00, 0x18, 0x04, 0x00, 0x08,
|
||||
0x04, 0x02, 0x08, 0x04, 0x02, 0x08, 0x02, 0x03, 0xF0, 0x07, 0x83, 0xF0, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00
|
||||
}, /*"G",39*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x08, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x04, 0x08, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x00, 0x08
|
||||
}, /*"H",40*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8,
|
||||
0x07, 0xFF, 0xF8, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"I",41*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0x04, 0x00, 0x01, 0x04, 0x00, 0x01,
|
||||
0x04, 0x00, 0x03, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00
|
||||
}, /*"J",42*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x0C, 0x08, 0x00, 0x18, 0x00, 0x00, 0x3E, 0x00,
|
||||
0x04, 0xC7, 0x80, 0x05, 0x03, 0xC8, 0x06, 0x00, 0xF8, 0x04, 0x00, 0x38, 0x04, 0x00, 0x18, 0x00, 0x00, 0x08
|
||||
}, /*"K",43*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08,
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00
|
||||
}, /*"L",44*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0x80, 0x08, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xF8,
|
||||
0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x00, 0x08
|
||||
}, /*"M",45*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0x00, 0x08, 0x03, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00,
|
||||
0x00, 0x1E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x04, 0x00, 0xF0, 0x07, 0xFF, 0xF8, 0x04, 0x00, 0x00
|
||||
}, /*"N",46*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x70, 0x06, 0x00, 0x18, 0x04, 0x00, 0x08,
|
||||
0x04, 0x00, 0x08, 0x06, 0x00, 0x18, 0x03, 0x00, 0x30, 0x01, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x00
|
||||
}, /*"O",47*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x04, 0x08, 0x04, 0x04, 0x00, 0x04, 0x04, 0x00,
|
||||
0x04, 0x04, 0x00, 0x04, 0x04, 0x00, 0x06, 0x0C, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"P",48*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x70, 0x06, 0x00, 0x88, 0x04, 0x00, 0x88,
|
||||
0x04, 0x00, 0xC8, 0x06, 0x00, 0x3C, 0x03, 0x00, 0x3E, 0x01, 0xFF, 0xE6, 0x00, 0x7F, 0x84, 0x00, 0x00, 0x00
|
||||
}, /*"Q",49*/
|
||||
{
|
||||
0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x04, 0x08, 0x08, 0x04, 0x08, 0x00, 0x04, 0x0C, 0x00,
|
||||
0x04, 0x0F, 0x00, 0x04, 0x0B, 0xC0, 0x06, 0x10, 0xF0, 0x03, 0xF0, 0x38, 0x01, 0xE0, 0x08, 0x00, 0x00, 0x08
|
||||
}, /*"R",50*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x01, 0xE0, 0xF8, 0x03, 0xF0, 0x30, 0x06, 0x30, 0x10, 0x04, 0x18, 0x08, 0x04, 0x18, 0x08,
|
||||
0x04, 0x0C, 0x08, 0x04, 0x0C, 0x08, 0x02, 0x06, 0x18, 0x02, 0x07, 0xF0, 0x07, 0x81, 0xE0, 0x00, 0x00, 0x00
|
||||
}, /*"S",51*/
|
||||
{
|
||||
0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8,
|
||||
0x07, 0xFF, 0xF8, 0x04, 0x00, 0x08, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x01, 0x80, 0x00
|
||||
}, /*"T",52*/
|
||||
{
|
||||
0x04, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x04, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08,
|
||||
0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x04, 0x00, 0x10, 0x07, 0xFF, 0xE0, 0x04, 0x00, 0x00
|
||||
}, /*"U",53*/
|
||||
{
|
||||
0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x00, 0x01, 0xF8,
|
||||
0x00, 0x00, 0x38, 0x00, 0x01, 0xE0, 0x04, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00
|
||||
}, /*"V",54*/
|
||||
{
|
||||
0x04, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xFF, 0xC0, 0x04, 0x1F, 0xF8, 0x00, 0x07, 0xC0, 0x07, 0xF8, 0x00,
|
||||
0x07, 0xFF, 0x80, 0x04, 0x3F, 0xF8, 0x00, 0x07, 0xC0, 0x04, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00
|
||||
}, /*"W",55*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x06, 0x00, 0x18, 0x07, 0xC0, 0x78, 0x05, 0xF1, 0xC8, 0x00, 0x3E, 0x00,
|
||||
0x00, 0x1F, 0x80, 0x04, 0x63, 0xE8, 0x07, 0x80, 0xF8, 0x06, 0x00, 0x18, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"X",56*/
|
||||
{
|
||||
0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xE0, 0x08, 0x04, 0x7C, 0x08, 0x00, 0x1F, 0xF8,
|
||||
0x00, 0x07, 0xF8, 0x00, 0x18, 0x08, 0x04, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00
|
||||
}, /*"Y",57*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x06, 0x00, 0x38, 0x04, 0x00, 0xF8, 0x04, 0x03, 0xE8, 0x04, 0x0F, 0x08,
|
||||
0x04, 0x7C, 0x08, 0x05, 0xF0, 0x08, 0x07, 0xC0, 0x08, 0x07, 0x00, 0x18, 0x04, 0x00, 0x60, 0x00, 0x00, 0x00
|
||||
}, /*"Z",58*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFE,
|
||||
0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00
|
||||
}, /*"[",59*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x38, 0x00,
|
||||
0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
||||
}, /*"\",60*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02, 0x20, 0x00, 0x02,
|
||||
0x20, 0x00, 0x02, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"]",61*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00,
|
||||
0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"^",62*/
|
||||
{
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
|
||||
0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
|
||||
}, /*"_",63*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"`",64*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x19, 0xF8, 0x00, 0x1B, 0x18, 0x00, 0x22, 0x08, 0x00, 0x26, 0x08,
|
||||
0x00, 0x24, 0x08, 0x00, 0x24, 0x10, 0x00, 0x3F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18
|
||||
}, /*"a",65*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, 0x18, 0x18, 0x00, 0x10, 0x08,
|
||||
0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x30, 0x18, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00
|
||||
}, /*"b",66*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x18, 0x30, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08,
|
||||
0x00, 0x20, 0x08, 0x00, 0x3C, 0x08, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"c",67*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x38, 0x18, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08,
|
||||
0x00, 0x20, 0x08, 0x04, 0x10, 0x10, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
|
||||
}, /*"d",68*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x12, 0x30, 0x00, 0x22, 0x18,
|
||||
0x00, 0x22, 0x08, 0x00, 0x22, 0x08, 0x00, 0x32, 0x08, 0x00, 0x1E, 0x10, 0x00, 0x0E, 0x20, 0x00, 0x00, 0x00
|
||||
}, /*"e",69*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF8,
|
||||
0x06, 0x20, 0x08, 0x04, 0x20, 0x08, 0x04, 0x20, 0x08, 0x07, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"f",70*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x0E, 0x6E, 0x00, 0x1F, 0xF3, 0x00, 0x31, 0xB1, 0x00, 0x20, 0xB1,
|
||||
0x00, 0x20, 0xB1, 0x00, 0x31, 0x91, 0x00, 0x1F, 0x13, 0x00, 0x2E, 0x1E, 0x00, 0x20, 0x0E, 0x00, 0x30, 0x00
|
||||
}, /*"g",71*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x20, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"h",72*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x06, 0x3F, 0xF8,
|
||||
0x06, 0x3F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"i",73*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x20, 0x01, 0x00, 0x20, 0x01,
|
||||
0x00, 0x20, 0x03, 0x06, 0x3F, 0xFE, 0x06, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"j",74*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x00, 0x01, 0x88, 0x00, 0x03, 0x00,
|
||||
0x00, 0x2F, 0xC0, 0x00, 0x38, 0xF8, 0x00, 0x20, 0x38, 0x00, 0x20, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"k",75*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x04, 0x00, 0x08, 0x07, 0xFF, 0xF8,
|
||||
0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"l",76*/
|
||||
{
|
||||
0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xF8,
|
||||
0x00, 0x3F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x08
|
||||
}, /*"m",77*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x10, 0x08, 0x00, 0x10, 0x00,
|
||||
0x00, 0x20, 0x00, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"n",78*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x18, 0x30, 0x00, 0x30, 0x08, 0x00, 0x20, 0x08,
|
||||
0x00, 0x20, 0x08, 0x00, 0x30, 0x08, 0x00, 0x18, 0x30, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x00
|
||||
}, /*"o",79*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x01, 0x00, 0x3F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x10, 0x11, 0x00, 0x20, 0x09,
|
||||
0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x30, 0x38, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00
|
||||
}, /*"p",80*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x38, 0x18, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08,
|
||||
0x00, 0x20, 0x09, 0x00, 0x10, 0x11, 0x00, 0x1F, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
||||
}, /*"q",81*/
|
||||
{
|
||||
0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x3F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x08, 0x08,
|
||||
0x00, 0x10, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"r",82*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x78, 0x00, 0x1E, 0x18, 0x00, 0x33, 0x08, 0x00, 0x23, 0x08,
|
||||
0x00, 0x21, 0x08, 0x00, 0x21, 0x88, 0x00, 0x21, 0x98, 0x00, 0x30, 0xF0, 0x00, 0x38, 0x60, 0x00, 0x00, 0x00
|
||||
}, /*"s",83*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, 0xF8,
|
||||
0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"t",84*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08,
|
||||
0x00, 0x00, 0x08, 0x00, 0x20, 0x10, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
|
||||
}, /*"u",85*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x23, 0xF0,
|
||||
0x00, 0x00, 0x78, 0x00, 0x00, 0x70, 0x00, 0x23, 0x80, 0x00, 0x3C, 0x00, 0x00, 0x30, 0x00, 0x00, 0x20, 0x00
|
||||
}, /*"v",86*/
|
||||
{
|
||||
0x00, 0x20, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x23, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x27, 0x00,
|
||||
0x00, 0x3E, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x21, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0x20, 0x00
|
||||
}, /*"w",87*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x08, 0x00, 0x20, 0x08, 0x00, 0x38, 0x38, 0x00, 0x3E, 0x68, 0x00, 0x27, 0x80,
|
||||
0x00, 0x03, 0xC8, 0x00, 0x2C, 0xF8, 0x00, 0x38, 0x38, 0x00, 0x20, 0x18, 0x00, 0x20, 0x08, 0x00, 0x00, 0x00
|
||||
}, /*"x",88*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x30, 0x03, 0x00, 0x3C, 0x01, 0x00, 0x3F, 0x83, 0x00, 0x23, 0xEC,
|
||||
0x00, 0x00, 0x70, 0x00, 0x23, 0x80, 0x00, 0x3C, 0x00, 0x00, 0x20, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"y",89*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x08, 0x00, 0x20, 0x38, 0x00, 0x20, 0xF8, 0x00, 0x23, 0xE8,
|
||||
0x00, 0x2F, 0x88, 0x00, 0x3E, 0x08, 0x00, 0x38, 0x08, 0x00, 0x20, 0x18, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00
|
||||
}, /*"z",90*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
|
||||
0x00, 0x14, 0x00, 0x1F, 0xF7, 0xFC, 0x30, 0x00, 0x06, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"{",91*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"|",92*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x30, 0x00, 0x06, 0x1F, 0xF7, 0xFC, 0x00, 0x14, 0x00,
|
||||
0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}, /*"}",93*/
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x10, 0x00, 0x00
|
||||
}, /*"~",94*/
|
||||
};
|
||||
#endif //HW_LIB_OLED_FONT_H
|
418
lib/oled/oled.cpp
Normal file
418
lib/oled/oled.cpp
Normal file
@@ -0,0 +1,418 @@
|
||||
#include "oled.h"
|
||||
#include "oled_font.h"
|
||||
|
||||
#ifdef HZK_FONT
|
||||
|
||||
#include "oled_font_chuc.h"
|
||||
|
||||
#endif
|
||||
|
||||
#define BUFPOINT(x, y) (*(dev->buf + x + (y * dev->width)))
|
||||
#define GET_BIT(x, bit) ((x & (1 << bit)) >> bit)
|
||||
|
||||
const uint8_t initCmd[] = {
|
||||
0xAE, // 关闭显示
|
||||
0xD5, 0x80, // 设置显示时钟分频比/振荡器频率
|
||||
0xA8, 0x3F, // 设置多路复用比率
|
||||
0xD3, 0x00, // 设置显示偏移
|
||||
0x40, 0x00, // 设置显示起始行
|
||||
0x8D, 0x14, // 电荷泵设置
|
||||
0x20, 0x00, // 设置内存寻址模式
|
||||
0xA0, // 设置段重映射
|
||||
0xC8, // 设置COM输出扫描方向
|
||||
0xDA, 0x12, // 设置COM引脚硬件配置
|
||||
0x81, 0xCF, // 设置对比度控制
|
||||
0xD9, 0xF1, // 设置预充电周期
|
||||
0xDB, 0x20, // 设置VCOMH取消电平
|
||||
0xA4, 0xA6, // 整个显示打开
|
||||
0xAF // 打开显示
|
||||
};
|
||||
|
||||
void OLED_Init(OLED_T *dev) {
|
||||
uint8_t *cmdIndex = (uint8_t *) initCmd;
|
||||
// uint8_t count, temp;
|
||||
// while (*cmdIndex) {
|
||||
// temp = *cmdIndex++;
|
||||
// count = temp & 0x7F;
|
||||
//
|
||||
// dev->cmd(cmdIndex, count);
|
||||
// cmdIndex += count;
|
||||
// }
|
||||
dev->cmd(cmdIndex, sizeof(initCmd));
|
||||
dev->state = IDLE;
|
||||
}
|
||||
void OLED_Init_CMD(OLED_T *dev,uint8_t *cmd,uint16_t len)
|
||||
{
|
||||
dev->cmd(cmd, len);
|
||||
dev->state = IDLE;
|
||||
}
|
||||
void OLED_ON(OLED_T *dev) {
|
||||
uint8_t cmd[3] = {0x8D, 0x14, 0xAF};
|
||||
if (dev->state == IDLE) {
|
||||
dev->state = WRITE;
|
||||
dev->cmd(cmd, 3);
|
||||
dev->state = IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_OFF(OLED_T *dev) {
|
||||
uint8_t cmd[3] = {0x8D, 0x10, 0xAE};
|
||||
if (dev->state == IDLE) {
|
||||
dev->state = WRITE;
|
||||
dev->cmd(cmd, 3);
|
||||
dev->state = IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_Turn(OLED_T *dev, bool e) {
|
||||
uint8_t cmd = 0xA6 + e;
|
||||
if (dev->state == IDLE) {
|
||||
dev->state = WRITE;
|
||||
dev->cmd(&cmd, 1);
|
||||
dev->state = IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_Refresh(OLED_T *dev) {
|
||||
#if REFRESH_CALL_ENABLE
|
||||
dev->call(dev);
|
||||
#else
|
||||
uint8_t i, cmd[3] = {0xb0, 0x00, 0x10};
|
||||
if (dev->state == IDLE) {
|
||||
dev->state = REFRESH;
|
||||
for (i = 0; i < (dev->height >> 3); i++) {
|
||||
cmd[0] = 0xb0 + i;
|
||||
dev->cmd(cmd, 3);
|
||||
dev->data(dev->buf + (i * dev->width), dev->width);
|
||||
}
|
||||
dev->state = IDLE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void OLED_DisplayTurn(OLED_T *dev, bool e) {
|
||||
uint8_t cmd[2];
|
||||
if (e) {
|
||||
cmd[0] = 0xC8;
|
||||
cmd[1] = 0xA1;
|
||||
|
||||
} else {
|
||||
cmd[0] = 0xC0;
|
||||
cmd[1] = 0xA0;
|
||||
}
|
||||
if (dev->state == IDLE) {
|
||||
dev->state = WRITE;
|
||||
dev->cmd(cmd, 1);
|
||||
dev->state = IDLE;
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_Set(OLED_T *dev, uint8_t x, uint8_t y) {
|
||||
uint8_t i, m, n;
|
||||
i = y / 8;
|
||||
m = y % 8;
|
||||
n = 1 << m;
|
||||
BUFPOINT(x, i) |= n;
|
||||
}
|
||||
|
||||
// 列写入
|
||||
void OLED_BSet(OLED_T *dev, uint8_t x, uint8_t y, uint8_t data) {
|
||||
uint8_t i, ys = y;
|
||||
for (i = 0; i < 8; i++) //写入数据
|
||||
{
|
||||
if (GET_BIT(data, i))OLED_Set(dev, x, ys);
|
||||
else OLED_RSet(dev, x, ys);
|
||||
ys++;
|
||||
}
|
||||
}
|
||||
|
||||
// 行写入
|
||||
void OLED_HBSet(OLED_T *dev, uint8_t x, uint8_t y, uint8_t data) {
|
||||
uint8_t i, ys = y;
|
||||
x += 7;
|
||||
for (i = 0; i < 8; i++) // 写入数据
|
||||
{
|
||||
if (GET_BIT(data, i))
|
||||
OLED_Set(dev, x, ys);
|
||||
else
|
||||
OLED_RSet(dev, x, ys);
|
||||
x--;
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_RSet(OLED_T *dev, uint8_t x, uint8_t y) {
|
||||
uint8_t i, m, n;
|
||||
i = y / 8;
|
||||
m = y % 8;
|
||||
n = 1 << m;
|
||||
BUFPOINT(x, i) = ~BUFPOINT(x, i);
|
||||
BUFPOINT(x, i) |= n;
|
||||
BUFPOINT(x, i) = ~BUFPOINT(x, i);
|
||||
}
|
||||
|
||||
void OLED_DrawLine(OLED_T *dev, uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) {
|
||||
uint8_t i, k, k1, k2;
|
||||
if ((x1 < 0) || (x2 > dev->width) || (y1 < 0) || (y2 > dev->height) || (x1 > x2) || (y1 > y2))return;
|
||||
if (x1 == x2) //画竖线
|
||||
{
|
||||
for (i = 0; i < (y2 - y1); i++) {
|
||||
OLED_Set(dev, x1, y1 + i);
|
||||
}
|
||||
} else if (y1 == y2) //画横线
|
||||
{
|
||||
for (i = 0; i < (x2 - x1); i++) {
|
||||
OLED_Set(dev, x1 + i, y1);
|
||||
}
|
||||
} else //画斜线
|
||||
{
|
||||
k1 = y2 - y1;
|
||||
k2 = x2 - x1;
|
||||
k = k1 * 10 / k2;
|
||||
for (i = 0; i < (x2 - x1); i++) {
|
||||
OLED_Set(dev, x1 + i, y1 + i * k / 10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_DrawRect(OLED_T *dev, uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2) {
|
||||
OLED_DrawLine(dev, x1, y1, x2, y1); // Top side
|
||||
OLED_DrawLine(dev, x1, y1, x1, y2); // Left side
|
||||
OLED_DrawLine(dev, x2, y1, x2, y2); // Right side
|
||||
OLED_DrawLine(dev, x1, y2, x2, y2); // Bottom side
|
||||
}
|
||||
|
||||
void OLED_DrawCircle(OLED_T *dev, uint8_t x, uint8_t y, uint8_t r) {
|
||||
int a, b, num;
|
||||
a = 0;
|
||||
b = r;
|
||||
while (2 * b * b >= r * r) {
|
||||
OLED_Set(dev, x + a, y - b);
|
||||
OLED_Set(dev, x - a, y - b);
|
||||
OLED_Set(dev, x - a, y + b);
|
||||
OLED_Set(dev, x + a, y + b);
|
||||
|
||||
OLED_Set(dev, x + b, y + a);
|
||||
OLED_Set(dev, x + b, y - a);
|
||||
OLED_Set(dev, x - b, y - a);
|
||||
OLED_Set(dev, x - b, y + a);
|
||||
|
||||
a++;
|
||||
num = (a * a + b * b) - r * r;//计算画的点离圆心的距离
|
||||
if (num > 0) {
|
||||
b--;
|
||||
a--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_ShowChar(OLED_T *dev, uint8_t x, uint8_t y, uint8_t chr, uint8_t size1) {
|
||||
uint8_t i, m, temp, size2, chr1;
|
||||
uint8_t ys = y;
|
||||
size2 = (size1 / 8 + ((size1 % 8) ? 1 : 0)) * (size1 / 2); //得到字体一个字符对应点阵集所占的字节数
|
||||
chr1 = chr - ' '; //计算偏移后的值
|
||||
for (i = 0; i < size2; i++) {
|
||||
if (size1 == 12) { temp = asc2_1206[chr1][i]; } //调用1206字体
|
||||
else if (size1 == 16) { temp = asc2_1608[chr1][i]; } //调用1608字体
|
||||
else if (size1 == 24) { temp = asc2_2412[chr1][i]; } //调用2412字体
|
||||
else return;
|
||||
for (m = 0; m < 8; m++) //写入数据
|
||||
{
|
||||
if (temp & 0x80)OLED_Set(dev, x, ys);
|
||||
else OLED_RSet(dev, x, ys);
|
||||
temp <<= 1;
|
||||
ys++;
|
||||
if ((ys - y) == size1) {
|
||||
ys = y;
|
||||
x++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_ShowString(OLED_T *dev, uint8_t x, uint8_t y, uint8_t *str, uint8_t size1) {
|
||||
while ((*str >= ' ') && (*str <= '~'))//判断是不是非法字符!
|
||||
{
|
||||
OLED_ShowChar(dev, x, y, *str, size1);
|
||||
x += size1 / 2;
|
||||
if (x > dev->width - size1) //换行
|
||||
{
|
||||
x = 0;
|
||||
y += 2;
|
||||
}
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HZK_FONT
|
||||
|
||||
void OLED_ShowCHChr(OLED_T *dev, uint8_t x, uint8_t y, Chinese_t *hzk) {
|
||||
uint8_t i, temp, size2 = Hzk_size * ((Hzk_size + 7) / 8 * 8) / 8;
|
||||
uint16_t ziku_byte_n, ziku_bytes = ((Hzk_size + 7) / 8 * 8) / 8;
|
||||
ziku_byte_n = 0;
|
||||
for (i = 0; i < size2; i++) {
|
||||
temp = hzk->data[i];
|
||||
OLED_HBSet(dev, x + ziku_byte_n * 8, y, temp);
|
||||
ziku_byte_n++;
|
||||
if (ziku_byte_n >= ziku_bytes) {
|
||||
ziku_byte_n = 0;
|
||||
y++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef UTF8_TO_UNICODE
|
||||
|
||||
#include "font.h"
|
||||
|
||||
#define GET_LOW_BYTE0(x) ((x >> 0) & 0x000000ff) /* 获取第0个字节 */
|
||||
#define GET_LOW_BYTE1(x) ((x >> 8) & 0x000000ff) /* 获取第1个字节 */
|
||||
|
||||
void OLED_ShowCHString(OLED_T *dev, uint8_t x, uint8_t y, uint8_t *str) {
|
||||
uint32_t unicode_letter;
|
||||
uint8_t step;
|
||||
while (*str != '\0') {
|
||||
bool found = false;
|
||||
step = Font_utf8_to_unicode(str, &unicode_letter);
|
||||
if (step != 0) {
|
||||
Chinese_t *hzk = find_chinese_data(GET_LOW_BYTE1(unicode_letter), GET_LOW_BYTE0(unicode_letter));
|
||||
if(hzk!=NULL){
|
||||
OLED_ShowCHChr(dev, x, y, hzk);
|
||||
x += Hzk_size;
|
||||
str += step;
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
OLED_ShowChar(dev, x, y, *str, Hzk_size);
|
||||
x += Hzk_size / 2;
|
||||
str++;
|
||||
}
|
||||
if (x > dev->width - Hzk_size) {
|
||||
x = 0;
|
||||
y += Hzk_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void OLED_ShowCHString(OLED_T *dev, uint8_t x, uint8_t y, uint8_t *str) {
|
||||
uint16_t index;
|
||||
while (*str != '\0') {
|
||||
bool found = false;
|
||||
for (index = 0; index < sizeof(Hzk) / sizeof(Chinese_t); index++) {
|
||||
if (Hzk[index].unicode[0] == str[0] && Hzk[index].unicode[1] == str[1]) // 对比汉字区码位码
|
||||
{
|
||||
OLED_ShowCHChr(dev, x, y, &Hzk[index]);
|
||||
x += Hzk_size;
|
||||
str++;
|
||||
str++;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
OLED_ShowChar(dev, x, y, *str, Hzk_size);
|
||||
x += Hzk_size / 2;
|
||||
str++;
|
||||
}
|
||||
if (x > dev->width - Hzk_size) {
|
||||
x = 0;
|
||||
y += Hzk_size;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#ifdef LGVL_FONT
|
||||
#include "font.h"
|
||||
void draw_rect(Font_f_t *fd, uint8_t *data, size_t len) {
|
||||
size_t index;
|
||||
uint16_t x = fd->x, y = fd->y;
|
||||
uint8_t bit;
|
||||
for (index = 0; index < len; index++) {
|
||||
bit = (data[index / 8] >> (index % 8)) & 1;
|
||||
if (bit)OLED_Set((OLED_T *) fd->dev, x, y);
|
||||
else OLED_RSet((OLED_T *) fd->dev, x, y);
|
||||
x++;
|
||||
if ((x - fd->x) == fd->w) {
|
||||
y++;
|
||||
x = fd->x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_DisplayString(OLED_T *dev, const lv_font_t *font, uint8_t *s, uint16_t x, uint16_t y) {
|
||||
uint32_t unicode_letter;
|
||||
Font_f_t fd = {.dev=dev, .dev_w=dev->width, .show=draw_rect};
|
||||
while (*s) {
|
||||
if (font) {
|
||||
s += Font_utf8_to_unicode(s, &unicode_letter);
|
||||
x += Font_draw_letter(font, &fd, unicode_letter, x, y);
|
||||
x += 0; //字间距
|
||||
} else {
|
||||
OLED_ShowChar(dev, x, y, *s, 12);
|
||||
x += 12;
|
||||
s++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32_t OLED_Pow(uint8_t m, uint8_t n) {
|
||||
uint32_t result = 1;
|
||||
while (n--) {
|
||||
result *= m;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void OLED_ShowNum(OLED_T *dev, uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size1) {
|
||||
uint8_t t, temp;
|
||||
for (t = 0; t < len; t++) {
|
||||
temp = (num / OLED_Pow(10, len - t - 1)) % 10;
|
||||
if (temp == 0) {
|
||||
OLED_ShowChar(dev, x + (size1 / 2) * t, y, '0', size1);
|
||||
} else {
|
||||
OLED_ShowChar(dev, x + (size1 / 2) * t, y, temp + '0', size1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_ShowPic(OLED_T *dev, uint8_t x0, uint8_t y0, uint8_t w, uint8_t h, uint8_t *bmp) {
|
||||
size_t index;
|
||||
uint16_t x = x0, y = y0;
|
||||
for (index = 0; index < (w * h) / 8; index++) {
|
||||
OLED_BSet(dev, x, y, bmp[index]);
|
||||
x++;
|
||||
if ((x - x0) == w) {
|
||||
y += 8;
|
||||
x = x0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_Fill(OLED_T *dev, uint8_t data) {
|
||||
uint8_t x, y;
|
||||
for (y = 0; y < (dev->height >> 3); y++) {
|
||||
for (x = 0; x < dev->width; x++) {
|
||||
BUFPOINT(x, y) = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_CLS(OLED_T *dev) {
|
||||
OLED_Fill(dev, 0x00);
|
||||
}
|
||||
|
||||
void OLED_SPos(OLED_T *dev, uint8_t x, uint8_t y) {
|
||||
uint8_t cmd[3];
|
||||
cmd[0] = 0xb0 + y;
|
||||
cmd[1] = ((x & 0xf0) >> 4) | 0x10;
|
||||
cmd[2] = (x & 0x0f) | 0x01;
|
||||
if (dev->state == IDLE) {
|
||||
dev->state = WRITE;
|
||||
dev->cmd(cmd, 3);
|
||||
dev->state = IDLE;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user