Compare commits
3 Commits
99dcb14b60
...
4cebdac36e
Author | SHA1 | Date |
---|---|---|
|
4cebdac36e | |
|
829b8ab54b | |
|
2d867be49a |
|
@ -12,9 +12,12 @@ endforeach ()
|
|||
|
||||
file(GLOB_RECURSE SOURCES "demo/*/*.*")
|
||||
|
||||
|
||||
#add_library(HW_LIB_List HW_LIB_Task HW_LIB_Printf HW_LIB_Utils HW_LIB_Iic HW_LIB_Spi HW_LIB_Key)
|
||||
|
||||
add_executable(HW_Lib main.c ${SOURCES})
|
||||
|
||||
|
||||
#导入库
|
||||
add_subdirectory(lib)
|
||||
target_link_libraries(HW_Lib HW_LIB_List HW_LIB_Task HW_LIB_Printf HW_LIB_Utils HW_LIB_Iic HW_LIB_Spi)
|
||||
target_link_libraries(HW_Lib HW_LIB_List HW_LIB_Task HW_LIB_Printf HW_LIB_Utils HW_LIB_Iic HW_LIB_Spi HW_LIB_Key)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#include "iic.h"
|
||||
#include "log.h"
|
||||
#include "tool.h"
|
||||
|
||||
#include "t_iic.h"
|
||||
uint8_t CLK_Pin(uint8_t l) {
|
||||
// LOGT("CLK", "P:%d", l);
|
||||
return l;
|
||||
|
@ -47,9 +47,9 @@ void Test_iic() {
|
|||
}
|
||||
PRINT_ARRAY(writeData, "%3d", 16);
|
||||
|
||||
foreach(i in writeData) {
|
||||
writeData[i] = rand() % 200;
|
||||
}
|
||||
// foreach(i in writeData) {
|
||||
// writeData[i] = rand() % 200;
|
||||
// }
|
||||
PRINT_ARRAY(writeData, "%3d", 16);
|
||||
Buf_Print("<IIC> TX", writeData, len, 16);
|
||||
BufPrint("<IIC> TX", writeData, TYPE_T(writeData), len, 16);
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef HW_LIB_T_KEY_H
|
||||
#define HW_LIB_T_KEY_H
|
||||
|
||||
void Test_Key();
|
||||
|
||||
#endif //HW_LIB_T_KEY_H
|
|
@ -0,0 +1,56 @@
|
|||
#include <stdio.h>
|
||||
#include "key.h"
|
||||
#include "log.h"
|
||||
#include "tool.h"
|
||||
#include "t_key.h"
|
||||
#include <windows.h>
|
||||
|
||||
uint8_t Key_Pin(uint8_t l) {
|
||||
uint8_t k = rand() % 2;
|
||||
// LOGT("KEY", "P:%d-%d", l,k);
|
||||
return k;
|
||||
}
|
||||
|
||||
|
||||
void Key_Call(Key_t *key) {
|
||||
switch (key->event) {
|
||||
case KEY_PRESS_DOWN:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "按下事件");
|
||||
break;// 按下事件
|
||||
case KEY_PRESS_UP:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "弹起事件");
|
||||
break;// 弹起事件
|
||||
case KEY_PRESS_REPEAT:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "重复按下事件");
|
||||
break;// 重复按下事件
|
||||
case KEY_SINGLE_CLICK:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "单击事件");
|
||||
break;// 单击事件
|
||||
case KEY_DOUBLE_CLICK:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "双击事件");
|
||||
break;// 双击事件
|
||||
case KEY_LONG_PRESS_START:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "长按开始事件");
|
||||
break;// 长按开始事件
|
||||
case KEY_LONG_PRESS_HOLD:
|
||||
LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "长按保持事件");
|
||||
break;// 长按保持事件
|
||||
}
|
||||
}
|
||||
|
||||
void Test_Key() {
|
||||
|
||||
|
||||
Key_t k1, k2;
|
||||
key_init(&k1, Key_Pin, 1, 0);
|
||||
key_init(&k2, Key_Pin, 1, 1);
|
||||
key_attach(&k1, KEY_ALL_EVENT, Key_Call);
|
||||
key_attach(&k2, KEY_ALL_EVENT, Key_Call);
|
||||
key_start(&k1);
|
||||
key_start(&k2);
|
||||
while (1) {
|
||||
// 每5ms调用一次key_ticks函数
|
||||
key_ticks();
|
||||
Sleep(5); // 使用Windows平台的Sleep函数进行5ms延时
|
||||
}
|
||||
}
|
|
@ -6,6 +6,8 @@ set(LIBRARIES
|
|||
HW_LIB_Utils src/utils inc/utils
|
||||
HW_LIB_Iic src/iic inc/iic
|
||||
HW_LIB_Spi src/spi inc/spi
|
||||
HW_LIB_Key src/key inc/key
|
||||
HW_LIB_Oled src/oled inc/oled
|
||||
)
|
||||
|
||||
# 循环浏览库列表以创建它们
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
#ifndef HW_LIB_KEY_H
|
||||
#define HW_LIB_KEY_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
#define KEY_TICKS_INTERVAL 5 // 定时器间隔时间,单位为毫秒
|
||||
#define DEBOUNCE_TICKS 3 // 按键去抖动计数阈值,最大为7(0 ~ 7)
|
||||
#define SHORT_TICKS (300 / KEY_TICKS_INTERVAL) // 短按阈值,单位为定时器间隔的倍数
|
||||
#define LONG_TICKS (1000 / KEY_TICKS_INTERVAL) // 长按阈值,单位为定时器间隔的倍数
|
||||
#define KEY_STOP_FREE 1 // 按键停止释放状态标识
|
||||
|
||||
|
||||
typedef struct Key_List Key_t; // 定义结构体Key_t为Key_List的别名
|
||||
typedef void (*Key_Callback_t)(Key_t *key); // 定义函数指针类型Key_Callback_t,接受一个Key_t结构体指针参数
|
||||
|
||||
typedef enum {
|
||||
KEY_PRESS_DOWN = 0, // 按下事件
|
||||
KEY_PRESS_UP, // 弹起事件
|
||||
KEY_PRESS_REPEAT, // 重复按下事件
|
||||
KEY_SINGLE_CLICK, // 单击事件
|
||||
KEY_DOUBLE_CLICK, // 双击事件
|
||||
KEY_LONG_PRESS_START, // 长按开始事件
|
||||
KEY_LONG_PRESS_HOLD, // 长按保持事件
|
||||
number_of_event, // 事件总数
|
||||
KEY_ALL_EVENT, // 所有事件
|
||||
NONE_PRESS // 无按键事件
|
||||
} PressEvent; // 定义枚举类型PressEvent,表示按键事件类型
|
||||
|
||||
struct Key_List {
|
||||
Key_t *next; // 指向下一个按键结构体的指针
|
||||
uint16_t ticks; // 计时器
|
||||
uint8_t repeat: 4; // 按键重复次数,占4位
|
||||
uint8_t event: 4; // 当前按键事件类型,占4位
|
||||
uint8_t state: 3; // 按键状态,占3位
|
||||
uint8_t debounce_cnt: 3; // 按键去抖计数,占3位
|
||||
uint8_t active_level: 1; // 按键激活电平,占1位
|
||||
uint8_t key_level: 1; // 当前按键电平,占1位
|
||||
uint8_t key_id; // 按键ID
|
||||
uint8_t (*hal_key_Level)(uint8_t key_id_); // 函数指针,用于获取按键电平
|
||||
Key_Callback_t cb[number_of_event]; // 按键事件回调函数数组
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief 初始化按键模块
|
||||
* @param key: [输入] 指向按键结构体的指针
|
||||
* @param pin_level: [输入] 获取按键电平的回调函数
|
||||
* @param active_level: [输入] 激活电平
|
||||
* @param key_id: [输入] 按键ID
|
||||
* @return void
|
||||
* @example key_init(&my_key, get_pin_level, ACTIVE_HIGH, 1);
|
||||
*/
|
||||
void key_init(Key_t *key, uint8_t(*pin_level)(uint8_t), uint8_t active_level, uint8_t key_id);
|
||||
|
||||
/**
|
||||
* @brief 绑定按键事件回调函数
|
||||
* @param key: [输入] 指向按键结构体的指针
|
||||
* @param event: [输入] 按键事件类型
|
||||
* @param cb: [输入] 按键事件回调函数
|
||||
* @return void
|
||||
* @example key_attach(&my_key, PRESS_DOWN, key_press_callback);
|
||||
*/
|
||||
void key_attach(Key_t *key, PressEvent event, Key_Callback_t cb);
|
||||
|
||||
/**
|
||||
* @brief 获取按键当前事件
|
||||
* @param key: [输入] 指向按键结构体的指针
|
||||
* @return 当前按键事件
|
||||
* @example PressEvent current_event = get_key_event(&my_key);
|
||||
*/
|
||||
PressEvent get_key_event(Key_t *key);
|
||||
|
||||
/**
|
||||
* @brief 启动按键检测
|
||||
* @param key: [输入] 指向按键结构体的指针
|
||||
* @return 错误码,0表示成功
|
||||
* @example int result = key_start(&my_key);
|
||||
*/
|
||||
int key_start(Key_t *key);
|
||||
|
||||
/**
|
||||
* @brief 停止按键检测
|
||||
* @param key: [输入] 指向按键结构体的指针
|
||||
* @return void
|
||||
* @example key_stop(&my_key);
|
||||
*/
|
||||
void key_stop(Key_t *key);
|
||||
|
||||
/**
|
||||
* @brief 按键定时处理函数
|
||||
* @return void
|
||||
* @example key_ticks();
|
||||
*/
|
||||
void key_ticks(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif //HW_LIB_KEY_H
|
|
@ -13,8 +13,8 @@ typedef struct List_Node_t { //节点结构
|
|||
} List_Node_t;
|
||||
|
||||
typedef struct { //链表结构
|
||||
struct List_Node_t *head;
|
||||
struct List_Node_t *tail;
|
||||
List_Node_t *head;
|
||||
List_Node_t *tail;
|
||||
long len;
|
||||
} List_t;
|
||||
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
#ifndef HW_LIB_OLED_H
|
||||
#define HW_LIB_OLED_H
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
|
||||
#define REFRESH_CALL_ENABLE 1 //使用DMA或者需要收到刷新完毕通知的回调函数
|
||||
|
||||
|
||||
/**
|
||||
* @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)();
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief OLED状态枚举
|
||||
*/
|
||||
typedef enum {
|
||||
IDLE, /**< 空闲状态 */
|
||||
WRITE, /**< 写入状态 */
|
||||
REFRESH, /**< 刷新状态 */
|
||||
} OLED_STATE_T;
|
||||
|
||||
/**
|
||||
* @brief OLED设备结构体
|
||||
*/
|
||||
struct OLED_Dev {
|
||||
uint8_t *buf; /**< 显示缓冲区指针 */
|
||||
uint8_t width: 3; /**< 显示宽度 */
|
||||
uint8_t height: 3; /**< 显示高度 */
|
||||
OLED_STATE_T state: 2; /**< 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, 0x40, // 设置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_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 绘制圆
|
||||
* @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);
|
||||
|
||||
/**
|
||||
* @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);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif //HW_LIB_OLED_H
|
|
@ -0,0 +1,303 @@
|
|||
#ifndef HW_LIB_OLED_FONT_H
|
||||
#define HW_LIB_OLED_FONT_H
|
||||
//常用ASCII表
|
||||
//偏移量32
|
||||
//ASCII字符集
|
||||
//偏移量32
|
||||
//大小:12*6
|
||||
/************************************6*8的点阵************************************/
|
||||
//12*12 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*16 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*24 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
|
|
@ -29,36 +29,85 @@ struct TaskList {
|
|||
void *userdata;
|
||||
};
|
||||
|
||||
//时间基准注册,建议1-10ms的基准
|
||||
/**
|
||||
* @brief 初始化任务模块
|
||||
* @param TicksFunc: [输入] 时间基准函数指针
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskInit(GetPlatformTicks);
|
||||
*/
|
||||
TaskStatus_t TaskInit(PlatformTicksFunc_t TicksFunc);
|
||||
|
||||
//创建任务
|
||||
// time:间隔时间
|
||||
// runcnt:执行次数 为-1无限制执行 为0只创建不运行
|
||||
// callback:回调函数
|
||||
// userdata:用户数据传参
|
||||
|
||||
/**
|
||||
* @brief 创建任务
|
||||
* @param task: [输入/输出] 任务结构体指针
|
||||
* @param time: [输入] 间隔时间
|
||||
* @param runcnt: [输入] 执行次数,-1为无限制执行,0为只创建不运行
|
||||
* @param callback: [输入] 回调函数
|
||||
* @param userdata: [输入] 用户数据传参
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskCreat(&myTask, 100, -1, myCallbackFunc, &myData);
|
||||
*/
|
||||
TaskStatus_t TaskCreat(Task_t *task, TaskTime_t time, TaskCnt_t runcnt, Task_Callback_t callback, void *userdata);
|
||||
|
||||
//添加任务
|
||||
/**
|
||||
* @brief 添加任务
|
||||
* @param task: [输入] 任务结构体指针
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskAdd(&myTask);
|
||||
*/
|
||||
TaskStatus_t TaskAdd(Task_t *task);
|
||||
|
||||
//删除任务
|
||||
/**
|
||||
* @brief 删除任务
|
||||
* @param task: [输入] 任务结构体指针
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskDel(&myTask);
|
||||
*/
|
||||
TaskStatus_t TaskDel(Task_t *task);
|
||||
|
||||
//重新开始以停止的任务
|
||||
/**
|
||||
* @brief 重新开始停止的任务
|
||||
* @param task: [输入] 任务结构体指针
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskStart(&myTask);
|
||||
*/
|
||||
TaskStatus_t TaskStart(Task_t *task);
|
||||
|
||||
//暂停任务执行
|
||||
/**
|
||||
* @brief 暂停任务执行
|
||||
* @param task: [输入] 任务结构体指针
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskStop(&myTask);
|
||||
*/
|
||||
TaskStatus_t TaskStop(Task_t *task);
|
||||
|
||||
//重设任务执行次数
|
||||
/**
|
||||
* @brief 重设任务执行次数
|
||||
* @param task: [输入] 任务结构体指针
|
||||
* @param runcnt: [输入] 新的执行次数
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskSetCnt(&myTask, 5);
|
||||
*/
|
||||
TaskStatus_t TaskSetCnt(Task_t *task, TaskCnt_t runcnt);
|
||||
|
||||
//重设任务间隔时间
|
||||
/**
|
||||
* @brief 重设任务间隔时间
|
||||
* @param task: [输入] 任务结构体指针
|
||||
* @param time: [输入] 新的间隔时间
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskSetTime(&myTask, 50);
|
||||
*/
|
||||
|
||||
TaskStatus_t TaskSetTime(Task_t *task, TaskTime_t time);
|
||||
|
||||
//任务调度
|
||||
/**
|
||||
* @brief 任务调度
|
||||
* @return TaskStatus_t 返回任务状态
|
||||
* @example TaskRun();
|
||||
*/
|
||||
TaskStatus_t TaskRun(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -29,16 +29,16 @@ typedef union {
|
|||
u16 u16;
|
||||
} Data16_t;
|
||||
typedef enum { // 定义枚举类型Type_t,包含不同数据类型
|
||||
U8, // 无符号8位整数
|
||||
U16, // 无符号16位整数
|
||||
U32, // 无符号32位整数
|
||||
T_U8, // 无符号8位整数
|
||||
T_U16, // 无符号16位整数
|
||||
T_U32, // 无符号32位整数
|
||||
|
||||
CHAR, // 字符
|
||||
SHORT, // 短整数
|
||||
INT, // 整数
|
||||
T_CHAR, // 字符
|
||||
T_SHORT, // 短整数
|
||||
T_INT, // 整数
|
||||
|
||||
FLOAT, // 浮点数
|
||||
DOUBLE, // 双精度浮点数
|
||||
T_FLOAT, // 浮点数
|
||||
T_DOUBLE, // 双精度浮点数
|
||||
} Type_t;
|
||||
|
||||
#define TYPE_T(v) _Generic((v), \
|
||||
|
@ -47,29 +47,8 @@ typedef enum { // 定义枚举类型Type_t,包含不同数据类型
|
|||
float *:6,double *:7, \
|
||||
default: ((void)0))
|
||||
|
||||
#define MESSAGE(err) \
|
||||
( err==ERROR_NO_MEMORY ? MSG_NO_MEMORY \
|
||||
: err==ERROR_INVALID_INDEX ? MSG_INVALID_INDEX \
|
||||
: err==ERROR_INVALID_VALUE ? MSG_INVALID_VALUE \
|
||||
: 0 )
|
||||
|
||||
#define TYPE_U8 (unsigned char *)
|
||||
|
||||
#define TYPE_ptr(type) \
|
||||
(type==0 ? TYPE_U8 \
|
||||
: type==1 ? (unsigned short *) \
|
||||
: type==2 ? (unsigned int *) \
|
||||
: type==3 ? (char *) \
|
||||
: type==4 ? (short *) \
|
||||
: type==5 ? (int *) \
|
||||
: type==6 ? (float *) \
|
||||
: type==7 ? (double *) \
|
||||
: ((void)0))\
|
||||
|
||||
|
||||
|
||||
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) // 计算数组的元素个数
|
||||
#define in , // 定义逗号为in
|
||||
//#define in , // 定义逗号为in
|
||||
#define _foreach(e, a) for(size_t e = 0; e < ARRAY_SIZE(a); e++) // 实现foreach宏,遍历数组a,e为当前元素下标
|
||||
#define foreach(exp) _foreach(exp) // 定义foreach宏,用于遍历数组
|
||||
|
||||
|
@ -150,7 +129,7 @@ float Str2Float(char *str);
|
|||
**/
|
||||
#define PRINT_ARRAY(arr, fmt, frame) do { \
|
||||
printf("\n"#arr ":\n"); \
|
||||
foreach(i in arr) {\
|
||||
_foreach(i,arr) {\
|
||||
if(i%frame==0&&i!=0) printf("\n");\
|
||||
printf(fmt " ", arr[i]); }\
|
||||
printf("\n"); } while (0)
|
||||
|
|
|
@ -0,0 +1,170 @@
|
|||
#include <malloc.h>
|
||||
#include "key.h"
|
||||
|
||||
|
||||
#define EVENT_CB(ev) if(key->cb[ev])key->cb[ev](key)
|
||||
#define PRESS_REPEAT_MAX_NUM 15
|
||||
|
||||
|
||||
static Key_t *head_key = NULL;
|
||||
|
||||
static void key_state_switch(Key_t *key);
|
||||
|
||||
|
||||
void key_init(Key_t *key, uint8_t(*pin_level)(uint8_t), uint8_t active_level, uint8_t key_id) {
|
||||
memset(key, 0, sizeof(Key_t));
|
||||
key->event = (uint8_t) NONE_PRESS;
|
||||
key->hal_key_Level = pin_level;
|
||||
key->key_level = !active_level;
|
||||
key->active_level = active_level;
|
||||
key->key_id = key_id;
|
||||
}
|
||||
|
||||
|
||||
void key_attach(Key_t *key, PressEvent event, Key_Callback_t cb) {
|
||||
// 如果事件类型为ALL_EVENT,则将回调函数cb分别赋值给所有事件类型
|
||||
if (event == KEY_ALL_EVENT) {
|
||||
for (uint8_t i = KEY_PRESS_UP; i < number_of_event; i++) {
|
||||
key->cb[i] = cb;
|
||||
}
|
||||
} else {
|
||||
// 否则,将回调函数cb赋值给指定的事件类型
|
||||
key->cb[event] = cb;
|
||||
}
|
||||
}
|
||||
|
||||
PressEvent get_key_event(Key_t *key) {
|
||||
return (PressEvent) (key->event);
|
||||
}
|
||||
|
||||
static void key_state_switch(Key_t *key) {
|
||||
// 读取按键的GPIO电平
|
||||
uint8_t read_gpio_level = key->hal_key_Level(key->key_id);
|
||||
|
||||
// 如果按键状态大于0,则增加ticks计数
|
||||
if ((key->state) > 0) key->ticks++;
|
||||
|
||||
// 按键去抖动处理
|
||||
if (read_gpio_level != key->key_level) {
|
||||
if (++(key->debounce_cnt) >= DEBOUNCE_TICKS) {
|
||||
key->key_level = read_gpio_level;
|
||||
key->debounce_cnt = 0;
|
||||
}
|
||||
} else {
|
||||
key->debounce_cnt = 0;
|
||||
}
|
||||
|
||||
// 状态机处理按键事件
|
||||
switch (key->state) {
|
||||
case 0:
|
||||
if (key->key_level == key->active_level) {
|
||||
key->event = (uint8_t) KEY_PRESS_DOWN;
|
||||
EVENT_CB(KEY_PRESS_DOWN);
|
||||
key->ticks = 0;
|
||||
key->repeat = 1;
|
||||
key->state = 1;
|
||||
} else {
|
||||
key->event = (uint8_t) NONE_PRESS;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (key->key_level != key->active_level) {
|
||||
key->event = (uint8_t) KEY_PRESS_UP;
|
||||
EVENT_CB(KEY_PRESS_UP);
|
||||
key->ticks = 0;
|
||||
key->state = 2;
|
||||
} else if (key->ticks > LONG_TICKS) {
|
||||
key->event = (uint8_t) KEY_LONG_PRESS_START;
|
||||
EVENT_CB(KEY_LONG_PRESS_START);
|
||||
key->state = 5;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (key->key_level == key->active_level) {
|
||||
key->event = (uint8_t) KEY_PRESS_DOWN;
|
||||
EVENT_CB(KEY_PRESS_DOWN);
|
||||
if (key->repeat != PRESS_REPEAT_MAX_NUM) {
|
||||
key->repeat++;
|
||||
}
|
||||
EVENT_CB(KEY_PRESS_REPEAT);
|
||||
key->ticks = 0;
|
||||
key->state = 3;
|
||||
} else if (key->ticks > SHORT_TICKS) {
|
||||
if (key->repeat == 1) {
|
||||
key->event = (uint8_t) KEY_SINGLE_CLICK;
|
||||
EVENT_CB(KEY_SINGLE_CLICK);
|
||||
} else if (key->repeat == 2) {
|
||||
key->event = (uint8_t) KEY_DOUBLE_CLICK;
|
||||
EVENT_CB(KEY_DOUBLE_CLICK);
|
||||
}
|
||||
key->state = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if (key->key_level != key->active_level) {
|
||||
key->event = (uint8_t) KEY_PRESS_UP;
|
||||
EVENT_CB(KEY_PRESS_UP);
|
||||
if (key->ticks < SHORT_TICKS) {
|
||||
key->ticks = 0;
|
||||
key->state = 2;
|
||||
} else {
|
||||
key->state = 0;
|
||||
}
|
||||
} else if (key->ticks > SHORT_TICKS) {
|
||||
key->state = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
if (key->key_level == key->active_level) {
|
||||
key->event = (uint8_t) KEY_LONG_PRESS_HOLD;
|
||||
EVENT_CB(KEY_LONG_PRESS_HOLD);
|
||||
} else {
|
||||
key->event = (uint8_t) KEY_PRESS_UP;
|
||||
EVENT_CB(KEY_PRESS_UP);
|
||||
key->state = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
key->state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int key_start(Key_t *key) {
|
||||
Key_t *target = head_key;
|
||||
while (target) {
|
||||
if (target == key) return -1;
|
||||
target = target->next;
|
||||
}
|
||||
key->next = head_key;
|
||||
head_key = key;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void key_stop(Key_t *key) {
|
||||
Key_t **curr;
|
||||
for (curr = &head_key; *curr;) {
|
||||
Key_t *entry = *curr;
|
||||
if (entry == key) {
|
||||
*curr = entry->next;
|
||||
#if KEY_STOP_FREE
|
||||
free(entry);
|
||||
#endif
|
||||
return;
|
||||
} else {
|
||||
curr = &entry->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void key_ticks(void) {
|
||||
Key_t *target;
|
||||
for (target = head_key; target; target = target->next) {
|
||||
key_state_switch(target);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,193 @@
|
|||
#include "oled.h"
|
||||
#include "oled_font.h"
|
||||
|
||||
#define BUFPOINT(x, i) (*(dev->buf + x + (i * dev->width)))
|
||||
|
||||
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->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) {
|
||||
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);
|
||||
}
|
||||
#if REFRESH_CALL_ENABLE
|
||||
dev->call();
|
||||
#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_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_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 y0 = 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, y);
|
||||
else OLED_RSet(dev, x, y);
|
||||
temp <<= 1;
|
||||
y++;
|
||||
if ((y - y0) == size1) {
|
||||
y = y0;
|
||||
x++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_ShowString(OLED_T *dev, uint8_t x, uint8_t y, uint8_t *chr, uint8_t size1) {
|
||||
while ((*chr >= ' ') && (*chr <= '~'))//判断是不是非法字符!
|
||||
{
|
||||
OLED_ShowChar(dev, x, y, *chr, size1);
|
||||
x += size1 / 2;
|
||||
if (x > dev->width - size1) //换行
|
||||
{
|
||||
x = 0;
|
||||
y += 2;
|
||||
}
|
||||
chr++;
|
||||
}
|
||||
}
|
||||
|
||||
void OLED_SPos(OLED_T *dev, uint8_t x, uint8_t y) {
|
||||
uint8_t cmd[3];
|
||||
cmd[0] = (uint8_t) 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;
|
||||
}
|
||||
}
|
|
@ -14,28 +14,28 @@ void BufPrint(char *name, void *buf, Type_t type, unsigned int len, unsigned cha
|
|||
for (int i = 0; i < len; ++i) {
|
||||
if (i % frame == 0 && i != 0) printf("\n");
|
||||
switch (type) {
|
||||
case U8:
|
||||
case T_U8:
|
||||
printf("%02X ", *((unsigned char *) buf + i));
|
||||
break;
|
||||
case U16:
|
||||
case T_U16:
|
||||
printf("%04X ", *((unsigned short *) buf + i));
|
||||
break;
|
||||
case U32:
|
||||
case T_U32:
|
||||
printf("%08X ", *((unsigned int *) buf + i));
|
||||
break;
|
||||
case CHAR:
|
||||
case T_CHAR:
|
||||
printf("%c ", *((char *) buf + i));
|
||||
break;
|
||||
case SHORT:
|
||||
case T_SHORT:
|
||||
printf("%d ", *((short *) buf + i));
|
||||
break;
|
||||
case INT:
|
||||
case T_INT:
|
||||
printf("%d ", *((int *) buf + i));
|
||||
break;
|
||||
case FLOAT:
|
||||
case T_FLOAT:
|
||||
printf("%0.2f ", *((float *) buf + i));
|
||||
break;
|
||||
case DOUBLE:
|
||||
case T_DOUBLE:
|
||||
printf("%0.2f ", *((double *) buf + i));
|
||||
break;
|
||||
default:
|
||||
|
|
5
main.c
5
main.c
|
@ -6,6 +6,7 @@
|
|||
#include "t_task.h"
|
||||
#include "t_arg.h"
|
||||
#include "t_list.h"
|
||||
#include "t_key.h"
|
||||
#include "tool.h"
|
||||
#include <time.h>
|
||||
|
||||
|
@ -23,7 +24,7 @@ int main() {
|
|||
Test_RunTime("ArgPase", Test_argpase);
|
||||
Test_RunTime("List", Test_List);
|
||||
Test_RunTime("Queue", Test_Queue);
|
||||
Test_RunTime("Task", Test_task);
|
||||
|
||||
// Test_RunTime("Task", Test_task);
|
||||
Test_RunTime("Key", Test_Key);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue