打印
[研电赛技术支持]

GD32F303RC驱动OLED

[复制链接]
234|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
修改其中的I2C引脚,不同的OLED修改OLED_Init()函数中的参数即可,

使用的是硬件I2C,使用STM32库只需要修改其中API接口为对应的库函数即可。

OLED.c

#include "gd32f30x.h"
#include "OLED_Font.h"
#include "OLED.h"

#include "string.h"
#include "Tim5_Public_Api.h"

#define I2C_TIME_OUT (uint16_t)(5000)

#define OLED_SCLK_Clr() gpio_bit_reset(IIC_SCL_GPIO_PORT, IIC_SCL_PIN)
#define OLED_SCLK_Set() gpio_bit_set(IIC_SCL_GPIO_PORT, IIC_SCL_PIN)

#define OLED_SDIN_Clr() gpio_bit_reset(IIC_SDA_GPIO_PORT, IIC_SDA_PIN)
#define OLED_SDIN_Set() gpio_bit_set(IIC_SDA_GPIO_PORT, IIC_SDA_PIN)

#define Max_Column 128
uint8_t OLED_GRAM[128][8];

/**********************************************
//IIC Start
**********************************************/
void IIC_Start()
{
        uint16_t timeout = 0;
        /* i2c master sends start signal only when the bus is idle */
        while (i2c_flag_get(I2C0, I2C_FLAG_I2CBSY) && (timeout < I2C_TIME_OUT))
        {
                timeout++;
        }

        if (timeout < I2C_TIME_OUT)
        {
                i2c_start_on_bus(I2C0);
                timeout = 0;
        }
        else
        {
                timeout = 0;
        }
}

/**********************************************
//IIC Stop
**********************************************/
void IIC_Stop()
{
        i2c_stop_on_bus(I2C0);
}

void IIC_Wait_Ack()
{
        uint16_t timeout = 0;
        /* wait until BTC bit is set */
        while ((!i2c_flag_get(I2C0, I2C_FLAG_BTC)) && (timeout < I2C_TIME_OUT))
        {
                timeout++;
        }
        if (timeout < I2C_TIME_OUT)
                timeout = 0;
        else
        {
                timeout = 0;
        }
}

void IIC_Wait_ADDRAck()
{
        uint16_t timeout = 0;
        /* wait until BTC bit is set */
        while ((!i2c_flag_get(I2C0, I2C_FLAG_ADDSEND)) && (timeout < I2C_TIME_OUT))
        {
                timeout++;
        }
        if (timeout < I2C_TIME_OUT)
        {
                i2c_flag_clear(I2C0, I2C_FLAG_ADDSEND);
                timeout = 0;
        }
        else
        {
                timeout = 0;
        }
}
/**********************************************
// IIC Write byte
**********************************************/

void Write_IIC_Byte(unsigned char IIC_Byte)
{
        i2c_data_transmit(I2C0, IIC_Byte);
}

void Write_IIC_Addr(unsigned char IIC_Byte)
{
        uint16_t timeout = 0;
        while ((!i2c_flag_get(I2C0, I2C_FLAG_SBSEND)) && (timeout < I2C_TIME_OUT))
        {
                timeout++;
        }
        if (timeout < I2C_TIME_OUT)
        {
                timeout = 0;
                i2c_master_addressing(I2C0, IIC_Byte, I2C_TRANSMITTER);
        }
        else
        {
                timeout = 0;
        }
}
/**********************************************
// IIC Write Command
**********************************************/
void Write_IIC_Command(unsigned char IIC_Command)
{
        IIC_Start();
        Write_IIC_Addr(0x78); // Slave address,SA0=0
        IIC_Wait_ADDRAck();
        Write_IIC_Byte(0x00); // write command
        IIC_Wait_Ack();
        Write_IIC_Byte(IIC_Command);
        IIC_Wait_Ack();
        IIC_Stop();
}
/**********************************************
// IIC Write Data
**********************************************/
void Write_IIC_Data(unsigned char IIC_Data)
{
        IIC_Start();
        Write_IIC_Addr(0x78); // D/C#=0; R/W#=0
        IIC_Wait_ADDRAck();
        Write_IIC_Byte(0x40); // write data
        IIC_Wait_Ack();
        Write_IIC_Byte(IIC_Data);
        IIC_Wait_Ack();
        IIC_Stop();
}

#define OLED_CMD 0        // 写命令
#define OLED_DATA 1 // 写数据
#define OLED_MODE 0
void OLED_WR_Byte(unsigned dat, unsigned cmd)
{
        if (cmd)
        {
                Write_IIC_Data(dat);
        }
        else
        {
                Write_IIC_Command(dat);
        }
}
void OLED_Set_Pos(unsigned char x, unsigned char y)
{
        OLED_WR_Byte(0xb0 + y, OLED_CMD);
        OLED_WR_Byte(((x & 0xf0) >> 4) | 0x10, OLED_CMD);
        OLED_WR_Byte((x & 0x0f), OLED_CMD);
}
// 开启OLED显示
void OLED_Display_On(void)
{
        OLED_WR_Byte(0X8D, OLED_CMD); // SET DCDC命令
        OLED_WR_Byte(0X14, OLED_CMD); // DCDC ON
        OLED_WR_Byte(0XAF, OLED_CMD); // DISPLAY ON
}
// 关闭OLED显示
void OLED_Display_Off(void)
{
        OLED_WR_Byte(0X8D, OLED_CMD); // SET DCDC命令
        OLED_WR_Byte(0X10, OLED_CMD); // DCDC OFF
        OLED_WR_Byte(0XAE, OLED_CMD); // DISPLAY OFF
}
// 清屏函数,清完屏,整个屏幕是黑色的!和没点亮一样!!!
void OLED_Clear(void)
{
        uint8_t i, n;
        for (i = 0; i < 8; i++)
        {
                OLED_WR_Byte(0xb0 + i, OLED_CMD); // 设置页地址(0~7)
                OLED_WR_Byte(0x00, OLED_CMD);          // 设置显示位置—列低地址
                OLED_WR_Byte(0x10, OLED_CMD);          // 设置显示位置—列高地址
                for (n = 0; n < 128; n++)
                        OLED_WR_Byte(0, OLED_DATA);
        } // 更新显示
}
void OLED_On(void)
{
        uint8_t i, n;
        for (i = 0; i < 8; i++)
        {
                OLED_WR_Byte(0xb0 + i, OLED_CMD); // 设置页地址(0~7)
                OLED_WR_Byte(0x00, OLED_CMD);          // 设置显示位置—列低地址
                OLED_WR_Byte(0x10, OLED_CMD);          // 设置显示位置—列高地址
                for (n = 0; n < 128; n++)
                        OLED_WR_Byte(1, OLED_DATA);
        } // 更新显示
}
// 在指定位置显示一个字符,包括部分字符
// x:0~127
// y:0~63
// mode:0,反白显示;1,正常显示
// size:选择字体 16/12
void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t Char_Size)
{
        unsigned char c = 0, i = 0;
        c = chr - ' '; // 得到偏移后的值
        if (x > Max_Column - 1)
        {
                x = 0;
                y = y + 2;
        }
        if (Char_Size == 16)
        {
                OLED_Set_Pos(x, y);
                for (i = 0; i < 8; i++)
                        OLED_WR_Byte(F8X16[c * 16 + i], OLED_DATA);
                OLED_Set_Pos(x, y + 1);
                for (i = 0; i < 8; i++)
                        OLED_WR_Byte(F8X16[c * 16 + i + 8], OLED_DATA);
        }
        else
        {
                OLED_Set_Pos(x, y);
                for (i = 0; i < 6; i++)
                        OLED_WR_Byte(F6x8[c], OLED_DATA);
        }
}
// m^n函数
uint32_t oled_pow(uint8_t m, uint8_t n)
{
        uint32_t result = 1;
        while (n--)
                result *= m;
        return result;
}
// 显示2个数字
// x,y :起点坐标
// len :数字的位数
// size:字体大小
// mode:模式    0,填充模式;1,叠加模式
// num:数值(0~4294967295);
void OLED_ShowNum(uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size2)
{
        uint8_t t, temp;
        uint8_t enshow = 0;
        for (t = 0; t < len; t++)
        {
                temp = (num / oled_pow(10, len - t - 1)) % 10;
                if (enshow == 0 && t < (len - 1))
                {
                        if (temp == 0)
                        {
                                OLED_ShowChar(x + (size2 / 2) * t, y, ' ', size2);
                                continue;
                        }
                        else
                                enshow = 1;
                }
                OLED_ShowChar(x + (size2 / 2) * t, y, temp + '0', size2);
        }
}
// 显示一个字符号串
void OLED_ShowString(uint8_t x, uint8_t y, uint8_t *chr, uint8_t Char_Size)
{
        unsigned char j = 0;
        while (chr[j] != '\0')
        {
                OLED_ShowChar(x, y, chr[j], Char_Size);
                x += 8;
                if (x > 120)
                {
                        x = 0;
                        y += 2;
                }
                j++;
        }
}
void OLED_Show(uint8_t y, uint8_t *chr, uint8_t lenth)
{
        unsigned char j = 0;
        uint8_t x = 0;
        char u8temp[16];

        memset(u8temp, 0x20, sizeof(u8temp));
        memcpy(u8temp, chr, lenth);

        while (u8temp[j] != '\0')
        {
                OLED_ShowChar(x, y, u8temp[j], 16);
                x += 8;
                if (x > 120)
                {
                        x = 0;
                        y += 2;
                }
                j++;
                if(j >= lenth)
                {
                        break;
                }
        }
}
void OLED_Show_x(uint8_t y, uint8_t *chr, uint8_t lenth)
{
        unsigned char j = 0;
        uint8_t x = 108;
        while (chr[j] != '\0')
        {

                OLED_ShowChar(x, y, chr[j], 16);
                x += 8;
                if (x > 120)
                {
                        x = 0;
                        y += 2;
                }
                j++;
                if(j >= lenth)
                {
                        break;
                }
        }
}
void OLED_centerShow(uint8_t y, uint8_t *chr, uint8_t lenth)
{
        uint8_t x = 0;
        uint8_t i;
        uint8_t u8didx = 0;
        uint8_t u8targetNum = 0;
        char u8temp[16];

        memset(u8temp, 0x20, sizeof(u8temp));
        memcpy(u8temp, chr, lenth);

        for (i = 0; i < 16; i++)
        {
                if (u8temp == END)
                        break;
        }
        u8targetNum = i;
        u8didx = (16 - u8targetNum) / 2; // 空格
        for (i = 0; i < u8didx; i++)
        {
                OLED_ShowChar(x, y, ' ', 16);
                x += 8;
        }

        for (i = 0; i < u8targetNum; i++)
        {
                OLED_ShowChar(x, y, u8temp, 16);
                x += 8;
        }

        for (i = 0; i < (16 - u8targetNum - u8didx); i++)
        {
                OLED_ShowChar(x, y, ' ', 16);
                x += 8;
        }
}

