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

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

3天内不再提示

项目 | 瑞萨RA2L1--电子时钟

RA生态工作室 2022-01-11 17:38 次阅读

1.概述

本篇文章主要介绍通过往期内容的学习,使用e2studio对R7FA2L1AB2DFL的开发板进行电子时钟项目开发,主要用到exit、oled、rtc、触摸按键、温湿度传感器模块。

2.硬件准备

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

pYYBAGGLLTuAKokoAAL5D_IbQXA990.png

3.系统框图

poYBAGHc706AVIHvAAFcdU7xZXE138.png

4.新建工程

poYBAGHc772AZ_N8AAFlqE_YUtE059.png

5.工程模板

poYBAGHc79qAMrctAAEH8lrmoLo677.png

6.保存工程路径

poYBAGHc7_eAFTkDAADDqe4dfRE991.png

7.芯片配置

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

pYYBAGHc8BSAHCFuAADyeOX8NrY605.png

8.工程模板选择

pYYBAGHc8C-AIgalAAC3NuUkuGQ765.png

9.LED&IO配置

配置LED灯的P103、P104脚配置为输出,用于指示触摸状态。

pYYBAGHc8E-AHDR-AAC53Y1smgo239.png

将P208引脚设置为输入模式,可以给P208命名。将温湿度传感器DATA接在P208引脚上,作为数据传输IO。

pYYBAGHc8KeAePLTAARh7yOAWRQ225.png

10.IIC配置

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

poYBAGHc8ZSAKegOAAD4cwaDLT0857.png

11.IIC属性配置

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

pYYBAGHc8ceAeqvKAAHOmGlcWYM026.png

12.RTC配置

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

poYBAGHc8fKAWaK0AADoScLUb0Y796.png

13.RTC属性配置

poYBAGHc8iaASHS2AAUKoygkFiM723.png

14.EXIT配置

点击Stacks->NewStack->Driver->Input -> External IRQ Driver on r_icu。

poYBAGHc8raAcQ5yAAC_c92ZyoE091.png

15.EXIT属性配置

poYBAGHc8s-AFehGAACNbmitf24219.png

16.触摸引脚配置

将引脚配置的操作模式设置从“禁用”更改为“已启用”,并使能P109/P110引脚。

pYYBAGHc8vqAVJPDAAWG8D-YyMQ810.png

17.触摸配置

点击Stacks → New Stack → Middleware →CapTouch → TOUCH Driver on rm_touch。

pYYBAGHc8xOAFSFRAAJ7P4mPNGw139.png

点击CTSU Driver on r_ctsu。

点击DTC启用。

点击Add DTCDriver for Transmission → New → TransferDriver on r_dtc。

点击Add DTC Driver for Reception → New → TransferDriver on r_dtc,并将配置生成并导入工程中。

(内容过长具体配置调试过程请看往期文章)

qe_touch_sample.c文件中加入触摸代码(触摸功能)。

pYYBAGHc9EGAJTyGAAGRjJykP4M234.png

18.添加工程文件

需要添加如下文件,其中dht11.c是驱动文件,dht11.h是头文件,oled.c是驱动文件,oled.h是头文件,oledfont.h放字模数据,pic.h放图片数据,user.c页面显示,user.h是头文件,代码在最后给出。

poYBAGHc9JKAKpSPAABvRP7I9kM323.png

19.图片取模

显示图片需要对图片进行取模。先打开需要取模的图片,再设置输出数据格式,最后保存即可。

poYBAGHc9KqAYNeSAAKNtPMf7Bo456.pngpoYBAGHc9MWAevjdAAERtovaFxQ483.png

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

pYYBAGHc9PiAQtHMAAVur1TVYZA682.png

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

poYBAGHc9QGATgwAAAdokhssKjY762.png

20.结果演示

页面0 初始界面

pYYBAGHc9RyAV7SCAAHIid4o--M436.png

页面1 初始显示时间日期

pYYBAGHc9TSAJBwrAAKfn0IpRIM671.png

页面2 显示温湿度

poYBAGHc9ZeAdEfeAAIa-ZkU044981.pngpoYBAGHc9aaAEGDnAAIif1lHCvg676.png

页面3 时间日期设置页面(第一次进入等待一会再调时)

pYYBAGHc9iOAJzS9AAQ_5F8y-I4461.png

按下触摸按键TS10,触摸成功LED2亮,对应的设置的时间数+1。

