0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨e2studio----IIC,OLED时钟日历

RA生态工作室 2021-12-02 17:56 次阅读
pYYBAGGA3i6Af0z4AABdWrtWoBM374.png


1.概述

本篇文章主要介绍如何使用e2studio对瑞萨进行IIC配置,同时移植stm32上的12864oled到瑞萨上,并通过OLED显示RTC时钟日历。

2.硬件准备

首先需要准备一个开发板,这里我准备的是芯片型号 R7FA2L1AB2DFL 的开发板。

pYYBAGGLLTuAKokoAAL5D_IbQXA990.png


3.新建工程

e1ac6628-51d0-11ec-a27f-dac502259ad0.png


4.工程模板

e20dc2d8-51d0-11ec-a27f-dac502259ad0.png

5.保存工程路径

e26193fe-51d0-11ec-a27f-dac502259ad0.png


6.芯片配置

本文中使用R7FA2L1AB2DFL来进行演示。

e2abdedc-51d0-11ec-a27f-dac502259ad0.png

7.工程模板选择

e2e3f240-51d0-11ec-a27f-dac502259ad0.png


8.IIC配置

点击Stacks->New Stack->Driver->Connectivity->I2C Master Driver on r_iic_master。

e331315e-51d0-11ec-a27f-dac502259ad0.png

9.IIC属性配置

设置IIC的配置,需要注意从机的地址,在stm32等程序中写的是0x78,但是这里的地址位数是7位,故需要右移一位,变成0x3c。

e38f1864-51d0-11ec-a27f-dac502259ad0.png


10.RTC配置

点击Stacks->New Stack->Driver->Timers -> RTC Driver on r_rtc。

e3d74576-51d0-11ec-a27f-dac502259ad0.png


11.RTC属性配置

e42b70b0-51d0-11ec-a27f-dac502259ad0.png


12.设置E2STUDIO堆栈

e470e6e0-51d0-11ec-a27f-dac502259ad0.png


13.R_IIC_MASTER_Open()函数原型

e4d04ab8-51d0-11ec-a27f-dac502259ad0.png

R_IIC_MASTER_Open()函数为执行IIC初始化,开启配置如下所示。


 /* Initialize the IIC module */    
 err =R_IIC_MASTER_Open(&g_i2c_master0_ctrl, &g_i2c_master0_cfg);     
 assert(FSP_SUCCESS == err);


14.R_IIC_MASTER_Write()函数原型

e50a02a8-51d0-11ec-a27f-dac502259ad0.png

R_IIC_MASTER_Write()函数是向IIC设备中写入数据,写入格式如下所示。

 err = R_IIC_MASTER_Write(&g_i2c_device_ctrl_1, &g_i2c_tx_buffer[0], I2C_BUFFER_SIZE_BYTES, false);
 assert(FSP_SUCCESS == err);


15.R_RTC_Open()函数原型

e550e9e8-51d0-11ec-a27f-dac502259ad0.png

故可以用R_RTC_Open()函数进行初始化和开启RTC。


err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);    
assert(FSP_SUCCESS == err);


16.R_RTC_CalendarTimeSet()函数原型

e5c8d7e6-51d0-11ec-a27f-dac502259ad0.png

故可以用R_RTC_CalendarTimeSet()函数进行设置当前日历时间。


/* R_RTC_CalendarTimeSet must be called at least once to start the RTC */    
R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);


17.R_RTC_PeriodicIrqRateSet()函数原型

e60bc998-51d0-11ec-a27f-dac502259ad0.png

故可以用R_RTC_PeriodicIrqRateSet()函数进行设置周期中断。


/* Set the periodic interrupt rate to 1 second */    
R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);


18.R_RTC_CalendarTimeGet ()函数原型

e66f3424-51d0-11ec-a27f-dac502259ad0.png

故可以用R_RTC_CalendarTimeGet ()函数进行获取RTC计数时间。

R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time);//获取RTC计数时间

19.设定时间

开启RTC之后需要设定当前的时间,可以通过 R_RTC_CalendarTimeSet( &g_rtc0_ctrl , &set_time ) 设定时间,具体时间可以通过set_time进行修改,设置如下所示。


/* rtc_time_t is an alias for the C Standard time.h struct 'tm' */
rtc_time_t set_time =
{
    .tm_sec  = 0,      /* 秒,范围从 0 到 59 */
    .tm_min  = 30,      /* 分,范围从 0 到 59 */
    .tm_hour = 12,      /* 小时,范围从 0 到 23*/
    .tm_mday = 20,       /* 一月中的第几天,范围从 1 到 31*/
    .tm_mon  = 11,      /* 月份,范围从 0 到 11*/
    .tm_year = 121,     /* 自 1900 起的年数,2021为121*/
//    .tm_wday = 5,       /* 一周中的第几天,范围从 0 到 6*/
//    .tm_yday=0,         /* 一年中的第几天,范围从 0 到 365*/
//    .tm_isdst=0;        /* 夏令时*/
};


20.设定周期性中断

若要用RTC进行固定延时中断,可以用 R_RTC_PeriodicIrqRateSet ( rtc_ctrl_t *const p_ctrl , rtc_periodic_irq_select_t const rate ) 来进行设置,例如设置1s,设置如下:

R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND );

每当周期性中断产生时,可以触发回调函数的事件RTC_EVENT_PERIODIC_IRQ。

21.STM32移植瑞萨说明

在STM32的12864OLED中,最开始需要对OLED进行初始化,代码如下。


void WriteCmd(void)
{    
    uint8_t i = 0;    
    for(i=0; i<27; i++)  
    {    
        HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,CMD_Data+i,1,0x100);    
    }
}

在STM32的IIC写函数为HAL_I2C_Mem_Write(),需要修改为瑞萨的R_IIC_MASTER_Write()。

其中数组CMD_Data[]中放着的是初始化需要写入的数据,故在瑞萨中可以定义一个数组ii[2],其中ii[0]中放的是设备地址0x00,ii[1]中放入所需要的初始化的数据即可,R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);

void WriteCmd(void)
{    
    uint8_t i = 0;    
    uint8_t ii[2]={0x00,0x00};    
    for(i=0;i<27;i++)    
    {        
        ii[1]=CMD_Data[i];        
        err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);        
        assert(FSP_SUCCESS == err);        
        /* Since there is nothing else to do, block until Callback triggers*/        
        while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0)        
        {            
            R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);            
            timeout_ms--;        
        }        
        if (I2C_MASTER_EVENT_ABORTED == i2c_event)        
        {            
            __BKPT(0);        
        }        
        /* Read data back from the I2C slave */        
        i2c_event = I2C_MASTER_EVENT_ABORTED;        
        timeout_ms           = 100;    
    }
}

在STM32的12864OLED中,最重要的代码分别是向设备写控制命令OLED_WR_CMD()以及向设备写数据OLED_WR_DATA()。


//向设备写控制命令
void OLED_WR_CMD(uint8_t cmd)
{    
    HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,&cmd,1,0x100);
}
//向设备写数据
void OLED_WR_DATA(uint8_t data)
{    
    HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,&data,1,0x100);
}

他们的数据可是都是设备地址+器件地址+数据的传输方式,故在瑞萨中可以定义一个数组ii[2],其中ii[0]中放的是器件地址,ii[1]中放入所需要的写入数据即可,R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);故重写后如下所示。

   //向设备写控制命令    
void OLED_WR_CMD(uint8_t cmd)    
{        
    uint8_t ii[2]={0x00,0x00};        
    ii[1]=cmd;        
    err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);        
    assert(FSP_SUCCESS == err);        
    /* Since there is nothing else to do, block until Callback triggers*/        
    //while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms)       
    while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0)        
    {            
        R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);            
        timeout_ms--;        
    }        
    if (I2C_MASTER_EVENT_ABORTED == i2c_event)        
    {            
        __BKPT(0);        
    }        
    /* Read data back from the I2C slave */        
    i2c_event = I2C_MASTER_EVENT_ABORTED;        
    timeout_ms           = 100;    
}

//向设备写数据    
void OLED_WR_DATA(uint8_t data)    
{        
    uint8_t ii[2]={0x40,0x00};        
    ii[1]=data;        
    err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);        
    assert(FSP_SUCCESS == err);        
    /* Since there is nothing else to do, block until Callback triggers*/        
    while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0)        
    {            
        R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);            
        timeout_ms--;        
    }        
    if (I2C_MASTER_EVENT_ABORTED == i2c_event)        
    {            
        __BKPT(0);        
    }        
    /* Read data back from the I2C slave */        
    i2c_event = I2C_MASTER_EVENT_ABORTED;       
    timeout_ms           = 100;    
}


22.STM32移植瑞萨文件说明

在移植过程中,需要添加三个文件,其中oledfont.h放入需要显示的数据,oled.c是驱动文件,oled.h是头文件,代码在最后给出。

e6ae07e4-51d0-11ec-a27f-dac502259ad0.png


23.取模

显示汉字需要先进行取模,生成字模前先进行设置。

e6f430e8-51d0-11ec-a27f-dac502259ad0.png

设置完之后就可以取自己想要汉字的编码,输入完毕点击生成字模即可。

e76995a4-51d0-11ec-a27f-dac502259ad0.png

将取得的编码放入oledfont.h的Hzk数组中即可。

e7b0e364-51d0-11ec-a27f-dac502259ad0.pnge7f55396-51d0-11ec-a27f-dac502259ad0.png


24.演示效果

e84a0116-51d0-11ec-a27f-dac502259ad0.gif


25.主程序代码hal_enter.c

#include "hal_data.h"
#include "oled.h"
FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

i2c_master_event_t i2c_event = I2C_MASTER_EVENT_ABORTED;
void IIC_master_callback(i2c_master_callback_args_t *p_args)
{
    i2c_event = I2C_MASTER_EVENT_ABORTED;
    if (NULL != p_args)
    {
        /* capture callback event for validating the i2c transfer event*/
        i2c_event = p_args->event;
    }
}

fsp_err_t err = FSP_SUCCESS;
int  timeout_ms = 100;

/* rtc_time_t is an alias for the C Standard time.h struct 'tm' */
rtc_time_t set_time =
{
    .tm_sec  = 11,      /* 秒,范围从 0 到 59 */
    .tm_min  = 11,      /* 分,范围从 0 到 59 */
    .tm_hour = 11,      /* 小时,范围从 0 到 23*/
    .tm_mday = 11,       /* 一月中的第几天,范围从 1 到 31*/
    .tm_mon  = 11,      /* 月份,范围从 0 到 11*/
    .tm_year = 121,     /* 自 1900 起的年数,2021为121*/
//    .tm_wday = 5,       /* 一周中的第几天,范围从 0 到 6*/
//    .tm_yday=0,         /* 一年中的第几天,范围从 0 到 365*/
//    .tm_isdst=0;        /* 夏令时*/
};

volatile bool rtc_flag = 0;//RTC延时1s标志位
/* Callback function */
void rtc_callback(rtc_callback_args_t *p_args)
{
    /* TODO: add your own code here */
    if(p_args->event == RTC_EVENT_PERIODIC_IRQ)
        rtc_flag=1;
}

void hal_entry(void)
{
    /* TODO: add your own code here */

    /* Initialize the RTC module*/
       err = R_RTC_Open(&g_rtc0_ctrl, &g_rtc0_cfg);
       /* Handle any errors. This function should be defined by the user. */
       assert(FSP_SUCCESS == err);
       /* R_RTC_CalendarTimeSet must be called at least once to start the RTC */
       R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);
       /* Set the periodic interrupt rate to 1 second */
       R_RTC_PeriodicIrqRateSet(&g_rtc0_ctrl, RTC_PERIODIC_IRQ_SELECT_1_SECOND);

       uint8_t rtc_second= 11;      //秒
       uint8_t rtc_minute =11;      //分
       uint8_t rtc_hour =11;         //时
       uint8_t rtc_day =11;          //日
       uint8_t rtc_month =11;      //月
       uint16_t rtc_year =121;        //年
       uint8_t rtc_week =0;        //周
       rtc_time_t get_time;

        /* IIC初始化*/
        err = R_IIC_MASTER_Open(&g_i2c_master0_ctrl, &g_i2c_master0_cfg);
        assert(FSP_SUCCESS == err);
        WriteCmd();//OLED初始化
        OLED_Clear();//清屏

        OLED_ShowString(16,1,"RA",16);
        OLED_ShowCHinese(32,1,3);//生
        OLED_ShowCHinese(48,1,4);//态
        OLED_ShowCHinese(64,1,5);//工
        OLED_ShowCHinese(80,1,6);//作
        OLED_ShowCHinese(96,1,7);//室
        OLED_ShowCHinese(40,5,0);//年
        OLED_ShowCHinese(72,5,1);//月
        OLED_ShowCHinese(104,5,2);//日
        OLED_ShowString(32,3,"11:11:11",16);

        while(1)
            {
                if(rtc_flag)
                {
                    R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time);//获取RTC计数时间
                    rtc_flag=0;
                    rtc_second=get_time.tm_sec;//秒
                    rtc_minute=get_time.tm_min;//分
                    rtc_hour=get_time.tm_hour;//时
                    rtc_day=get_time.tm_mday;//日
                    rtc_month=get_time.tm_mon;//月
                    rtc_year=get_time.tm_year; //年
                    rtc_week=get_time.tm_wday;//周
                }
                    OLED_ShowNum(8,5,rtc_year+1900,4,16);//年
                    OLED_ShowNum(56,5,rtc_month,2,16);//月
                    OLED_ShowNum(88,5,rtc_day,2,16);//日
                    OLED_ShowNum(32,3,rtc_hour,2,16);//时
                    OLED_ShowNum(56,3,rtc_minute,2,16);//分
                    OLED_ShowNum(80,3,rtc_second,2,16);//秒

            }

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}



26.oled.c

#include "oled.h"
#include "oledfont.h"          //头文件
#include "hal_data.h"
#include "stdint.h"

uint8_t CMD_Data[]={
0xAE,
0x00,
0x10,
0x40,
0xB0,
0x81,
0xFF,
0xA1,
0xA6,
0xA8,
0x3F,
0xC8,
0xD3,
0x00,
0xD5,
0x80,
0xD8,
0x05,
0xD9,
0xF1,
0xDA,
0x12,
0xD8,
0x30,
0x8D,
0x14,
0xAF
};      //初始化命令

extern fsp_err_t err;
extern int  timeout_ms;
extern  i2c_master_event_t i2c_event ;

void WriteCmd(void)
{
    uint8_t i = 0;
    uint8_t ii[2]={0x00,0x00};

    for(i=0;i<27;i++)
    {
        ii[1]=CMD_Data[i];
        err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);
        assert(FSP_SUCCESS == err);

        /* Since there is nothing else to do, block until Callback triggers*/
        while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0)
        {
            R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);
            timeout_ms--;
        }

        if (I2C_MASTER_EVENT_ABORTED == i2c_event)
        {
            __BKPT(0);
        }
        /* Read data back from the I2C slave */
        i2c_event = I2C_MASTER_EVENT_ABORTED;
        timeout_ms           = 100;
    }
}

    //向设备写控制命令
    void OLED_WR_CMD(uint8_t cmd)
    {
        uint8_t ii[2]={0x00,0x00};

        ii[1]=cmd;
        err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);
        assert(FSP_SUCCESS == err);
        /* Since there is nothing else to do, block until Callback triggers*/
        //while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms)
        while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0)
        {
            R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);
            timeout_ms--;
        }

        if (I2C_MASTER_EVENT_ABORTED == i2c_event)
        {
            __BKPT(0);
        }
        /* Read data back from the I2C slave */
        i2c_event = I2C_MASTER_EVENT_ABORTED;
        timeout_ms           = 100;

    }
    //向设备写数据
    void OLED_WR_DATA(uint8_t data)
    {
        uint8_t ii[2]={0x40,0x00};
        ii[1]=data;
        err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl, ii, 0x02, true);
        assert(FSP_SUCCESS == err);
        /* Since there is nothing else to do, block until Callback triggers*/
        while ((I2C_MASTER_EVENT_TX_COMPLETE != i2c_event) && timeout_ms>0)
        {
            R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MICROSECONDS);
            timeout_ms--;
        }
        if (I2C_MASTER_EVENT_ABORTED == i2c_event)
        {
            __BKPT(0);
        }
        /* Read data back from the I2C slave */
        i2c_event = I2C_MASTER_EVENT_ABORTED;
        timeout_ms           = 100;
    }

    //清屏
void OLED_Clear(void)
{
    uint8_t i,n;
    for(i=0;i<8;i++)
    {
        OLED_WR_CMD(0xb0+i);//设置页地址(0~7)
        OLED_WR_CMD (0x00); //设置显示位置—列低地址
        OLED_WR_CMD (0x10); //设置显示位置—列高地址
        for(n=0;n<128;n++)
            OLED_WR_DATA(0);//更新显示
        }

/*
    for(i=0; i<27; i++)
    {
        HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x00,I2C_MEMADD_SIZE_8BIT,CMD_Data+i,1,0x100);
    }

    */
}