// 画点  x,y为坐标 t:1填充  t:0清空
void OLED_DrawPoint(uint8_t x, uint8_t y, uint8_t t)
{
        uint8_t pos, bx, temp = 0;
        uint8_t x1 = x;
        if (x1 > 127 || y > 63)
                return;

        pos = y / 8;
        bx = y % 8;
        temp = 1 << (bx);

        if (t)
                OLED_GRAM[x1][pos] |= temp;
        else
                OLED_GRAM[x1][pos] &= ~temp;
}

图片显示  x坐标:0~127,y坐标:0~7,width和heigh为图片的尺寸大小 pic为图片取模的数据  直接调用此函数
void oled_show_picture(uint8_t x, uint8_t y, uint8_t width, uint8_t height, const uint8_t *pic)
{
        uint8_t temp, j, mode = 1;
        uint8_t y0 = y * 8;
        uint8_t x0 = x, y1 = y0, x1 = x0 + width, y2 = y0 + height;
        uint8_t *g_pic = NULL;
        uint16_t i, n, m, psize = 0;
        //                uint16_t i, n;
        // 获取图片的总字节数
        psize = (height / 8 + ((height % 8) ? 1 : 0)) * width;

        if ((x0 + width > 128) || (y1 + height > 64))
                return;

        g_pic = (uint8_t *)pic;
        for (i = 0; i < psize; i++)
        {
                temp = g_pic;
                for (j = 0; j < 8; j++)
                {
                        if (temp & 0x80)
                        {
                                OLED_DrawPoint(x0, y1, mode); // 画点
                        }
                        else
                        {
                                OLED_DrawPoint(x0, y1, !mode);
                        }
                        temp <<= 1;
                        y1++;
                        if ((y1 - y0) == height) // 数据处理完毕
                        {
                                y1 = y0;
                                x0++;
                                break;
                        }
                }
        }
        for (m = y; m < (y2 / 8); m++)
        {
                OLED_Set_Pos(x, m);
                for (n = x; n < x1; n++)
                        OLED_WR_Byte(OLED_GRAM[n][m], OLED_DATA);
        }
}

