From ab5586cebc3954ef8157bff7d73b7d214bce43ca Mon Sep 17 00:00:00 2001 From: szy <372255923@qq.com> Date: Mon, 11 Oct 2021 15:52:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=B5=E6=B1=A0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E7=BB=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- applications/app/README.md | 1 + .../app/TW210_Module_battery/BUILD.gn | 25 ++ .../app/TW210_Module_battery/README.md | 19 ++ .../TW210_Module_battery/battery_example.c | 158 +++++++++ .../app/TW210_Module_battery/battery_oled.c | 321 ++++++++++++++++++ .../TW210_Module_battery/battery_oledfont.h | 217 ++++++++++++ 7 files changed, 743 insertions(+), 1 deletion(-) create mode 100644 applications/app/TW210_Module_battery/BUILD.gn create mode 100644 applications/app/TW210_Module_battery/README.md create mode 100644 applications/app/TW210_Module_battery/battery_example.c create mode 100644 applications/app/TW210_Module_battery/battery_oled.c create mode 100644 applications/app/TW210_Module_battery/battery_oledfont.h diff --git a/README.md b/README.md index 24260357..0c25012f 100644 --- a/README.md +++ b/README.md @@ -78,9 +78,10 @@ | TW105 | I2C | i2c_sht30 | [I2C温湿度传感器采集](applications/app/TW105_I2C_sht30/README.md) | 核心板 + 马达扩展板| | TW106 | UART | uart | [UART串口自发自收](applications/app/TW106_UART/README.md) | 核心板 | | TW201 | Module | oled | [OLED显示屏驱动](applications/app/TW201_Module_oled/README.md) | 核心板 + OLED扩展板| -| TW203 | Module | tricolor_light| [人体感应联动三色灯](TW203_Module_tricolor_light/README.md) | 核心板 + 人体感应板| +| TW203 | Module | tricolor_light| [人体感应联动三色灯](applications/app/TW203_Module_tricolor_light/README.md) | 核心板 + 人体感应扩展板| | TW205 | Module | motor | [马达开发板演示](applications/app/TW205_Module_motor/README.md) | 核心板 + 马达板| | TW207 | Module | gyro | [GYRO驱动](applications/app/TW207_Module_gyro/README.md) | 核心板 + GYRO扩展板| +| TW210 | Module | battery | [电池电源管理](applications/app/TW210_Module_battery/README.md) | 核心板 + NFC扩展板 + OLED扩展板| | TW301 | Network | wifista | [WiFi-STA联网演示](applications/app/TW301_Network_wifista/README.md) | 核心板 | | TW302 | Network | wifiap | [WiFi-AP热点演示](applications/app/TW302_Network_wifiap/README.md) | 核心板 | | TW303 | Network | mqtt | [MQTT演示](applications/app/TW303_Network_mqttclient/README.md) | 核心板 | diff --git a/applications/app/README.md b/applications/app/README.md index 1f89c929..76148583 100644 --- a/applications/app/README.md +++ b/applications/app/README.md @@ -31,6 +31,7 @@ | TW203 | Module | tricolor_light| [人体感应联动三色灯](TW203_Module_tricolor_light/README.md) | 核心板 + 人体感应板| | TW205 | Module | motor | [马达开发板演示](TW205_Module_motor/README.md) | 核心板 + 马达板| | TW207 | Module | gyro | [GYRO驱动](TW207_Module_gyro/README.md) | 核心板 + GYRO扩展板| +| TW210 | Module | battery | [电池电源管理](TW210_Module_battery/README.md) | 核心板 + NFC扩展板 + OLED扩展板| | TW301 | Network | wifista | [WiFi-STA联网演示](TW301_Network_wifista/README.md) | 核心板 | | TW302 | Network | wifiap | [WiFi-AP热点演示](TW302_Network_wifiap/README.md) | 核心板 | | TW303 | Network | mqtt | [MQTT演示](TW303_Network_mqttclient/README.md) | 核心板 | diff --git a/applications/app/TW210_Module_battery/BUILD.gn b/applications/app/TW210_Module_battery/BUILD.gn new file mode 100644 index 00000000..64444a77 --- /dev/null +++ b/applications/app/TW210_Module_battery/BUILD.gn @@ -0,0 +1,25 @@ +# Copyright (c) 2021 Talkweb Co.,ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +static_library("module_battery_example") { + sources = [ + "battery_example.c", + "battery_oled.c" + ] + + include_dirs = [ + "//utils/native/lite/include", + "//kernel/liteos_m/kal/cmsis", + "//base/iot_hardware/peripheral/interfaces/kits", + ] +} \ No newline at end of file diff --git a/applications/app/TW210_Module_battery/README.md b/applications/app/TW210_Module_battery/README.md new file mode 100644 index 00000000..2857d3b4 --- /dev/null +++ b/applications/app/TW210_Module_battery/README.md @@ -0,0 +1,19 @@ +# OpenHarmony模组开发-电池充电管理 + +本案例通过采集供电反馈电压,对电池充放电进行保护管理 + +# 引脚相关定义 +GPIO6 | 充电控制引脚 | 低电平时使能充电 +GPIO9 | AD电压采集引脚 | 采集电池供电电压分压后的电压值 + +# AD采集值与实际Vbat电压值的对应关系 + 1.假设通过芯片ad采集的值为x + 2.通过 IOTAdcConvertToVoltage(x)函数可以将采集到的ad值转换成采集点的电压值,假设为y + 3.通过电阻分压原理可反推出Vbat处的供电电压,本实现分压电阻为 1M/510K,则 x/y = 510/(510+1000), + 得 y = 1510x/510; + +# 实现现象 + 1. OLED屏上实时显示当前adc采集电压adcVol、电池电压batVol及充电开关状态charge + 2. 当Vbat电压值大于4.2V时关闭充电功能 + 3. 当Vbat电压值2.8~4.2V之间时,电池正常充电 + 4. 当Vbat电压值小于2.8V时提示低电压报警 diff --git a/applications/app/TW210_Module_battery/battery_example.c b/applications/app/TW210_Module_battery/battery_example.c new file mode 100644 index 00000000..971bbf2a --- /dev/null +++ b/applications/app/TW210_Module_battery/battery_example.c @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2021 Talkweb Information System Co.,ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include + +#include "ohos_init.h" +#include "cmsis_os2.h" + +#include "iot_gpio.h" +#include "iot_adc.h" + +#define TASK_STACK_SIZE 1024 +#define TASK_PRIO 25 + +#define BATTERYCHARGEMAX 4.2 //电池充电过压阈值 +#define BATTERYCHARGEMIN 2.8 //电池低电压报警阈值 + +//申明相关oled API函数 +extern void OledIICInit(void); +extern void OledRefresh(void); +extern void OledShowString(unsigned char x, unsigned char y, char *chr, unsigned char size1); + +//开启电池充电 +static void BatteryChargeStart(void) +{ + IoTGpioSetOutputVal(IOT_GPIO_IO_GPIO_6, IOT_GPIO_VALUE0); +} + +//停止电池充电 +static void BatteryChargeStop(void) +{ + IoTGpioSetOutputVal(IOT_GPIO_IO_GPIO_6, IOT_GPIO_VALUE1); +} + +static void BatteryTask(void) +{ + int ret = 0; + char pbuf[10] = {0}; + unsigned short adVal = 0; + unsigned char chargeState = 0; + float voltage = 0, vBat = 0; + + //充电控制脚 + IoTGpioInit(IOT_GPIO_IO_GPIO_6); + IotIoSetFunc(IOT_GPIO_IO_GPIO_6, HI_IO_FUNC_GPIO_6_GPIO); + IoTGpioSetDir(IOT_GPIO_IO_GPIO_6, IOT_GPIO_DIR_OUT); + IoTGpioSetOutputVal(IOT_GPIO_IO_GPIO_6, IOT_GPIO_VALUE0); + + //AD检测引脚初始化为浮夸模式 + IoTGpioInit(IOT_GPIO_IO_GPIO_9); + IotIoSetPull(IOT_GPIO_IO_GPIO_9, IOT_IO_PULL_NONE); + + //OLED初始化 + OledIICInit(); + + //Oled显示初始固定字符 + OledShowString(3,3, "adcVol: V",16); + OledShowString(3,23,"batVol: V",16); + OledShowString(3,43,"charge:",16); + OledRefresh(); + + for(;;) + { + //获取电压采集值 + ret = IoTAdcRead(WIFI_IOT_ADC_CHANNEL_4,&adVal,WIFI_IOT_ADC_EQU_MODEL_8,WIFI_IOT_ADC_CUR_BAIS_DEFAULT,256); + if(ret != HI_ERR_SUCCESS) + { + printf("Failed to read adc! Err code = %d\r\n", ret); + continue; + } + + //将AD值转换成电压值 + voltage = IOTAdcConvertToVoltage(adVal); + + //根据采集的电压值,推算出VBat目前的供电电压 + vBat = (voltage * 1510) / 510; + + printf("state = %u, adVal = %u, adVol = %.02f, batVol = %.02f \r\n", chargeState,adVal,voltage,vBat); + + //当供电电压大于保护电压阈值时,断开充电 + if(vBat >= BATTERYCHARGEMAX) + { + BatteryChargeStop(); + chargeState = 0; + } + + //当供电电压小于低电压报警阈值时,提示报警并做一些其它紧急的事情 + else if(vBat <= BATTERYCHARGEMIN) + { + printf("the voltage is too low!!!\r\n"); + BatteryChargeStart(); + chargeState = 1; + //do something + } + + //正常充电范围内进行充电处理 + else + { + BatteryChargeStart(); + chargeState = 1; + } + + //Oled显示adc采集电压 + sprintf((char*)pbuf,"%0.2f",voltage); + OledShowString(60,3,(char*)pbuf,16); + + //Oled显示电池电压 + sprintf((char*)pbuf,"%0.2f",vBat); + OledShowString(60,23,(char*)pbuf,16); + + //Oled显示充电状态 + if(chargeState == 1) + { + OledShowString(60,43,(char*)"ON ",16); + } + else + { + OledShowString(60,43,(char*)"OFF",16); + } + OledRefresh(); + + usleep(1000*1000); + } +} + +static void BatteryExampleEntry(void) +{ + osThreadAttr_t attr; + + attr.name = "Battey_Task"; + attr.attr_bits = 0U; + attr.cb_mem = NULL; + attr.cb_size = 0U; + attr.stack_mem = NULL; + attr.stack_size = TASK_STACK_SIZE; + attr.priority = TASK_PRIO; + + if (osThreadNew((osThreadFunc_t)BatteryTask, NULL, &attr) == NULL) + { + printf("Falied to create Battery Task!\n"); + } +} +APP_FEATURE_INIT(BatteryExampleEntry); + diff --git a/applications/app/TW210_Module_battery/battery_oled.c b/applications/app/TW210_Module_battery/battery_oled.c new file mode 100644 index 00000000..ce99807c --- /dev/null +++ b/applications/app/TW210_Module_battery/battery_oled.c @@ -0,0 +1,321 @@ +/* + * Copyright (c) 2021 Talkweb Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include "stdio.h" +#include "ohos_init.h" +#include "cmsis_os2.h" + +#include "hi_i2c.h" +#include "hi_io.h" +#include "hi_errno.h" +#include "iot_gpio.h" +#include "iot_i2c.h" +#include "iot_adc.h" +#include "battery_oledfont.h" + +#define OLED_CMD 0 //写命令 +#define OLED_DATA 1 //写数据 + +osThreadId_t g_oledTaskID = NULL; +unsigned char OLED_GRAM[144][8]; +unsigned char g_send_data[2] = { 0 }; + +/** + * @brief IIC写入1个字节 + * @param id: 对应的I2C组 + * @param device_addr: Oled的设备地址,这里默认是0X78 + * @param send_len: 写入的数据长度 + */ +unsigned int IICWrite(hi_i2c_idx id, unsigned short device_addr, unsigned int send_len) +{ + int status = 0; + hi_i2c_data es8311_i2c_data = { 0 }; + + es8311_i2c_data.send_buf = g_send_data; + es8311_i2c_data.send_len = send_len; + status = hi_i2c_write(id, device_addr, &es8311_i2c_data); + if (status != HI_ERR_SUCCESS) { + printf("===== Error: I2C write status = %d! =====\r\n", status); + return status; + } + return HI_ERR_SUCCESS; +} + +/** + * @brief IIC写1字节命令 + * @param IIC_Command: 写入的命令值 + */ +void IICWriteCommand(unsigned char IIC_Command) +{ + g_send_data[0] = 0x00; + g_send_data[1] = IIC_Command; + + IICWrite(HI_I2C_IDX_0, 0x78, 2); +} + +/** + * @brief IIC写1字节数据 + * @param IIC_Command: 写入的数据值 + */ +void IICWriteData(unsigned char IIC_Data) +{ + g_send_data[0] = 0x40; + g_send_data[1] = IIC_Data; + + IICWrite(HI_I2C_IDX_0, 0x78, 2); +} + +/** + * @brief IIC写Oled函数,包括写命令和写数据 + * @param val: 写入的数值 + * @param type: 写入的类型:数据/命令 + */ +void OledSendByte(unsigned char val, unsigned char type) +{ + if(type == OLED_DATA) + { + IICWriteData(val); + } + else + { + IICWriteCommand(val); + } +} + +/** + * @brief 设置写入Oled的起始地址 + * @param x: 设置竖起始地址 + * @param y: 设置行起始地址 + */ +void OledSendBP(unsigned char x,unsigned char y) +{ + OledSendByte(0xb0 + y,OLED_CMD);//设置行起始地址 + OledSendByte(((x & 0xf0) >> 4) | 0x10,OLED_CMD); + OledSendByte((x & 0x0f),OLED_CMD); +} + +/** + * @brief 开启Oled显示 + */ +void OledShowON(void) +{ + OledSendByte(0x8D,OLED_CMD);//电荷泵使能 + OledSendByte(0x14,OLED_CMD);//开启电荷泵 + OledSendByte(0xAF,OLED_CMD);//点亮屏幕 +} + +/** + * @brief 关闭Oled显示 + */ +void OledShowOFF(void) +{ + OledSendByte(0x8D,OLED_CMD);//电荷泵使能 + OledSendByte(0x10,OLED_CMD);//关闭电荷泵 + OledSendByte(0xAF,OLED_CMD);//关闭屏幕 +} + +/** + * @brief 更新Oled显示的屏 + */ +void OledRefresh(void) +{ + unsigned char i = 0, n = 0; + for(i = 0; i < 8; i++) + { + OledSendByte(0xb0+i,OLED_CMD); //设置行起始地址 + OledSendByte(0x00,OLED_CMD); //设置低列起始地址 + OledSendByte(0x10,OLED_CMD); //设置高列起始地址 + for(n = 0; n < 128; n++) + { + OledSendByte(OLED_GRAM[n][i],OLED_DATA); + } + } +} + +/** + * @brief 清除Oled屏幕 + */ +void OledClear(void) +{ + unsigned char i,n; + for(i=0;i<8;i++) + { + for(n=0;n<128;n++) + { + OLED_GRAM[n][i]=0;//清除所有数据 + } + } + OledRefresh();//更新显示 +} + +/** + * @brief Oled画点函数 + * @param x: 画点的竖地址,0~127 + * @param y: 画点的行地址,0~63 + */ +void OledDrawPoint(unsigned char x,unsigned char y) +{ + unsigned char i = 0, m = 0, n = 0; + i = y / 8; + m = y % 8; + n = 1 << m; + OLED_GRAM[x][i] |= n; +} + +/** + * @brief Oled清除一个点 + * @param x: 点的竖地址,0~127 + * @param y: 点的行地址,0~63 + */ +void OledClearPoint(unsigned char x,unsigned char y) +{ + unsigned char i = 0, m = 0, n = 0; + i = y / 8; + m = y % 8; + n = 1 << m; + OLED_GRAM[x][i] = ~OLED_GRAM[x][i]; + OLED_GRAM[x][i] |= n; + OLED_GRAM[x][i] = ~OLED_GRAM[x][i]; +} + +/** + * @brief 在指定位置显示一个字符,包括部分字符(取模方式 逐列式) + * @param x: 字符的竖地址,0~127 + * @param y: 字符的行地址,0~63 + * @param chr: 显示的字符值 + * @param size1: 字符显示字体:12/16/24 + */ +void OledShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char size1) +{ + unsigned char i = 0, m = 0; + unsigned char temp = 0, size2 = 0, chr1 = 0; + unsigned char y0 = y; + size2 = (size1 / 8 + ((size1 % 8)? 1: 0)) * (size1 / 2); //得到字体一个字符对应点阵集所占的字节数 + chr1 = chr - ' '; //计算偏移后的值 + for(i = 0; i < size2; i++) + { + if(size1 == 12)//调用1206字体 + { + temp = asc2_1206[chr1][i]; + } + else if(size1 == 16)//调用1608字体 + { + temp = asc2_1608[chr1][i]; + } + else + { + return; + } + + for(m = 0; m < 8; m++)//写入数据 + { + if(temp & 0x80) + { + OledDrawPoint(x,y); + } + else + { + OledClearPoint(x,y); + } + temp <<= 1; + y++; + if((y - y0) == size1) + { + y = y0; + x++; + break; + } + } + } +} + +/** + * @brief 在指定位置显示字符串 + * @param x: 字符的竖地址,0~127 + * @param y: 字符的行地址,0~63 + * @param chr: 显示的字符串 + * @param size1: 字符显示字体:12/16/24 + */ +void OledShowString(unsigned char x,unsigned char y,char *chr,unsigned char size1) +{ + while((*chr >= ' ') && (*chr <= '~'))//判断是不是非法字符! + { + OledShowChar(x,y,*chr,size1); + x += size1 / 2; + if(x > 128 - size1) //换行 + { + x = 0; + y += 2; + } + chr++; + } +} + +/** + * @brief Oled初始化函数 + */ +void OledInit(void) +{ + OledSendByte(0xAE,OLED_CMD);//--turn off oled panel # + OledSendByte(0x00,OLED_CMD);//---set low column address # + OledSendByte(0x10,OLED_CMD);//---set high column address # + OledSendByte(0x40,OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F) # + OledSendByte(0x81,OLED_CMD);//--set contrast control register # + OledSendByte(0xCF,OLED_CMD);// Set SEG Output Current Brightness # + OledSendByte(0xA1,OLED_CMD);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常 # + OledSendByte(0xC8,OLED_CMD);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常 # + OledSendByte(0xA6,OLED_CMD);//--set normal display + OledSendByte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64) # + OledSendByte(0x3f,OLED_CMD);//--1/64 duty # + OledSendByte(0xD3,OLED_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F) # + OledSendByte(0x00,OLED_CMD);//-not offset # + OledSendByte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency # + OledSendByte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec # + OledSendByte(0xD9,OLED_CMD);//--set pre-charge period # + OledSendByte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock # + OledSendByte(0xDA,OLED_CMD);//--set com pins hardware configuration # + OledSendByte(0x12,OLED_CMD); // # + OledSendByte(0xDB,OLED_CMD);//--set vcomh # + OledSendByte(0x40,OLED_CMD);//Set VCOM Deselect Level # + OledSendByte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02) # + OledSendByte(0x02,OLED_CMD);// + OledSendByte(0x8D,OLED_CMD);//--set Charge Pump enable/disable # + OledSendByte(0x14,OLED_CMD);//--set(0x10) disable # + OledSendByte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5) # + OledSendByte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) # + OledSendByte(0xAF,OLED_CMD);// # + OledClear(); +} + +/** + * @brief IIC配置及Oled初始化函数 + */ +void OledIICInit(void) +{ + //初始化I2C0 配置,速率为400K + IoTGpioInit(IOT_GPIO_IO_GPIO_13); + IoTGpioInit(IOT_GPIO_IO_GPIO_14); + + IotIoSetPull(IOT_GPIO_IO_GPIO_13, IOT_IO_PULL_UP); + IotIoSetPull(IOT_GPIO_IO_GPIO_14, IOT_IO_PULL_UP); + + IotIoSetFunc(IOT_GPIO_IO_GPIO_13,HI_IO_FUNC_GPIO_13_I2C0_SDA); + IotIoSetFunc(IOT_GPIO_IO_GPIO_14,HI_IO_FUNC_GPIO_14_I2C0_SCL); + + hi_i2c_init(HI_I2C_IDX_0, 400*1000); + + OledInit(); +} + diff --git a/applications/app/TW210_Module_battery/battery_oledfont.h b/applications/app/TW210_Module_battery/battery_oledfont.h new file mode 100644 index 00000000..aa0afc0c --- /dev/null +++ b/applications/app/TW210_Module_battery/battery_oledfont.h @@ -0,0 +1,217 @@ +/* + * Copyright (c) 2021 Talkweb Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __OLEDFONT_H +#define __OLEDFONT_H + +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 +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*/ +}; + +#endif + + -- Gitee From 048c891e1b5eaa952b6da47e205bb4c656ca8afa Mon Sep 17 00:00:00 2001 From: szy <372255923@qq.com> Date: Mon, 11 Oct 2021 16:01:49 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=BF=BD=E5=8A=A0BUILD.gn=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- applications/app/BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/app/BUILD.gn b/applications/app/BUILD.gn index bb9a1834..f06af705 100644 --- a/applications/app/BUILD.gn +++ b/applications/app/BUILD.gn @@ -33,6 +33,7 @@ lite_component("app") { # "TW204_Module_enviroment:module_enviroment_example", # "TW205_Module_motor:module_motor_example", # "TW207_Module_gyro:module_gyro_example", + # "TW210_Module_battery:module_battery_example", # "TW301_Network_wifista:network_wifista_example", # "TW302_Network_wifiap:network_wifiap_example", # "TW303_Network_mqttclient:network_mqttclient_example", -- Gitee From c42fdf8a7c83eb5149798bcb3c09fb443048ba63 Mon Sep 17 00:00:00 2001 From: szy <372255923@qq.com> Date: Mon, 11 Oct 2021 16:28:55 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=B5=E6=B1=A0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=A8=A1=E7=BB=84=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E8=A7=A3=E5=86=B3gitee=E8=A7=84=E8=8C=83=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TW210_Module_battery/battery_example.c | 4 +- .../app/TW210_Module_battery/battery_oled.c | 103 +++++++++--------- 2 files changed, 56 insertions(+), 51 deletions(-) diff --git a/applications/app/TW210_Module_battery/battery_example.c b/applications/app/TW210_Module_battery/battery_example.c index 971bbf2a..f7f16dc2 100644 --- a/applications/app/TW210_Module_battery/battery_example.c +++ b/applications/app/TW210_Module_battery/battery_example.c @@ -63,11 +63,11 @@ static void BatteryTask(void) //AD检测引脚初始化为浮夸模式 IoTGpioInit(IOT_GPIO_IO_GPIO_9); IotIoSetPull(IOT_GPIO_IO_GPIO_9, IOT_IO_PULL_NONE); - + //OLED初始化 OledIICInit(); - //Oled显示初始固定字符 + //Oled显示初始固定字符 OledShowString(3,3, "adcVol: V",16); OledShowString(3,23,"batVol: V",16); OledShowString(3,43,"charge:",16); diff --git a/applications/app/TW210_Module_battery/battery_oled.c b/applications/app/TW210_Module_battery/battery_oled.c index ce99807c..9519b1f0 100644 --- a/applications/app/TW210_Module_battery/battery_oled.c +++ b/applications/app/TW210_Module_battery/battery_oled.c @@ -40,17 +40,18 @@ unsigned char g_send_data[2] = { 0 }; */ unsigned int IICWrite(hi_i2c_idx id, unsigned short device_addr, unsigned int send_len) { - int status = 0; - hi_i2c_data es8311_i2c_data = { 0 }; + int status = 0; + hi_i2c_data es8311_i2c_data = { 0 }; - es8311_i2c_data.send_buf = g_send_data; - es8311_i2c_data.send_len = send_len; - status = hi_i2c_write(id, device_addr, &es8311_i2c_data); - if (status != HI_ERR_SUCCESS) { - printf("===== Error: I2C write status = %d! =====\r\n", status); - return status; - } - return HI_ERR_SUCCESS; + es8311_i2c_data.send_buf = g_send_data; + es8311_i2c_data.send_len = send_len; + status = hi_i2c_write(id, device_addr, &es8311_i2c_data); + if (status != HI_ERR_SUCCESS) + { + printf("===== Error: I2C write status = %d! =====\r\n", status); + return status; + } + return HI_ERR_SUCCESS; } /** @@ -59,10 +60,10 @@ unsigned int IICWrite(hi_i2c_idx id, unsigned short device_addr, unsigned int se */ void IICWriteCommand(unsigned char IIC_Command) { - g_send_data[0] = 0x00; - g_send_data[1] = IIC_Command; + g_send_data[0] = 0x00; + g_send_data[1] = IIC_Command; - IICWrite(HI_I2C_IDX_0, 0x78, 2); + IICWrite(HI_I2C_IDX_0, 0x78, 2); } /** @@ -71,10 +72,10 @@ void IICWriteCommand(unsigned char IIC_Command) */ void IICWriteData(unsigned char IIC_Data) { - g_send_data[0] = 0x40; - g_send_data[1] = IIC_Data; + g_send_data[0] = 0x40; + g_send_data[1] = IIC_Data; - IICWrite(HI_I2C_IDX_0, 0x78, 2); + IICWrite(HI_I2C_IDX_0, 0x78, 2); } /** @@ -86,11 +87,11 @@ void OledSendByte(unsigned char val, unsigned char type) { if(type == OLED_DATA) { - IICWriteData(val); - } + IICWriteData(val); + } else { - IICWriteCommand(val); + IICWriteCommand(val); } } @@ -132,6 +133,7 @@ void OledShowOFF(void) void OledRefresh(void) { unsigned char i = 0, n = 0; + for(i = 0; i < 8; i++) { OledSendByte(0xb0+i,OLED_CMD); //设置行起始地址 @@ -141,7 +143,7 @@ void OledRefresh(void) { OledSendByte(OLED_GRAM[n][i],OLED_DATA); } - } + } } /** @@ -149,15 +151,15 @@ void OledRefresh(void) */ void OledClear(void) { - unsigned char i,n; - for(i=0;i<8;i++) + unsigned char i = 0,n = 0; + for(i = 0; i < 8; i++) { - for(n=0;n<128;n++) + for(n = 0; n < 128; n++) { - OLED_GRAM[n][i]=0;//清除所有数据 + OLED_GRAM[n][i] = 0;//清除所有数据 } - } - OledRefresh();//更新显示 + } + OledRefresh();//更新显示 } /** @@ -168,6 +170,7 @@ void OledClear(void) void OledDrawPoint(unsigned char x,unsigned char y) { unsigned char i = 0, m = 0, n = 0; + i = y / 8; m = y % 8; n = 1 << m; @@ -182,6 +185,7 @@ void OledDrawPoint(unsigned char x,unsigned char y) void OledClearPoint(unsigned char x,unsigned char y) { unsigned char i = 0, m = 0, n = 0; + i = y / 8; m = y % 8; n = 1 << m; @@ -204,14 +208,15 @@ void OledShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned cha unsigned char y0 = y; size2 = (size1 / 8 + ((size1 % 8)? 1: 0)) * (size1 / 2); //得到字体一个字符对应点阵集所占的字节数 chr1 = chr - ' '; //计算偏移后的值 + for(i = 0; i < size2; i++) { if(size1 == 12)//调用1206字体 - { + { temp = asc2_1206[chr1][i]; } else if(size1 == 16)//调用1608字体 - { + { temp = asc2_1608[chr1][i]; } else @@ -219,26 +224,26 @@ void OledShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned cha return; } - for(m = 0; m < 8; m++)//写入数据 - { - if(temp & 0x80) + for(m = 0; m < 8; m++)//写入数据 + { + if(temp & 0x80) { OledDrawPoint(x,y); } - else + else { OledClearPoint(x,y); } - temp <<= 1; - y++; - if((y - y0) == size1) - { - y = y0; - x++; - break; - } + temp <<= 1; + y++; + if((y - y0) == size1) + { + y = y0; + x++; + break; + } } - } + } } /** @@ -258,9 +263,9 @@ void OledShowString(unsigned char x,unsigned char y,char *chr,unsigned char size { x = 0; y += 2; - } + } chr++; - } + } } /** @@ -268,7 +273,7 @@ void OledShowString(unsigned char x,unsigned char y,char *chr,unsigned char size */ void OledInit(void) { - OledSendByte(0xAE,OLED_CMD);//--turn off oled panel # + OledSendByte(0xAE,OLED_CMD);//--turn off oled panel # OledSendByte(0x00,OLED_CMD);//---set low column address # OledSendByte(0x10,OLED_CMD);//---set high column address # OledSendByte(0x40,OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F) # @@ -304,18 +309,18 @@ void OledInit(void) */ void OledIICInit(void) { - //初始化I2C0 配置,速率为400K + //初始化I2C0 配置,速率为400K IoTGpioInit(IOT_GPIO_IO_GPIO_13); IoTGpioInit(IOT_GPIO_IO_GPIO_14); - IotIoSetPull(IOT_GPIO_IO_GPIO_13, IOT_IO_PULL_UP); - IotIoSetPull(IOT_GPIO_IO_GPIO_14, IOT_IO_PULL_UP); + IotIoSetPull(IOT_GPIO_IO_GPIO_13, IOT_IO_PULL_UP); + IotIoSetPull(IOT_GPIO_IO_GPIO_14, IOT_IO_PULL_UP); IotIoSetFunc(IOT_GPIO_IO_GPIO_13,HI_IO_FUNC_GPIO_13_I2C0_SDA); IotIoSetFunc(IOT_GPIO_IO_GPIO_14,HI_IO_FUNC_GPIO_14_I2C0_SCL); - hi_i2c_init(HI_I2C_IDX_0, 400*1000); + hi_i2c_init(HI_I2C_IDX_0, 400*1000); - OledInit(); + OledInit(); } -- Gitee From 20d3929419b5caa7d4f28a972a281fa5306a298a Mon Sep 17 00:00:00 2001 From: szy <372255923@qq.com> Date: Mon, 11 Oct 2021 17:03:47 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TW210_Module_battery/battery_example.c | 43 +- .../app/TW210_Module_battery/battery_oled.c | 193 +++++---- .../TW210_Module_battery/battery_oledfont.h | 392 +++++++++--------- 3 files changed, 312 insertions(+), 316 deletions(-) diff --git a/applications/app/TW210_Module_battery/battery_example.c b/applications/app/TW210_Module_battery/battery_example.c index f7f16dc2..b6f01872 100644 --- a/applications/app/TW210_Module_battery/battery_example.c +++ b/applications/app/TW210_Module_battery/battery_example.c @@ -23,7 +23,7 @@ #include "iot_gpio.h" #include "iot_adc.h" -#define TASK_STACK_SIZE 1024 +#define TASK_STACK_SIZE 1024 #define TASK_PRIO 25 #define BATTERYCHARGEMAX 4.2 //电池充电过压阈值 @@ -43,7 +43,7 @@ static void BatteryChargeStart(void) //停止电池充电 static void BatteryChargeStop(void) { - IoTGpioSetOutputVal(IOT_GPIO_IO_GPIO_6, IOT_GPIO_VALUE1); + IoTGpioSetOutputVal(IOT_GPIO_IO_GPIO_6, IOT_GPIO_VALUE1); } static void BatteryTask(void) @@ -68,20 +68,20 @@ static void BatteryTask(void) OledIICInit(); //Oled显示初始固定字符 - OledShowString(3,3, "adcVol: V",16); - OledShowString(3,23,"batVol: V",16); - OledShowString(3,43,"charge:",16); + OledShowString(3, 3, "adcVol: V", 16); + OledShowString(3, 23, "batVol: V", 16); + OledShowString(3, 43, "charge:", 16); OledRefresh(); - for(;;) + for (;;) { //获取电压采集值 - ret = IoTAdcRead(WIFI_IOT_ADC_CHANNEL_4,&adVal,WIFI_IOT_ADC_EQU_MODEL_8,WIFI_IOT_ADC_CUR_BAIS_DEFAULT,256); - if(ret != HI_ERR_SUCCESS) + ret = IoTAdcRead(WIFI_IOT_ADC_CHANNEL_4, &adVal, WIFI_IOT_ADC_EQU_MODEL_8, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 256); + if (ret != HI_ERR_SUCCESS) { printf("Failed to read adc! Err code = %d\r\n", ret); continue; - } + } //将AD值转换成电压值 voltage = IOTAdcConvertToVoltage(adVal); @@ -89,17 +89,17 @@ static void BatteryTask(void) //根据采集的电压值,推算出VBat目前的供电电压 vBat = (voltage * 1510) / 510; - printf("state = %u, adVal = %u, adVol = %.02f, batVol = %.02f \r\n", chargeState,adVal,voltage,vBat); + printf("state = %u, adVal = %u, adVol = %.02f, batVol = %.02f \r\n", chargeState, adVal, voltage, vBat); //当供电电压大于保护电压阈值时,断开充电 - if(vBat >= BATTERYCHARGEMAX) + if (vBat >= BATTERYCHARGEMAX) { BatteryChargeStop(); chargeState = 0; } //当供电电压小于低电压报警阈值时,提示报警并做一些其它紧急的事情 - else if(vBat <= BATTERYCHARGEMIN) + else if (vBat <= BATTERYCHARGEMIN) { printf("the voltage is too low!!!\r\n"); BatteryChargeStart(); @@ -115,25 +115,25 @@ static void BatteryTask(void) } //Oled显示adc采集电压 - sprintf((char*)pbuf,"%0.2f",voltage); - OledShowString(60,3,(char*)pbuf,16); + sprintf((char *)pbuf, "%0.2f", voltage); + OledShowString(60, 3, (char *)pbuf, 16); //Oled显示电池电压 - sprintf((char*)pbuf,"%0.2f",vBat); - OledShowString(60,23,(char*)pbuf,16); + sprintf((char *)pbuf, "%0.2f", vBat); + OledShowString(60, 23, (char *)pbuf, 16); - //Oled显示充电状态 - if(chargeState == 1) + //Oled显示充电状态 + if (chargeState == 1) { - OledShowString(60,43,(char*)"ON ",16); + OledShowString(60, 43, (char *)"ON ", 16); } else { - OledShowString(60,43,(char*)"OFF",16); + OledShowString(60, 43, (char *)"OFF", 16); } OledRefresh(); - usleep(1000*1000); + usleep(1000 * 1000); } } @@ -155,4 +155,3 @@ static void BatteryExampleEntry(void) } } APP_FEATURE_INIT(BatteryExampleEntry); - diff --git a/applications/app/TW210_Module_battery/battery_oled.c b/applications/app/TW210_Module_battery/battery_oled.c index 9519b1f0..a865fffb 100644 --- a/applications/app/TW210_Module_battery/battery_oled.c +++ b/applications/app/TW210_Module_battery/battery_oled.c @@ -25,28 +25,28 @@ #include "iot_adc.h" #include "battery_oledfont.h" -#define OLED_CMD 0 //写命令 -#define OLED_DATA 1 //写数据 +#define OLED_CMD 0 //写命令 +#define OLED_DATA 1 //写数据 osThreadId_t g_oledTaskID = NULL; unsigned char OLED_GRAM[144][8]; -unsigned char g_send_data[2] = { 0 }; +unsigned char g_send_data[2] = {0}; /** * @brief IIC写入1个字节 * @param id: 对应的I2C组 * @param device_addr: Oled的设备地址,这里默认是0X78 * @param send_len: 写入的数据长度 - */ + */ unsigned int IICWrite(hi_i2c_idx id, unsigned short device_addr, unsigned int send_len) { int status = 0; - hi_i2c_data es8311_i2c_data = { 0 }; + hi_i2c_data es8311_i2c_data = {0}; es8311_i2c_data.send_buf = g_send_data; es8311_i2c_data.send_len = send_len; status = hi_i2c_write(id, device_addr, &es8311_i2c_data); - if (status != HI_ERR_SUCCESS) + if (status != HI_ERR_SUCCESS) { printf("===== Error: I2C write status = %d! =====\r\n", status); return status; @@ -57,7 +57,7 @@ unsigned int IICWrite(hi_i2c_idx id, unsigned short device_addr, unsigned int se /** * @brief IIC写1字节命令 * @param IIC_Command: 写入的命令值 - */ + */ void IICWriteCommand(unsigned char IIC_Command) { g_send_data[0] = 0x00; @@ -69,7 +69,7 @@ void IICWriteCommand(unsigned char IIC_Command) /** * @brief IIC写1字节数据 * @param IIC_Command: 写入的数据值 - */ + */ void IICWriteData(unsigned char IIC_Data) { g_send_data[0] = 0x40; @@ -82,16 +82,16 @@ void IICWriteData(unsigned char IIC_Data) * @brief IIC写Oled函数,包括写命令和写数据 * @param val: 写入的数值 * @param type: 写入的类型:数据/命令 - */ + */ void OledSendByte(unsigned char val, unsigned char type) { - if(type == OLED_DATA) + if (type == OLED_DATA) { IICWriteData(val); } - else + else { - IICWriteCommand(val); + IICWriteCommand(val); } } @@ -99,75 +99,75 @@ void OledSendByte(unsigned char val, unsigned char type) * @brief 设置写入Oled的起始地址 * @param x: 设置竖起始地址 * @param y: 设置行起始地址 - */ -void OledSendBP(unsigned char x,unsigned char y) + */ +void OledSendBP(unsigned char x, unsigned char y) { - OledSendByte(0xb0 + y,OLED_CMD);//设置行起始地址 - OledSendByte(((x & 0xf0) >> 4) | 0x10,OLED_CMD); - OledSendByte((x & 0x0f),OLED_CMD); + OledSendByte(0xb0 + y, OLED_CMD); //设置行起始地址 + OledSendByte(((x & 0xf0) >> 4) | 0x10, OLED_CMD); + OledSendByte((x & 0x0f), OLED_CMD); } /** * @brief 开启Oled显示 - */ + */ void OledShowON(void) { - OledSendByte(0x8D,OLED_CMD);//电荷泵使能 - OledSendByte(0x14,OLED_CMD);//开启电荷泵 - OledSendByte(0xAF,OLED_CMD);//点亮屏幕 + OledSendByte(0x8D, OLED_CMD); //电荷泵使能 + OledSendByte(0x14, OLED_CMD); //开启电荷泵 + OledSendByte(0xAF, OLED_CMD); //点亮屏幕 } /** * @brief 关闭Oled显示 - */ + */ void OledShowOFF(void) { - OledSendByte(0x8D,OLED_CMD);//电荷泵使能 - OledSendByte(0x10,OLED_CMD);//关闭电荷泵 - OledSendByte(0xAF,OLED_CMD);//关闭屏幕 + OledSendByte(0x8D, OLED_CMD); //电荷泵使能 + OledSendByte(0x10, OLED_CMD); //关闭电荷泵 + OledSendByte(0xAF, OLED_CMD); //关闭屏幕 } /** * @brief 更新Oled显示的屏 - */ + */ void OledRefresh(void) { unsigned char i = 0, n = 0; - for(i = 0; i < 8; i++) + for (i = 0; i < 8; i++) { - OledSendByte(0xb0+i,OLED_CMD); //设置行起始地址 - OledSendByte(0x00,OLED_CMD); //设置低列起始地址 - OledSendByte(0x10,OLED_CMD); //设置高列起始地址 - for(n = 0; n < 128; n++) + OledSendByte(0xb0 + i, OLED_CMD); //设置行起始地址 + OledSendByte(0x00, OLED_CMD); //设置低列起始地址 + OledSendByte(0x10, OLED_CMD); //设置高列起始地址 + for (n = 0; n < 128; n++) { - OledSendByte(OLED_GRAM[n][i],OLED_DATA); + OledSendByte(OLED_GRAM[n][i], OLED_DATA); } } } /** * @brief 清除Oled屏幕 - */ + */ void OledClear(void) { - unsigned char i = 0,n = 0; - for(i = 0; i < 8; i++) + unsigned char i = 0, n = 0; + for (i = 0; i < 8; i++) { - for(n = 0; n < 128; n++) + for (n = 0; n < 128; n++) { - OLED_GRAM[n][i] = 0;//清除所有数据 + OLED_GRAM[n][i] = 0; //清除所有数据 } } - OledRefresh();//更新显示 + OledRefresh(); //更新显示 } /** * @brief Oled画点函数 * @param x: 画点的竖地址,0~127 * @param y: 画点的行地址,0~63 - */ -void OledDrawPoint(unsigned char x,unsigned char y) + */ +void OledDrawPoint(unsigned char x, unsigned char y) { unsigned char i = 0, m = 0, n = 0; @@ -181,8 +181,8 @@ void OledDrawPoint(unsigned char x,unsigned char y) * @brief Oled清除一个点 * @param x: 点的竖地址,0~127 * @param y: 点的行地址,0~63 - */ -void OledClearPoint(unsigned char x,unsigned char y) + */ +void OledClearPoint(unsigned char x, unsigned char y) { unsigned char i = 0, m = 0, n = 0; @@ -200,43 +200,43 @@ void OledClearPoint(unsigned char x,unsigned char y) * @param y: 字符的行地址,0~63 * @param chr: 显示的字符值 * @param size1: 字符显示字体:12/16/24 - */ -void OledShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned char size1) + */ +void OledShowChar(unsigned char x, unsigned char y, unsigned char chr, unsigned char size1) { unsigned char i = 0, m = 0; unsigned char temp = 0, size2 = 0, chr1 = 0; unsigned char y0 = y; - size2 = (size1 / 8 + ((size1 % 8)? 1: 0)) * (size1 / 2); //得到字体一个字符对应点阵集所占的字节数 - chr1 = chr - ' '; //计算偏移后的值 - - for(i = 0; i < size2; i++) + size2 = (size1 / 8 + ((size1 % 8) ? 1 : 0)) * (size1 / 2); //得到字体一个字符对应点阵集所占的字节数 + chr1 = chr - ' '; //计算偏移后的值 + + for (i = 0; i < size2; i++) { - if(size1 == 12)//调用1206字体 + if (size1 == 12) //调用1206字体 { temp = asc2_1206[chr1][i]; - } - else if(size1 == 16)//调用1608字体 + } + else if (size1 == 16) //调用1608字体 { temp = asc2_1608[chr1][i]; - } + } else { return; } - for(m = 0; m < 8; m++)//写入数据 + for (m = 0; m < 8; m++) //写入数据 { - if(temp & 0x80) + if (temp & 0x80) { - OledDrawPoint(x,y); + OledDrawPoint(x, y); } - else + else { - OledClearPoint(x,y); + OledClearPoint(x, y); } temp <<= 1; y++; - if((y - y0) == size1) + if ((y - y0) == size1) { y = y0; x++; @@ -252,14 +252,14 @@ void OledShowChar(unsigned char x,unsigned char y,unsigned char chr,unsigned cha * @param y: 字符的行地址,0~63 * @param chr: 显示的字符串 * @param size1: 字符显示字体:12/16/24 - */ -void OledShowString(unsigned char x,unsigned char y,char *chr,unsigned char size1) + */ +void OledShowString(unsigned char x, unsigned char y, char *chr, unsigned char size1) { - while((*chr >= ' ') && (*chr <= '~'))//判断是不是非法字符! + while ((*chr >= ' ') && (*chr <= '~')) //判断是不是非法字符! { - OledShowChar(x,y,*chr,size1); + OledShowChar(x, y, *chr, size1); x += size1 / 2; - if(x > 128 - size1) //换行 + if (x > 128 - size1) //换行 { x = 0; y += 2; @@ -270,43 +270,43 @@ void OledShowString(unsigned char x,unsigned char y,char *chr,unsigned char size /** * @brief Oled初始化函数 - */ + */ void OledInit(void) { - OledSendByte(0xAE,OLED_CMD);//--turn off oled panel # - OledSendByte(0x00,OLED_CMD);//---set low column address # - OledSendByte(0x10,OLED_CMD);//---set high column address # - OledSendByte(0x40,OLED_CMD);//--set start line address Set Mapping RAM Display Start Line (0x00~0x3F) # - OledSendByte(0x81,OLED_CMD);//--set contrast control register # - OledSendByte(0xCF,OLED_CMD);// Set SEG Output Current Brightness # - OledSendByte(0xA1,OLED_CMD);//--Set SEG/Column Mapping 0xa0左右反置 0xa1正常 # - OledSendByte(0xC8,OLED_CMD);//Set COM/Row Scan Direction 0xc0上下反置 0xc8正常 # - OledSendByte(0xA6,OLED_CMD);//--set normal display - OledSendByte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64) # - OledSendByte(0x3f,OLED_CMD);//--1/64 duty # - OledSendByte(0xD3,OLED_CMD);//-set display offset Shift Mapping RAM Counter (0x00~0x3F) # - OledSendByte(0x00,OLED_CMD);//-not offset # - OledSendByte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency # - OledSendByte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec # - OledSendByte(0xD9,OLED_CMD);//--set pre-charge period # - OledSendByte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock # - OledSendByte(0xDA,OLED_CMD);//--set com pins hardware configuration # - OledSendByte(0x12,OLED_CMD); // # - OledSendByte(0xDB,OLED_CMD);//--set vcomh # - OledSendByte(0x40,OLED_CMD);//Set VCOM Deselect Level # - OledSendByte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02) # - OledSendByte(0x02,OLED_CMD);// - OledSendByte(0x8D,OLED_CMD);//--set Charge Pump enable/disable # - OledSendByte(0x14,OLED_CMD);//--set(0x10) disable # - OledSendByte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5) # - OledSendByte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7) # - OledSendByte(0xAF,OLED_CMD);// # + OledSendByte(0xAE, OLED_CMD); //--turn off oled panel # + OledSendByte(0x00, OLED_CMD); //---set low column address # + OledSendByte(0x10, OLED_CMD); //---set high column address # + OledSendByte(0x40, OLED_CMD); //--set start line address Set Mapping RAM Display Start Line (0x00~0x3F) # + OledSendByte(0x81, OLED_CMD); //--set contrast control register # + OledSendByte(0xCF, OLED_CMD); // Set SEG Output Current Brightness # + OledSendByte(0xA1, OLED_CMD); //--Set SEG/Column Mapping 0xa0左右反置 0xa1正常 # + OledSendByte(0xC8, OLED_CMD); //Set COM/Row Scan Direction 0xc0上下反置 0xc8正常 # + OledSendByte(0xA6, OLED_CMD); //--set normal display + OledSendByte(0xA8, OLED_CMD); //--set multiplex ratio(1 to 64) # + OledSendByte(0x3f, OLED_CMD); //--1/64 duty # + OledSendByte(0xD3, OLED_CMD); //-set display offset Shift Mapping RAM Counter (0x00~0x3F) # + OledSendByte(0x00, OLED_CMD); //-not offset # + OledSendByte(0xd5, OLED_CMD); //--set display clock divide ratio/oscillator frequency # + OledSendByte(0x80, OLED_CMD); //--set divide ratio, Set Clock as 100 Frames/Sec # + OledSendByte(0xD9, OLED_CMD); //--set pre-charge period # + OledSendByte(0xF1, OLED_CMD); //Set Pre-Charge as 15 Clocks & Discharge as 1 Clock # + OledSendByte(0xDA, OLED_CMD); //--set com pins hardware configuration # + OledSendByte(0x12, OLED_CMD); // # + OledSendByte(0xDB, OLED_CMD); //--set vcomh # + OledSendByte(0x40, OLED_CMD); //Set VCOM Deselect Level # + OledSendByte(0x20, OLED_CMD); //-Set Page Addressing Mode (0x00/0x01/0x02) # + OledSendByte(0x02, OLED_CMD); // + OledSendByte(0x8D, OLED_CMD); //--set Charge Pump enable/disable # + OledSendByte(0x14, OLED_CMD); //--set(0x10) disable # + OledSendByte(0xA4, OLED_CMD); // Disable Entire Display On (0xa4/0xa5) # + OledSendByte(0xA6, OLED_CMD); // Disable Inverse Display On (0xa6/a7) # + OledSendByte(0xAF, OLED_CMD); // # OledClear(); } /** * @brief IIC配置及Oled初始化函数 - */ + */ void OledIICInit(void) { //初始化I2C0 配置,速率为400K @@ -316,11 +316,10 @@ void OledIICInit(void) IotIoSetPull(IOT_GPIO_IO_GPIO_13, IOT_IO_PULL_UP); IotIoSetPull(IOT_GPIO_IO_GPIO_14, IOT_IO_PULL_UP); - IotIoSetFunc(IOT_GPIO_IO_GPIO_13,HI_IO_FUNC_GPIO_13_I2C0_SDA); - IotIoSetFunc(IOT_GPIO_IO_GPIO_14,HI_IO_FUNC_GPIO_14_I2C0_SCL); + IotIoSetFunc(IOT_GPIO_IO_GPIO_13, HI_IO_FUNC_GPIO_13_I2C0_SDA); + IotIoSetFunc(IOT_GPIO_IO_GPIO_14, HI_IO_FUNC_GPIO_14_I2C0_SCL); - hi_i2c_init(HI_I2C_IDX_0, 400*1000); + hi_i2c_init(HI_I2C_IDX_0, 400 * 1000); OledInit(); } - diff --git a/applications/app/TW210_Module_battery/battery_oledfont.h b/applications/app/TW210_Module_battery/battery_oledfont.h index aa0afc0c..88d1f442 100644 --- a/applications/app/TW210_Module_battery/battery_oledfont.h +++ b/applications/app/TW210_Module_battery/battery_oledfont.h @@ -13,205 +13,203 @@ * limitations under the License. */ #ifndef __OLEDFONT_H -#define __OLEDFONT_H +#define __OLEDFONT_H -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*/ -}; +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 -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*/ +//16*16 +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*/ }; #endif - - -- Gitee