//开启OLED显示
void OLED_Display_On(void)
{
    OLED_WR_CMD(0X8D);  //SET DCDC命令
    OLED_WR_CMD(0X14);  //DCDC ON
    OLED_WR_CMD(0XAF);  //DISPLAY ON
}
//关闭OLED显示
void OLED_Display_Off(void)
{
    OLED_WR_CMD(0X8D);  //SET DCDC命令
    OLED_WR_CMD(0X10);  //DCDC OFF
    OLED_WR_CMD(0XAE);  //DISPLAY OFF
}

//坐标设置
void OLED_Set_Pos(uint8_t x, uint8_t y)
{
    OLED_WR_CMD(0xb0+y);
    OLED_WR_CMD(((x&0xf0)>>4)|0x10);
    OLED_WR_CMD(x&0x0f);
}

void OLED_On(void)
{
    uint8_t i,n;
    for(i=0;i<8;i++)
    {
        OLED_WR_CMD(0xb0+i);    //设置页地址(0~7)
        OLED_WR_CMD(0x00);      //设置显示位置—列低地址
        OLED_WR_CMD(0x10);      //设置显示位置—列高地址
        for(n=0;n<128;n++)
            OLED_WR_DATA(1);
    } //更新显示
}
unsigned int oled_pow(uint8_t m,uint8_t n)
{
    unsigned int 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,unsigned int num,uint8_t len,uint8_t size2)
{
    uint8_t t,temp;
    uint8_t enshow=0;
    for(t=0;t128-1)
        {
            x=0;
            y=y+2;
        }
        if(Char_Size ==16)
            {
            OLED_Set_Pos(x,y);
            for(i=0;i<8;i++)
                OLED_WR_DATA(F8X16[c*16+i]);
            OLED_Set_Pos(x,y+1);
            for(i=0;i<8;i++)
                OLED_WR_DATA(F8X16[c*16+i+8]);
            }
            else {
                OLED_Set_Pos(x,y);
                for(i=0;i<6;i++)
                OLED_WR_DATA(F6x8[c][i]);
            }
}

//显示一个字符号串
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++;
    }
}

//显示汉字
//hzk 用取模软件得出的数组
void OLED_ShowCHinese(uint8_t x,uint8_t y,uint8_t no)
{
    uint8_t t,adder=0;
//定位(0xbx,x为第几行。0x1x ,x为列地址 高四位;0x0x,x为列地址第4位。
//比如你想定 位到第3行,第126(0x7e)列,就要写WrCmd(0xb3);WrCmd(0x17);WrCmd(0x0e);)
    OLED_Set_Pos(x,y);
    for(t=0;t<16;t++)
        {
                OLED_WR_DATA(Hzk[2*no][t]);
                adder+=1;
     }
        OLED_Set_Pos(x,y+1);
    for(t=0;t<16;t++)
            {
                OLED_WR_DATA(Hzk[2*no+1][t]);
                adder+=1;
      }
}

//--------------------------------------------------------------
// Prototype      : void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);
// Calls          :
// Parameters     : x0,y0 -- 起始点坐标(x0:0~127, y0:0~7); x1,y1 -- 起点对角线(结束点)的坐标(x1:1~128,y1:1~8)
// Description    : 显示BMP位图
//--------------------------------------------------------------
void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[])
{
    unsigned int j=0;
    unsigned char x,y;

  if(y1%8==0)
        y = y1/8;
  else
        y = y1/8 + 1;
    for(y=y0;y;y++)>;t++)>

27.oled.h

#ifndef OLED_H_
#define OLED_H_
#include "stdint.h"

void WriteCmd(void);
void OLED_WR_CMD(uint8_t cmd);
void OLED_WR_DATA(uint8_t data);
void OLED_Init(void);
void OLED_Clear(void);
void OLED_Display_On(void);
void OLED_Display_Off(void);
void OLED_Set_Pos(uint8_t x, uint8_t y);
void OLED_On(void);
void OLED_ShowNum(uint8_t x,uint8_t y,unsigned int num,uint8_t len,uint8_t size2);
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_ShowCHinese(uint8_t x,uint8_t y,uint8_t no);
void OLED_DrawBMP(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1,unsigned char BMP[]);

#endif /* OLED_H_ */

28.oledfont.h

#ifndef OLEDFONT_H_
#define OLEDFONT_H_
#include "stdint.h"