显示汉字
// void OLED_ShowCHinese(uint8_t x, uint8_t y, uint8_t no)
//{
//        uint8_t t, adder = 0;
//        OLED_Set_Pos(x, y);
//        for (t = 0; t < 16; t++)
//        {
//                OLED_WR_Byte(Hzk[2 * no][t], OLED_DATA);
//                adder += 1;
//        }
//        OLED_Set_Pos(x, y + 1);
//        for (t = 0; t < 16; t++)
//        {
//                OLED_WR_Byte(Hzk[2 * no + 1][t], OLED_DATA);
//                adder += 1;
//        }
// }
//  初始化SSD1306
void OLED_Init(void)
{
        delay_ms(200);

        OLED_WR_Byte(0xAE, OLED_CMD); //--display off
        OLED_WR_Byte(0x00, OLED_CMD); //---set low column address
        OLED_WR_Byte(0x10, OLED_CMD); //---set high column address
        OLED_WR_Byte(0x40, OLED_CMD); //--set start line address
        OLED_WR_Byte(0xB0, OLED_CMD); //--set page address
        OLED_WR_Byte(0x81, OLED_CMD); // contract control
        OLED_WR_Byte(0xFF, OLED_CMD); //--128
        OLED_WR_Byte(0xA1, OLED_CMD); // set segment remap
        OLED_WR_Byte(0xA6, OLED_CMD); //--normal / reverse
        OLED_WR_Byte(0xA8, OLED_CMD); //--set multiplex ratio(1 to 64)
        OLED_WR_Byte(0x3F, OLED_CMD); //--1/32 duty
        OLED_WR_Byte(0xC8, OLED_CMD); // Com scan direction
        OLED_WR_Byte(0xD3, OLED_CMD); //-set display offset
        OLED_WR_Byte(0x00, OLED_CMD); //

        OLED_WR_Byte(0xD5, OLED_CMD); // set osc division
        OLED_WR_Byte(0x80, OLED_CMD); //

        OLED_WR_Byte(0xD8, OLED_CMD); // set area color mode off
        OLED_WR_Byte(0x05, OLED_CMD); //

        OLED_WR_Byte(0xD9, OLED_CMD); // Set Pre-Charge Period
        OLED_WR_Byte(0xF1, OLED_CMD); //

        OLED_WR_Byte(0xDA, OLED_CMD); // set com pin configuartion
        OLED_WR_Byte(0x12, OLED_CMD); //

        OLED_WR_Byte(0xDB, OLED_CMD); // set Vcomh
        OLED_WR_Byte(0x30, OLED_CMD); //

        OLED_WR_Byte(0x8D, OLED_CMD); // set charge pump enable
        OLED_WR_Byte(0x14, OLED_CMD); //

        OLED_WR_Byte(0xAF, OLED_CMD); //--turn on oled panel
}