pYYBAGHc9jyAeMenAAQcZl1rNZU200.png

按下触摸按键TS11,触摸成功LED1亮,变换设置的时间单位,设置时间分别为秒-分-时-日-月-年。

pYYBAGHc9naAAfwWAAnG6fnXwEM053.png

如下是我们通过按键设置时间。

pYYBAGHc9teAEtnGAAIX606eFfs981.png

21.代码

qe_touch_config.c代码:


#include "qe_touch_config.h"
#define TOUCH_SCAN_INTERVAL_EXAMPLE (20)    /* milliseconds */
void qe_touch_main(void);

uint64_t button_status;
#if (TOUCH_CFG_NUM_SLIDERS != 0)
uint16_t slider_position[TOUCH_CFG_NUM_SLIDERS];
#endif
#if (TOUCH_CFG_NUM_WHEELS != 0)
uint16_t wheel_position[TOUCH_CFG_NUM_WHEELS];
#endif

extern rtc_time_t get_time;
extern rtc_time_t set_time;
extern uint8_t rtc_second;//秒
extern uint8_t rtc_minute;//分
extern uint8_t rtc_hour;//时
extern uint8_t rtc_day;//日
extern uint8_t rtc_month;//月
extern uint16_t rtc_year;//年
uint8_t button1_value=0;
uint8_t button2_value=0;
uint8_t button1;
uint8_t button2;
uint8_t set_falg=0;
void qe_touch_main(void)
{
    fsp_err_t err;

    /* Open Touch middleware */
    RM_TOUCH_Open(g_qe_touch_instance_config01.p_ctrl, g_qe_touch_instance_config01.p_cfg);

    /* Main loop */
  //  while (true)
  //  {
            button1=0;button2=0;
        /* for [CONFIG01] configuration */
            err = RM_TOUCH_ScanStart(g_qe_touch_instance_config01.p_ctrl);
            if (FSP_SUCCESS != err)
            {
                while (true) {}
            }
            while (0 == g_qe_touch_flag) {}
            g_qe_touch_flag = 0;

            err = RM_TOUCH_DataGet(g_qe_touch_instance_config01.p_ctrl, &button_status, NULL, NULL);
            if (FSP_SUCCESS == err)
            {
                /* TODO: Add your own code here. */
                if(button_status==1)
                {
                    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_HIGH);
                    button1=1;
                }
                else if(button_status==2)
                {
                    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
                    button2=1;
                }
                else
                {
                     R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);
                     R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
                }
            }
            if(button2>button2_value)
            {
                set_falg++;
                if(set_falg==6)set_falg=0;
                OLED_Clear();
            }
            if(button1>button1_value)
            {
                R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time);//获取RTC计数时间
                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; //年               
                if(set_falg==0){rtc_second++;if(rtc_second>=60)rtc_second=0;}
                else if(set_falg==1){rtc_minute++;if(rtc_minute>=60)rtc_minute=0;}
                else if(set_falg==2){rtc_hour++;if(rtc_hour>=24)rtc_hour=0;}
                else if(set_falg==3){rtc_day++;if(rtc_day>=32)rtc_day=1;}
                else if(set_falg==4){rtc_month++;if(rtc_month>=13)rtc_month=1;}
                else if(set_falg==5){rtc_year++;if(rtc_year>=200)rtc_year=0;}
                set_time.tm_sec=rtc_second;
                set_time.tm_min=rtc_minute;
                set_time.tm_hour=rtc_hour;
                set_time.tm_mday=rtc_day;
                set_time.tm_mon=rtc_month;
                set_time.tm_year=rtc_year;
                R_RTC_CalendarTimeSet(&g_rtc0_ctrl, &set_time);
            }
            R_RTC_CalendarTimeGet(&g_rtc0_ctrl, &get_time);
            if(set_falg==0){OLED_ShowCHinese(40,1,11);OLED_ShowCHinese(56,1,12);OLED_ShowCHinese(72,1,15);OLED_ShowNum(80,3,get_time.tm_sec,2,16);}
            else if(set_falg==1){OLED_ShowCHinese(40,1,11);OLED_ShowCHinese(56,1,12);OLED_ShowCHinese(72,1,14);OLED_ShowNum(56,3,get_time.tm_min,2,16);}
            else if(set_falg==2){OLED_ShowCHinese(40,1,11);OLED_ShowCHinese(56,1,12);OLED_ShowCHinese(72,1,13);OLED_ShowNum(32,3,get_time.tm_hour,2,16);}
            else if(set_falg==3){OLED_ShowCHinese(40,1,11);OLED_ShowCHinese(56,1,12);OLED_ShowCHinese(72,1,2);OLED_ShowNum(88,5,get_time.tm_mday,2,16);}
            else if(set_falg==4){OLED_ShowCHinese(40,1,11);OLED_ShowCHinese(56,1,12);OLED_ShowCHinese(72,1,1);OLED_ShowNum(56,5,get_time.tm_mon,2,16);}
            else if(set_falg==5){OLED_ShowCHinese(40,1,11);OLED_ShowCHinese(56,1,12);OLED_ShowCHinese(72,1,0);OLED_ShowNum(8,5,get_time.tm_year+1900,4,16);}
            button2_value=button2;
            button1_value=button1;
        /* FIXME: Since this is a temporary process, so re-create a waiting process yourself. */
        R_BSP_SoftwareDelay(TOUCH_SCAN_INTERVAL_EXAMPLE, BSP_DELAY_UNITS_MILLISECONDS);
  //  }
}

dht11.c代码:

#include "hal_data.h"
#include 
#include "dht11.h"

uint8_t Temp;
uint8_t Humi;
uint8_t retry=0;
uint8_t NO_dht11_flag=0;
bsp_io_level_t p_port_value_dht11;

void DHT11_Rst()
{
    DHT11_IO_OUT();//SET OUTPUT
    DHT11_DQ_LOW;//拉低DQ
    R_BSP_SoftwareDelay(18, BSP_DELAY_UNITS_MILLISECONDS);//拉低至少18ms
    DHT11_DQ_HIGH;//DQ=1
    R_BSP_SoftwareDelay(20, BSP_DELAY_UNITS_MICROSECONDS);//主机拉高20~40us
}

void DHT11_Check()
{
    DHT11_IO_IN();//SET INPUT
    retry=0;
    R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
    while(p_port_value_dht11&&retry<100)
    {
          R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
          retry++;
          R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
    }
    if(retry>=100)NO_dht11_flag=1;
    else retry=0;
    while(!p_port_value_dht11&&retry<100)
    {
          R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
          retry++;
          R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
    }
    if(retry>=100)NO_dht11_flag=1;
    if(NO_dht11_flag==1)
    {
        //printf("No dht11\n");
        R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
    }
}

void DHT11_Read_Data()
{
        uint8_t buf[5];
        uint8_t i;
        NO_dht11_flag=0;

        DHT11_Rst();
        DHT11_Check();
        if(NO_dht11_flag==0)
        {
               for(i=0;i<5;i++)//读取40位数据
               {
                     buf[i]=DHT11_Read_Byte();
               }
               if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])//校验读的温湿度结果是否正确
               {
                     Humi=buf[0];
                     Temp=buf[2];
               }
               //else printf("Receive error\n");
        }
        R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
}

//从DHT11读取一个位   返回值:1/0
uint8_t DHT11_Read_Bit(void)
{
      retry=0;
      while(p_port_value_dht11&&retry<100)//等待变为低电平
      {
             R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
             retry++;
             R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
      }

      retry=0;
      while(!p_port_value_dht11&&retry<100)//等待变为高电平
      {
             R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
             retry++;
             R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_MICROSECONDS);
      }
      R_BSP_SoftwareDelay(30, BSP_DELAY_UNITS_MICROSECONDS);
      R_IOPORT_PinRead(&g_ioport_ctrl, DHT11, &p_port_value_dht11);
      if(p_port_value_dht11)return 1;
      else return 0;
}

//从DHT11读取一个字节   //返回值:读到的数据
uint8_t DHT11_Read_Byte(void)
{
    uint8_t i,dat;
    dat=0;
   for (i=0;i<8;i++)
  {
      dat<<=1;
      dat|=DHT11_Read_Bit();
    }
    return dat;
}

dht11.h代码:


#ifndef _DHT11_H_
#define _DHT11_H_

//IO方向设置
#define DHT11_IO_IN()  R_IOPORT_PortDirectionSet(&g_ioport_ctrl, BSP_IO_PORT_02, 0<<8, 1<<8)
#define DHT11_IO_OUT() R_IOPORT_PortDirectionSet(&g_ioport_ctrl, BSP_IO_PORT_02, 1<<8, 1<<8)
//IO操作
#define DHT11_DQ_LOW   R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_LOW) //数据端口   PA0
#define DHT11_DQ_HIGH  R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_HIGH)  //数据端口   PA0

void DHT11_Rst(void);
void DHT11_Check(void);
void DHT11_Read_Data(void);
uint8_t DHT11_Read_Bit(void);
uint8_t DHT11_Read_Byte(void);

#endif

oled.c代码:


#include "oled.h"
#include "oledfont.h"
#include "hal_data.h"
#include "stdint.h"
#include "user.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++)>

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_ */

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) 温(8) 度(9) 湿(10) 设(11) 置(12) 时(13) 分(14) 秒(15)

{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*/

{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00},
{0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00},/*"温",8*/

{0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00},
{0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",9*/

{0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00},
{0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00},/*"湿",10*/

{0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00},
{0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00},/*"设",11*/

{0x00,0x17,0x15,0xD5,0x55,0x57,0x55,0x7D,0x55,0x57,0x55,0xD5,0x15,0x17,0x00,0x00},
{0x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x40,0x40,0x40,0x00},/*"置",12*/

{0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00},
{0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00},/*"时",13*/

{0x80,0x40,0x20,0x90,0x88,0x86,0x80,0x80,0x80,0x83,0x8C,0x10,0x20,0x40,0x80,0x00},
{0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00,0x00},/*"分",14*/

{0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0xC0,0x38,0x00,0xFF,0x00,0x08,0x10,0x60,0x00},
{0x08,0x06,0x01,0xFF,0x01,0x06,0x81,0x80,0x40,0x40,0x27,0x10,0x0C,0x03,0x00,0x00},/*"秒",15*/
};

#endif /* 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) 温(8) 度(9) 湿(10) 设(11) 置(12) 时(13) 分(14) 秒(15)

{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*/

{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00},
{0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00},/*"温",8*/

{0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00},
{0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",9*/

{0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00},
{0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00},/*"湿",10*/

{0x40,0x40,0x42,0xCC,0x00,0x40,0xA0,0x9E,0x82,0x82,0x82,0x9E,0xA0,0x20,0x20,0x00},
{0x00,0x00,0x00,0x3F,0x90,0x88,0x40,0x43,0x2C,0x10,0x28,0x46,0x41,0x80,0x80,0x00},/*"设",11*/

{0x00,0x17,0x15,0xD5,0x55,0x57,0x55,0x7D,0x55,0x57,0x55,0xD5,0x15,0x17,0x00,0x00},
{0x40,0x40,0x40,0x7F,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x7F,0x40,0x40,0x40,0x00},/*"置",12*/

{0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00},
{0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00},/*"时",13*/

{0x80,0x40,0x20,0x90,0x88,0x86,0x80,0x80,0x80,0x83,0x8C,0x10,0x20,0x40,0x80,0x00},
{0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00,0x00},/*"分",14*/

{0x24,0x24,0xA4,0xFE,0x23,0x22,0x00,0xC0,0x38,0x00,0xFF,0x00,0x08,0x10,0x60,0x00},
{0x08,0x06,0x01,0xFF,0x01,0x06,0x81,0x80,0x40,0x40,0x27,0x10,0x0C,0x03,0x00,0x00},/*"秒",15*/
};

#endif /* OLEDFONT_H_ */

pic.h代码:

#ifndef PIC_H_
#define PIC_H_

unsigned char BMP1[] =
{

 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0XF0,0X98,0X8C,0X84,0X06,0X06,0X04,0X0C,0X18,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0X65,0X65,0X01,0X00,0X00,0X00,0X00,
 0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0XFF,0XCB,0XCB,0XC0,0X10,0X30,0XF0,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0XF0,0X1C,0X06,0XF3,0XF9,0XFC,0XFC,0XFF,0XFF,0XFF,0XFF,0XFC,
 0XFC,0XF9,0XE3,0X06,0X3C,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X0C,0X38,0X23,
 0X47,0XCF,0XDF,0X9F,0X9F,0X9F,0X9F,0XDF,0XCF,0X47,0X31,0X38,0X0E,0X03,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,

};

unsigned char BMP2[] =
{

 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XC0,
 0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X80,0XE0,0X38,0X18,0X0C,0X0C,
 0X04,0X04,0X0C,0X0C,0X18,0X38,0XF0,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,0X06,0XC0,0X60,0X38,0X18,0X0C,
 0X0C,0X04,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0XFF,0XFF,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X04,0X04,0X04,0X04,0X04,0X00,
 0X00,0X00,0X1F,0XFF,0XC0,0X80,0X00,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X00,
 0X00,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X60,0X30,0X18,0X08,0X00,0X01,0X03,0X03,0X06,
 0X04,0X0C,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0XFF,0X00,0X00,0X00,0X00,0XFF,0XFF,
 0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0XE0,0XF8,0X0C,0X07,0X03,0X01,0X80,0X20,0X10,0X00,0X08,
 0X08,0X0F,0X08,0X00,0X10,0X20,0XC0,0X01,0X03,0X03,0X0E,0X3C,0XF0,0X80,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X3F,0XF8,0XC0,
 0X00,0X00,0X00,0X0F,0X20,0X40,0X40,0X80,0X80,0X80,0X80,0X80,0X40,0X20,0X18,0X07,
 0X00,0X00,0X80,0XE0,0X7F,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X03,0X06,0X0C,0X18,0X18,0X30,0X30,0X30,
 0X30,0X30,0X30,0X30,0X30,0X10,0X18,0X0C,0X0C,0X06,0X03,0X01,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,

};

const unsigned char gImage_zz[] =
{
 0X00,0X00,0X00,0X00,0XF0,0XF0,0X30,0XB0,0XB0,0XB0,0XB0,0XB0,0X30,0XF0,0XF0,0X00,
 0X40,0X40,0XB0,0X70,0X70,0XC0,0XF0,0XF0,0X80,0X40,0X40,0XC0,0XC0,0XC0,0X00,0X70,
 0X70,0X30,0XB0,0XB0,0X30,0XF0,0XF0,0X00,0X80,0X80,0X70,0XB0,0XB0,0X30,0XF0,0XF0,
 0X00,0XF0,0XF0,0X30,0XB0,0XB0,0XB0,0XB0,0XB0,0X30,0XF0,0XF0,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X7F,0X7F,0X60,0X6F,0X6F,0X6F,0X6F,0X6F,0X60,0X7F,0X7F,0X00,
 0XF0,0XF0,0X0D,0XEE,0XEE,0X1D,0X6F,0X6F,0X9D,0X7C,0X7C,0X81,0XEF,0XEF,0X9C,0XE0,
 0XE0,0X82,0XF1,0XF1,0X02,0X6D,0X6D,0X8C,0XFD,0XFD,0X1C,0X73,0X73,0X0E,0X7D,0X7D,
 0X00,0X7F,0X7F,0X60,0X6F,0X6F,0X6F,0X6F,0X6F,0X60,0X7F,0X7F,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0XE4,0XE4,0X04,0X3C,0X3C,0X18,0XE7,0XE7,0X27,0XDB,0XDB,0X1B,
 0XC4,0XC4,0XDC,0X07,0X07,0X3C,0XC7,0XC7,0X3B,0X1B,0X1B,0X00,0X27,0X27,0X20,0XC7,
 0XC7,0XFF,0XE3,0XE3,0X1B,0X18,0X18,0X1F,0X20,0X20,0X1F,0X38,0X38,0XFF,0XE3,0XE3,
 0X38,0XC7,0XC7,0XDB,0XC4,0XC4,0X04,0XFC,0XFC,0X3B,0XE0,0XE0,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X88,0X88,0X79,0X08,0X08,0XFF,0XF8,0XF8,0X86,0XB6,0XB6,0X4F,
 0X37,0X37,0X7E,0XB6,0XB6,0X40,0XC9,0XC9,0X88,0X00,0X00,0X00,0X40,0X80,0XC0,0X01,
 0X01,0X00,0X41,0X41,0X01,0X01,0X01,0XB0,0XB6,0XB6,0X46,0XCF,0XCF,0XCE,0XC1,0XC1,
 0X77,0X30,0X30,0X00,0XC7,0XC7,0X36,0XFF,0XFF,0X08,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X93,0X93,0X0C,0XFE,0XFE,0X9F,0X61,0X61,0X0D,0X6D,0X6D,0X9C,
 0X9E,0X9E,0X62,0XED,0XED,0X00,0X11,0X11,0X91,0X80,0X80,0X80,0X00,0X02,0X82,0X80,
 0X80,0X82,0X80,0X80,0X80,0X00,0X00,0XFF,0X03,0X03,0X7C,0X11,0X11,0X7D,0X01,0X01,
 0X6E,0X0E,0X0E,0X82,0X13,0X13,0X10,0X9F,0X9F,0X80,0X82,0X82,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0XC4,0XC4,0XC7,0X38,0X38,0XFC,0X07,0X07,0X1C,0XDB,0XDB,0X03,
 0X3F,0X3F,0XC4,0XDF,0XDF,0XC3,0XE0,0XE0,0X3B,0X38,0X38,0X27,0XFB,0XFB,0X03,0XF8,
 0XF8,0X1F,0XDC,0XDC,0X18,0XFB,0XFB,0XC3,0X23,0X23,0X04,0X3C,0X3C,0X3F,0XE3,0XE3,
 0XFB,0XFB,0XFB,0XC0,0XDF,0XDF,0XC3,0XF8,0XF8,0XC4,0X23,0X23,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0XFE,0XFE,0X06,0XF6,0XF6,0XF6,0XF6,0XF6,0X06,0XFE,0XFE,0X00,
 0X3F,0X3F,0XC7,0X36,0X36,0X4E,0X4E,0X4E,0X47,0XF6,0XF6,0XF1,0X08,0X08,0X88,0XFF,
 0XFF,0X46,0X36,0X36,0X0E,0X39,0X39,0X8E,0X7E,0X7E,0X40,0XFF,0XFF,0X80,0X3F,0X3F,
 0XB0,0XF6,0XF6,0XB0,0X7F,0X7F,0XF7,0X7E,0X7E,0X81,0X00,0X00,0X00,0X00,0X00,0X00,
 0X00,0X00,0X00,0X00,0X0F,0X0F,0X0C,0X0D,0X0D,0X0D,0X0D,0X0D,0X0C,0X0F,0X0F,0X00,
 0X00,0X00,0X0F,0X00,0X00,0X0C,0X0C,0X0C,0X0C,0X01,0X01,0X0D,0X0C,0X0C,0X0D,0X03,
 0X03,0X0E,0X0E,0X0E,0X0E,0X00,0X00,0X01,0X02,0X02,0X00,0X0F,0X0F,0X03,0X00,0X00,
 0X0F,0X0D,0X0D,0X01,0X0C,0X0C,0X03,0X0E,0X0E,0X0F,0X0C,0X0C,0X00,0X00,0X00,0X00,
 
};

#endif /* PIC_H_ */

user.c代码:


#include "hal_data.h"
#include "stdint.h"
#include "user.h"
#include "oled.h"
#include "pic.h"
#include "dht11.h"

extern volatile bool rtc_flag;
//extern uint16_t adc_result_buffer[3];
extern uint8_t page_flag;
extern uint8_t rtc_second;      //秒
extern uint8_t rtc_minute;      //分
extern uint8_t rtc_hour;        //时
extern uint8_t rtc_day;         //日
extern uint8_t rtc_month;       //月
extern uint16_t rtc_year;       //年
extern rtc_time_t set_time;
extern rtc_time_t get_time;

extern uint8_t Temp;
extern uint8_t Humi;
extern uint8_t retry;
extern uint8_t NO_dht11_flag;
extern bsp_io_level_t p_port_value_dht11;

void page0(void)
{
    OLED_Clear();
    while(page_flag==0)
    {
        OLED_DrawBMP(0,0,64,8,gImage_zz);
        OLED_ShowString(88,1,"RA",16);
        OLED_ShowCHinese(80,3,3);//生
        OLED_ShowCHinese(96,3,4);//态
        OLED_ShowCHinese(72,5,5);//工
        OLED_ShowCHinese(88,5,6);//作
        OLED_ShowCHinese(104,5,7);//室
        R_BSP_SoftwareDelay(200, BSP_DELAY_UNITS_MILLISECONDS);
    }
}
void page1(void)
{
    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(48,3,":",16);
    OLED_ShowString(72,3,":",16);

    while(page_flag==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; //年
         }

         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);//秒

         }
}

void page2(void)
{
    OLED_Clear();
    while(page_flag==2)
    {

         OLED_ShowCHinese(58,2,8);//温度
         OLED_ShowCHinese(74,2,9);
         OLED_ShowString(90,2,":",16);
         OLED_ShowCHinese(58,5,10);//湿度
         OLED_ShowCHinese(74,5,9);
         OLED_ShowString(90,5,":",16);
         OLED_DrawBMP(0,1,56,8,BMP1);

         DHT11_Read_Data();
         OLED_ShowNum(98,2,Temp,2,16);
         OLED_ShowString(116,2,"C",16);
         OLED_ShowNum(98,5,Humi,2,16);
         OLED_ShowString(116,5,"%",16);
         OLED_DrawBMP(0,1,56,8,BMP2);

         R_BSP_SoftwareDelay(1000, BSP_DELAY_UNITS_MILLISECONDS);
    }
}

void page3(void)
{
    OLED_Clear();
    while(page_flag==3)
    {
        qe_touch_main();
    }
}

user.h代码:


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

void page0(void);
void page1(void);
void page2(void);
void page3(void);

#endif /* OLED_H_ */

hal_entry.c代码:

#include "hal_data.h"
#include "oled.h"
#include "user.h"
#include "dht11.h"
#include "qe_touch_config.h"
//#include "pic.h"
//#include "oledfont.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

uint8_t page_flag=0;
uint8_t rtc_second;//秒
uint8_t rtc_minute;//分
uint8_t rtc_hour;//时
uint8_t rtc_day;//日
uint8_t rtc_month;//月
uint16_t rtc_year;//年
rtc_time_t get_time;
rtc_time_t set_time;

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  = 0,      /* 秒,范围从 0 到 59 */
    .tm_min  = 0,      /* 分,范围从 0 到 59 */
    .tm_hour = 0,      /* 小时,范围从 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;
}

/* Callback function */
void exit0_callback(external_irq_callback_args_t *p_args)
{
    /* TODO: add your own code here */
    (void) p_args;
    page_flag++;
    if(page_flag>=4)
    {
        page_flag=0;

    }
}

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);
       /* IIC初始化*/
       err = R_IIC_MASTER_Open(&g_i2c_master0_ctrl, &g_i2c_master0_cfg);
       assert(FSP_SUCCESS == err);
       /* Configure the external interrupt. */
       fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq0_ctrl, &g_external_irq0_cfg);
       assert(FSP_SUCCESS == err);
       /* Enable the external interrupt. */
       /* Enable not required when used with ELC or DMAC. */
       err =  R_ICU_ExternalIrqEnable(&g_external_irq0_ctrl);
       assert(FSP_SUCCESS == err);

       WriteCmd();//OLED初始化
       OLED_Clear();//清屏

        while(1)
        {
            if(page_flag==0)
            {
                page0();
            }
            if(page_flag==1)
            {
                page1();
            }
            if(page_flag==2)
            {
                page2();
            }
            if(page_flag==3)
            {
                page3();
            }
        }

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