//8*6 ASCII字符集点阵
const unsigned char F6x8[][6] =
{
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,// sp
    0x00, 0x00, 0x00, 0x2f, 0x00, 0x00,// !
    0x00, 0x00, 0x07, 0x00, 0x07, 0x00,// "
    0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14,// #
    0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12,// $
    0x00, 0x62, 0x64, 0x08, 0x13, 0x23,// %
    0x00, 0x36, 0x49, 0x55, 0x22, 0x50,// &
    0x00, 0x00, 0x05, 0x03, 0x00, 0x00,// '
    0x00, 0x00, 0x1c, 0x22, 0x41, 0x00,// (
    0x00, 0x00, 0x41, 0x22, 0x1c, 0x00,// )
    0x00, 0x14, 0x08, 0x3E, 0x08, 0x14,// *
    0x00, 0x08, 0x08, 0x3E, 0x08, 0x08,// +
    0x00, 0x00, 0x00, 0xA0, 0x60, 0x00,// ,
    0x00, 0x08, 0x08, 0x08, 0x08, 0x08,// -
    0x00, 0x00, 0x60, 0x60, 0x00, 0x00,// .
    0x00, 0x20, 0x10, 0x08, 0x04, 0x02,// /
    0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
    0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
    0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
    0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
    0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
    0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
    0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
    0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
    0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
    0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
    0x00, 0x00, 0x36, 0x36, 0x00, 0x00,// :
    0x00, 0x00, 0x56, 0x36, 0x00, 0x00,// ;
    0x00, 0x08, 0x14, 0x22, 0x41, 0x00,// <
    0x00, 0x14, 0x14, 0x14, 0x14, 0x14,// =
    0x00, 0x00, 0x41, 0x22, 0x14, 0x08,// >
    0x00, 0x02, 0x01, 0x51, 0x09, 0x06,// ?
    0x00, 0x32, 0x49, 0x59, 0x51, 0x3E,// @
    0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
    0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
    0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
    0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
    0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
    0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
    0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
    0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
    0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
    0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
    0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
    0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
    0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
    0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
    0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
    0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
    0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
    0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
    0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
    0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
    0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
    0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
    0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
    0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
    0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
    0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
    0x00, 0x00, 0x7F, 0x41, 0x41, 0x00,// [
    0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55,// 55
    0x00, 0x00, 0x41, 0x41, 0x7F, 0x00,// ]
    0x00, 0x04, 0x02, 0x01, 0x02, 0x04,// ^
    0x00, 0x40, 0x40, 0x40, 0x40, 0x40,// _
    0x00, 0x00, 0x01, 0x02, 0x04, 0x00,// '
    0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
    0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
    0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
    0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
    0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
    0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
    0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
    0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
    0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
    0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
    0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
    0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
    0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
    0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
    0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
    0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
    0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
    0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
    0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
    0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
    0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
    0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
    0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
    0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
    0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
    0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
    0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};

//16*8 ASCII字符集点阵
const unsigned char F8X16[]=
{
 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//sp /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,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,//}  /92
 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00};//|  /93