// 初始化SSD1306
uint8_t OLED_Init_180(void) // 180度旋转显示
{
        IIC_Init();
        delay_ms(150);

        OLED_WR_Byte(0xAE, OLED_CMD); //--display off
        OLED_WR_Byte(0x00, OLED_CMD); //---set low column address
        OLED_WR_Byte(0x10, OLED_CMD); //---set high column address
        OLED_WR_Byte(0x40, OLED_CMD); //--set start line address
        OLED_WR_Byte(0xB0, OLED_CMD); //--set page address
        OLED_WR_Byte(0x81, OLED_CMD); // contract control
        OLED_WR_Byte(0xFF, OLED_CMD); //--128
        OLED_WR_Byte(0xA0, OLED_CMD); // set segment remap
        OLED_WR_Byte(0xA6, OLED_CMD); //--normal / reverse
        OLED_WR_Byte(0xA8, OLED_CMD); //--set multiplex ratio(1 to 64)
        OLED_WR_Byte(0x3F, OLED_CMD); //--1/32 duty
        OLED_WR_Byte(0xC0, OLED_CMD); // Com scan direction
        OLED_WR_Byte(0xD3, OLED_CMD); //-set display offset
        OLED_WR_Byte(0x00, OLED_CMD); //

        OLED_WR_Byte(0xD5, OLED_CMD); // set osc division
        OLED_WR_Byte(0x80, OLED_CMD); //

        OLED_WR_Byte(0xD8, OLED_CMD); // set area color mode off
        OLED_WR_Byte(0x05, OLED_CMD); //

        OLED_WR_Byte(0xD9, OLED_CMD); // Set Pre-Charge Period
        OLED_WR_Byte(0xF1, OLED_CMD); //

        OLED_WR_Byte(0xDA, OLED_CMD); // set com pin configuartion
        OLED_WR_Byte(0x12, OLED_CMD); //

        OLED_WR_Byte(0xDB, OLED_CMD); // set Vcomh
        OLED_WR_Byte(0x30, OLED_CMD); //

        OLED_WR_Byte(0x8D, OLED_CMD); // set charge pump enable
        OLED_WR_Byte(0x14, OLED_CMD); //

        OLED_WR_Byte(0xAF, OLED_CMD); //--turn on oled panel
        return 1;
}

OLED.h

#ifndef __OLED_H
#define __OLED_H

#include "stdint.h"
#include "Myiic.h"


void OLED_Init(void);
void OLED_Clear(void);
void OLED_ShowChar(uint8_t x, uint8_t y, uint8_t chr, uint8_t Char_Size);
void OLED_ShowString(uint8_t x, uint8_t y, uint8_t *chr, uint8_t Char_Size);
void OLED_ShowNum(uint8_t x, uint8_t y, uint32_t num, uint8_t len, uint8_t size2);
void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length);
void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);
void OLED_ShowCHinese(uint8_t x, uint8_t y, uint8_t no);
void LanguagetoEng(void);
void OLED_Show(uint8_t y, uint8_t *chr, uint8_t lenth);
void OLED_Show_x(uint8_t y, uint8_t *chr, uint8_t lenth);
void OLED_centerShow(uint8_t y, uint8_t *chr,uint8_t lenth);
uint8_t OLED_Init_180(void);
#endif

Myiic.c

#include "Myiic.h"
#include <stdio.h>

#include "gd32f30x.h"
/*!
    \brief      configure the GPIO ports
    \param[in]  none
    \param[out] none
    \retval     none
*/
void gpio_config(void)
{
    /* enable GPIOB clock */
    //rcu_periph_clock_enable(RCU_GPIOB);
       
               
               
}

/*!
    \brief      configure the I2C0 interfaces
    \param[in]  none
    \param[out] none
    \retval     none
*/
void i2c0_config(void)
{
                gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_6 | GPIO_PIN_7);
    /* enable I2C clock */
    //rcu_periph_clock_enable(RCU_I2C0);
    /* configure I2C clock */
    i2c_clock_config(I2C0, I2C0_SPEED, I2C_DTCY_2);
    /* configure I2C address */
    i2c_mode_addr_config(I2C0, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, I2CX_SLAVE_ADDRESS7);
    /* enable I2C0 */
    i2c_enable(I2C0);
    /* enable acknowledge */
    i2c_ack_config(I2C0, I2C_ACK_ENABLE);
}

/*!
    \brief      configure the I2C0 interfaces
    \param[in]  none
    \param[out] none
    \retval     none
*/
void i2c1_config(void)
{
                gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_10 | GPIO_PIN_11);
    /* enable I2C clock */
    //rcu_periph_clock_enable(RCU_I2C1);
    /* configure I2C clock */
    i2c_clock_config(I2C1, I2C1_SPEED, I2C_DTCY_2);
    /* configure I2C address */
    i2c_mode_addr_config(I2C1, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, I2CX_SLAVE_ADDRESS7);
    /* enable I2C0 */
    i2c_enable(I2C1);
    /* enable acknowledge */
    i2c_ack_config(I2C1, I2C_ACK_ENABLE);
}