/*******************************************************************************************************************//**
 * This function is called at various points during the startup process.  This implementation uses the event that is
 * called right before main() to set up the pins.
 *
 * @param[in]  event    Where at in the start up process the code is currently at
 **********************************************************************************************************************/
void R_BSP_WarmStart(bsp_warm_start_event_t event)
{
    if (BSP_WARM_START_RESET == event)
    {
#if BSP_FEATURE_FLASH_LP_VERSION != 0

        /* Enable reading from data flash. */
        R_FACI_LP->DFLCTL = 1U;

        /* Would normally have to wait tDSTOP(6us) for data flash recovery. Placing the enable here, before clock and
         * C runtime initialization, should negate the need for a delay since the initialization will typically take more than 6us. */
#endif
    }

    if (BSP_WARM_START_POST_C == event)
    {
        /* C runtime environment and system clocks are setup. */

        /* Configure pins. */
        R_IOPORT_Open (&g_ioport_ctrl, g_ioport.p_cfg);
    }
}

#if BSP_TZ_SECURE_BUILD

BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ();

/* Trustzone Secure Projects require at least one nonsecure callable function in order to build (Remove this if it is not required to build). */
BSP_CMSE_NONSECURE_ENTRY void template_nonsecure_callable ()
{

}
#endif

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

    关注

    146

    文章

    16939

    浏览量

    350031
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9030

    浏览量

    366570
  • 嵌入式
    +关注

    关注

    5062

    文章

    18984

    浏览量

    302379
  • 开发板
    +关注

    关注

    25

    文章

    4914

    浏览量

    97100
  • 瑞萨电子
    +关注

    关注

    37

    文章

    2829

    浏览量

    72124