//部分汉字
const unsigned char Hzk[][32]=
{
      //年(0) 月(1) 日(2) 生(3) 态(4) 工(5) 作(6) 室(7) 

{0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00},
{0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"年",0*/

{0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,0x00},
{0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00},/*"月",1*/

{0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0xFF,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,0x00,0x00},/*"日",2*/

{0x80,0x40,0x30,0x1E,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00},
{0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x7F,0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00},/*"生",3*/

{0x00,0x04,0x84,0x84,0x44,0x24,0x54,0x8F,0x14,0x24,0x44,0x84,0x84,0x04,0x00,0x00},
{0x41,0x39,0x00,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x04,0x09,0x31,0x00},/*"态",4*/

{0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00},
{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",5*/

{0x00,0x80,0x60,0xF8,0x07,0x40,0x30,0x0F,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0x00},
{0x01,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x08,0x08,0x08,0x08,0x08,0x00,0x00},/*"作",6*/

{0x10,0x0C,0x24,0x24,0xA4,0x64,0x25,0x26,0x24,0x24,0xA4,0x24,0x24,0x14,0x0C,0x00},
{0x40,0x40,0x48,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4B,0x48,0x40,0x40,0x00},/*"室",7*/

};

#endif /* OLEDFONT_H_ */

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343639
  • ARM
    ARM
    +关注

    关注

    134

    文章

    8652

    浏览量

    361822
  • 嵌入式
    +关注

    关注

    4982

    文章

    18285

    浏览量

    288479
  • 开发板
    +关注

    关注

    25

    文章

    4430

    浏览量

    94016
收藏 人收藏

    评论

    相关推荐

    电子推出采用自研RISC-V CPU内核的通用32位MCU

    5.5V 封装:16 WLCSP、24/32/48 QFN封装(QFP可选) R9A02G021 RISC-V MCU得到e² studio集成开发环境(IDE)的全方位支持,客户
    发表于 03-30 22:08

    TouchGFX开发(3)----使用TouchGFX配置IIC接口OLED

    TouchGFX开发(3)----使用TouchGFX配置IIC接口OLED
    的头像 发表于 11-09 15:31 863次阅读
    TouchGFX开发(3)----使用TouchGFX配置<b class='flag-5'>IIC</b>接口<b class='flag-5'>OLED</b>

    关于集成LO的问题

    请教大侠们 的集成LO芯片8V97051,8V97051 L,8V97051 A 这三款有没有区别??
    发表于 10-30 12:36

    RX130在时钟频率32MHz时,指令最短执行时间是多少?

    RX130在时钟频率32MHz时,指令最短执行时间是多少?
    发表于 10-28 07:01

    iic时钟信号哪里来的?

    iic时钟信号哪里来的? IIC(Inter-Integrated Circuit)总线是一种基于同步串行通信的通信标准。在IIC总线上,每条线路上都有两个信号,一个是
    的头像 发表于 09-19 17:16 863次阅读

    【米尔RZ/G2L开发板-试用体验】认识一下米尔RZ/G2L开发板的核心板

    解一下米尔RZ/G2L开发板的核心板: MYC-YG2LX核心板采用高密度高速电路板设计,在大小为43mm*45mm的板卡上集成了RZ/G2
    发表于 07-29 00:21

    STM32CUBEIDE(13)----IIC之配置OLED

    本章配置STM32F103使用IIC进行驱动SSD1306的12864OLED
    的头像 发表于 07-26 13:44 1062次阅读
    STM32CUBEIDE(13)----<b class='flag-5'>IIC</b>之配置<b class='flag-5'>OLED</b>

    一文看懂RTC实时时钟

    RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。
    的头像 发表于 06-16 12:24 2883次阅读
    一文看懂RTC实时<b class='flag-5'>时钟</b>

    FPB-RA6E1快速原型板】环境搭建+e2studio项目搭建+编译 DBUG

    下载下来,我就要超时间了。 1.资料准备工具 - RA MCU 生态社区 软件我是下载最新的。 这个文档是不错的,拿出来就能看明白,就是有些地方字写的少了点。 贴上来:*附件:e2+fsp+qe安装
    发表于 06-11 20:51

    RA MCU创意氛围赛】3. 硬件I2C驱动OLED显示汉字

    RA MCU创意氛围赛】1. PWM驱动LED以及STLINK下载配置【RA MCU创意氛围赛】2. KEIL下串口重定向prin
    发表于 05-26 14:06

    FPB-RA6E1快速原型板】开箱+环境搭建+e2studio项目搭建

    比较舒服。 e2studio的下载,建议在RA生态社区的资料下载--工具--E2开发环境的链接:https://www.ramcu.cn/lists/21.html直接下载,在官网
    发表于 05-25 01:17

    【米尔RZ/G2L开发板-试用体验】米尔RZ/G2L开发板开箱视频

    今天刚刚收到米尔RZ/G2L开发板,拆开包裹后给人的感觉是惊艳,板卡设计真的很棒,来看看视频做个简单了解吧。 更多板卡可以登录官网了解哦。https://www.myir.cn/
    发表于 05-22 21:58

    RA MCU创意氛围赛】以RA2E的车载VFD屏幕时钟

    引言 很高兴能有机会参加【RA MCU创意氛围赛】,在以前学习stm32的时候,就是野火的开发板、文档以及视频带我入门的。现在有空体验一下野火的产品——系统的 启明4M
    发表于 05-21 17:02

    CH32V103基础教程69-IIC-硬件IIC驱动 OLED

    本章教程主要在第十四章硬件IIC读写EEPROM的基础上进行改动,使用硬件IIC驱动OLED屏。 1、IIC简介及相关函数介绍关于IIC,在
    发表于 05-05 16:52

    CH32V103基础教程68-IIC-模拟IIC驱动 OLED

    2、硬件设计本章教程主要使用模拟IIC驱动OLED屏,所用OLED屏为0.96寸OLED屏。程序中配置PA1作为SDA线,PA
    发表于 05-05 16:49