/*!
    \brief      reset I2C bus
    \param[in]  none
    \param[out] none
    \retval     none
*/
void i2c_bus_reset(void)
{
    i2c_deinit(I2C1);
    /* configure SDA/SCL for GPIO */
    GPIO_BC(GPIOB) |= GPIO_PIN_10;
    GPIO_BC(GPIOB) |= GPIO_PIN_11;
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10 | GPIO_PIN_11);
    __NOP();
    __NOP();
    __NOP();
    __NOP();
    __NOP();
    GPIO_BOP(GPIOB) |= GPIO_PIN_10;
    __NOP();
    __NOP();
    __NOP();
    __NOP();
    __NOP();
    GPIO_BOP(GPIOB) |= GPIO_PIN_11;
    /* connect I2C_SCL_GPIO_PIN to I2C_SCL */
    /* connect I2C_SDA_GPIO_PIN to I2C_SDA */
    gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_10 | GPIO_PIN_11);
    /* configure the I2C0 interface */
    i2c1_config();
}


void IIC_Init(void)
{
//    gpio_config();
    i2c0_config();
}

Myiic.h

#ifndef __MYIIC_H
#define __MYIIC_H


#define I2CX_SLAVE_ADDRESS7     0xA2
#define I2C1_SPEED               100000
#define I2C0_SPEED               800000
#define I2C_PAGE_SIZE           32

/* configure the GPIO ports */
void gpio_config(void);
/* configure the I2C0 interfaces */
void i2c0_config(void);
void i2c1_config(void);
void i2c_bus_reset(void);
void IIC_Init(void);

#endif  /* I2C_H */









字体库OLED_Font.h

#ifndef __OLED_FONT_H
#define __OLED_FONT_H

#ifndef __OLEDFONT_H
#define __OLEDFONT_H

#define END '\0'
#define NULL ' '