收藏 人收藏

    评论

    相关推荐

    e2studio(1)----芯片之搭建FSP环境

    视频教学 样品申请 请勿添加外链 e2studio软件 e2studio是的集成开发环境,FSP 提供了众多可提高效率的工具,用于开发针对
    发表于 09-30 15:28

    RA2L1系列CAN通信应用

    RA2L1系列CAN通信应用
    的头像 发表于 06-26 08:06 540次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA2L1</b>系列CAN通信应用

    RA0E1开发分享之一

    介绍生态社区的RA0E1开发板。
    的头像 发表于 05-10 13:57 702次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA0E1</b>开发分享之一

    电子RA产品家族新增RA0E1 MCU产品组

    电子RA产品家族新增RA0E1 MCU产品组。RA0E1系列是一款低功耗、低成本微控制器,结
    的头像 发表于 04-11 15:17 837次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>电子</b><b class='flag-5'>RA</b>产品家族新增<b class='flag-5'>RA0E1</b> MCU产品组

    基于RA6M5开发板的低功耗电子时钟设计

    项目是基于启明RA6M5开发板搭载2.4寸液晶屏的电子时钟,该电子时钟有两个模式——正常模式和低功耗模式,可以通过开发板的按键改变时钟模式
    的头像 发表于 12-25 12:26 852次阅读
    基于<b class='flag-5'>RA</b>6M5开发板的低功耗<b class='flag-5'>电子时钟</b>设计

    电子宣布推出RA8D1微控制器(MCU)产品群

    2023年12月12日,电子宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 15:58 923次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>电子</b>宣布推出<b class='flag-5'>RA8D1</b>微控制器(MCU)产品群

    基于RASC的keil电子时钟制作(RA)(7)----配置RTC时钟及显示时间

    本文将详细讲解如何借助e2studio来对微控制器进行实时时钟(RTC)的设置和配置,以便实现日历功能和一秒钟产生的中断,从而通过串口输出实时数据。
    的头像 发表于 12-01 15:06 634次阅读
    基于RASC的keil<b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(7)----配置RTC<b class='flag-5'>时钟</b>及显示时间

    基于RASC的keil电子时钟制作(RA)(5)----驱动LED数码管

    本篇文章主要介绍如何使用e2studio对RA2E1开发板进行数码管的驱动。
    的头像 发表于 12-01 15:01 608次阅读
    基于RASC的keil<b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(5)----驱动LED数码管

    基于RASC的keil电子时钟制作(RA)(3)----使用J-Link烧写程序到芯片

    这一节主要讲解如何使用J-Link对RA芯片进行烧录。
    的头像 发表于 12-01 14:49 552次阅读
    基于RASC的keil<b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(3)----使用J-Link烧写程序到<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>芯片

    基于RASC的keil电子时钟制作(RA)(2)----配置keil以及使用串口进行打印

    本篇文章主要介绍了一种基于RA系列微控制器的电子时钟制作方法,重点关注如何利用
    的头像 发表于 12-01 14:47 645次阅读
    基于RASC的keil<b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(<b class='flag-5'>2</b>)----配置keil以及使用串口进行打印

    电子时钟制作(RA)(6)----配置RTC时钟及显示时间

    本文将详细讲解如何借助e2studio来对微控制器进行实时时钟(RTC)的设置和配置,以便实现日历功能和一秒钟产生的中断,从而通过串口输出实时数据。
    的头像 发表于 12-01 14:09 842次阅读
    <b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(6)----配置RTC<b class='flag-5'>时钟</b>及显示时间

    电子时钟制作(RA)(4)----驱动LED数码管

    本篇文章主要介绍如何使用e2studio对RA2E1开发板进行数码管的驱动。
    的头像 发表于 12-01 14:03 470次阅读
    <b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(4)----驱动LED数码管

    电子时钟制作(RA)(3)----使用J-Link烧写程序到芯片

    这一节主要讲解如何使用J-Link对RA芯片进行烧录。
    的头像 发表于 12-01 14:01 812次阅读
    <b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(3)----使用J-Link烧写程序到<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>芯片

    电子时钟制作(RA)(2)----使用串口进行程序烧写

    本篇文章主要介绍如何使用UART串口烧写程序到芯片,并以实际项目进行演示。
    的头像 发表于 12-01 13:58 704次阅读
    <b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(<b class='flag-5'>2</b>)----使用串口进行程序烧写

    电子时钟制作(RA)(1)----使用串口进行打印

    本篇文章主要介绍如何使用e2studio对RA2E1开发板进行串口打印配置。
    的头像 发表于 12-01 13:56 613次阅读
    <b class='flag-5'>电子时钟</b>制作(<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA</b>)(<b class='flag-5'>1</b>)----使用串口进行打印