// 常用ASCII表
// 偏移量32
// ASCII字符集
// 偏移量32
// 大小:12*6
/************************************6*8的点阵************************************/
unsigned char const F6x8[][6] =
        {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp
                0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, // !
                0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // "
                0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // #
                0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
                0x00, 0x62, 0x64, 0x08, 0x13, 0x23, // %
                0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // &
                0x00, 0x00, 0x05, 0x03, 0x00, 0x00, // '
                0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, // (
                0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, // )
                0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, // *
                0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
                0x00, 0x00, 0x00, 0xA0, 0x60, 0x00, // ,
                0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // -
                0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // .
                0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // /
                0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
                0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
                0x00, 0x42, 0x61, 0x51, 0x49, 0x46, // 2
                0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, // 3
                0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
                0x00, 0x27, 0x45, 0x45, 0x45, 0x39, // 5
                0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
                0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // 7
                0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
                0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // 9
                0x00, 0x00, 0x36, 0x36, 0x00, 0x00, // :
                0x00, 0x00, 0x56, 0x36, 0x00, 0x00, // ;
                0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // <
                0x00, 0x14, 0x14, 0x14, 0x14, 0x14, // =
                0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // >
                0x00, 0x02, 0x01, 0x51, 0x09, 0x06, // ?
                0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
                0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, // A
                0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
                0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
                0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C, // D
                0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // E
                0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // F
                0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // G
                0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
                0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // I
                0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J
                0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
                0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
                0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
                0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, // N
                0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
                0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // P
                0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
                0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, // R
                0x00, 0x46, 0x49, 0x49, 0x49, 0x31, // S
                0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
                0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
                0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // V
                0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, // W
                0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // X
                0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Y
                0x00, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
                0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // [
                0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
                0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // ]
                0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
                0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // _
                0x00, 0x00, 0x01, 0x02, 0x04, 0x00, // '
                0x00, 0x20, 0x54, 0x54, 0x54, 0x78, // a
                0x00, 0x7F, 0x48, 0x44, 0x44, 0x38, // b
                0x00, 0x38, 0x44, 0x44, 0x44, 0x20, // c
                0x00, 0x38, 0x44, 0x44, 0x48, 0x7F, // d
                0x00, 0x38, 0x54, 0x54, 0x54, 0x18, // e
                0x00, 0x08, 0x7E, 0x09, 0x01, 0x02, // f
                0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
                0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, // h
                0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, // i
                0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, // j
                0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, // k
                0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, // l
                0x00, 0x7C, 0x04, 0x18, 0x04, 0x78, // m
                0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, // n
                0x00, 0x38, 0x44, 0x44, 0x44, 0x38, // o
                0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, // p
                0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, // q
                0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, // r
                0x00, 0x48, 0x54, 0x54, 0x54, 0x20, // s
                0x00, 0x04, 0x3F, 0x44, 0x40, 0x20, // t
                0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u
                0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
                0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w
                0x00, 0x44, 0x28, 0x10, 0x28, 0x44, // x
                0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
                0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, // z
                0x14, 0x14, 0x14, 0x14, 0x14, 0x14, // horiz lines
};
/****************************************8*16的点阵************************************/
const unsigned char F8X16[] =
        {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0
                0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, //! 1
                0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //" 2
                0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00, 0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, // # 3
                0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00, 0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, //$ 4
                0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, //% 5
                0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, //& 6
                0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //' 7
                0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, //( 8
                0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, //) 9
                0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00, 0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, //* 10
                0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, //+ 11
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, //, 12
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //- 13
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, //. 14
                0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04, 0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, /// 15
                0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, // 0 16
                0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // 1 17
                0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, // 2 18
                0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, 0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // 3 19
                0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, // 4 20
                0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, // 5 21
                0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // 6 22
                0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, // 7 23
                0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, // 8 24
                0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, // 9 25
                0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, //: 26
                0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, //; 27
                0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, //< 28
                0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, //= 29
                0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, //> 30
                0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, //? 31
                0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00, 0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, //@ 32
                0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, // A 33
                0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // B 34
                0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, 0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // C 35
                0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // D 36
                0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, // E 37
                0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, // F 38
                0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, // G 39
                0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, // H 40
                0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // I 41
                0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, // J 42
                0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00, 0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, // K 43
                0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, // L 44
                0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, // M 45
                0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, // N 46
                0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // O 47
                0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, // P 48
                0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, // Q 49
                0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, // R 50
                0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, // S 51
                0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // T 52
                0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // U 53
                0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, // V 54
                0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00, 0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, // W 55
                0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08, 0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, // X 56
                0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // Y 57
                0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, // Z 58
                0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, //[ 59
                0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, //\ 60
                0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, //] 61
                0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //^ 62
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //_ 63
                0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //` 64
                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, // a 65
                0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // b 66
                0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, // c 67
                0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, // d 68
                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, // e 69
                0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // f 70
                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, // g 71
                0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // h 72
                0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // i 73
                0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, // j 74
                0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, // k 75
                0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // l 76
                0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, // m 77
                0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // n 78
                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // o 79
                0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, // p 80
                0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, // q 81
                0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, // r 82
                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, // s 83
                0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, // t 84
                0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, // u 85
                0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, // v 86
                0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, // w 87
                0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, // x 88
                0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, // y 89
                0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, // z 90
                0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, //{ 91
                0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, //| 92
                0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, //} 93
                0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //~ 94
};
// 汉字,列行式,逆向
unsigned char Hzk[][32] = {
        // 兆(0) 易(1) 科(2) 技(3)

        {0x00, 0x04, 0x08, 0x30, 0x80, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x40, 0x90, 0x08, 0x04, 0x00, 0x00},
        {0x00, 0x84, 0x42, 0x21, 0x18, 0x07, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, 0x41, 0x42, 0x78, 0x00}, /*"兆",0*/
        {0x00, 0x00, 0x00, 0x00, 0x7F, 0xC9, 0x49, 0x49, 0x49, 0x49, 0x49, 0x7F, 0x00, 0x00, 0x00, 0x00},
        {0x00, 0x08, 0x04, 0x42, 0x23, 0x12, 0x8E, 0x42, 0x32, 0x0E, 0x42, 0x82, 0x42, 0x3E, 0x00, 0x00}, /*"易",1*/
        {0x24, 0x24, 0xA4, 0xFE, 0xA3, 0x22, 0x00, 0x22, 0xCC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00},
        {0x08, 0x06, 0x01, 0xFF, 0x00, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04, 0xFF, 0x02, 0x02, 0x02, 0x00}, /*"科",2*/
        {0x10, 0x10, 0x10, 0xFF, 0x10, 0x90, 0x08, 0x88, 0x88, 0x88, 0xFF, 0x88, 0x88, 0x88, 0x08, 0x00},
        {0x04, 0x44, 0x82, 0x7F, 0x01, 0x80, 0x80, 0x40, 0x43, 0x2C, 0x10, 0x28, 0x46, 0x81, 0x80, 0x00}, /*"技",3*/

};

#endif

/*OLED字模库,宽8像素,高16像素*/
const uint8_t OLED_F8x16[][16] =
        {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //  0

                0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, //! 1

                0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //" 2

                0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00,
                0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, // # 3

                0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00,
                0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, //$ 4

                0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00,
                0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, //% 5

                0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00,
                0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, //& 6

                0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //' 7

                0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00,
                0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, //( 8

                0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00,
                0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, //) 9

                0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00,
                0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, //* 10

                0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00,
                0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, //+ 11

                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, //, 12

                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //- 13

                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, //. 14

                0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04,
                0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, /// 15

                0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00,
                0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, // 0 16

                0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // 1 17

                0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00,
                0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, // 2 18

                0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00,
                0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // 3 19

                0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00,
                0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, // 4 20

                0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00,
                0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, // 5 21

                0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00,
                0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // 6 22

                0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00,
                0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, // 7 23

                0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00,
                0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, // 8 24

                0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00,
                0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, // 9 25

                0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, //: 26

                0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, //; 27

                0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00,
                0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, //< 28

                0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
                0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, //= 29

                0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
                0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, //> 30

                0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00,
                0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, //? 31

                0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00,
                0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, //@ 32

                0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00,
                0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, // A 33

                0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00,
                0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // B 34

                0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00,
                0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // C 35

                0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
                0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // D 36

                0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00,
                0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, // E 37

                0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00,
                0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, // F 38

                0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00,
                0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, // G 39

                0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08,
                0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, // H 40

                0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00,
                0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // I 41

                0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00,
                0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, // J 42

                0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00,
                0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, // K 43

                0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, // L 44

                0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00,
                0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, // M 45

                0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08,
                0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, // N 46

                0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
                0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // O 47

                0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00,
                0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, // P 48

                0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00,
                0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, // Q 49

                0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00,
                0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, // R 50

                0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00,
                0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, // S 51

                0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00,
                0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // T 52

                0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08,
                0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // U 53

                0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08,
                0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, // V 54

                0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00,
                0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, // W 55

                0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08,
                0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, // X 56

                0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00,
                0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // Y 57

                0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00,
                0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, // Z 58

                0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00,
                0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, //[ 59

                0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, //\ 60

                0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00,
                0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, //] 61

                0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //^ 62

                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //_ 63

                0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //` 64

                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
                0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, // a 65

                0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
                0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // b 66

                0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
                0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, // c 67

                0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00,
                0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, // d 68

                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
                0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, // e 69

                0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18,
                0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // f 70

                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
                0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, // g 71

                0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
                0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // h 72

                0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // i 73

                0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00,
                0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, // j 74

                0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00,
                0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, // k 75

                0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // l 76

                0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
                0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, // m 77

                0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00,
                0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // n 78

                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
                0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // o 79

                0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00,
                0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, // p 80

                0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00,
                0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, // q 81

                0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
                0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, // r 82

                0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
                0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, // s 83

                0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, // t 84

                0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00,
                0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, // u 85

                0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
                0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, // v 86

                0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80,
                0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, // w 87

                0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00,
                0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, // x 88

                0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80,
                0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, // y 89

                0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00,
                0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, // z 90

                0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, //{ 91

                0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, //| 92

                0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00,
                0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, //} 93

                0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //~ 94
};

#endif

只需要调用OLED.c当中的函数OLED_Show显示字符数组,调用函数oled_show_pciture显示图片,具体调用哪个函数视情况而定
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_72587039/article/details/144747010

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

20

帖子

0

粉丝